我正在使用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)
答案 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)