【发布时间】:2015-07-28 21:53:37
【问题描述】:
我正在使用 Python 2.6 在 Windows 7 上使用 scapy 2.2 进行嗅探。有没有办法可以识别嗅探数据包的接口?我想过用mac地址来识别,但是有没有办法用scapy来做呢?
类似这样的东西(不起作用) -
packet = sniff(count=1, iface='eth0')[0]
print packet.iface # prints 'eth0'
【问题讨论】:
我正在使用 Python 2.6 在 Windows 7 上使用 scapy 2.2 进行嗅探。有没有办法可以识别嗅探数据包的接口?我想过用mac地址来识别,但是有没有办法用scapy来做呢?
类似这样的东西(不起作用) -
packet = sniff(count=1, iface='eth0')[0]
print packet.iface # prints 'eth0'
【问题讨论】:
在 scapy 中,捕获数据包的接口名称存储在属性 sniffed_on 中,例如:
packet.sniffed_on
【讨论】:
.sniffed_on 是 None,除非您将 iface 参数提供给 sniff。
我几乎不怀疑,主要是因为接口(在大多数情况下是 NIC - 除非您在谈论 VM)不是数据包属性。想一想:哪个协议使用接口? TCP? HTTP?以太网?
MAC 方式可以工作,您可以使用 IP 地址来做同样的事情(每个 NIC 可以有自己的 IP,想想一个具有多个端口的路由器)。
在 Windows 机器中,您可以使用 ipconfig(或 ipconfig /all 获取更多信息,例如 MAC 地址)查看您的接口。看看这个链接: http://www.maketecheasier.com/view-network-adapter-details-in-windows/
【讨论】:
在Linux世界使用的接口名称'ethX',所以对于Windows我认为有不同的名称(我没有在Windows下测试Scapy),为此尝试执行:
>>> ifaces
This will show how Scapy has determined the usable network interfaces on your system (and will most likely not be correct in your case). It's the bases for the Windows-specific 'show_interfaces()' command.
有关嗅探的更多详细信息(Scapy Docs)
【讨论】: