Scapy 嗅探过滤器无法正常工作
Scapy sniff filter not functioning
我无法在 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')
它永远不会完成,只是等待数据包。
我在租用的 VPS 运行 Ubuntu 16.04 服务器上,我知道网络功能有限。例如,我无法使用 linux 交通控制 (tc)。
有什么想法会是这样吗?
编辑:
BPF 过滤器对 tcpdump 可以正常工作。
这可能是因为没有为正确的接口编译 BPF 过滤器。您应该获取 Scapy 的当前开发版本(来自 https://github.com/secdev/scapy)并在您的 sniff()
调用中指定接口:
pkts = sniff(count=10, filter='tcp', iface='eth0') # replace eth0 with your interface name
我无法在 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')
它永远不会完成,只是等待数据包。
我在租用的 VPS 运行 Ubuntu 16.04 服务器上,我知道网络功能有限。例如,我无法使用 linux 交通控制 (tc)。
有什么想法会是这样吗?
编辑: BPF 过滤器对 tcpdump 可以正常工作。
这可能是因为没有为正确的接口编译 BPF 过滤器。您应该获取 Scapy 的当前开发版本(来自 https://github.com/secdev/scapy)并在您的 sniff()
调用中指定接口:
pkts = sniff(count=10, filter='tcp', iface='eth0') # replace eth0 with your interface name