我正在修改tcpdump以动态更改它用来获取输出的过滤器。
目前tcpdump使用pcap_set_filter实际为传入的数据包或用户感兴趣的传出数据包准备过滤器(pcb_compile是否这样做?我对此不太确定),是否可以从tcpdump动态更改过滤器?从某种意义上说,我想在我的MAC地址上过滤数据包,并且由于某些原因我动态更改了mac,现在我的mac已经更改了,我应该通知tcpdump更改新mac上的过滤器,我该怎么做?
答案 0 :(得分:1)
是否可以从tcpdump动态更改过滤器?
是的,它可以使用新过滤器(由pcap_setfilter()
的过滤器表达式编译)调用pcap_compile()
,在其已打开的pcap_t
上,将过滤器设置为新的价值。
但是,这将导致已被捕获但未被tcpdump读取的流量被丢弃。 libpcap中没有任何机制可以防止这种情况发生。
从某种意义上说,我想在我的MAC地址上过滤数据包,并且由于某些原因我动态更改了mac,现在我的mac已经更改了,我应该通知tcpdump更改新mac上的过滤器,我该怎么办?< / p>
您不仅需要修改tcpdump以在捕获流量时调用pcap_compile()
和pcap_setfilter()
,还需要对其进行修改以接收来自某些来源的消息,以告知其更改过滤器和指定新过滤器应该是什么,并安排在MAC地址更改时将该消息发送给它。