Scapy嗅探过滤器无法正常工作

时间:2017-12-26 11:14:24

标签: python networking scapy

我在Scapy中将过滤器应用于sniff命令时遇到问题。在最简单的情况下,我可以在Scapy cli中嗅探10个数据包,如下所示:

Welcome to Scapy (2.3.3)
>>> pkts = sniff(count=10)
>>> for p in pkts: p.summary()
... 
'IP / TCP xx.xx.xx.xx:ssh > xx.xx.xx.xx:53128 PA / Raw'
'IP / TCP xx.xx.xx.xx:60661 > xx.xx.xx.xx:http_alt PA / Raw'
'IP / TCP xx.xx.xx.xx:http_alt > xx.xx.xx.xx:60661 A'
'IP / TCP xx.xx.xx.xx:32874 > xx.xx.xx.xx:http S'
'IP / TCP xx.xx.xx.xx:https > xx.xx.xx.xx:58026 PA / Raw'
'IP / TCP xx.xx.xx.xx:58026 > xx.xx.xx.xx:https A'
'IP / TCP xx.xx.xx.xx:60804 > xx.xx.xx.xx:http_alt A'
'IP / TCP xx.xx.xx.xx:63244 > xx.xx.xx.xx:http_alt PA / Raw'
'IP / TCP xx.xx.xx.xx:http_alt > xx.xx.xx.xx:63244 A'
'IP / TCP xx.xx.xx.xx:43843 > xx.xx.xx.xx:http_alt A'

但是当我尝试时:

pkts = sniff(count=10, filter='tcp')

它永远不会完成,只是等待数据包。

我正在租用运行Ubuntu 16.04服务器的VPS,我知道网络有一些有限的功能。例如,我无法使用linux流量控制(tc)。

关于如何处理这种情况的任何想法?

修改 BPF过滤器可以正常运行tcpdump。

1 个答案:

答案 0 :(得分:1)

这可能是因为没有为正确的接口编译BPF过滤器。您应该获取Scapy的当前开发版本(来自https://github.com/secdev/scapy)并在sniff()调用中指定界面:

pkts = sniff(count=10, filter='tcp', iface='eth0')  # replace eth0 with your interface name