scapy中嗅探功能的过滤选项

Ven*_*ana 8 python linux networking ethernet scapy

我正在研究一种基于scapy的工具,我需要根据协议和目的地的IP地址来嗅探数据包

我想知道如何使用sniff()函数中的filter选项.我尝试在文档中使用格式,但大多数时候它会导致这样的问题. scapy中的sniff函数过滤器无法正常工作.

我使用的是

a=sniff(filter="host 172.16.18.69 and tcp port 80",prn = comp_pkt,count = 1)
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Jef*_*eux 14

sniff()使用Berkeley Packet Filter(BPF)语法(与之相同tcpdump),以下是一些示例:

来自或来自主机的数据包:

host x.x.x.x
Run Code Online (Sandbox Code Playgroud)

只有TCP SYN段:

tcp[tcpflags] & tcp-syn != 0
Run Code Online (Sandbox Code Playgroud)

所有ICMP但回应请求/回复:

icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply
Run Code Online (Sandbox Code Playgroud)