我用Scapy捕捉Wi-Fi客户端请求帧。我只对MAC和客户的SSID地址感兴趣。我会做如下的事情。在
sniff(iface="mon0", prn=Handler)
def Handler(pkt):
if pkt.hasLayer(Dot11):
if pkt.type == 0 and pkt.subtype == 4:
print pkt.addr2 + " " + pkt.info
我的问题是,我是在一个处理能力有限的嵌入式设备上这样做的。当我运行脚本时,我的处理器利用率上升到接近100%。我认为这是因为Scapy正在嗅探并传递给Python代码的大量帧。我还假设,如果可以在sniff命令中使用正确的过滤器,就可以消除许多未使用的帧,从而减少处理器负载。在
有没有一个过滤器语句可以用来做这件事?在
由于Scapy解码数据的方式,它的速度非常慢。你可以
我强烈推荐第三种方法,尽管wiresharek附带了一个大于120mb的库,但您的嵌入式设备可能无法处理。在
有了Scapy,就可以用应用于捕获的BPF Filter进行嗅探。这将在一个比
Handler
函数低得多的级别上过滤出数据包,并将显著提高性能。在在Scapy documentation中有一个简单的例子。在
从here specifically拼凑而成的过滤器。在
不幸的是,我现在不能测试这个,但是这些信息应该为你提供一个最终解决方案的垫脚石,或者其他人来发布你所需要的东西。我相信你还需要将界面设置为监控模式。在
你也可以找到这个有趣的问题-Accessing 802.11 Wireless Management Frames from Python。在
相关问题 更多 >
编程相关推荐