【问题标题】:how to dynamically modify the filter in tcpdump如何动态修改tcpdump中的过滤器
【发布时间】:2013-04-02 07:19:37
【问题描述】:

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

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

【问题讨论】:

    标签: libpcap packet-capture tcpdump


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 谢谢,它成功了,我测试了一些基本更改,是的,第二部分我将更改 pcap_loop 以接受从 tcpdump 注册的处理程序,并在任何通知来自另一个通知时调用调用mac地址改变!这个怎么样?还是你有更好的?
    • @John 你是否设法实现了这个对 TcpDump 的扩展? :) 我现在也面临着同样的挑战,如果得到任何支持,我将不胜感激!
    猜你喜欢
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 2022-08-20
    • 1970-01-01
    相关资源
    最近更新 更多