从802.11 Radiotap解码原始数据

时间:2015-02-25 09:17:05

标签: python sockets wireless 802.11

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

在我的情况下得到这个hexdump:

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/defined-fields/Channel

但不成功= \ 有谁知道如何将此十六进制转换为正确的频率?

2 个答案:

答案 0 :(得分:0)

我解决了。

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

蟒:

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

答案 1 :(得分:0)

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