Как сканировать беспроводные сети обычным Wi-Fi приёмником
Это ещё одна статья о том, что можно делать с помощью обычного Wi-Fi приёмника на Linux, другие статьи:
- Как взломать Wi-Fi обычным адаптером без режима монитора (атака Pixie Dust на Точки Доступа с WPS)
- Как быстро узнать пароль от Wi-Fi рядом (без режима монитора)
Как сканировать Wi-Fi обычной картой
Описанный в этой статье способ поможет вам собрать информацию о Wi-Fi сетях в округе с помощью любого Wi-Fi устройства.
Следующий скриншот это не airodump-ng — это результат работы крошечной программы на Linux:
Описанный способ не только является упрощённым вариантом сканирования (airodump-ng для бедных), но и даже имеет несколько преимуществ:
- во время сканирования не нужно отключаться от Интернета — то есть можно одновременно пользоваться интернетом по Wi-Fi и сканировать беспроводные сети;
- про второе преимущество я уже написал — подойдёт абсолютно любой Wi-Fi адаптер;
- можно собрать больше информации о WPS, чем обычно показывают другие программы.
Недостатков тоже хватает — невозможно захватить Wi-Fi рукопожатие, а также получить информацию о количестве передаваемых точками доступа данных и количестве беспроводных клиентов.
Сбор информации о Точках доступа без режима монитора
Итак, в Linux узнаём имя беспроводного интерфейса:
iw dev
У меня это интерфейсов два, их имена wlo1 (встроенная беспроводная карта) и wlp0s20f0u2 (USB адаптер), в Kali Linux это будет, скорее всего, wlan0.
Если интерфейс в состоянии down (если он не используется другими программами, например, для подключения к Интернету), то активируем его командой вида:
sudo ip link set ИНТЕРФЕЙС up
Для меня это команда:
sudo ip link set wlp0s20f0u2 up
Теперь мы можем выполнить сканирование сетей:
sudo iw dev ИНТЕРФЕЙС scan
Для моего случая:
sudo iw dev wlp0s20f0u2 scan
Это пример информации об одной единственной беспроводной сети — примерно это же самое будет показано о всех сетях в пределах досягаемости:
А если указать опцию -u, то дополнительно будет выведена информация, которую не понимает даже сама система:
sudo iw dev wlp0s20f0u2 scan -u
Видно, что информации много — нужно просто её представить в удобном виде. Следующая команда сканирует и показывает таблицу с результатами. В этой команде замените wlp0s20f0u2 на имя вашего беспроводного интерфейса:
sudo iw dev wlp0s20f0u2 scan | awk 'BEGIN{print "\r\nMAC\t\t\tSignal\tESSID\t\t\t\tChannel\tWPS\t\tManufacturer\tModel\tModel Number\tDevice name"} /BSS [a-z0-9:]{10}/{print ""; printf substr($2,1,17)} /signal: /{printf "\t"$2"\t"} /SSID: /{system("echo \""$2"\"............................. | cut -c -25 | head -c -1")} /DS Parameter set/{printf"\t"$5} /Protected/{printf "\t"$6$7} /Manufacturer/{printf "\t"$3} /Model:/{printf "\t\t"$3} /Model Number:/{printf "\t"$4} /Device name:/{printf "\t\t"$4$5}'; echo
Связанная статья: Инструкция по использованию printf в Bash для форматирования и вывода данных
Как можно увидеть, я заострил внимание на WPS свойствах, но ничего не указал про WPA — по той причине, что практически для всех ТД информация о WPA очень схожая:
WPA: * Version: 1 * Group cipher: TKIP * Pairwise ciphers: TKIP * Authentication suites: PSK
Иногда бывает так:
WPA: * Version: 1 * Group cipher: CCMP * Pairwise ciphers: CCMP * Authentication suites: PSK
PSK — это pre-shared keys, то есть одинаковые ключи (пароли) на точке доступа и у каждого пользователя. Особой практической ценности в этой информации нет, но при желании вы можете сами отредактировать команду и добавить эти данные в таблицу.
Этот скрипт можно сохранить в файл:
gedit wifi-mon.sh
Скопируйте туда:
#!/bin/bash IFACE=wlan0 sudo iw dev $IFACE scan | awk ' BEGIN{print "\r\nMAC\t\t\tSignal\tESSID\t\t\t\tChannel\tWPS\t\tManufacturer\tModel\tModel Number\tDevice name"} /BSS [a-z0-9:]{10}/{print ""; printf substr($2,1,17)} /signal: /{printf "\t"$2"\t"} /SSID: /{system("echo \""$2"\"............................. | cut -c -25 | head -c -1")} /DS Parameter set/{printf"\t"$5} /Protected/{printf "\t"$6$7} /Manufacturer/{printf "\t"$3} /Model:/{printf "\t\t"$3} /Model Number:/{printf "\t"$4} /Device name:/{printf "\t\t"$4$5}'; echo
В строке
IFACE=wlan0
замените wlan0 на имя вашего беспроводного интерфейса.
Запускать нужно так:
sudo bash wifi-mon.sh
Интересного эффекта можно достичь в паре с командой watch:
sudo watch -n 5 bash wifi-mon.sh
В результате информация будет постоянно обновляться, примерно как в Airodump-ng:
После каждого сканирования, если какой-либо точки доступа больше не видно, она будет пропадать из списка, а новые будут добавляться. Показанная команда совсем простая, при желании можно сделать некоторые улучшения: настроить сортировку (например, по уровню сигнала или по имени Wi-Fi сети), можно создать базу данных для записей и сохранять информацию туда и т.д.
Работа этого скрипта не препятствует Интернет-подключению на этой же самой карте к беспроводной Точке Доступа.
Также смотрите статью «Как обнаружить все Wi-Fi устройства в округе?».
Связанные статьи:
- Как обнаружить все Wi-Fi устройства в округе? (100%)
- Как узнать точную модель чужого роутера (беспроводной точки доступа) (79%)
- Поиск беспроводных точек доступа с включённым WPS: использование программ Wash, Airodump-ng и Wifite (71%)
- Как обнаружить скрытые камеры (70.7%)
- Как обойти фильтрацию по MAC адресу (66.2%)
- Где скачать вирусы с исходным кодом для анализа (RANDOM - 4.5%)