我正在使用String res = str.replaceAll("\\\"(\\w+)\\\"\\:","\\\\$1:")
在Linux内部使用原始IEEE802.11
开发libpcap
帧解析器程序。我可以轻松地解析C
和RadioTap
标题,但我无法找到封装在IEEE802.11
MPDU中的协议名称。遗憾的是,IEEE802.11
标头中没有任何字段表示封装协议(如IEEE802.11
标题中的protocol
字段)。
任何解决方案?
答案 0 :(得分:2)
对于封装数据的802.11
帧,标头类型/子类型将介于0x20
和0x2F
之间(尽管该帧通常为0x20
(数据)或{ {1}}(QoS-Data))。将有一个5字节的SNAP头,它将包含有效载荷的类型(如this answer中所述)。如果OID(SNAP头的前三个字节)是0x28
,则接下来的两个字节是以太网类型。
对于EAPoL(source),以太网类型为0x000000
。这是您要检查以了解封装协议的字段(IP为0x888e
,ARP为0x0800
等。)
以下是有关以太网类型的优秀思科文档以及如何使用它们来过滤某些协议:http://www.cisco.com/c/en/us/td/docs/ios/12_2/ibm/vol1/command/reference/fibm_r1/br1fethc.pdf。
以下是有关无线嗅探器跟踪的优秀思科文档,其中包含0x0806
类型/子类型字段的说明:https://supportforums.cisco.com/document/52391/80211-frames-starter-guide-learn-wireless-sniffer-traces。
答案 1 :(得分:0)