Ric*_*nry 7 scapy linux-device-driver radiotap
我在Ubuntu 16.04(4.4内核)上使用scapy收集802.11数据包.我的数据包的RadioTap标头具有以下当前标志:
present=TSFT+Flags+Rate+Channel+dBm_AntSignal+b14+b29+Ext
Run Code Online (Sandbox Code Playgroud)
鉴于RadioTap的描述,我希望Channel在头部和前面的字段之后的第10个字节处开始(对于标志和速率,每个TSFT + 1为8).通道的对齐为2,因此不需要填充.然而,这是数据包未解码部分的内容:
notdecoded=' \x08\x00\x00\x00\x00\x00\x00f\xc0 \x02\x00\x00\x00\x00\x10\x02l\t\xa0\x00\xa9\x00\x00\x00\xa9\x00'
Run Code Online (Sandbox Code Playgroud)
在这种情况下,通道号实际上出现在字节18-19('l\t'= 2412),并且我不确定哪个字节包含dBm信号强度.
任何人都知道我错过了什么?
深入研究规范后找到了答案:
Scapy 不会解析bit-32所表示的扩展标头(尽管它确实通过上面的+Ext告诉了我有关它们的信息)。这些额外的标头被填充在数据包的“未解码”部分的前面。我认为 scapy 至少应该从未解码的扩展头中删除这些扩展头以避免将来的混乱。
在这种特殊情况下,有两个额外的 32 位扩展位图标头,占额外的 8 个字节。
如果有人想写出更详细的答案,我会接受它,否则我会清理这个答案并永久接受它。