解码来自 802.11 Radiotap 的原始数据

问题描述 投票:0回答:2

我试图用python创建小型监控模式嗅探器,嗅探器必须在屏幕上打印4个参数,SSID,Srouce MAC,RSSI,频率,我使用套接字库,因为Scapy不解析Radiotap。

就我而言,获取此十六进制转储:

0000   00 00 1A 00 2F 48 00 00  73 B7 E3 38 67 01 00 00   ..../H..s..8g...
0010   10 02 7B 09 C0 00 AE 00  00 00 80 00 00 00 FF FF   ..{.............
0020   FF FF FF FF 00 1B 9E A8  1D 6E 00 1B 9E A8 1D 6E   .........n.....n
0030   F0 FC 08 60 69 8F 24 00  00 00 64 00 11 04 00 05   ...`i.$...d.....
0040   41 72 6F 6D 61 01 08 82  84 8B 96 24 30 48 6C 03   Aroma......$0Hl.
0050   01 06 05 04 00 01 00 04  2A 01 04 2F 01 04 32 04   ........*../..2.
0060   0C 12 18 60 DD 0E 00 50  F2 04 10 4A 00 01 10 10   ...`...P...J....
0070   44 00 01 01 DD 09 00 10  18 02 04 F0 00 00 00 DD   D...............
0080   18 00 50 F2 01 01 00 00  50 F2 02 01 00 00 50 F2   ..P.....P.....P.
0090   02 01 00 00 50 F2 02 0C  00 DD 18 00 50 F2 02 01   ....P.......P...
00a0   01 80 00 03 A4 00 00 27  A4 00 00 42 43 5E 00 62   .......'...BC^.b
00b0   32 2F 00 C6 93 C8 81                               2/.....

在第二行(0010)中,第 3 个和第 4 个字节是 7B 09 向我们显示正确的频率,在本例中为 2412mHz,

这里的问题是,我如何将这个十六进制转换为正确的频率? 我找到了这个页面http://www.radiotap.org/define-fields/Channel

但没有成功=\ 有人可以知道如何将此十六进制转换为正确的频率吗?

python sockets wifi radiotap
2个回答
0
投票

我解决了。

这两个字节首先包含通道“7B”,第二个“09”是静态的。 我取第一个并编码为 hax(来自原始数据)并在基数 16 上转换为值,我添加 2304,我们得到了频率

蟒蛇:

int(pkt[18].encode('hex'), 16)+2304)

0
投票

我建议使用结构库来解压值而不是简单的索引,并记住第二个字节 0x09 是通道标志。

© www.soinside.com 2019 - 2024. All rights reserved.