Парсинг WiFi пакетов (libpcap)

Мы работали над тем, чтобы протокол маршрутизатора OpenWRT регистрировал запросы зонда WiFi на базу данных MySQL (он хранит MAC-адрес и информацию RSSI для каждого пакета зондирующего запроса вместе с другими данными, специфичными для маршрутизатора).

Изучив libpcap немного, ямы смогли собрать небольшую простую программу, которая просто анализирует пакеты на интерфейсе монитора (mon0), используя выражение фильтра ('WLAN подтип зонд-рек '), а затем распечатывает необработанные пакеты в шестнадцатеричном виде. С информацией, которая 'Доступная онлайн на libpcap, эта часть была довольно простой.

Сейчас здесьгде яя застрял:Как мне разобрать пакет WiFi, чтобы получить информацию, которую яищу (RSSI и MAC-адрес источника)?

Чтобы было ясно, яя не спрашиваю код для этого (хотя я выигралне жалуюсь если тыЯ хотел бы поставить некоторые: D). Я'Я просто ищу какое-то руководство для понимания того, какой байт какой - дорожной карты пакетов WiFi, если хотите.

Есть несколько хороших учебных пособий для разбора пакетов, которые приходят через Ethernet, но я не имеюЯ не смог найти ничего, что могло бы помочь с разбором заголовков, особенно связанных с WiFi. Я предполагаю, что это будет довольно простой процесс - просто захват соответствующих байтов для RSSI и исходного MAC - но опять же, у меня нетя не смог найти любую документацию о том, какой байт какой.

Я знаю, что это было сделано раньше, но яБуду честен: я совершенно растерялся, когда просматривал исходный код tcpdump.

Итак, кто-нибудь знает хороший ресурс для разбора пакетов WiFi?

ура

РЕДАКТИРОВАТЬ: более конкретный ответ

RSSI находится в заголовке RadioTap (ну, в Linux это так). Вытащить RSSI из пакета довольно просто, используяradiotap-parser.c вместе с файлами, от которых он зависит (находится в том же каталоге, что и файл, на который я ссылался).Если у кого-то возникают проблемы с использованием функций radiotap-parser.c, не стесняйтесь обращаться к нам.

Извлечение MAC-адреса источника довольно просто благодаря функциям radiotap, поскольку структура заголовка radiotap содержит длину заголовка radiotap (it_len), который является переменным. Так как я разбираю только тестовые запросы, которые имеют фиксированную длину (см. Стр. 17Вот) Это'Это просто вопрос создания указателя, который указывает наpacket + it_len + 10 (исходный MAC-адрес начинается через 10 байтов после начала кадра MAC, который начинается там, где заканчивается заголовок радиоленты). 6 байтов, которые начинаются с этого указателяaddr2 в кадре 802.11 (снова см. стр. 17Вот).

Ответы на вопрос(4)

Ваш ответ на вопрос