Python 3-Scapy嗅探过滤器选项

时间:2019-02-14 09:12:29

标签: python python-3.x network-programming scapy

我正在使用Scapy嗅探功能来跟踪本地接口上的传入流量。我想隔离并仅打印特定的数据包。为此,我必须匹配TCP / UDP / IP标头的特定字段中的值。是否有详细的文档说明Scapy嗅探过滤器的用法?如何设置过滤器以引用某些数据包字段值?

例如,我需要仅显示SYN + ACK数据包的过滤器。由于某些原因,此操作无法按预期进行:

sniff(iface="Intel(R) Ethernet Connection (4) I219-LM",
      filter="ip src x.x.x.x and tcp-syn !=0 and tcp-rst !=1",
      prn=lambda x: x.summary)

1 个答案:

答案 0 :(得分:1)

过滤器采用标准的BPF语法编写,如此处https://www.wireshark.org/docs/man-pages/pcap-filter.html

所述

对于您的用例(仅SYN-ACK数据包),我认为应该是这样的:

filter = "host x.x.x.x and (tcp[tcpflags] & (tcp-syn|tcp-ack)) == (tcp-syn|tcp-ack)"

sniff(iface="Intel(R) Ethernet Connection (4) I219-LM",
      filter=filter, prn=lambda x: x.summary)