1

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

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

4

1 回答 1

1

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

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

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

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

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

于 2013-04-02T08:33:30.083 回答