如何在tcpdump中动态修改过滤器

时间:2013-04-02 07:19:38

标签: libpcap packet-capture tcpdump

我正在修改tcpdump以动态更改它用来获取输出的过滤器。

目前tcpdump使用pcap_set_filter实际为传入的数据包或用户感兴趣的传出数据包准备过滤器(pcb_compile是否这样做?我对此不太确定),是否可以从tcpdump动态更改过滤器?从某种意义上说,我想在我的MAC地址上过滤数据包,并且由于某些原因我动态更改了mac,现在我的mac已经更改了,我应该通知tcpdump更改新mac上的过滤器,我该怎么做?

1 个答案:

答案 0 :(得分:1)

  

是否可以从tcpdump动态更改过滤器?

是的,它可以使用新过滤器(由pcap_setfilter()的过滤器表达式编译)调用pcap_compile(),在其已打开的pcap_t上,将过滤器设置为新的价值。

但是,这将导致已被捕获但未被tcpdump读取的流量被丢弃。 libpcap中没有任何机制可以防止这种情况发生。

  

从某种意义上说,我想在我的MAC地址上过滤数据包,并且由于某些原因我动态更改了mac,现在我的mac已经更改了,我应该通知tcpdump更改新mac上的过滤器,我该怎么办?< / p>

您不仅需要修改tcpdump以在捕获流量时调用pcap_compile()pcap_setfilter(),还需要对其进行修改以接收来自某些来源的消息,以告知其更改过滤器和指定新过滤器应该是什么,并安排在MAC地址更改时将该消息发送给它。