Scapy BPF过滤器无法正常工作

时间:2012-08-17 18:15:31

标签: python scapy

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

但是,我收到的目的MAC地址不是过滤器中指定的地址。

这是一个代码snippit:

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 个答案:

答案 0 :(得分:2)

Scapy需要许多不同系统的多种依赖关系。很可能你没有BPF过滤器所需的依赖性。

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

安装tcpdump解决了我的问题 - 现在嗅探器上的过滤器

答案 3 :(得分:1)

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