7

我在 Ubuntu 16.04(4.4 内核)上使用 scapy 收集 802.11 数据包。我的数据包的 RadioTap 标头具有以下当前标志:

present=TSFT+Flags+Rate+Channel+dBm_AntSignal+b14+b29+Ext

鉴于 RadioTap 的描述,我希望 Channel 从标头和前面的字段之后的第 10 个字节开始(8 个用于 TSFT + 1 个用于标志和速率)。通道的对齐方式为 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' 

在这种情况下,通道号实际上出现在字节 18-19 ('l\t' = 2412),我不确定哪个字节包含 dBm 信号强度。

任何人都知道我错过了什么?

4

1 回答 1

2

在深入研究规范后找到了答案:

Scapy 不解析由bit-32表示的扩展标头(尽管它确实通过在上面声明+Ext告诉了我有关它们的信息)。这些额外的标头填充在数据包的“未解码”部分的前面。我认为 scapy 至少应该从未解码中删除那些扩展的标头以避免将来的混乱。

在这种特殊情况下,有两个额外的 32 位扩展位图头,占额外的 8 个字节。

如果有人想写一个更详细的答案,我会接受它,否则我会清理这个答案并永久接受它。

于 2016-03-02T14:07:43.443 回答