TLD; DR: Вы принципиально неправы. Пакет захвата с libpcap просто не работает таким образом для Wi-Fi.
- Поскольку SSID в 802,11 кадров управления, вы хотите, чтобы захватить в режиме монитора, а не беспорядочном режиме.
- Затем нужно использовать PCAP фильтр кадров управления, в частности, для маяков и/или зонда-запросов и/или ответов зондовых. Вот где SSID.
- Затем, и только тогда вам придется закодировать разбор этих конкретных пакетов. Нет фиксированного формата (много опциональных полей, как видно из поиска захвата с помощью wirehark), поэтому нет «одного размера подходит для всего разбора». Но SSID не слишком сложно получить.
Тем не менее, вы далеко от этого синтаксического анализа SSID. На самом деле это последняя из ваших проблем. Итак, теперь подробности.
У вас есть 3 возможности относительно Libpcap по Wi-Fi:
1/Нормальный режим (не беспорядочные, а не монитор):
Вы увидите пакеты в/из вашего интерфейса. Не в/из других точек доступа (точек доступа) или STA (станций).
Эти пакеты будут выглядеть как «обычные кадры Ethernet», без 802,11 частей, ни чисто 802,11 управления пакетов, так что если ваша цель состоит в том, чтобы получить SSIDs вокруг вас, что нет ничего хорошего, вы просто не увидите эти , Единственным полезным для использования случаем является то, что ваш wlan0 является STA или самой AP, и вы хотите захватить трафик между сетевыми приложениями, запущенными на том же компьютере, на котором выполняется ваша программа захвата.
2/Промысловый режим.
Опять же, вы должны быть либо СТО или AP, и PCAP даст вам то, что выглядят как обычные кадры Ethernet, не часть 802,11 управления, так снова, что это бесполезна для SSID. Если вы STA: вы не увидите много похожего на случай 1/нормальный режим. То, что вы увидите больше, - это трансляция (из слоя 2/слой 3) кадров из другой STA. Например, ARP-запросы, многоадресный/широковещательный UDP.Но не одноадресный трафик от этих других STA. Если вы AP, то да, вы увидите трафик от подключенных STA (обратите внимание: если вы не используете Wi-Fi direct https://en.wikipedia.org/wiki/Wi-Fi_Direct, где станции общаются напрямую без пакетов, проходящих через точку доступа).
3/Режим монитора. Сейчас мы говорим.
Вы кладете интерфейс в режиме мониторинга с использованием Libpcap API см некоторые примеры направлений здесь:
Why is pcap_datalink() always returning 1 (Ethernet), even on wireless device?
... или вы будете создавать интерфейс мониторинга заранее и запустит свой PCAP процесс по этому вопросу. Читайте:
https://wiki.wireshark.org/CaptureSetup/WLAN#Turning_on_monitor_mode
Вы не будут подключены (ни как STA или AP) * и вы можете захватить все (но ... + видеть мое последнее предупреждение ниже): 802,11 управления обрамляет включая маяки , запросы зонда и ответы зонда, с вашими драгоценными SSID. И все данные. * Если у вас есть точки доступа без шифрования, TCP/IP данных из них будет прозрачным.
Теперь, «но» части:
3,1 - Что вы будете захватывать не будут регулярными Ethernet-подобные кадры. У вас будет заголовок radiotap (некоторая метаинформация, добавленная ядром), а затем пучок полей 802.11. Это может быть довольно утомительно для анализа, но если вас просто интересует SSID, это может быть всего несколько десятков строк кода C.
3.2 - Печально, нет фильтра «SSID» из синтаксиса фильтров pcap, который вы можете применить и просто пойти.
http://www.tcpdump.org/manpages/pcap-filter.7.html
И это потому, что там просто нет «SSID поля» за см, это зависит от типа/контекста пакета. Тем не менее, фильтры pcap могут помочь вам: что вы можете сделать, это захват маяков с использованием фильтра «type mgt subtype beacon
». Вы также можете быть заинтересованы в "type mgt subtype probe-resp
" и "type mgt subtype probe-resp
". Затем вам придется вручную разобрать их: формат является «эластичным». К счастью, SSID является одним из первых полей, и это несколько десятков строк кода C, чтобы получить его.
Как только вы доберетесь до этого, но вы все еще далеки от него, если у вас возникли проблемы с разбором маяков, вы можете вернуться с более конкретным вопросом.
Окончательное предупреждение: быть предупреждены, что если вы хотите выйти за пределы SSID и захватить аппликативного трафика данных, даже оставить в стороне вопрос о шифровании, и синтаксический анализ работы, чтобы перейти от вашего + radiotap пакета 802,11 к слою 3 и выше сочных частей, ну ... результат не гарантируется. По моему опыту: моя среда чрезвычайно шумная (десятки занятых точек доступа и STA), и большую часть времени захват пропускает некоторые бит: прокрутка разреза на таком захвате показывает «ACKed невидимый сегмент», порядковые номера TCP имеют пробелы и «следуют TCP-диалог "на таком захвате показывает некоторые" [NNN missing bytes from capture] ".
Затем напишите его на C. Звучит просто. – Drew
Вот что я не знаю! @Drew, и, следовательно, задал вопрос. –
@AbhishekSingh SO не является кодовым письмом. Вы должны провести собственное исследование, чтобы изучить основы и попытаться реализовать его самостоятельно. Если вы не можете заставить его работать, вы публикуете свою попытку, и мы постараемся помочь вам исправить это. – Barmar