Scapy过滤与嗅探()函数
我使用scapy函数嗅探()进行数据包捕获。我只想捕获EAP数据包。我可以使用tcpdump与以下过滤器过滤EAP包:Scapy过滤与嗅探()函数
# tcpdump -i mon0 -p ether proto 0x888e tcpdump: WARNING: mon0: no IPv4 address assigned tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on mon0, link-type IEEE802_11_RADIO (802.11 plus radiotap header), capture size 65535 bytes 13:04:41.949446 80847234901us tsft 48.0 Mb/s 2437 MHz 11g -16dB signal antenna 1 [bit 14] EAP packet (0) v1, len 5 13:04:46.545776 80851831746us tsft 54.0 Mb/s 2437 MHz 11g -13dB signal antenna 1 [bit 14] EAP packet (0) v1, len 5
同时我有嗅探()函数相同的过滤器运行,但功能不捕捉任何EAP包:
sniff(filter="ether proto 0x888e",iface="mon0", count = 1)
为什么sniff()函数不捕获任何EAP数据包?
编辑:
对不起,我迟到的反应,我想你提出什么:
> conf.iface = 'mon0'
> pkts = sniff(filter="wlan proto 0x888e", count = 1)
tcpdump: WARNING: mon0: no IPv4 address assigned
> pkts
Sniffed: TCP:0 UDP:0 ICMP:0 Other:1
> EAP in pkts[0]
False
但这并不静像拍摄EAP包:(
你可以有几个问题在这里,让我来谈谈我刚刚遇到的那个。
首先,如下面的bug报告所示t:http://trac.secdev.org/scapy/ticket/537 - Scapy不遵守sniff函数中的iface参数。因此,要正确设置IFACE,你将不得不使用:
conf.iface = 'mon0'
希望这将让您能够在线路中增加过滤器和实际得到的数据包。
如果你在mon0上嗅探,它是无线接口,你可能想尝试wlan proto而不是ether proto,但是我没有一个网络来测试EAP数据包以进一步提供帮助。
你是否在scapy sniff的同时运行tcpdump?
Scapy可以很好地模拟TCPDUMP。一次只运行一个。
scapy不使用tcpdump,它会打开它自己的L2套接字。 – KillianDS 2012-09-28 20:55:03
我知道这是一年多后,但为了其他人看待这个问题的好处,答案是他捕获了EAPOL数据包,而不是EAP数据包。通过使用命令
sniff(filter="ether proto 0x888e", count=4)
0x888e指EAPOL在以太网协议,这需要使用的醚原,而不是WLAN原的。我不知道如果0888e可以被称为在WLAN的原话,但这样做几乎相同的东西运(除了“乙醚”取代“WLAN”)后,我得到了
>>> EAP in b[0]
False
然而,当我进入
>>> EAPOL in b[0]
True
我相信OP捕捉他有什么代码正在寻找(2个EAPOL数据包),但他没有抓住什么,他以为他一直在寻找 - 2个EAP包。
编辑 - 即使我用ether替换wlan,我仍然想出EAP为false和EAPOL为true。
我认为这些都是部分的答案,一起工作给我。我做了:
conf.iface='wlan0.mon'
a=sniff(filter='ether proto 0x888e', prn=lambda x: x.summary(),
count=100, store=1)
然后我生成了一个EAPOL交换通过手动断开设备从WPA网络。当它试图重新关联时,我捕获了4路EAPOL交换。做一个> 4的计数,因为可能会有帧重传。 AFAIK,scapy不解码KEY数据,因此它被转储为十六进制字符串。
由于这是一个老问题,我将其留作评论:可能你DID捕获了数据包。然而,你的测试是错误的,EAP是Python中的一个类,并不是一个数据包,因此它永远不会在'pkts'(这是一个对象列表,可能是类'Ether')。该语句应该是'pkts [0] .haslayer(EAP)',或者更可能是'pkts [0] .haslayer(EAPOL)' – KillianDS 2012-09-28 21:05:59