Захват пакетов IEEE 802.11 без подключения к сети
Я хочу анализировать сетевой трафик, но не подключая его. Просто включите Wi-Fi и прослушайте пакеты (IEEE 802.11 Frames) в случайном режиме
Я пробовал libpcap, но это может быть внутренне изменяющий тип связи, так как я даю интерфейс Wi-Fi в
descr=pcap_open_live("en1", MAXBYTES2CAPTURE, 1, 512, errbuf);
(как мы знаем, Mac OS X имеет En1 в качестве интерфейса Wi-Fi)
теперь, когда я делаю это
printf("%s", pcap_datalink_val_to_name( pcap_datalink(descr)));
Это дает мне результат "ethernet"
Я попытался перехватить пакеты, используя wireshark, без подключения к моей сети Wi-Fi, и это сработало!! Я смог поймать Beacon , Acknowledgement and Authentication frames
без подключения к моей сети Wi-Fi.
сейчас:
- я должен сделать драйвер сетевой карты для этого или libpcap может сделать это? если да, то как?
- Wireshark делает какой-то драйвер для этого? если да, пожалуйста, помогите мне найти это в исходном коде.
- Я попробовал CFNetwork от Apple, но он также не может захватывать без подключения к сети.
- Будет очень полезно, если я получу какие-то предложения по некоторому пользовательскому пространственному коду, так как кодирование на уровне ядра немного туфтово:(
Я пишу на MacOS 10.7 в xCode 4.5.1
Обновить:
Я уже делаю это:
descr=pcap_create("e1", errbuf);
pcap_set_rfmon(descr, 0);
pcap_set_promisc(descr, 0);
pcap_activate(descr);
descr=pcap_open_live("en1", 2048, 1, 512, errbuf);
И да, на Wi-Fi есть маленький значок монитора, и я могу прослушивать пакеты, но только когда я подключаюсь к сети, я хочу делать то же самое, когда я не подключен к Wi-Fi, как захват Маяка и Кадры подтверждения означают пакеты, через которые наш сетевая карта обнаруживает доступную сеть Wi-Fi
1 ответ
Если вы работаете на Snow Leopard или более поздней версии (которой вы пользуетесь, как и на Lion), вы должны использовать новую pcap_create()
/pcap_activate()
API, и включите режим монитора, вызвав pcap_set_rfmon()
между pcap_create()
а также pcap_activate()
звонки.
Это то, что Wireshark 1.6.0 и более поздние версии делают, если вы отметили флажок режима монитора, и что делают tcpdump 1.0.0 и более поздние версии, а также TShark и dumpcap в Wireshark 1.6.0 и более поздних версиях, если вы указываете -I
флаг командной строки.
По умолчанию интерфейсы Wi-Fi во многих ОС, включая, помимо прочего, OS X, предоставляют заголовки Ethernet, а не заголовки 802.11, поэтому pcap_datalink_val_to_name(pcap_datalink(descr))
сообщает о заголовках Ethernet. В Linux и OS X вы должны перейти в режим монитора, чтобы получить заголовки 802.11; на *BSD вы можете получить заголовки 802.11, не переходя в режим мониторинга.
Вам не нужен ваш собственный драйвер для перехода в режим мониторинга на OS X; Wireshark не имеет собственных драйверов.