9

我正在使用 Scapy 并希望根据目标 mac 地址进行过滤。

但是,我收到的数据包显示的目标 MAC 地址不是过滤器中指定的地址。

这是一个代码片段:

from scapy.all import *

sniff(iface="eth1", filter="ether dst host 91:e0:f0:01:00:00", 
      count=3, prn=lambda x: x.show())

我正在运行 Scapy 2.2.0

对这里的问题有任何想法吗?

4

4 回答 4

2

Scapy 需要许多不同系统的大量依赖项。很可能您没有 BPF 过滤器工作所需的依赖项。

http://www.secdev.org/projects/scapy/portability.html

于 2013-06-18T15:38:34.580 回答
2

安装 tcpdump 为我解决了这个问题 - 现在嗅探上的过滤器可以工作了

于 2015-06-25T13:14:02.043 回答
2

在我的情况下,升级到 2.3.3dev(github 版本),修复它

于 2018-02-08T02:27:06.927 回答
0

scapy错!!!似乎在应用 BPF 过滤器(函数参数)scapy之前开始接收数据包。需要一段时间才能正常工作!摆脱这种情况的两种方法:filtersniff

  1. 用于lfilter在脚本中定义您的过滤功能。它在繁忙的链接上效率不高,因为在您的脚本中应用了过滤器,而不是内核。考虑使用pypy来加速它。
  2. 对于某些第一个数据包,请检查脚本中的目标 MAC 地址,然后不再检查;即在嗅探开始时检查数据包的正确性以通过不稳定阶段,scapy然后依靠scapy过滤不需要的数据包。
于 2015-03-15T07:43:28.840 回答