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

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

最佳答案

不应该有任何东西可以检测或猜测。 IEEE 802.11 是一种标准协议(protocol),其规范规定了帧的每个部分的正确字节顺序。如果字节顺序颠倒,则框架格式错误。您可以获取标准 here 的最新副本。

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

您还没有提到您尝试创建/解码的帧/场,因此很难说比查找更具体的内容。

关于endianness - 小端数据包被 dpkt 视为大端数据包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45145217/

10-12 16:01
查看更多