Есть ли способ извлечь тип протокола WiFi из файла трассировки PcapNG?
Я создаю парсер 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 plus BSD радио заголовок
Есть ли способ извлечь тип протокола WiFi из файла трассировки PcapNG?
1 ответ
Если тип заголовка канального уровня для интерфейса, на котором был захвачен пакет, является LINKTYPE_IEEE802_11, нет, вы не можете получить вариант протокола.
Если тип заголовка канального уровня для интерфейса, на котором был захвачен пакет, является LINKTYPE_IEEE802_11_RADIOTAP (да, это правильное имя; список типов заголовков канального уровня в спецификации pcap-NG wiretap.org устарел, -to-date список - страница типов заголовков канального уровня tcpdump.org), затем пакет начинается с заголовка радиоленты, дающего различные метаданные о пакете.
Если заголовок радиоленты включает в себя поле " Канал", то по имеющейся информации вы можете определить некоторую информацию о варианте протокола:
- "Канал спектра 5 ГГц" + "Канал OFDM" = 802.11a;
- "Канал спектра 2 ГГц" + "Канал CCK" = 802.11b;
- "Канал спектра 2 ГГц" + "Канал OFDM" = 802.11g;
- "Канал спектра 2 ГГц" + "Динамический канал CCK-OFDM" = 802.11g;
(разница между двумя вариантами 802.11g указывает, может ли трафик 802.11b также передаваться по одному и тому же каналу - это то, что указывает "Динамический канал CCK-OFDM").
Однако, если присутствует поле MCS, это 802.11n, а не любой из этих других типов, а если присутствует поле VHT, это 802.11ac.
Также может существовать поле XChannel, которое можно интерпретировать аналогично полю Channel, хотя оно также содержит некоторую информацию для 802.11n.