May 4, 2021

Быстро узнаем пароль от Wi-Fi

Всем привет! Представим ситуацию: вам срочно нужен пароль от ближайшей WiFi сети, что будете делать? Если не знаете, то сегодня расскажу об этом.

Приятного прочтения!

Если вы используете Linux с любой Wi-Fi картой, то этот способ идеально вам подойдет.

Инструкция

  • Создаём файл 3wifi.sh:
gedit 3wifi.sh
  • И копируем в него:
#!/bin/bash

IFACE='wlan0'
SCAN_ATTEMPTS=4
API_KEY='23ZRA8UBSLsdhbdJMp7IpbbsrDFDLuBC'

TMP_FILE='/tmp/scan_results.txt'

rm $TMP_FILE 2>/dev/null

for (( i=1; i<=$SCAN_ATTEMPTS; i=i+1 )); do
    echo "Scan #: $i"
    FOUND="$( sudo iw dev $IFACE scan | grep -E '^BSS' | grep -E -o '[0-9a-z:]{17}' )"
    echo "$FOUND" >> /tmp/scan_results.txt
    echo '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 ; do
      echo "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
  • Перед запуском скрипта, следует указать имя нашего беспроводного интерфейса. Узнать его можно с помощью команды:
iw dev
  • Вписываем его в строку ниже (вместо wlan0):
IFACE='wlan0'
  • Другие настройки — количество сканирований:
SCAN_ATTEMPTS=4
По умолчанию указано 4, однако вы можете выбрать другое значение. Чем больше число сканирований, тем меньше вероятность пропустить беспроводные сети — особенно в том случае, когда вы перемещаете беспроводную карту в пределах комнаты.
  • Настройка API ключа сервиса 3WiFi:
API_KEY='23ZRA8UBSLsdhbdJMp7IpbbsrDFDLuBC'

Теперь запускаем наш скрипт командой:

sudo bash 3wifi.sh

Вы увидите примерно следующее:

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

Если же точка доступа будет найдена, выведется подобная информация:

{"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.

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

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

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

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

Бонус

Давайте рассмотрим ещё один вариант, когда когда Wi-Fi карта одна, но она поддерживает режим монитора. В таком случае можно просканировать сети с помощью airodump-ng.

Во время сканирования беспроводной адаптер должен быть в режиме монитора, и, следовательно, не может быть подключён к Интернету. Поэтому данные сканирования, после проверки, можно сохранить в файл.

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

  • Итак, переводим интерфейс в режим монитора (замените ИНТЕРФЕЙС на имя вашего беспроводного интерфейса):
sudo ip link set ИНТЕРФЕЙС down
sudo iw ИНТЕРФЕЙС set monitor control
sudo ip link set ИНТЕРФЕЙС up
  • И запускаем airodump-ng (укажите ваше имя интерфейса вместо ИНТЕРФЕЙС):

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

  • Теперь создаем файл 3wifi-file.sh:
gedit 3wifi-file.sh
  • И копируем в него скрипт:
#!/bin/bash

API_KEY='23ZRA8UBSLsdhbdJMp7IpbbsrDFDLuBC'

FILE='/tmp/3wifi-01.csv'

while read -r line ; do
    BSSID=`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)
  • Когда у вас будет доступ к интернету, запустите его командой:
bash 3wifi-file.sh

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

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

sudo rm /tmp/3wifi*

Все!