使用sniff()函数进行Scapy过滤

2024-06-28 19:48:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用scapy函数sniff()来捕获数据包。我只想捕获EAP数据包。我可以使用以下筛选器使用tcpdump筛选EAP数据包:

# 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

同时,我有sniff()函数使用相同的过滤器运行,但该函数不捕获任何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数据包:(


Tags: 函数noaddress数据包tcpdumpprotoipv4warning
3条回答

你可能有几个问题,所以让我来谈谈我今天遇到的那个问题。

首先,如下面的错误报告所示:http://trac.secdev.org/scapy/ticket/537--Scapy不接受sniff函数中的iface参数。因此,要正确设置iface,您必须使用:

conf.iface = 'mon0'

希望这将允许您添加过滤器,并实际通过网络获取数据包。

如果你在mon0上嗅探,并且它是一个无线接口,你可能想尝试wlan proto而不是ether proto,但是我没有网络来测试EAP包以进一步提供帮助。

我知道这是一年多以后的事了,但是为了让其他人看到这个问题,答案是他捕获了EAPOL包,而不是EAP包。通过使用命令

sniff(filter="ether proto 0x888e", count=4)

0x888e是指以太网协议中的EAPOL,它需要使用以太网协议,而不是wlan协议。我不确定0888e是否可以引用wlan proto中的任何内容,但在做了与op几乎相同的事情(除了用“ether”替换“wlan”)之后,我得到了

>>> EAP in b[0]
False

但是当我进入

>>> EAPOL in b[0]
True

我相信OP捕捉到了他的代码正在寻找的东西(2个EAPOL包),但他没有捕捉到他认为他在寻找的东西-2个EAP包。

编辑-即使我用wlan替换了以太网络,我仍然认为EAP为false,EAPOL为true。

你是在和斯凯皮嗅探同时运行tcpdump吗?

Scapy可以很好地模拟TCPDUMP。一次只跑一个。

相关问题 更多 >