2015-12-26 5 views
2

Я пытаюсь написать простой C-код с WinPcap для трансляции пакета маяков и захвата его во всех ближайших WiFi-устройствах. Код, который я использую, очень похож на тот, который доступен в WinPcap [1].WiFi Beacon Packets

Код работает нормально, если я создаю специальное сетевое соединение и присоединяюсь ко всем компьютерам. Однако этот процесс создания и присоединения к сети ad-hoc является громоздким. Было бы намного лучше, если бы независимо от того, в какой сети находится каждый компьютер, пакеты маяков будут транслироваться и записываться после запуска кода.

Как просто, как эта проблема может показаться, после некоторого поиска, кажется, что это невозможно сделать на окнах (если не переписывание драйверы или возможно ядра):

  • Сырых WiFi Пакетов с WinPcap [2]
  • Отправка пакетов без подключения к сети [3]
  • ли WinPcap/Libpcap позволяют мне отправить сырые беспроводные пакеты? [4]

в принципе, было бы необходимо использовать т он WiFi в режиме монитора, который не поддерживается в Windows [5]. Поэтому, если компьютеры не находятся в одном сетевом соединении, пакеты будут отброшены.

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

второй выпуск
ли кто-нибудь имеет опыт работы с Wi-Fi Managed API [6]? Я слышал, что это может помочь.

третий выпуск
Акриловая WiFi [7] утверждает, что разработала драйвер NDIS, которые поддерживают режим монитора под Windows. Кто-нибудь имеет опыт работы с этим программным обеспечением? Можно ли интегрировать с кодами C?

четвёртого Выпуск
Можно ли такой код Wifi маяка на Linux? и на Android?


  1. www.winpcap.org/docs/docs_412/html/main.html
  2. stackoverflow.com/questions/34454592/raw-wifi-packets-with-winpcap/34461313?noredirect=1 # comment56674673_34461313
  3. stackoverflow.com/questions/25631060/sending-packets-without-network-connection-wireless-adapter
  4. stackoverflow.com/questions/7946497/does-winpcap-libpcap-allow-me-to-send -raw-wireless-packets
  5. ru.wikipedia.org/wiki/Monitor_mode#O perating_system_support
  6. managedwifi.codeplex.com/
  7. www.acrylicwifi.com/

ответ

2

пару вопросов я постараюсь ответить.Пакеты Mgmt и Ctrl используются для работы сети Wi-Fi и не содержат данных, я бы не назвал эти обычные пакеты. Windows, используемая для (по-моему, до сих пор), конвертирует пакеты данных в кадры Ethernet и передает их в стек. Beacon и Probe Req pkts не нужны для работы стека TCP/IP, т.е. веб-браузеру не нужны кадры маяка, чтобы получить вашу веб-страницу. Большинство ОС нуждаются в минимальной информации от mgmt/ctrl pkts, чтобы помочь пользователю взаимодействовать с адаптером wifi, большинство mgmt/ctrl pkts полезны только для драйвера (и компонентов низкого уровня os), чтобы понять, как взаимодействовать с сетью. Таким образом, адаптеры wifi выглядят и действуют как сетевые адаптеры для высокоуровневых компонентов.

Никогда не было опыта работы с управляемым API Wifi или акрилом, поэтому не может дать вам никакой обратной связи.

Большинство анализаторов, которые собирают и отправляют пакеты, делают это в 2-3 отдельных режимах в основном из-за аппаратного обеспечения. Адаптеры Wifi могут быть в режиме прослушивания (режим promiscuous и/или монитор) или режим адаптера. Чтобы захватить сетевой трафик, вам нужно слушать и не отправлять, т. Е. если кто-то отправляет pkt, пока вы отправляете, вы пропускаете этот трафик. Чтобы захватить (или отправить) трафик, вам понадобится пользовательский драйвер NDIS в windows, на linux многие из них уже делают. Оформить заказ wireshark или tshark, они используют winpcap для захвата pkts в окнах, и есть некоторые адаптеры, которые они рекомендуют использовать для захвата pkts.

Да, можно отправить маяк на linux, т.е. Aireplay. Я знаю, что его можно захватить на Android, но вам нужно иметь встроенную прошивку или встроенную прошивку, что, я думаю, также означает, что вы можете отправлять пользовательские pkts. Если вы просто пытаетесь отправить pkt, может быть проще захватить некоторый трафик в tshark или wirehark и использовать что-то вроде aireplay для повторной отправки этого трафика. Вы также можете отредактировать пакет с шестнадцатеричным редактором, чтобы настроить его на то, что вам нужно.