1

我正在构建一个 PcapNG 解析器(在 Python 中)来分析 WiFi 数据包。
我希望能够显示链接类型(例如,协议变体:802.11b、802.11a、802.11g 或 802.11n)。

但是,阅读PcapNG 格式定义时,我只看到以下内容:

  • LINKTYPE_IEEE802_11 105 IEEE 802.11(无线)
  • LINKTYPE_IEEE802_11_RADIO 127 802.11 加上 BSD 无线电报头

有没有办法从 PcapNG 跟踪文件中提取 WiFi 协议类型?

4

1 回答 1

1

如果捕获数据包的接口的链路层标头类型是 LINKTYPE_IEEE802_11,则不,您无法获取协议变体。

如果捕获数据包的接口的链路层标头类型是 LINKTYPE_IEEE802_11_RADIOTAP(是的,这是正确的名称;wiretap.org pcap-NG 规范中的链路层标头类型列表已过期,向上-to-date 列表是tcpdump.org Link-Layer Header Types 页面),然后数据包以radiotap 标头开始,提供有关数据包的各种元数据。

如果 radiotap 标头包含Channel字段,那么从那里的信息中,您可以确定有关协议变体的一些信息:

  • “5 GHz 频谱信道”+“OFDM 信道”=802.11a;
  • “2 GHz 频谱信道”+“CCK 信道”=802.11b;
  • “2 GHz 频谱信道”+“OFDM 信道”=802.11g;
  • “2 GHz 频谱信道”+“动态 CCK-OFDM 信道”=802.11g;

(两种 802.11g 风格之间的差异表明同一信道上是否也可能存在 802.11b 流量 - 这就是“动态 CCK-OFDM 信道”所表示的)。

但是,如果存在MCS字段,则为 802.11n,而不是任何其他类型,如果存在VHT字段,则为 802.11ac。

可能还有一个XChannel字段,它可以与 Channel 字段类似地解释,尽管它也包含一些 802.11n 的信息。

于 2015-03-30T19:39:22.520 回答