如何在 Windows 上使用 scapy 查看空中的所有数据包?

How to see all packets in the air with scapy on Windows?

我正在尝试在 scapy 中嗅探 python 3.4 中的一些数据包。

我正在使用 Windows 8.1,我知道 socket 模块没有 PF_PACKET 或类似 Windows 的东西来嗅探数据包,所以我使用了 scapy.sniff 函数。我已经安装了 WinPcap 4.1.3 .

我尝试嗅探并惊讶地发现它只嗅探来自我现在连接的无线网络的数据包,所以如果我没有连接到任何网络它不会嗅探任何东西(我一直在等待 10分钟,它没有打印任何东西)。代码:

from scapy.all import sniff, tshark
pkts = sniff(count=30) # iface does not work

tsharksniff 相同,给出相同的结果。

我有一张ALFA无线realtek接口卡,支持监听模式

这里有解决办法吗? wspy(python 中的 wireshark)是否在 Windows 中工作?是否支持WiFi监控模式?

Scapy 支持监控模式,但它需要几件事:

  • 使用最新开发的scapy版本。要下载它,请获取 https://github.com/secdev/scapy/archive/master.zip 并通过 python setup.py install
  • 安装
  • 使用 Npcap 而不是 Winpcap。您需要先卸载 Winpcap(Winpcap 已被放弃,Nmap 收回了该项目)。在 https://nmap.org/npcap/
  • 下载
  • 呼叫sniff([...], monitor=True)。指定接口会更安全。您可以在 scapy 的控制台中使用 IFACES.show() 打印列表。 (注意:接口名称iface=参数允许使用完整的接口名称。例如前面命令提示的“RaLink Adapter (R) Wi-Fi”)

监视器参数很重要,因为它会触发新的嗅探机制。

Wireshark 还需要 Npcap(Winpcap 不支持监控模式)在监控模式下进行嗅探