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

Is there a way to extract the WiFi protocol type from a PcapNG trace file?

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

但是,阅读 PcapNG format definition 我只看到提到了以下内容:

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

如果捕获数据包的接口的 link-layer header 类型是 LINKTYPE_IEEE802_11,不,您无法获取协议变体。

如果捕获数据包的接口的 link-layer header 类型是 LINKTYPE_IEEE802_11_RADIOTAP(是的,这是正确的名称;link-layer 的列表wiretap.org pcap-NG 规范中的 header 类型已过时,up-to-date 列表 the tcpdump.org Link-Layer Header Types page), then the packet begins with a radiotap header 给出了有关数据包的各种 meta-data。

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

  • “5 GHz 频谱信道”+ "OFDM channel" = 802.11a;
  • “2 GHz 频谱信道”+ "CCK channel" = 802.11b;
  • "2 GHz 频谱通道" + "OFDM channel" = 802.11g;
  • “2 GHz 频谱通道”+ "Dynamic CCK-OFDM channel" = 802.11g;

(两种 802.11g 之间的差异表明同一信道上是否也可能有 802.11b 流量 - 这就是 "Dynamic CCK-OFDM channel" 所表明的)。

但是,如果 MCS field is present, it's 802.11n, not any of those other types, and if the VHT 字段存在,则为 802.11ac。

可能还有一个 XChannel 字段,虽然它也包含一些 802.11n 的信息,但它的解释类似于 Channel 字段。