我正在使用IEEE802.11
内部的libpcap
和原始的C
开发一个C
框架解析程序。我可以很容易地解析RadioTap
和IEEE802.11
头,但是无法找到封装在IEEE802.11
MPDU中的协议名。不幸的是,IEEE802.11
头中没有任何字段指示封装的协议(如Ethernet
头中的protocol
字段)。
有解决办法吗?
发布于 2017-04-01 06:51:48
IEEE802.11
数据包的数据封装在LLC
报头中(参见这里):
一个802.11帧应该包含一个LLC标头,如果并且只有当它是一个数据帧的时候。帧类型和子类型是MAC头中帧控制字段的一部分;数据是帧类型值之一(其他值是Control和Management)。子类型并不重要--所有的数据帧都应该包含一个LLC报头,而其他任何帧都不应该包含。
有两种LLC
头:3字节,8字节。IEEE 802.11
使用第二个(参见这里)。在这一段中,LLC
头的最后两个字节相当于Ethernet
协议中的Ether Type
字段。例如,这个字段的0x800
就意味着IPv4
。
发布于 2017-03-24 21:47:35
对于封装数据的802.11
帧,报头类型/子类型将介于0x20
和0x2F
之间(尽管该帧通常是0x20
(数据)或0x28
(QoS- data ))。将有一个5字节的SNAP报头,它将包含有效负载的类型(如这个答案中提到的)。如果OID ( SNAP头的前三个字节)是0x000000
,那么接下来的两个字节就是以太网类型。
以太网类型将是0x888e
for EAPoL (来源)。这是您要检查的字段,以了解封装的协议(0x0800
用于IP,0x0806
用于ARP,等等)。
这里有一个很好的关于以太网类型的思科文档,以及如何使用它们过滤某些协议:r1/br1fethc.pdf。
这里有一个关于无线嗅探器跟踪的很好的思科文档,其中包括对802.11
类型/子类型字段的描述:https://supportforums.cisco.com/document/52391/80211-frames-starter-guide-learn-wireless-sniffer-traces。
https://stackoverflow.com/questions/42834940
复制相似问题