scapy中的sniff函数的filter不能正常工作

似乎snifffunction的filter不能正常工作。

我用下面的filter执行嗅探

 a=sniff(count=1,filter="tcp and host 192.168.10.55 and port 14010") 

但有一段时间, sniff捕获这样的UDP数据包:

 >>> a=sniff(count=1,filter="tcp and host 192.168.10.55 and port 14010") >>> a <Sniffed: TCP:0 UDP:1 ICMP:0 Other:0> 

有一段时间, sniff捕获错误端口的TCP数据包:

 >>> a=sniff(count=1,filter="tcp and host 192.168.10.55 and port 14010") >>> a <Sniffed: TCP:1 UDP:0 ICMP:0 Other:0> >>> a[0] <Ether dst=00:26:55:cb:3b:10 src=00:22:64:55:c8:89 type=0x800 |<IP version=4L ihl=5L tos=0x10 len=92 id=8683 flags=DF frag=0L ttl=64 proto=tcp chksum=0x9484 src=192.168.1.71 dst=192.168.1.133 options=[] |<TCP sport=ssh dport=1874 seq=350107599 ack=2484345720 dataofs=5L reserved=0L flags=PA window=254 chksum=0x846b urgptr=0 options=[] |<Raw load="yn\x01\x9d\xfca\xc9V-8\x18|\xc4\t\xf1\xc4\xd8\xd3\xc6\x95E\x19'h\xc0\x89\xf1\x08g\xa3\x9a\xa9\xf51RF\xc2\x1f\xe5a\xac\x83M\xc9\x0b\x80\x85\x1b\xcf\xb6f\xcc" |>>>> 

有一段时间, sniff捕获这样一个ARP数据包:

 >>> a=sniff(count=1,filter="tcp and host 192.168.10.55 and port 14010") >>> a <Sniffed: TCP:0 UDP:0 ICMP:0 Other:1> >>> a[0] <Ether dst=ff:ff:ff:ff:ff:ff src=00:22:07:2c:53:97 type=0x806 |<ARP hwtype=0x1 ptype=0x800 hwlen=6 plen=4 op=who-has hwsrc=00:22:07:2c:53:97 psrc=192.168.1.178 hwdst=ff:ff:ff:ff:ff:ff pdst=192.168.1.179 |<Padding load='\x00\x07\x00\x00\x00\x00\x00\x00p\x00\x00\x00\x00\x00\x01\x14\x00\x00' |>>> 

我在filter中丢失了什么吗? 我怎样才能避免这个问题?

Solutions Collecting From Web of "scapy中的sniff函数的filter不能正常工作"

您可以在以下网站http://biot.com/capstats/bpf.html中查看过滤器的语法&#x3002; 我面临着类似的问题,它为我工作。

你可能想引用这个问题: https : //stackoverflow.com/questions/37453283/filter-options-for-sniff-function-in-scapy# =

您也可以尝试在运行代码之前打开所需的端口来测试您的程序。

我在VM上遇到与Centos相同的问题。 我用ip主机过滤器,而不是主机。 这似乎已经解决了我的情况这个问题。

错误的过滤器#

 >>> packets = sniff (filter = "host 176.96.135.80", count =2, iface = "eth0", timeout =10) >>> packets.summary() Ether / IP / UDP 172.7.198.136:netbios_ns > 172.7.199.255:netbios_ns / NBNSQueryRequest Ether / IP / TCP 176.96.135.80:53527 > 172.7.19.58:ssh A / Padding 

固定#

 >>> packets = sniff (filter = "ip host 176.96.135.80", count =2, iface = "eth0", timeout =10) 

这之后没有任何问题。

我有相同或类似的问题 – 嗅探过滤器没有工作。

安装tcpdump解决了我的问题。