我正在使用Linux下的原生C语言和libpcap开发一个IEEE802.11帧解析程序。我可以轻松地解析RadioTap和IEEE802.11头部,但是我无法找到嵌套在IEEE802.11 MPDU中的协议名称。不幸的是,在IEEE802.11头部中没有任何字段指示封装的协议(例如以太网头部中的协议字段)。有什么解决方案吗?
802.11
帧,头类型/子类型将在 0x20
和 0x2F
之间(虽然帧通常为 0x20
(数据)或 0x28
(QoS-数据))。会有一个 5 字节的 SNAP 头,其中包含有效载荷的类型(如此答案中所述)。如果 OID(SNAP 头的前三个字节)为 0x000000
,则下面的两个字节是以太网类型。0x888e
(来源)。这是您需要检查的字段,以了解封装的协议(IP 为 0x0800
,ARP 为 0x0806
等)。802.11
类型/子类型字段的描述:https://supportforums.cisco.com/document/52391/80211-frames-starter-guide-learn-wireless-sniffer-traces。
IEEE802.11
标头的一部分。我的意思是,在 WPA 认证的EAPOL
分组或封装在数据包内的任何其他协议中,都涉及到802.11X
。 - SuB