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

Bab*_*sta 10 python scapy wireshark python-3.x

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

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

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

Bab*_*sta 7

发现RadioTab 标头不是任何 Dot11 协议的一部分,而只是由网络接口​​添加的。我从Wireshark.org而不是从我的实时 wireshark 捕获中获取示例数据包的 RadioTab 标头的原因是因为某些网络适配器没有添加 RadioTap 而其他网络适配器没有添加 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
Run Code Online (Sandbox Code Playgroud)

替换$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
}
Run Code Online (Sandbox Code Playgroud)

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

iwlist channel
Run Code Online (Sandbox Code Playgroud)

最后在一切都做完之后。

sendp(Ether()/IP(dst="1.2.3.4",ttl=(1,4)), iface="wlp3s0")
Run Code Online (Sandbox Code Playgroud)

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