Захват пакетов 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.

сейчас:

  1. я должен сделать драйвер сетевой карты для этого или libpcap может сделать это? если да, то как?
  2. 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 не имеет собственных драйверов.

Другие вопросы по тегам