小端数据包被dpkt视为大端

时间:2017-07-17 13:10:03

标签: endianness pcap dpkt

我正在使用dpkt来解析一些ieee80211数据包 我看到创建的ieee80211对象有错误的值 深入挖掘我发现ieee80211将数据视为大端,而实际上我提供的数据包是小端。

有没有办法在运行时检测数据包的字节顺序,所以我可以在将它提供给dpkt.ieee80211之前将其更改为big endian?

3 个答案:

答案 0 :(得分:2)

不应该有任何东西需要检测或猜测。 IEEE 802.11是一种标准协议,其规范规定了帧的每个部分的正确字节顺序。它的结束性是相反的,那么框架是畸形的。您可以获取标准here的最新副本。

查看3500多页的pdf(感谢上帝对于ctrl + f),似乎大多数值都是big-endian,就像在TCP / IP中一样。但显然,这里和那里都使用了小端。例如,在一些TKIP领域。坦率地说,这有点令人惊讶。

你还没有提到你想要创建/解码的帧/场,所以很难说出比查找它更具体的内容。

答案 1 :(得分:1)

当您不知道一种方式或另一种方式是注入有效负载并以相同的方式解析时,您能够检测到字节顺序的唯一方法。

然后,您可以通过检查注入的有效负载的标识来检查字节顺序。

答案 2 :(得分:0)

事实证明,对于CAPWAP下的IEEE80211,只需交换帧控制字节 这可能是一个初始错误 - 事实上不合标准的案例 请参阅Wireshark Q&A

中的答案