问题:Scapy:获取/设置数据包的频率或通道

我一直在尝试使用 Linux 捕获 WIFI 数据包,并查看捕获数据包的频率/通道。我尝试了 Wireshark,但没有运气,也没有帮助。虽然使用来自 Wireshark 的样本数据包,但我可以看到频率/频道。

所以现在我正在尝试使用 Scapy。我想弄清楚嗅探数据包的频率/频道,但仍然没有运气。有没有办法用 Scapy 做到这一点。

附言如果有比 Scapy 或 Python 更好的工具,我感谢您的评论

解答

我发现RadioTab 标头不是任何 Dot11 协议的一部分,而只是由网络接口添加的。我从Wireshark.org而不是从我的实时 Wireshark 捕获中获得样本数据包的 RadioTab 标头的原因是因为某些网络适配器没有添加 RadioTap,而其他一些网络适配器没有添加 RadioTab 标头。我用一个新的外部 WiFi 适配器检查了这个,它确实添加了 RadioTap 标头。

如果适配器在捕获帧时未注入附加信息,则不会添加 radiotap 标头。

所以对于我的主要问题,如何获取/设置数据包的频率。我希望 Scapy 有这个选项,但它没有,也不应该。原因是频率取决于网络适配器上的设置。所以我所做的就是将我的 WiFi 适配器的频率/频道设置为不同的。我的外部 WiFi 适配器可以在各种通道中工作,因此我更改了每个通道并使用 RadioTap 标头进行确认。有一个简单的linux 命令/工具可以帮助我检查我的 WiFi 接口支持的频道,并切换到特定频道。

要以某个频率或通道捕获/发送数据包,您需要更改接口的工作通道并将 scapy 中的嗅探器/发送器接口设置为该接口。

编辑 - 我面临的其他问题和解决方案:

如果您在 linux 上,并且想要更改接口的工作通道,则需要禁用该接口的网络管理器并执行此操作首先将以下代码段添加到/etc/network/interfaces

auto $iface
iface $iface inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

$iface替换为您的接口名称。这将让您自己控制界面。然后将以下行添加到/etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant

network={
    ssid="Your_AP_SSID"
    psk="Your_Passphrase"
    freq_list=2412 2437 2462
}

请注意,2412 2437 2462是您的界面可供选择的频率(在本例中为通道 1、6、11)。您可以将它们编辑为所需的频率。来源。但首先你必须检查你的接口是否支持这些频率。检查

iwlist channel

终于在一切完成之后。

sendp(Ether()/IP(dst="1.2.3.4",ttl=(1,4)), iface="wlp3s0")

这将以wlp3s0设置的频率向您发送数据包。

Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐