diff --git a/.airgeddonrc b/.airgeddonrc index 4b55decb8..f99c1e9ef 100644 --- a/.airgeddonrc +++ b/.airgeddonrc @@ -30,3 +30,6 @@ AIRGEDDON_DEVELOPMENT_MODE=false #Enabled true / Disabled false - Debug mode for development printing debug information - Default value false AIRGEDDON_DEBUG_MODE=false + +#Available values: xterm, tmux - Define the needed tool to be used for windows handling - Default value xterm +AIRGEDDON_WINDOWS_HANDLING=xterm diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ec9d714b..a9147c132 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +### 9.20 + - Added option to use tmux instead of xterm (Thank you to "xpz3") + - Added WPS null PIN attack (reaver) + ### 9.11 - Fixed error shown on enterprise attacks for some wifi cards - Fixed BeEF error due forced config file changes on BeEF 0.4.7.1 and 0.4.7.2 versions @@ -11,7 +15,7 @@ - Tested compatibility with Wifislax 64-2.x and Kali 2019.x - Fixed dependency problem to avoid use of xxd - Routing rules adapted to work with nftables - + ### 9.01 - Improvments on options environment var system - Minor fixes for ARM devices diff --git a/README.md b/README.md index 34a9e57cf..c052e6d67 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ All the needed info about how to "install | use | enjoy" `airgeddon` is present - [Home] - [Features] - [Screenshots] + - [Wallpapers] - *II. Requirements* @@ -55,6 +56,7 @@ All the needed info about how to "install | use | enjoy" `airgeddon` is present [Home]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki [Features]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Features [Screenshots]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Screenshots +[Wallpapers]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Wallpapers [Requirements]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Requirements [Compatibility]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Compatibility [Essential Tools]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Essential%20Tools @@ -80,7 +82,7 @@ All the needed info about how to "install | use | enjoy" `airgeddon` is present [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-9.11-blue.svg?style=flat-square&colorA=273133&colorB=0093ee "Latest version" +[Version-shield]: https://img.shields.io/badge/version-9.20-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 e41aee58a..052a36bd3 100755 --- 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.........: 20190412 -#Version......: 9.11 +#Date.........: 20190415 +#Version......: 9.20 #Usage........: bash airgeddon.sh #Bash Version.: 4.2 or later @@ -110,8 +110,8 @@ declare -A possible_alias_names=( ) #General vars -airgeddon_version="9.11" -language_strings_expected_version="9.11-1" +airgeddon_version="9.20" +language_strings_expected_version="9.20-1" standardhandshake_filename="handshake-01.cap" timeout_capture_handshake="20" tmpdir="/tmp/" @@ -170,6 +170,7 @@ docker_io_dir="/io" #WPS vars minimum_reaver_pixiewps_version="1.5.2" +minimum_reaver_nullpin_version="1.6.1" minimum_bully_pixiewps_version="1.1" minimum_bully_verbosity4_version="1.1" minimum_wash_json_version="1.6.2" @@ -307,7 +308,7 @@ known_arm_compatible_distros=( ) #Hint vars -declare main_hints=(128 134 163 437 438 442 445 516 590) +declare main_hints=(128 134 163 437 438 442 445 516 590 626) declare dos_hints=(129 131 133) declare handshake_hints=(127 130 132 136) declare handshake_attack_hints=(142) @@ -316,11 +317,11 @@ declare personal_decrypt_hints=(171 178 179 208 244 163) declare enterprise_decrypt_hints=(171 179 208 244 163 610) declare select_interface_hints=(246) declare language_hints=(250 438) -declare option_hints=(445 250 448 477 591) +declare option_hints=(445 250 448 477 591 626) declare evil_twin_hints=(254 258 264 269 309 328 400 509) declare evil_twin_dos_hints=(267 268 509) declare beef_hints=(408) -declare wps_hints=(342 343 344 356 369 390 490) +declare wps_hints=(342 343 344 356 369 390 490 625) declare wep_hints=(431 429 428 432 433) declare enterprise_hints=(112 332 483 518) @@ -331,6 +332,11 @@ crunch_numbercharset="0123456789" crunch_symbolcharset="!#$%/=?{}[]-*:;" hashcat_charsets=("?l" "?u" "?d" "?s") +#Tmux vars +session_name="airgeddon" +tmux_main_window="airgeddon-Main" +no_hardcore_exit=0 + #Check coherence between script and language_strings file function check_language_strings() { @@ -1601,6 +1607,11 @@ function option_menu() { else language_strings "${language}" 593 fi + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "xterm" ]; then + language_strings "${language}" 616 + else + language_strings "${language}" 617 + fi language_strings "${language}" 447 print_hint ${current_menu} @@ -1841,6 +1852,16 @@ function option_menu() { fi ;; 10) + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "xterm" ]; then + sed -ri "s:(AIRGEDDON_WINDOWS_HANDLING)=(xterm):\1=tmux:" "${scriptfolder}${rc_file}" 2> /dev/null + else + sed -ri "s:(AIRGEDDON_WINDOWS_HANDLING)=(tmux):\1=xterm:" "${scriptfolder}${rc_file}" 2> /dev/null + fi + echo + language_strings "${language}" 620 "yellow" + language_strings "${language}" 115 "read" + ;; + 11) ask_yesno 478 "yes" if [ "${yesno}" = "y" ]; then get_current_permanent_language @@ -2672,6 +2693,9 @@ function handshake_capture_check() { done kill "${processidcapture}" &> /dev/null + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + tmux kill-window -t "${session_name}:Capturing Handshake" + fi } #Validate if selected network has the needed type of encryption @@ -2744,6 +2768,9 @@ function kill_wep_windows() { for item in "${WEP_PROCESSES_TO_KILL[@]}"; do kill "${item}" &> /dev/null done + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + kill_tmux_windows + fi } #Prepare wep attack deleting temp files @@ -2768,6 +2795,63 @@ function set_wep_key_script() { cat >&8 <<-EOF #!/usr/bin/env bash + AIRGEDDON_WINDOWS_HANDLING="${AIRGEDDON_WINDOWS_HANDLING}" + EOF + + cat >&8 <<-EOF + + function manage_output() { + + xterm_parameters="\${1}" + tmux_command_line="\${2}" + xterm_command_line="\"\${2}\"" + window_name="\${3}" + command_tail=" > /dev/null 2>&1 &" + + case "\${AIRGEDDON_WINDOWS_HANDLING}" in + "tmux") + local tmux_color + tmux_color="" + [[ "\${1}" =~ -fg[[:blank:]](\")?(#[0-9a-fA-F]+) ]] && tmux_color="\${BASH_REMATCH[2]}" + case "\${4}" in + "active") + start_tmux_processes "\${window_name}" "clear;\${tmux_command_line}" "\${tmux_color}" "active" + ;; + *) + start_tmux_processes "\${window_name}" "clear;\${tmux_command_line}" "\${tmux_color}" + ;; + esac + ;; + "xterm") + eval "xterm \${xterm_parameters} -e \${xterm_command_line}\${command_tail}" + ;; + esac + } + function start_tmux_processes() { + + window_name="\${1}" + command_line="\${2}" + tmux kill-window -t "${session_name}:\${window_name}" 2> /dev/null + case "\${4}" in + "active") + tmux new-window -t "${session_name}:" -n "\${window_name}" + ;; + *) + tmux new-window -d -t "${session_name}:" -n "\${window_name}" + ;; + esac + local tmux_color_cmd + if [ -n "\${3}" ]; then + tmux_color_cmd="bg=#000000 fg=\${3}" + else + tmux_color_cmd="bg=#000000" + fi + tmux setw -t "\${window_name}" window-style "\${tmux_color_cmd}" + tmux send-keys -t "${session_name}:\${window_name}" "\${command_line}" ENTER + } + EOF + + cat >&8 <<-EOF wep_key_found=0 #Check if the wep password was captured and manage to save it on a file @@ -2840,6 +2924,29 @@ function set_wep_key_script() { } EOF + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + cat >&8 <<-EOF + function kill_tmux_windows() { + + local TMUX_WINDOWS_LIST=() + local current_window_name + readarray -t TMUX_WINDOWS_LIST < <(tmux list-windows -t "${session_name}:") + for item in "\${TMUX_WINDOWS_LIST[@]}"; do + [[ "\${item}" =~ ^[0-9]+:[[:blank:]](.+([^*-]))([[:blank:]]|\-|\*)[[:blank:]]?\([0-9].+ ]] && current_window_name="\${BASH_REMATCH[1]}" + if [ "\${current_window_name}" = "${tmux_main_window}" ]; then + continue + fi + if [ -n "\${1}" ]; then + if [ "\${current_window_name}" = "\${1}" ]; then + continue + fi + fi + tmux kill-window -t "${session_name}:\${current_window_name}" + done + } + EOF + fi + cat >&8 <<-EOF while true; do sleep 1 @@ -2863,6 +2970,15 @@ function set_wep_key_script() { cat >&8 <<-EOF kill_wep_script_windows + EOF + + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + cat >&8 <<-EOF + kill_tmux_windows "WEP Key Decrypted" + EOF + fi + + cat >&8 <<-EOF rm -rf "${tmpdir}${wepdir}${wep_processes_file}" touch "${tmpdir}${wepdir}${wep_processes_file}" > /dev/null 2>&1 EOF @@ -2901,17 +3017,19 @@ function set_wep_key_script() { window_position="${g5_topright_window}" sleep 0.5 + manage_output "-hold -bg \"#000000\" -fg \"#FFFFFF\" -geometry \${window_position} -T \"WEP Key Decrypted\"" "clear;\${wep_key_cmd}" "WEP Key Decrypted" "active" EOF - cat >&8 <<-'EOF' - xterm -hold -bg black -fg white -geometry "${window_position}" -T "WEP Key Decrypted" -e "eval \"${wep_key_cmd}\"" > /dev/null 2>&1 & - wep_key_window_pid=$! + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "xterm" ]; then + cat >&8 <<-EOF + wep_key_window_pid=\$! { - echo -e "${wep_key_window_pid}" - EOF + echo -e "\${wep_key_window_pid}" + } >> "${tmpdir}${wepdir}${wep_processes_file}" + EOF + fi cat >&8 <<-EOF - } >> "${tmpdir}${wepdir}${wep_processes_file}" fi EOF } @@ -2927,6 +3045,74 @@ function set_wep_script() { cat >&6 <<-EOF #!/usr/bin/env bash + AIRGEDDON_WINDOWS_HANDLING="${AIRGEDDON_WINDOWS_HANDLING}" + global_process_pid="" + + function manage_output() { + + xterm_parameters="\${1}" + tmux_command_line="\${2}" + xterm_command_line="\"\${2}\"" + window_name="\${3}" + command_tail=" > /dev/null 2>&1 &" + + case "\${AIRGEDDON_WINDOWS_HANDLING}" in + "tmux") + local tmux_color + tmux_color="" + [[ "\${1}" =~ -fg[[:blank:]](\")?(#[0-9a-fA-F]+) ]] && tmux_color="\${BASH_REMATCH[2]}" + case "\${4}" in + "active") + start_tmux_processes "\${window_name}" "clear;\${tmux_command_line}" "\${tmux_color}" "active" + ;; + *) + start_tmux_processes "\${window_name}" "clear;\${tmux_command_line}" "\${tmux_color}" + ;; + esac + ;; + "xterm") + eval "xterm \${xterm_parameters} -e \${xterm_command_line}\${command_tail}" + ;; + esac + } + function start_tmux_processes() { + + window_name="\${1}" + command_line="\${2}" + tmux kill-window -t "${session_name}:\${window_name}" 2> /dev/null + case "\${4}" in + "active") + tmux new-window -t "${session_name}:" -n "\${window_name}" + ;; + *) + tmux new-window -d -t "${session_name}:" -n "\${window_name}" + ;; + esac + local tmux_color_cmd + if [ -n "\${3}" ]; then + tmux_color_cmd="bg=#000000 fg=\${3}" + else + tmux_color_cmd="bg=#000000" + fi + tmux setw -t "\${window_name}" window-style "\${tmux_color_cmd}" + tmux send-keys -t "${session_name}:\${window_name}" "\${command_line}" ENTER + } + function get_tmux_process_id() { + + local process_pid + local process_cmd_line + process_cmd_line=\$(echo "\${1}" | tr -d '"') + while [ -z "\${process_pid}" ]; do + process_pid=\$(ps --no-headers aux | grep "\${process_cmd_line}" | grep -v "grep \${process_cmd_line}" | awk '{print \$2}') + done + global_process_pid="\${process_pid}" + } + function kill_tmux_window_by_name() { + if [ "\${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + tmux kill-window -t "${session_name}:\${1}" 2> /dev/null + fi + } + #shellcheck disable=SC1037 #shellcheck disable=SC2164 #shellcheck disable=SC2140 @@ -2956,11 +3142,17 @@ function set_wep_script() { EOF cat >&6 <<-EOF - xterm -bg black -fg brown -geometry "${g5_left7}" -T "Chop-Chop Attack (1/3)" -e "yes | aireplay-ng -4 -b ${bssid} -h ${current_mac} ${interface} | tee -a \"${tmpdir}${wepdir}chopchop_output.txt\"" > /dev/null 2>&1 & + manage_output "-bg \"#000000\" -fg \"#8B4513\" -geometry ${g5_left7} -T \"Chop-Chop Attack (1/3)\"" "yes | aireplay-ng -4 -b ${bssid} -h ${current_mac} ${interface} | tee -a \"${tmpdir}${wepdir}chopchop_output.txt\"" "Chop-Chop Attack (1/3)" + if [ "\${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "aireplay-ng -4 -b ${bssid} -h ${current_mac} ${interface}" + wep_chopchop_phase1_pid="\${global_process_pid}" + global_process_pid="" + else + wep_chopchop_phase1_pid=\$! + fi EOF cat >&6 <<-'EOF' - wep_chopchop_phase1_pid=$! wep_script_processes+=(${wep_chopchop_phase1_pid}) fi fi @@ -2969,28 +3161,38 @@ function set_wep_script() { EOF cat >&6 <<-EOF - xterm -bg black -fg brown -geometry "${g5_left7}" -T "Chop-Chop Attack (2/3)" -e "packetforge-ng -0 -a ${bssid} -h ${current_mac} -k 255.255.255.255 -l 255.255.255.255 -y \"${tmpdir}${wepdir}replay_dec-\"*.xor -w \"${tmpdir}${wepdir}chopchop.cap\"" > /dev/null 2>&1 & + kill_tmux_window_by_name "Chop-Chop Attack (1/3)" + manage_output "-bg \"#000000\" -fg \"#8B4513\" -geometry ${g5_left7} -T \"Chop-Chop Attack (2/3)\"" "packetforge-ng -0 -a ${bssid} -h ${current_mac} -k 255.255.255.255 -l 255.255.255.255 -y \"${tmpdir}${wepdir}replay_dec-\"*.xor -w \"${tmpdir}${wepdir}chopchop.cap\"" "Chop-Chop Attack (2/3)" + if [ "\${AIRGEDDON_WINDOWS_HANDLING}" = "xterm" ]; then + wep_chopchop_phase2_pid=\$! + fi EOF cat >&6 <<-'EOF' - wep_chopchop_phase2_pid=$! - wep_script_processes+=(${wep_chopchop_phase2_pid}) - wep_chopchop_phase=3 - ;; - 3) - wep_chopchop_phase2_pid_alive=$(ps uax | awk '{print $2}' | grep -E "^${wep_chopchop_phase2_pid}$" 2> /dev/null) - if [ -z "${wep_chopchop_phase2_pid_alive}" ]; then + wep_script_processes+=(${wep_chopchop_phase2_pid}) + wep_chopchop_phase=3 + ;; + 3) + wep_chopchop_phase2_pid_alive=$(ps uax | awk '{print $2}' | grep -E "^${wep_chopchop_phase2_pid}$" 2> /dev/null) EOF cat >&6 <<-EOF - xterm -hold -bg black -fg brown -geometry "${g5_left7}" -T "Chop-Chop Attack (3/3)" -e "yes | aireplay-ng -2 -F -r \"${tmpdir}${wepdir}chopchop.cap\" ${interface}" > /dev/null 2>&1 & + if [[ -z "\${wep_chopchop_phase2_pid_alive}" ]] && [[ -f "${tmpdir}${wepdir}chopchop.cap" ]]; then + kill_tmux_window_by_name "Chop-Chop Attack (2/3)" + manage_output "-hold -bg \"#000000\" -fg \"#8B4513\" -geometry ${g5_left7} -T \"Chop-Chop Attack (3/3)\"" "yes | aireplay-ng -2 -F -r \"${tmpdir}${wepdir}chopchop.cap\" ${interface}" "Chop-Chop Attack (3/3)" + if [ "\${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "aireplay-ng -2 -F -r \"${tmpdir}${wepdir}chopchop.cap\" ${interface}" + wep_script_processes+=("\${global_process_pid}") + global_process_pid="" + else + wep_script_processes+=(\$!) + fi EOF cat >&6 <<-'EOF' - wep_script_processes+=($!) - wep_chopchop_phase=4 - fi - ;; + wep_chopchop_phase=4 + fi + ;; esac write_wep_processes } @@ -3019,11 +3221,17 @@ function set_wep_script() { EOF cat >&6 <<-EOF - xterm -bg black -fg blue -geometry "${g5_left6}" -T "Fragmentation Attack (1/3)" -e "yes | aireplay-ng -5 -b ${bssid} -h ${current_mac} ${interface} | tee -a \"${tmpdir}${wepdir}fragmentation_output.txt\"" > /dev/null 2>&1 & + manage_output "-bg \"#000000\" -fg \"#0000FF\" -geometry ${g5_left6} -T \"Fragmentation Attack (1/3)\"" "yes | aireplay-ng -5 -b ${bssid} -h ${current_mac} ${interface} | tee -a \"${tmpdir}${wepdir}fragmentation_output.txt\"" "Fragmentation Attack (1/3)" + if [ "\${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "aireplay-ng -5 -b ${bssid} -h ${current_mac} ${interface}" + wep_fragmentation_phase1_pid="\${global_process_pid}" + global_process_pid="" + else + wep_fragmentation_phase1_pid=\$! + fi EOF cat >&6 <<-'EOF' - wep_fragmentation_phase1_pid=$! wep_script_processes+=(${wep_fragmentation_phase1_pid}) fi fi @@ -3032,26 +3240,36 @@ function set_wep_script() { EOF cat >&6 <<-EOF - xterm -bg black -fg blue -geometry "${g5_left6}" -T "Fragmentation Attack (2/3)" -e "packetforge-ng -0 -a ${bssid} -h ${current_mac} -k 255.255.255.255 -l 255.255.255.255 -y \"${tmpdir}${wepdir}fragment-\"*.xor -w \"${tmpdir}${wepdir}fragmentation.cap\"" > /dev/null 2>&1 & + kill_tmux_window_by_name "Fragmentation Attack (1/3)" + manage_output "-bg \"#000000\" -fg \"#0000FF\" -geometry ${g5_left6} -T \"Fragmentation Attack (2/3)\"" "packetforge-ng -0 -a ${bssid} -h ${current_mac} -k 255.255.255.255 -l 255.255.255.255 -y \"${tmpdir}${wepdir}fragment-\"*.xor -w \"${tmpdir}${wepdir}fragmentation.cap\"" "Fragmentation Attack (2/3)" + if [ "\${AIRGEDDON_WINDOWS_HANDLING}" = "xterm" ]; then + wep_fragmentation_phase2_pid=\$! + fi EOF cat >&6 <<-'EOF' - wep_fragmentation_phase2_pid=$! - wep_script_processes+=(${wep_fragmentation_phase2_pid}) wep_fragmentation_phase=3 + wep_script_processes+=(${wep_fragmentation_phase2_pid}) ;; 3) wep_fragmentation_phase2_pid_alive=$(ps uax | awk '{print $2}' | grep -E "^${wep_fragmentation_phase2_pid}$" 2> /dev/null) - if [ -z "${wep_fragmentation_phase2_pid_alive}" ]; then EOF cat >&6 <<-EOF - xterm -hold -bg black -fg blue -geometry "${g5_left6}" -T "Fragmentation Attack (3/3)" -e "yes | aireplay-ng -2 -F -r \"${tmpdir}${wepdir}fragmentation.cap\" ${interface}" > /dev/null 2>&1 & + if [[ -z "\${wep_fragmentation_phase2_pid_alive}" ]] && [[ -f "${tmpdir}${wepdir}fragmentation.cap" ]]; then + kill_tmux_window_by_name "Fragmentation Attack (2/3)" + manage_output "-hold -bg \"#000000\" -fg \"#0000FF\" -geometry ${g5_left6} -T \"Fragmentation Attack (3/3)\"" "yes | aireplay-ng -2 -F -r \"${tmpdir}${wepdir}fragmentation.cap\" ${interface}" "Fragmentation Attack (3/3)" + if [ "\${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "aireplay-ng -2 -F -r \"${tmpdir}${wepdir}fragmentation.cap\" ${interface}" + wep_script_processes+=("\${global_process_pid}") + global_process_pid="" + else + wep_script_processes+=(\$!) + fi EOF cat >&6 <<-'EOF' - wep_script_processes+=($!) - wep_fragmentation_phase=4 + wep_fragmentation_phase=4 fi ;; esac @@ -3086,11 +3304,18 @@ function set_wep_script() { } wep_script_processes=() - xterm -bg black -fg white -geometry "${g5_topright_window}" -T "Capturing WEP Data" -e "airodump-ng -d ${bssid} -c ${channel} --encrypt WEP -w \"${tmpdir}${wep_data}\" ${interface}" > /dev/null 2>&1 & + + manage_output "-bg \"#000000\" -fg \"#FFFFFF\" -geometry ${g5_topright_window} -T \"Capturing WEP Data\"" "airodump-ng -d ${bssid} -c ${channel} --encrypt WEP -w \"${tmpdir}${wep_data}\" ${interface}" "Capturing WEP Data" "active" + if [ "\${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "airodump-ng -d ${bssid} -c ${channel} --encrypt WEP -w \"${tmpdir}${wep_data}\" ${interface}" + wep_script_capture_pid="\${global_process_pid}" + global_process_pid="" + else + wep_script_capture_pid=\$! + fi EOF cat >&6 <<-'EOF' - wep_script_capture_pid=$! wep_script_processes+=(${wep_script_capture_pid}) write_wep_processes EOF @@ -3115,11 +3340,17 @@ function set_wep_script() { EOF cat >&6 <<-EOF - xterm -bg black -fg green -geometry "${g5_left1}" -T "Fake Auth" -e "aireplay-ng -1 3 -o 1 -q 10 -e \"${essid}\" -a ${bssid} -h ${current_mac} ${interface}" > /dev/null 2>&1 & + manage_output "-bg \"#000000\" -fg \"#00FF00\" -geometry ${g5_left1} -T \"Fake Auth\"" "aireplay-ng -1 3 -o 1 -q 10 -e \"${essid}\" -a ${bssid} -h ${current_mac} ${interface}" "Fake Auth" + if [ "\${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "aireplay-ng -1 3 -o 1 -q 10 -e \"${essid}\" -a ${bssid} -h ${current_mac} ${interface}" + wep_fakeauth_pid="\${global_process_pid}" + global_process_pid="" + else + wep_fakeauth_pid=\$! + fi EOF cat >&6 <<-'EOF' - wep_fakeauth_pid=$! wep_script_processes+=(${wep_fakeauth_pid}) write_wep_processes sleep 2 @@ -3130,35 +3361,44 @@ function set_wep_script() { EOF cat >&6 <<-EOF - xterm -hold -bg black -fg yellow -geometry "${g5_left2}" -T "Arp Broadcast Injection" -e "aireplay-ng -2 -p 0841 -F -c ${broadcast_mac} -b ${bssid} -h ${current_mac} ${interface}" > /dev/null 2>&1 & - EOF - - cat >&6 <<-'EOF' - wep_script_processes+=($!) - EOF - - cat >&6 <<-EOF - xterm -hold -bg black -fg red -geometry "${g5_left3}" -T "Arp Request Replay" -e "aireplay-ng -3 -x 1024 -g 1000000 -b ${bssid} -h ${current_mac} -i ${interface} ${interface}" > /dev/null 2>&1 & - EOF - - cat >&6 <<-'EOF' - wep_script_processes+=($!) - EOF + manage_output "-hold -bg \"#000000\" -fg \"#FFFF00\" -geometry ${g5_left2} -T \"Arp Broadcast Injection\"" "aireplay-ng -2 -p 0841 -F -c ${broadcast_mac} -b ${bssid} -h ${current_mac} ${interface}" "Arp Broadcast Injection" + if [ "\${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "aireplay-ng -2 -p 0841 -F -c ${broadcast_mac} -b ${bssid} -h ${current_mac} ${interface}" + wep_script_processes+=("\${global_process_pid}") + global_process_pid="" + else + wep_script_processes+=(\$!) + fi - cat >&6 <<-EOF - xterm -hold -bg black -fg pink -geometry "${g5_left4}" -T "Caffe Latte Attack" -e "aireplay-ng -6 -F -D -b ${bssid} -h ${current_mac} ${interface}" > /dev/null 2>&1 & - EOF + manage_output "-hold -bg \"#000000\" -fg \"#FF0000\" -geometry ${g5_left3} -T \"Arp Request Replay\"" "aireplay-ng -3 -x 1024 -g 1000000 -b ${bssid} -h ${current_mac} -i ${interface} ${interface}" "Arp Request Replay" + if [ "\${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "aireplay-ng -3 -x 1024 -g 1000000 -b ${bssid} -h ${current_mac} -i ${interface} ${interface}" + wep_script_processes+=("\${global_process_pid}") + global_process_pid="" + else + wep_script_processes+=(\$!) + fi - cat >&6 <<-'EOF' - wep_script_processes+=($!) - EOF + manage_output "-hold -bg \"#000000\" -fg \"#FFC0CB\" -geometry ${g5_left4} -T \"Caffe Latte Attack\"" "aireplay-ng -6 -F -D -b ${bssid} -h ${current_mac} ${interface}" "Caffe Latte Attack" + if [ "\${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "aireplay-ng -6 -F -D -b ${bssid} -h ${current_mac} ${interface}" + wep_script_processes+=("\${global_process_pid}") + global_process_pid="" + else + wep_script_processes+=(\$!) + fi - cat >&6 <<-EOF - xterm -hold -bg black -fg grey -geometry "${g5_left5}" -T "Hirte Attack" -e "aireplay-ng -7 -F -D -b ${bssid} -h ${current_mac} ${interface}" > /dev/null 2>&1 & + manage_output "-hold -bg \"#000000\" -fg \"#D3D3D3\" -geometry ${g5_left5} -T \"Hirte Attack\"" "aireplay-ng -7 -F -D -b ${bssid} -h ${current_mac} ${interface}" "Hirte Attack" + if [ "\${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "aireplay-ng -7 -F -D -b ${bssid} -h ${current_mac} ${interface}" + wep_script_processes+=("\${global_process_pid}") + global_process_pid="" + else + wep_script_processes+=(\$!) + fi EOF cat >&6 <<-'EOF' - wep_script_processes+=($!) write_wep_processes fi @@ -3184,11 +3424,17 @@ function set_wep_script() { EOF cat >&6 <<-EOF - xterm -bg black -fg yellow -geometry "${g5_bottomright_window}" -T "Decrypting WEP Key" -e "aircrack-ng \"${tmpdir}${wep_data}\"*.cap -l \"${tmpdir}${wepdir}wepkey.txt\"" > /dev/null 2>&1 & + manage_output "-bg \"#000000\" -fg \"#FFFF00\" -geometry ${g5_bottomright_window} -T \"Decrypting WEP Key\"" "aircrack-ng \"${tmpdir}${wep_data}\"*.cap -l \"${tmpdir}${wepdir}wepkey.txt\"" "Decrypting WEP Key" "active" + if [ "\${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "aircrack-ng \"${tmpdir}${wep_data}\".*cap -l \"${tmpdir}${wepdir}wepkey.txt\"" + wep_aircrack_pid="\${global_process_pid}" + global_process_pid="" + else + wep_aircrack_pid=\$! + fi EOF cat >&6 <<-'EOF' - wep_aircrack_pid=$! wep_script_processes+=(${wep_aircrack_pid}) write_wep_processes fi @@ -3217,7 +3463,8 @@ function exec_wps_custom_pin_bully_attack() { language_strings "${language}" 33 "yellow" 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 + manage_output "-hold -bg \"#000000\" -fg \"#FF0000\" -geometry ${g2_stdleft_window} -T \"WPS custom pin bully attack\"" "bash \"${tmpdir}${wps_attack_script_file}\"" "WPS custom pin bully attack" "active" + wait_for_process "bash \"${tmpdir}${wps_attack_script_file}\"" "WPS custom pin bully attack" } #Execute wps custom pin reaver attack @@ -3234,7 +3481,8 @@ function exec_wps_custom_pin_reaver_attack() { language_strings "${language}" 33 "yellow" 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 + manage_output "-hold -bg \"#000000\" -fg \"#FF0000\" -geometry ${g2_stdleft_window} -T \"WPS custom pin reaver attack\"" "bash \"${tmpdir}${wps_attack_script_file}\"" "WPS custom pin reaver attack" "active" + wait_for_process "bash \"${tmpdir}${wps_attack_script_file}\"" "WPS custom pin reaver attack" } #Execute bully pixie dust attack @@ -3251,7 +3499,8 @@ function exec_bully_pixiewps_attack() { language_strings "${language}" 33 "yellow" 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 + manage_output "-hold -bg \"#000000\" -fg \"#FF0000\" -geometry ${g2_stdright_window} -T \"WPS bully pixie dust attack\"" "bash \"${tmpdir}${wps_attack_script_file}\"" "WPS bully pixie dust attack" "active" + wait_for_process "bash \"${tmpdir}${wps_attack_script_file}\"" "WPS bully pixie dust attack" } #Execute reaver pixie dust attack @@ -3268,7 +3517,8 @@ function exec_reaver_pixiewps_attack() { language_strings "${language}" 33 "yellow" 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 + manage_output "-hold -bg \"#000000\" -fg \"#FF0000\" -geometry ${g2_stdright_window} -T \"WPS reaver pixie dust attack\"" "bash \"${tmpdir}${wps_attack_script_file}\"" "WPS reaver pixie dust attack" "active" + wait_for_process "bash \"${tmpdir}${wps_attack_script_file}\"" "WPS reaver pixie dust attack" } #Execute wps bruteforce pin bully attack @@ -3285,7 +3535,8 @@ function exec_wps_bruteforce_pin_bully_attack() { language_strings "${language}" 33 "yellow" 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 + manage_output "-hold -bg \"#000000\" -fg \"#FF0000\" -geometry ${g2_stdleft_window} -T \"WPS bruteforce pin bully attack\"" "bash \"${tmpdir}${wps_attack_script_file}\"" "WPS bruteforce pin bully attack" "active" + wait_for_process "bash \"${tmpdir}${wps_attack_script_file}\"" "WPS bruteforce pin bully attack" } #Execute wps bruteforce pin reaver attack @@ -3302,7 +3553,8 @@ function exec_wps_bruteforce_pin_reaver_attack() { language_strings "${language}" 33 "yellow" 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 + manage_output "-hold -bg \"#000000\" -fg \"#FF0000\" -geometry ${g2_stdleft_window} -T \"WPS bruteforce pin reaver attack\"" "bash \"${tmpdir}${wps_attack_script_file}\"" "WPS bruteforce pin reaver attack" "active" + wait_for_process "bash \"${tmpdir}${wps_attack_script_file}\"" "WPS bruteforce pin reaver attack" } #Execute wps pin database bully attack @@ -3315,7 +3567,8 @@ function exec_wps_pin_database_bully_attack() { 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 + manage_output "-hold -bg \"#000000\" -fg \"#FF0000\" -geometry ${g2_stdright_window} -T \"WPS bully known pins database based attack\"" "bash \"${tmpdir}${wps_attack_script_file}\"" "WPS bully known pins database based attack" "active" + wait_for_process "bash \"${tmpdir}${wps_attack_script_file}\"" "WPS bully known pins database based attack" } #Execute wps pin database reaver attack @@ -3328,7 +3581,26 @@ function exec_wps_pin_database_reaver_attack() { 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 + manage_output "-hold -bg \"#000000\" -fg \"#FF0000\" -geometry ${g2_stdright_window} -T \"WPS reaver known pins database based attack\"" "bash \"${tmpdir}${wps_attack_script_file}\"" "WPS reaver known pins database based attack" "active" + wait_for_process "bash \"${tmpdir}${wps_attack_script_file}\"" "WPS reaver known pins database based attack" +} + +#Execute wps null pin reaver attack +function exec_reaver_nullpin_attack() { + + debug_print + + echo + language_strings "${language}" 32 "green" + + set_wps_attack_script "reaver" "nullpin" + + echo + language_strings "${language}" 33 "yellow" + language_strings "${language}" 4 "read" + recalculate_windows_sizes + manage_output "-hold -bg \"#000000\" -fg \"#FF0000\" -geometry ${g2_stdleft_window} -T \"WPS null pin reaver attack\"" "bash \"${tmpdir}${wps_attack_script_file}\"" "WPS null pin reaver attack" "active" + wait_for_process "bash \"${tmpdir}${wps_attack_script_file}\"" "WPS null pin reaver attack" } #Execute DoS pursuit mode attack @@ -3352,61 +3624,108 @@ function launch_dos_pursuit_mode_attack() { dos_delay=1 interface_pursuit_mode_scan="${interface}" interface_pursuit_mode_deauth="${interface}" - xterm +j -bg black -fg red -geometry "${g1_topleft_window}" -T "${1} (DoS Pursuit mode)" -e mdk4 "${interface_pursuit_mode_deauth}" d -b "${tmpdir}bl.txt" -c "${channel}" > /dev/null 2>&1 & + manage_output "+j -bg \"#000000\" -fg \"#FF0000\" -geometry ${g1_topleft_window} -T \"${1} (DoS Pursuit mode)\"" "mdk4 ${interface_pursuit_mode_deauth} d -b ${tmpdir}bl.txt -c ${channel}" "${1} (DoS Pursuit mode)" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "mdk4 ${interface_pursuit_mode_deauth} d -b ${tmpdir}bl.txt -c ${channel}" + dos_pursuit_mode_attack_pid="${global_process_pid}" + global_process_pid="" + fi ;; "aireplay deauth attack") ${airmon} start "${interface}" "${channel}" > /dev/null 2>&1 dos_delay=3 interface_pursuit_mode_scan="${interface}" interface_pursuit_mode_deauth="${interface}" - xterm +j -bg black -fg red -geometry "${g1_topleft_window}" -T "${1} (DoS Pursuit mode)" -e aireplay-ng --deauth 0 -a "${bssid}" --ignore-negative-one "${interface_pursuit_mode_deauth}" > /dev/null 2>&1 & + manage_output "+j -bg \"#000000\" -fg \"#FF0000\" -geometry ${g1_topleft_window} -T \"${1} (DoS Pursuit mode)\"" "aireplay-ng --deauth 0 -a ${bssid} --ignore-negative-one ${interface_pursuit_mode_deauth}" "${1} (DoS Pursuit mode)" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "aireplay-ng --deauth 0 -a ${bssid} --ignore-negative-one ${interface_pursuit_mode_deauth}" + dos_pursuit_mode_attack_pid="${global_process_pid}" + global_process_pid="" + fi ;; "wids / wips / wds confusion attack") dos_delay=10 interface_pursuit_mode_scan="${interface}" interface_pursuit_mode_deauth="${interface}" - xterm +j -bg black -fg red -geometry "${g1_topleft_window}" -T "${1} (DoS Pursuit mode)" -e mdk4 "${interface_pursuit_mode_deauth}" w -e "${essid}" -c "${channel}" > /dev/null 2>&1 & + manage_output "+j -bg \"#000000\" -fg \"#FF0000\" -geometry ${g1_topleft_window} -T \"${1} (DoS Pursuit mode)\"" "mdk4 ${interface_pursuit_mode_deauth} w -e ${essid} -c ${channel}" "${1} (DoS Pursuit mode)" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "mdk4 ${interface_pursuit_mode_deauth} w -e ${essid} -c ${channel}" + dos_pursuit_mode_attack_pid="${global_process_pid}" + global_process_pid="" + fi ;; "beacon flood attack") dos_delay=1 interface_pursuit_mode_scan="${interface}" interface_pursuit_mode_deauth="${interface}" - xterm +j -bg black -fg red -geometry "${g1_topleft_window}" -T "${1} (DoS Pursuit mode)" -e mdk4 "${interface_pursuit_mode_deauth}" b -n "${essid}" -c "${channel}" -s 1000 -h > /dev/null 2>&1 & + manage_output "+j -bg \"#000000\" -fg \"#FF0000\" -geometry ${g1_topleft_window} -T \"${1} (DoS Pursuit mode)\"" "mdk4 ${interface_pursuit_mode_deauth} b -n ${essid} -c ${channel} -s 1000 -h" "${1} (DoS Pursuit mode)" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "mdk4 ${interface_pursuit_mode_deauth} b -n ${essid} -c ${channel} -s 1000 -h" + dos_pursuit_mode_attack_pid="${global_process_pid}" + global_process_pid="" + fi ;; "auth dos attack") dos_delay=1 interface_pursuit_mode_scan="${interface}" interface_pursuit_mode_deauth="${interface}" - xterm +j -bg black -fg red -geometry "${g1_topleft_window}" -T "${1} (DoS Pursuit mode)" -e mdk4 "${interface_pursuit_mode_deauth}" a -a "${bssid}" -m -s 1024 > /dev/null 2>&1 & + manage_output "+j -bg \"#000000\" -fg \"#FF0000\" -geometry ${g1_topleft_window} -T \"${1} (DoS Pursuit mode)\"" "mdk4 ${interface_pursuit_mode_deauth} a -a ${bssid} -m -s 1024" "${1} (DoS Pursuit mode)" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "mdk4 ${interface_pursuit_mode_deauth} a -a ${bssid} -m -s 1024" + dos_pursuit_mode_attack_pid="${global_process_pid}" + global_process_pid="" + fi ;; "michael shutdown attack") dos_delay=1 interface_pursuit_mode_scan="${interface}" interface_pursuit_mode_deauth="${interface}" - xterm +j -bg black -fg red -geometry "${g1_topleft_window}" -T "${1} (DoS Pursuit mode)" -e mdk4 "${interface_pursuit_mode_deauth}" m -t "${bssid}" -w 1 -n 1024 -s 1024 > /dev/null 2>&1 & + manage_output "+j -bg \"#000000\" -fg \"#FF0000\" -geometry ${g1_topleft_window} -T \"${1} (DoS Pursuit mode)\"" "mdk4 ${interface_pursuit_mode_deauth} m -t ${bssid} -w 1 -n 1024 -s 1024" "${1} (DoS Pursuit mode)" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "mdk4 ${interface_pursuit_mode_deauth} m -t ${bssid} -w 1 -n 1024 -s 1024" + dos_pursuit_mode_attack_pid="${global_process_pid}" + global_process_pid="" + fi ;; "Mdk4") dos_delay=1 interface_pursuit_mode_scan="${secondary_wifi_interface}" interface_pursuit_mode_deauth="${secondary_wifi_interface}" - xterm +j -bg black -fg red -geometry "${deauth_scr_window_position}" -T "Deauth (DoS Pursuit mode)" -e "mdk4 ${interface_pursuit_mode_deauth} d -b ${tmpdir}\"bl.txt\" -c ${channel}" > /dev/null 2>&1 & + manage_output "+j -bg \"#000000\" -fg \"#FF0000\" -geometry ${deauth_scr_window_position} -T \"Deauth (DoS Pursuit mode)\"" "mdk4 ${interface_pursuit_mode_deauth} d -b ${tmpdir}\"bl.txt\" -c ${channel}" "Deauth (DoS Pursuit mode)" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "mdk4 ${interface_pursuit_mode_deauth} d -b ${tmpdir}\"bl.txt\" -c ${channel}" + dos_pursuit_mode_attack_pid="${global_process_pid}" + global_process_pid="" + fi ;; "Aireplay") interface_pursuit_mode_scan="${secondary_wifi_interface}" interface_pursuit_mode_deauth="${secondary_wifi_interface}" iwconfig "${interface_pursuit_mode_deauth}" channel "${channel}" > /dev/null 2>&1 dos_delay=3 - xterm +j -bg black -fg red -geometry "${deauth_scr_window_position}" -T "Deauth (DoS Pursuit mode)" -e "aireplay-ng --deauth 0 -a ${bssid} --ignore-negative-one ${interface_pursuit_mode_deauth}" > /dev/null 2>&1 & + manage_output "+j -bg \"#000000\" -fg \"#FF0000\" -geometry ${deauth_scr_window_position} -T \"Deauth (DoS Pursuit mode)\"" "aireplay-ng --deauth 0 -a ${bssid} --ignore-negative-one ${interface_pursuit_mode_deauth}" "Deauth (DoS Pursuit mode)" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "aireplay-ng --deauth 0 -a ${bssid} --ignore-negative-one ${interface_pursuit_mode_deauth}" + dos_pursuit_mode_attack_pid="${global_process_pid}" + global_process_pid="" + fi ;; "Wds Confusion") dos_delay=10 interface_pursuit_mode_scan="${secondary_wifi_interface}" interface_pursuit_mode_deauth="${secondary_wifi_interface}" - xterm +j -bg black -fg red -geometry "${deauth_scr_window_position}" -T "Deauth (DoS Pursuit mode)" -e "mdk4 ${interface_pursuit_mode_deauth} w -e ${essid} -c ${channel}" > /dev/null 2>&1 & + manage_output "+j -bg \"#000000\" -fg \"#FF0000\" -geometry ${deauth_scr_window_position} -T \"Deauth (DoS Pursuit mode)\"" "mdk4 ${interface_pursuit_mode_deauth} w -e ${essid} -c ${channel}" "Deauth (DoS Pursuit mode)" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "mdk4 ${interface_pursuit_mode_deauth} w -e ${essid} -c ${channel}" + dos_pursuit_mode_attack_pid="${global_process_pid}" + global_process_pid="" + fi ;; esac - dos_pursuit_mode_attack_pid=$! + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "xterm" ]; then + dos_pursuit_mode_attack_pid=$! + fi dos_pursuit_mode_pids+=("${dos_pursuit_mode_attack_pid}") if [ "${channel}" -gt 14 ]; then @@ -3520,7 +3839,8 @@ function exec_mdk4deauth() { language_strings "${language}" 33 "yellow" language_strings "${language}" 4 "read" recalculate_windows_sizes - xterm +j -bg black -fg red -geometry "${g1_topleft_window}" -T "mdk4 amok attack" -e mdk4 "${interface}" d -b "${tmpdir}bl.txt" -c "${channel}" > /dev/null 2>&1 + manage_output "+j -bg \"#000000\" -fg \"#FF0000\" -geometry ${g1_topleft_window} -T \"mdk4 amok attack\"" "mdk4 ${interface} d -b ${tmpdir}bl.txt -c ${channel}" "mdk4 amok attack" "active" + wait_for_process "mdk4 ${interface} d -b ${tmpdir}bl.txt -c ${channel}" "mdk4 amok attack" fi } @@ -3549,7 +3869,8 @@ function exec_aireplaydeauth() { 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 + manage_output "+j -bg \"#000000\" -fg \"#FF0000\" -geometry ${g1_topleft_window} -T \"aireplay deauth attack\"" "aireplay-ng --deauth 0 -a ${bssid} --ignore-negative-one ${interface}" "aireplay deauth attack" "active" + wait_for_process "aireplay-ng --deauth 0 -a ${bssid} --ignore-negative-one ${interface}" "aireplay deauth attack" fi } @@ -3576,7 +3897,8 @@ function exec_wdsconfusion() { 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 mdk4 "${interface}" w -e "${essid}" -c "${channel}" > /dev/null 2>&1 + manage_output "+j -bg \"#000000\" -fg \"#FF0000\" -geometry ${g1_topleft_window} -T \"wids / wips / wds confusion attack\"" "mdk4 ${interface} w -e ${essid} -c ${channel}" "wids / wips / wds confusion attack" "active" + wait_for_process "mdk4 ${interface} w -e ${essid} -c ${channel}" "wids / wips / wds confusion attack" fi } @@ -3603,7 +3925,8 @@ function exec_beaconflood() { 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 mdk4 "${interface}" b -n "${essid}" -c "${channel}" -s 1000 -h > /dev/null 2>&1 + manage_output "+j -sb -rightbar -geometry ${g1_topleft_window} -T \"beacon flood attack\"" "mdk4 ${interface} b -n ${essid} -c ${channel} -s 1000 -h" "beacon flood attack" "active" + wait_for_process "mdk4 ${interface} b -n ${essid} -c ${channel} -s 1000 -h" "beacon flood attack" fi } @@ -3630,7 +3953,8 @@ function exec_authdos() { 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 mdk4 "${interface}" a -a "${bssid}" -m -s 1024 > /dev/null 2>&1 + manage_output "+j -sb -rightbar -geometry ${g1_topleft_window} -T \"auth dos attack\"" "mdk4 ${interface} a -a ${bssid} -m -s 1024" "auth dos attack" "active" + wait_for_process "mdk4 ${interface} a -a ${bssid} -m -s 1024" "auth dos attack" fi } @@ -3657,7 +3981,8 @@ function exec_michaelshutdown() { 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 mdk4 "${interface}" m -t "${bssid}" -w 1 -n 1024 -s 1024 > /dev/null 2>&1 + manage_output "+j -sb -rightbar -geometry ${g1_topleft_window} -T \"michael shutdown attack\"" "mdk4 ${interface} m -t ${bssid} -w 1 -n 1024 -s 1024" "michael shutdown attack" "active" + wait_for_process "mdk4 ${interface} m -t ${bssid} -w 1 -n 1024 -s 1024" "michael shutdown attack" fi } @@ -3904,7 +4229,7 @@ function wep_option() { exec_wep_allinone_attack } -#Validate wps parameters for custom pin, pixie dust, bruteforce and pin database attacks +#Validate wps parameters for custom pin, pixie dust, bruteforce, pin database and null pin attacks function wps_attacks_parameters() { debug_print @@ -3941,6 +4266,9 @@ function wps_attacks_parameters() { "pindb_bully"|"pindb_reaver") ask_timeout "wps_standard" ;; + "nullpin_reaver") + ask_timeout "wps_standard" + ;; esac fi @@ -3999,6 +4327,12 @@ function print_options() { else language_strings "${language}" 595 "blue" fi + + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "xterm" ]; then + language_strings "${language}" 618 "blue" + else + language_strings "${language}" 619 "blue" + fi } #Print selected interface @@ -4422,7 +4756,7 @@ function clean_env_vars() { debug_print - unset AIRGEDDON_AUTO_UPDATE AIRGEDDON_SKIP_INTRO AIRGEDDON_BASIC_COLORS AIRGEDDON_EXTENDED_COLORS AIRGEDDON_AUTO_CHANGE_LANGUAGE AIRGEDDON_SILENT_CHECKS AIRGEDDON_PRINT_HINTS AIRGEDDON_5GHZ_ENABLED AIRGEDDON_FORCE_IPTABLES AIRGEDDON_DEVELOPMENT_MODE AIRGEDDON_DEBUG_MODE + unset AIRGEDDON_AUTO_UPDATE AIRGEDDON_SKIP_INTRO AIRGEDDON_BASIC_COLORS AIRGEDDON_EXTENDED_COLORS AIRGEDDON_AUTO_CHANGE_LANGUAGE AIRGEDDON_SILENT_CHECKS AIRGEDDON_PRINT_HINTS AIRGEDDON_5GHZ_ENABLED AIRGEDDON_FORCE_IPTABLES AIRGEDDON_DEVELOPMENT_MODE AIRGEDDON_DEBUG_MODE AIRGEDDON_WINDOWS_HANDLING } #Clean temporary files @@ -5088,6 +5422,7 @@ function wps_attacks_menu() { language_strings "${language}" 359 reaver_attacks_dependencies[@] language_strings "${language}" 348 bully_attacks_dependencies[@] language_strings "${language}" 360 reaver_attacks_dependencies[@] + language_strings "${language}" 622 reaver_attacks_dependencies[@] print_simple_separator language_strings "${language}" 494 print_hint ${current_menu} @@ -5269,6 +5604,27 @@ function wps_attacks_menu() { fi ;; 13) + if contains_element "${wps_option}" "${forbidden_options[@]}"; then + forbidden_menu_option + else + wps_attack="nullpin_reaver" + get_reaver_version + if validate_reaver_nullpin_version; then + echo + language_strings "${language}" 623 "yellow" + language_strings "${language}" 115 "read" + if wps_attacks_parameters; then + manage_wps_log + exec_reaver_nullpin_attack + fi + else + echo + language_strings "${language}" 624 "red" + language_strings "${language}" 115 "read" + fi + fi + ;; + 14) offline_pin_generation_menu ;; *) @@ -7280,6 +7636,7 @@ function exec_enterprise_attack() { language_strings "${language}" 115 "read" kill_et_windows + if [ "${dos_pursuit_mode}" -eq 1 ]; then recover_current_channel fi @@ -7430,6 +7787,7 @@ function exec_et_onlyap_attack() { language_strings "${language}" 115 "read" kill_et_windows + if [ "${dos_pursuit_mode}" -eq 1 ]; then recover_current_channel fi @@ -7457,6 +7815,7 @@ function exec_et_sniffing_attack() { language_strings "${language}" 115 "read" kill_et_windows + if [ "${dos_pursuit_mode}" -eq 1 ]; then recover_current_channel fi @@ -7488,6 +7847,7 @@ function exec_et_sniffing_sslstrip_attack() { language_strings "${language}" 115 "read" kill_et_windows + if [ "${dos_pursuit_mode}" -eq 1 ]; then recover_current_channel fi @@ -7529,6 +7889,7 @@ function exec_et_sniffing_sslstrip2_attack() { kill_beef kill_et_windows + if [ "${dos_pursuit_mode}" -eq 1 ]; then recover_current_channel fi @@ -7565,6 +7926,7 @@ function exec_et_captive_portal_attack() { language_strings "${language}" 115 "read" kill_et_windows + if [ "${dos_pursuit_mode}" -eq 1 ]; then recover_current_channel fi @@ -7695,8 +8057,15 @@ function launch_fake_ap() { ;; esac fi - xterm -hold -bg black -fg green -geometry "${hostapd_scr_window_position}" -T "AP" -e "${command}${log_command}" > /dev/null 2>&1 & - et_processes+=($!) + manage_output "-hold -bg \"#000000\" -fg \"#00FF00\" -geometry ${hostapd_scr_window_position} -T \"AP\"" "${command}${log_command}" "AP" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "xterm" ]; then + et_processes+=($!) + else + get_tmux_process_id "${command}" + et_processes+=("${global_process_pid}") + global_process_pid="" + fi + sleep 3 } @@ -7926,8 +8295,15 @@ function launch_dhcp_server() { 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+=($!) + manage_output "-hold -bg \"#000000\" -fg \"#FFC0CB\" -geometry ${dchcpd_scr_window_position} -T \"DHCP\"" "dhcpd -d -cf \"${dhcp_path}\" ${interface} 2>&1 | tee -a ${tmpdir}clts.txt 2>&1" "DHCP" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "xterm" ]; then + et_processes+=($!) + else + get_tmux_process_id "dhcpd -d -cf \"${dhcp_path}\" ${interface}" + et_processes+=("${global_process_pid}") + global_process_pid="" + fi + sleep 2 } @@ -7977,8 +8353,15 @@ function exec_et_deauth() { launch_dos_pursuit_mode_attack "${et_dos_attack}" "first_time" pid_control_pursuit_mode "${et_dos_attack}" "evil_twin" & else - xterm -hold -bg black -fg red -geometry "${deauth_scr_window_position}" -T "Deauth" -e "${deauth_et_cmd}" > /dev/null 2>&1 & - et_processes+=($!) + manage_output "-hold -bg \"#000000\" -fg \"#FF0000\" -geometry ${deauth_scr_window_position} -T \"Deauth\"" "${deauth_et_cmd}" "Deauth" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "xterm" ]; then + et_processes+=($!) + else + get_tmux_process_id "${deauth_et_cmd}" + et_processes+=("${global_process_pid}") + global_process_pid="" + fi + sleep 1 fi } @@ -8013,6 +8396,9 @@ function set_wps_attack_script() { "bruteforce") attack_cmd1="reaver -i \${script_interface} -b \${script_wps_bssid} -c \${script_wps_channel} \${script_bully_reaver_band_modifier} -L -f -N -d 2 -vvv" ;; + "nullpin") + attack_cmd1="reaver -i \${script_interface} -b \${script_wps_bssid} -c \${script_wps_channel} \${script_bully_reaver_band_modifier} -L -f -N -g 1 -d 2 -vvv -p ''" + ;; esac else unbuffer="unbuffer " @@ -8066,6 +8452,10 @@ function set_wps_attack_script() { script_attack_cmd1="${unbuffer} ${attack_cmd1}" pin_header1="${white_color}Testing all possible PINs${normal_color}" ;; + "nullpin") + script_attack_cmd1="${unbuffer}timeout -s SIGTERM ${timeout_secs_per_pin} ${attack_cmd1}" + pin_header1="${white_color}Testing null PIN" + ;; esac pin_header2=" (${yellow_color}" @@ -8116,7 +8506,7 @@ function set_wps_attack_script() { cat >&7 <<-'EOF' if [ "${script_wps_attack_tool}" = "reaver" ]; then case ${script_wps_attack_mode} in - "pindb"|"custompin"|"bruteforce") + "pindb"|"custompin"|"bruteforce"|"nullpin") 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" @@ -8145,7 +8535,7 @@ function set_wps_attack_script() { fi case ${script_wps_attack_mode} in - "pindb"|"custompin") + "pindb"|"custompin"|"nullpin") 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 @@ -8234,6 +8624,14 @@ function set_wps_attack_script() { cat >&7 <<-EOF timeout_msg="${white_color}Timeout for Pixie Dust attack${normal_color}" + EOF + + cat >&7 <<-'EOF' + elif [ "${script_wps_attack_mode}" = "nullpin" ]; then + EOF + + cat >&7 <<-EOF + timeout_msg="${white_color}Timeout for null PIN${normal_color}" else timeout_msg="${white_color}Timeout for last PIN${normal_color}" fi @@ -8351,6 +8749,15 @@ function set_wps_attack_script() { eval "${script_attack_cmd1}${script_attack_cmd2} ${colorize}" parse_output ;; + "nullpin") + echo + echo -e "${pin_header1}" + (set -o pipefail && eval "${script_attack_cmd1}${script_attack_cmd2} ${colorize}") + if [ "$?" = "124" ]; then + this_pin_timeout=1 + fi + parse_output + ;; esac if [ ${pin_cracked} -eq 1 ]; then @@ -8381,6 +8788,7 @@ function set_wps_attack_script() { echo echo -e "${white_color}Close this window" + read -r -d '' _ &- @@ -8464,7 +8872,32 @@ function set_enterprise_control_script() { echo -e "ifacemode=${ifacemode}" } > "${enterprise_returning_vars_file}" } + EOF + + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + cat >&7 <<-EOF + function kill_tmux_windows() { + local TMUX_WINDOWS_LIST=() + local current_window_name + readarray -t TMUX_WINDOWS_LIST < <(tmux list-windows -t "${session_name}:") + for item in "\${TMUX_WINDOWS_LIST[@]}"; do + [[ "\${item}" =~ ^[0-9]+:[[:blank:]](.+([^*-]))([[:blank:]]|\-|\*)[[:blank:]]?\([0-9].+ ]] && current_window_name="\${BASH_REMATCH[1]}" + if [ "\${current_window_name}" = "${tmux_main_window}" ]; then + continue + fi + if [ -n "\${1}" ]; then + if [ "\${current_window_name}" = "\${1}" ]; then + continue + fi + fi + tmux kill-window -t "${session_name}:\${current_window_name}" + done + } + EOF + fi + + cat >&7 <<-'EOF' #Kill Evil Twin Enterprise processes function kill_enterprise_windows() { @@ -8599,6 +9032,15 @@ function set_enterprise_control_script() { if [ ${break_on_next_loop} -eq 1 ]; then kill_enterprise_windows + EOF + + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + cat >&7 <<-EOF + kill_tmux_windows "Control" + EOF + fi + + cat >&7 <<-'EOF' break fi @@ -8668,6 +9110,29 @@ function set_et_control_script() { } EOF + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + cat >&7 <<-EOF + function kill_tmux_windows() { + + local TMUX_WINDOWS_LIST=() + local current_window_name + readarray -t TMUX_WINDOWS_LIST < <(tmux list-windows -t "${session_name}:") + for item in "\${TMUX_WINDOWS_LIST[@]}"; do + [[ "\${item}" =~ ^[0-9]+:[[:blank:]](.+([^*-]))([[:blank:]]|\-|\*)[[:blank:]]?\([0-9].+ ]] && current_window_name="\${BASH_REMATCH[1]}" + if [ "\${current_window_name}" = "${tmux_main_window}" ]; then + continue + fi + if [ -n "\${1}" ]; then + if [ "\${current_window_name}" = "\${1}" ]; then + continue + fi + fi + tmux kill-window -t "${session_name}:\${current_window_name}" + done + } + EOF + fi + cat >&7 <<-EOF function finish_evil_twin() { @@ -8745,6 +9210,15 @@ function set_et_control_script() { kill "$(ps -C aireplay-ng --no-headers -o pid | tr -d ' ')" &> /dev/null kill "$(ps -C lighttpd --no-headers -o pid | tr -d ' ')" &> /dev/null kill_et_windows + EOF + + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + cat >&7 <<-EOF + kill_tmux_windows "Control" + EOF + fi + + cat >&7 <<-EOF exit 0 } fi @@ -8874,8 +9348,14 @@ function launch_dns_blackhole() { debug_print recalculate_windows_sizes - xterm -hold -bg black -fg blue -geometry "${g4_middleright_window}" -T "DNS" -e "${optional_tools_names[12]} -i ${interface}" > /dev/null 2>&1 & - et_processes+=($!) + manage_output "-hold -bg \"#000000\" -fg \"#0000FF\" -geometry ${g4_middleright_window} -T \"DNS\"" "${optional_tools_names[12]} -i ${interface}" "DNS" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "xterm" ]; then + et_processes+=($!) + else + get_tmux_process_id "${optional_tools_names[12]} -i ${interface}" + et_processes+=("${global_process_pid}") + global_process_pid="" + fi } #Launch control window for Enterprise attacks @@ -8884,8 +9364,14 @@ function launch_enterprise_control_window() { debug_print recalculate_windows_sizes - xterm -hold -bg black -fg white -geometry "${g1_topright_window}" -T "Control" -e "bash \"${tmpdir}${control_enterprise_file}\"" > /dev/null 2>&1 & - enterprise_process_control_window=$! + manage_output "-hold -bg \"#000000\" -fg \"#FFFFFF\" -geometry ${g1_topright_window} -T \"Control\"" "bash \"${tmpdir}${control_enterprise_file}\"" "Control" "active" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "xterm" ]; then + enterprise_process_control_window=$! + else + get_tmux_process_id "bash \"${tmpdir}${control_enterprise_file}\"" + enterprise_process_control_window="${global_process_pid}" + global_process_pid="" + fi } #Launch control window for Evil Twin attacks @@ -8915,8 +9401,14 @@ function launch_et_control_window() { 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_et_file}\"" > /dev/null 2>&1 & - et_process_control_window=$! + manage_output "-hold -bg \"#000000\" -fg \"#FFFFFF\" -geometry ${control_scr_window_position} -T \"Control\"" "bash \"${tmpdir}${control_et_file}\"" "Control" "active" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "xterm" ]; then + et_process_control_window=$! + else + get_tmux_process_id "bash \"${tmpdir}${control_et_file}\"" + et_process_control_window="${global_process_pid}" + global_process_pid="" + fi } #Create configuration file for lighttpd @@ -9162,8 +9654,14 @@ function launch_webserver() { 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+=($!) + manage_output "-hold -bg \"#000000\" -fg \"#FFFF00\" -geometry ${lighttpd_window_position} -T \"Webserver\"" "lighttpd -D -f \"${tmpdir}${webserver_file}\"" "Webserver" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "xterm" ]; then + et_processes+=($!) + else + get_tmux_process_id "lighttpd -D -f \"${tmpdir}${webserver_file}\"" + et_processes+=("${global_process_pid}") + global_process_pid="" + fi } #Launch sslstrip for sslstrip sniffing Evil Twin attack @@ -9173,8 +9671,14 @@ function launch_sslstrip() { rm -rf "${tmpdir}${sslstrip_file}" > /dev/null 2>&1 recalculate_windows_sizes - xterm -hold -bg black -fg blue -geometry "${g4_middleright_window}" -T "Sslstrip" -e "sslstrip -w \"${tmpdir}${sslstrip_file}\" -p -l ${sslstrip_port} -f -k" > /dev/null 2>&1 & - et_processes+=($!) + manage_output "-hold -bg \"#000000\" -fg \"#0000FF\" -geometry ${g4_middleright_window} -T \"Sslstrip\"" "sslstrip -w \"${tmpdir}${sslstrip_file}\" -p -l ${sslstrip_port} -f -k" "Sslstrip" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "xterm" ]; then + et_processes+=($!) + else + get_tmux_process_id "sslstrip -w \"${tmpdir}${sslstrip_file}\" -p -l ${sslstrip_port} -f -k" + et_processes+=("${global_process_pid}") + global_process_pid="" + fi } #Launch ettercap sniffer @@ -9196,8 +9700,14 @@ function launch_ettercap_sniffing() { 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+=($!) + manage_output "-hold -bg \"#000000\" -fg \"#FFFF00\" -geometry ${sniffing_scr_window_position} -T \"Sniffer\"" "${ettercap_cmd}" "Sniffer" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "xterm" ]; then + et_processes+=($!) + else + get_tmux_process_id "${ettercap_cmd}" + et_processes+=("${global_process_pid}") + global_process_pid="" + fi } #Create configuration file for beef @@ -9303,6 +9813,7 @@ function set_beef_config() { } #Kill beef process +#shellcheck disable=SC2009 function kill_beef() { debug_print @@ -9489,11 +10000,25 @@ function launch_beef() { 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 & + manage_output "-hold -bg \"#000000\" -fg \"#00FF00\" -geometry ${g4_middleright_window} -T \"BeEF\"" "cd ${beef_path} && ./beef -c \"${beef_file}\"" "BeEF" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "cd ${beef_path} && ./beef -c \"${beef_file}\"" + et_processes+=("${global_process_pid}") + global_process_pid="" + fi else - xterm -hold -bg black -fg green -geometry "${g4_middleright_window}" -T "BeEF" -e "${optional_tools_names[19]}" > /dev/null 2>&1 & + manage_output "-hold -bg \"#000000\" -fg \"#00FF00\" -geometry ${g4_middleright_window} -T \"BeEF\"" "${optional_tools_names[19]}" "BeEF" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "{optional_tools_names[19]}" + et_processes+=("${global_process_pid}") + global_process_pid="" + fi + fi + + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "xterm" ]; then + et_processes+=($!) fi - et_processes+=($!) + sleep 2 } @@ -9515,8 +10040,14 @@ function launch_bettercap_sniffing() { 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+=($!) + manage_output "-hold -bg \"#000000\" -fg \"#FFFF00\" -geometry ${sniffing_scr_window_position} -T \"Sniffer+Bettercap-Sslstrip2/BeEF\"" "${bettercap_cmd}" "Sniffer+Bettercap-Sslstrip2/BeEF" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "${bettercap_cmd}" + et_processes+=("${global_process_pid}") + global_process_pid="" + else + et_processes+=($!) + fi } #Parse ettercap log searching for captured passwords @@ -9663,12 +10194,15 @@ function kill_et_windows() { done if [ -n "${enterprise_mode}" ]; then - kill ${enterprise_process_control_window} &> /dev/null + kill "${enterprise_process_control_window}" &> /dev/null kill "$(ps -C hostapd-wpe --no-headers -o pid | tr -d ' ')" &> /dev/null else - kill ${et_process_control_window} &> /dev/null + kill "${et_process_control_window}" &> /dev/null kill "$(ps -C hostapd --no-headers -o pid | tr -d ' ')" &> /dev/null fi + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + kill_tmux_windows + fi } #Kill DoS pursuit mode processes @@ -9952,25 +10486,46 @@ function capture_handshake_evil_twin() { 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 "mdk4 amok attack" -e mdk4 "${interface}" d -b "${tmpdir}bl.txt" -c "${channel}" > /dev/null 2>&1 & + manage_output "+j -bg \"#000000\" -fg \"#FF0000\" -geometry ${g1_bottomleft_window} -T \"mdk4 amok attack\"" "mdk4 ${interface} d -b ${tmpdir}bl.txt -c ${channel}" "mdk4 amok attack" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "mdk4 ${interface} d -b ${tmpdir}bl.txt -c ${channel}" + processidattack="${global_process_pid}" + global_process_pid="" + fi 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 & + manage_output "+j -bg \"#000000\" -fg \"#FF0000\" -geometry ${g1_bottomleft_window} -T \"aireplay deauth attack\"" "aireplay-ng --deauth 0 -a ${bssid} --ignore-negative-one ${interface}" "aireplay deauth attack" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "aireplay-ng --deauth 0 -a ${bssid} --ignore-negative-one ${interface}" + processidattack="${global_process_pid}" + global_process_pid="" + fi sleeptimeattack=12 ;; "Wds Confusion") recalculate_windows_sizes - xterm +j -bg black -fg red -geometry "${g1_bottomleft_window}" -T "wids / wips / wds confusion attack" -e mdk4 "${interface}" w -e "${essid}" -c "${channel}" > /dev/null 2>&1 & + manage_output "+j -bg \"#000000\" -fg \"#FF0000\" -geometry ${g1_bottomleft_window} -T \"wids / wips / wds confusion attack\"" "mdk4 ${interface} w -e ${essid} -c ${channel}" "wids / wips / wds confusion attack" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "mdk4 ${interface} w -e ${essid} -c ${channel}" + processidattack="${global_process_pid}" + global_process_pid="" + fi sleeptimeattack=16 ;; esac - processidattack=$! - sleep ${sleeptimeattack} && kill ${processidattack} &> /dev/null + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "xterm" ]; then + processidattack=$! + sleep ${sleeptimeattack} && kill ${processidattack} &> /dev/null + else + sleep ${sleeptimeattack} && kill ${processidattack} && kill_tmux_windows "Capturing Handshake" &> /dev/null + fi + handshake_capture_check + if check_bssid_in_captured_file "${tmpdir}${standardhandshake_filename}" "silent"; then handshakepath="${default_save_path}" @@ -10419,7 +10974,12 @@ function attack_handshake_menu() { 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 "mdk4 amok attack" -e mdk4 "${interface}" d -b "${tmpdir}bl.txt" -c "${channel}" > /dev/null 2>&1 & + manage_output "+j -bg \"#000000\" -fg \"#FF0000\" -geometry ${g1_bottomleft_window} -T \"mdk4 amok attack\"" "mdk4 ${interface} d -b ${tmpdir}bl.txt -c ${channel}" "mdk4 amok attack" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "mdk4 ${interface} d -b ${tmpdir}bl.txt -c ${channel}" + processidattack="${global_process_pid}" + global_process_pid="" + fi sleeptimeattack=12 fi ;; @@ -10432,7 +10992,12 @@ function attack_handshake_menu() { 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 & + manage_output "+j -bg \"#000000\" -fg \"#FF0000\" -geometry ${g1_bottomleft_window} -T \"aireplay deauth attack\"" "aireplay-ng --deauth 0 -a ${bssid} --ignore-negative-one ${interface}" "aireplay deauth attack" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "aireplay-ng --deauth 0 -a ${bssid} --ignore-negative-one ${interface}" + processidattack="${global_process_pid}" + global_process_pid="" + fi sleeptimeattack=12 fi ;; @@ -10444,7 +11009,12 @@ function attack_handshake_menu() { ask_timeout "capture_handshake" capture_handshake_window recalculate_windows_sizes - xterm +j -bg black -fg red -geometry "${g1_bottomleft_window}" -T "wids / wips / wds confusion attack" -e mdk4 "${interface}" w -e "${essid}" -c "${channel}" > /dev/null 2>&1 & + manage_output "+j -bg \"#000000\" -fg \"#FF0000\" -geometry ${g1_bottomleft_window} -T \"wids / wips / wds confusion attack\"" "mdk4 ${interface} w -e ${essid} -c ${channel}" "wids / wips / wds confusion attack" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "mdk4 ${interface} w -e ${essid} -c ${channel}" + processidattack="${global_process_pid}" + global_process_pid="" + fi sleeptimeattack=16 fi ;; @@ -10454,8 +11024,12 @@ function attack_handshake_menu() { ;; esac - processidattack=$! - sleep ${sleeptimeattack} && kill ${processidattack} &> /dev/null + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "xterm" ]; then + processidattack=$! + sleep ${sleeptimeattack} && kill ${processidattack} &> /dev/null + else + sleep ${sleeptimeattack} && kill ${processidattack} && kill_tmux_windows "Capturing Handshake" &> /dev/null + fi attack_handshake_menu "handshake" } @@ -10475,8 +11049,14 @@ function capture_handshake_window() { 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_output "+j -sb -rightbar -geometry ${g1_topright_window} -T \"Capturing Handshake\"" "airodump-ng -c ${channel} -d ${bssid} -w ${tmpdir}handshake ${interface}" "Capturing Handshake" "active" + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + get_tmux_process_id "airodump-ng -c ${channel} -d ${bssid} -w ${tmpdir}handshake ${interface}" + processidcapture="${global_process_pid}" + global_process_pid="" + else + processidcapture=$! + fi } #Manage target exploration and parse the output files @@ -10514,8 +11094,10 @@ function explore_for_targets_option() { fi ;; esac + cypher_cmd=" --encrypt ${cypher_filter} " else cypher_filter="" + cypher_cmd=" " language_strings "${language}" 366 "yellow" fi language_strings "${language}" 115 "read" @@ -10531,7 +11113,8 @@ function explore_for_targets_option() { fi recalculate_windows_sizes - xterm +j -bg black -fg white -geometry "${g1_topright_window}" -T "Exploring for targets" -e airodump-ng -w "${tmpdir}nws" --encrypt "${cypher_filter}" "${interface}" --band "${airodump_band_modifier}" > /dev/null 2>&1 + manage_output "+j -bg \"#000000\" -fg \"#FFFFFF\" -geometry ${g1_topright_window} -T \"Exploring for targets\"" "airodump-ng -w ${tmpdir}nws${cypher_cmd}${interface} --band ${airodump_band_modifier}" "Exploring for targets" "active" + wait_for_process "airodump-ng -w ${tmpdir}nws${cypher_cmd}${interface} --band ${airodump_band_modifier}" "Exploring for targets" targetline=$(awk '/(^Station[s]?|^Client[es]?)/{print NR}' < "${tmpdir}nws-01.csv") targetline=$((targetline - 1)) @@ -10630,11 +11213,11 @@ function explore_for_wps_targets_option() { wash_band_modifier="" if [ "${interfaces_band_info['main_wifi_interface','5Ghz_allowed']}" -eq 1 ]; then if check_dual_scan_on_wash; then - wash_band_modifier="-2 -5" + wash_band_modifier=" -2 -5" else ask_yesno 145 "no" if [ "${yesno}" = "y" ]; then - wash_band_modifier="-5" + wash_band_modifier=" -5" fi fi fi @@ -10647,7 +11230,8 @@ function explore_for_wps_targets_option() { 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}]} ${wash_band_modifier} | tee \"${tmpdir}wps.txt\"" > /dev/null 2>&1 + manage_output "+j -bg \"#000000\" -fg \"#FFFFFF\" -geometry ${g1_topright_window} -T \"Exploring for WPS targets\"" "wash -i \"${interface}\"${wash_ifaces_already_set[${interface}]}${wash_band_modifier} | tee \"${tmpdir}wps.txt\"" "Exploring for WPS targets" "active" + wait_for_process "wash -i \"${interface}\"${wash_ifaces_already_set[${interface}]}${wash_band_modifier}" "Exploring for WPS targets" readarray -t WASH_PREVIEW < <(cat < "${tmpdir}wps.txt" 2> /dev/null) @@ -10906,7 +11490,7 @@ function set_wash_parameterization() { for item in "${WASH_OUTPUT[@]}"; do if [[ ${item} =~ ^\[\!\].*bad[[:space:]]FCS ]]; then - fcs="-C" + fcs=" -C " break fi done @@ -11610,7 +12194,11 @@ function capture_traps() { esac ;; SIGINT|SIGHUP) - hardcore_exit + if [ "${no_hardcore_exit}" -eq 0 ]; then + hardcore_exit + else + exit ${exit_code} + fi ;; esac else @@ -11687,10 +12275,15 @@ function exit_script_option() { language_strings "${language}" 160 "yellow" fi - clean_env_vars - echo - exit ${exit_code} + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + clean_env_vars + no_hardcore_exit=1 + kill_tmux_session "${session_name}" > /dev/null + else + clean_env_vars + exit ${exit_code} + fi } #Exit the script managing possible pending tasks but not showing anything @@ -11727,9 +12320,13 @@ function hardcore_exit() { echo -e "${green_color} Ok\r${normal_color}" fi - clean_env_vars - - exit ${exit_code} + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + clean_env_vars + kill_tmux_session "${session_name}" + else + clean_env_vars + exit ${exit_code} + fi } #Generate a small time loop printing some dots @@ -11918,6 +12515,17 @@ function validate_reaver_pixiewps_version() { return 1 } +#Validate if reaver version is able to perform null pin attack +function validate_reaver_nullpin_version() { + + debug_print + + if compare_floats_greater_or_equal "${reaver_version}" "${minimum_reaver_nullpin_version}"; then + return 0 + fi + return 1 +} + #Validate if wash version is able to perform 5Ghz dual scan function validate_wash_dualscan_version() { @@ -12795,6 +13403,7 @@ function initialize_script_settings() { secondary_interface_airmon_compatible=1 declare -gA wps_data_array declare -gA interfaces_band_info + tmux_error=0 } #Detect if there is a working X window system excepting for docker container and wayland @@ -12938,6 +13547,7 @@ function recalculate_windows_sizes() { } #Initialization of env vars +#shellcheck disable=SC2145 function env_vars_initialization() { debug_print @@ -12954,8 +13564,14 @@ function env_vars_initialization() { "AIRGEDDON_FORCE_IPTABLES" "AIRGEDDON_DEVELOPMENT_MODE" "AIRGEDDON_DEBUG_MODE" + "AIRGEDDON_WINDOWS_HANDLING" ) + declare -gA nonboolean_options_env_vars + nonboolean_options_env_vars["${ordered_options_env_vars[11]},default_value"]="xterm" + + nonboolean_options_env_vars["${ordered_options_env_vars[11]},rcfile_text"]="#Available values: xterm, tmux - Define the needed tool to be used for windows handling - Default value xterm" + declare -gA boolean_options_env_vars boolean_options_env_vars["${ordered_options_env_vars[0]},default_value"]="true" boolean_options_env_vars["${ordered_options_env_vars[1]},default_value"]="false" @@ -12981,8 +13597,12 @@ function env_vars_initialization() { boolean_options_env_vars["${ordered_options_env_vars[9]},rcfile_text"]="#Enabled true / Disabled false - Development mode for faster development skipping intro and all initial checks - Default value ${boolean_options_env_vars[${ordered_options_env_vars[9]},'default_value']}" boolean_options_env_vars["${ordered_options_env_vars[10]},rcfile_text"]="#Enabled true / Disabled false - Debug mode for development printing debug information - Default value ${boolean_options_env_vars[${ordered_options_env_vars[10]},'default_value']}" - readarray -t ENV_VARS_ELEMENTS < <(printf %s\\n "${!boolean_options_env_vars[@]}" | cut -d, -f1 | sort -u) - ENV_BOOLEAN_VARS_ELEMENTS=("${ENV_VARS_ELEMENTS[@]}") + readarray -t ENV_VARS_ELEMENTS < <(printf %s\\n "${!nonboolean_options_env_vars[@]} ${!boolean_options_env_vars[@]}" | cut -d, -f1 | sort -u) + readarray -t ENV_BOOLEAN_VARS_ELEMENTS < <(printf %s\\n "${!boolean_options_env_vars[@]}" | cut -d, -f1 | sort -u) + readarray -t ENV_NONBOOLEAN_VARS_ELEMENTS < <(printf %s\\n "${!nonboolean_options_env_vars[@]}" | cut -d, -f1 | sort -u) + ARRAY_ENV_VARS_ELEMENTS=("${ENV_VARS_ELEMENTS[@]}") + ARRAY_ENV_BOOLEAN_VARS_ELEMENTS=("${ENV_BOOLEAN_VARS_ELEMENTS[@]}") + ARRAY_ENV_NONBOOLEAN_VARS_ELEMENTS=("${ENV_NONBOOLEAN_VARS_ELEMENTS[@]}") if [ ! -f "${scriptfolder}${rc_file}" ]; then create_rcfile @@ -12998,23 +13618,47 @@ function env_vars_values_validation() { declare -gA errors_on_configuration_vars - for item in "${ENV_VARS_ELEMENTS[@]}"; do + for item in "${ARRAY_ENV_VARS_ELEMENTS[@]}"; do if [ -z "${!item}" ]; then if grep "${item}" "${scriptfolder}${rc_file}" > /dev/null; then eval "export $(grep "${item}" "${scriptfolder}${rc_file}")" else - export ${item}=${boolean_options_env_vars["${item}",'default_value']} - errors_on_configuration_vars["${item},missing_var"]="${boolean_options_env_vars[${item},'default_value']}" + if echo "${ARRAY_ENV_BOOLEAN_VARS_ELEMENTS[@]}" | grep -q "${item}"; then + export ${item}=${boolean_options_env_vars["${item}",'default_value']} + errors_on_configuration_vars["${item},missing_var"]="${boolean_options_env_vars[${item},'default_value']}" + elif echo "${ARRAY_ENV_NONBOOLEAN_VARS_ELEMENTS[@]}" | grep -q "${item}"; then + export ${item}=${nonboolean_options_env_vars["${item}",'default_value']} + errors_on_configuration_vars["${item},missing_var"]="${nonboolean_options_env_vars[${item},'default_value']}" + fi fi fi done - for item in "${ENV_BOOLEAN_VARS_ELEMENTS[@]}"; do + for item in "${ARRAY_ENV_BOOLEAN_VARS_ELEMENTS[@]}"; do if ! [[ "${!item,,}" =~ ^(true|false)$ ]]; then errors_on_configuration_vars["${item},invalid_value"]="${boolean_options_env_vars[${item},'default_value']}" export ${item}=${boolean_options_env_vars["${item}",'default_value']} fi done + + for item in "${ARRAY_ENV_NONBOOLEAN_VARS_ELEMENTS[@]}"; do + if [ "${item}" = "AIRGEDDON_WINDOWS_HANDLING" ]; then + if ! [[ "${!item,,}" =~ ^(xterm|tmux)$ ]]; then + errors_on_configuration_vars["${item},invalid_value"]="${nonboolean_options_env_vars[${item},'default_value']}" + export ${item}=${nonboolean_options_env_vars["${item}",'default_value']} + fi + fi + done + + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + if hash tmux 2> /dev/null; then + transfer_to_tmux + if ! check_inside_tmux; then + exit_code=1 + exit ${exit_code} + fi + fi + fi } #Print possible issues on configuration vars @@ -13060,7 +13704,7 @@ function create_rcfile() { local counter=0 for item in "${ordered_options_env_vars[@]}"; do counter=$((counter + 1)) - if [ -n "${ENV_BOOLEAN_VARS_ELEMENTS[${item}]}" ]; then + if echo "${ARRAY_ENV_BOOLEAN_VARS_ELEMENTS[@]}" | grep -q "${item}"; then { echo -e "${boolean_options_env_vars[${item},"rcfile_text"]}" echo -e "${item}=${boolean_options_env_vars[${item},"default_value"]}" @@ -13068,6 +13712,14 @@ function create_rcfile() { echo -ne "\n" fi } >> "${scriptfolder}${rc_file}" 2> /dev/null + elif echo "${ARRAY_ENV_NONBOOLEAN_VARS_ELEMENTS[@]}" | grep -q "${item}"; then + { + echo -e "${nonboolean_options_env_vars[${item},"rcfile_text"]}" + echo -e "${item}=${nonboolean_options_env_vars[${item},"default_value"]}" + if [ ${counter} -ne ${#ordered_options_env_vars[@]} ]; then + echo -ne "\n" + fi + } >> "${scriptfolder}${rc_file}" 2> /dev/null fi done } @@ -13134,6 +13786,224 @@ function initialize_colors() { white_color="\e[1;97m" } +#Kill tmux session started by airgeddon +function kill_tmux_session() { + + debug_print + + tmux kill-session -t "${1}" +} + +#Starting point of airgeddon script inside newly created tmux session +function start_airgeddon_from_tmux() { + + debug_print + + tmux rename-window -t "${session_name}" "${tmux_main_window}" + tmux send-keys -t "${session_name}:${tmux_main_window}" "clear;bash ${scriptfolder}${scriptname}" ENTER + sleep 0.2 + if [ "${1}" = "normal" ]; then + tmux attach -t "${session_name}" + else + tmux switch-client -t "${session_name}" + fi +} + +#Create new tmux session exclusively for airgeddon +function create_tmux_session() { + + debug_print + + session_name="${1}" + + if [ "${2}" = "true" ]; then + tmux new-session -d -s "${1}" + start_airgeddon_from_tmux "normal" + else + tmux new-session -d -s "${1}" + start_airgeddon_from_tmux "nested" + fi +} + +#Start supporting scripts inside its own tmux window +function start_tmux_processes() { + + debug_print + + local window_name + local command_line + + window_name="${1}" + command_line="${2}" + + tmux kill-window -t "${session_name}:${window_name}" 2> /dev/null + case "${4}" in + "active") + tmux new-window -t "${session_name}:" -n "${window_name}" + ;; + *) + tmux new-window -d -t "${session_name}:" -n "${window_name}" + ;; + esac + local tmux_color_cmd + if [ -n "${3}" ]; then + tmux_color_cmd="bg=#000000 fg=${3}" + else + tmux_color_cmd="bg=#000000" + fi + tmux setw -t "${window_name}" window-style "${tmux_color_cmd}" + tmux send-keys -t "${session_name}:${window_name}" "${command_line}" ENTER +} + +#Check if script is currently executed inside tmux session or not +function check_inside_tmux() { + + debug_print + + local parent_pid + local parent_window + parent_pid=$(ps -o ppid= ${PPID} | tr -d ' ') + parent_window="$(ps --no-headers -p "${parent_pid}" -o comm=)" + if [[ "${parent_window}" =~ tmux ]]; then + return 0 + fi + return 1 +} + +#Close any existing tmux session before opening, to avoid conflicts +#shellcheck disable=SC2009 +function close_existing_airgeddon_tmux_session() { + + debug_print + + if ! check_inside_tmux; then + eval "kill -9 $(ps --no-headers aux | grep -i 'tmux.*airgeddon' | awk '{print $2}' | tr '\n' ' ') > /dev/null 2>&1" + fi +} + +#Hand over script execution to tmux and call function to create a new session +function transfer_to_tmux() { + + debug_print + + close_existing_airgeddon_tmux_session + + if ! check_inside_tmux; then + create_tmux_session "${session_name}" "true" + else + local active_session + active_session=$(tmux display-message -p '#S') + if [ "${active_session}" != "${session_name}" ]; then + tmux_error=1 + fi + fi +} + +#Function to kill tmux windows using window name +function kill_tmux_windows() { + + debug_print + + local TMUX_WINDOWS_LIST=() + local current_window_name + readarray -t TMUX_WINDOWS_LIST < <(tmux list-windows -t "${session_name}:") + for item in "${TMUX_WINDOWS_LIST[@]}"; do + [[ "${item}" =~ ^[0-9]+:[[:blank:]](.+([^*-]))([[:blank:]]|\-|\*)[[:blank:]]?\([0-9].+ ]] && current_window_name="${BASH_REMATCH[1]}" + if [ "${current_window_name}" = "${tmux_main_window}" ]; then + continue + fi + if [ -n "${1}" ]; then + if [ "${current_window_name}" = "${1}" ]; then + continue + fi + fi + tmux kill-window -t "${session_name}:${current_window_name}" + done +} + +#Function to pause script execution on the main window until a process has finished executing or the user terminates it +#shellcheck disable=SC2009 +function wait_for_process() { + + debug_print + + local running_process + local running_process_pid + local running_process_cmd_line + running_process_cmd_line=$(echo "${1}" | tr -d '"') + + while [ -z "${running_process_pid}" ]; do + running_process_pid=$(ps --no-headers aux | grep "${running_process_cmd_line}" | grep -v "grep ${running_process_cmd_line}" | awk '{print $2}' | tr '\n' ':') + if [ -n "${running_process_pid}" ]; then + running_process_pid="${running_process_pid%%:*}" + running_process="${running_process_pid}" + fi + done + + while [ -n "${running_process}" ]; do + running_process=$(ps aux | grep "${running_process_pid}" | grep -v "grep ${running_process_pid}") + sleep 0.2 + done + + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + tmux kill-window -t "${session_name}:${2}" + fi +} + +#Function to capture PID of a process started inside tmux and setting it to a global variable +#shellcheck disable=SC2009 +function get_tmux_process_id() { + + debug_print + + local process_pid + local process_cmd_line + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + process_cmd_line=$(echo "${1}" | tr -d '"') + while [ -z "${process_pid}" ]; do + process_pid=$(ps --no-headers aux | grep "${process_cmd_line}" | grep -v "grep ${process_cmd_line}" | awk '{print $2}') + done + global_process_pid="${process_pid}" + fi +} + +#Centralized function to launch window using xterm/tmux +function manage_output() { + + debug_print + + local xterm_parameters + local tmux_command_line + local xterm_command_line + local window_name + local command_tail + + xterm_parameters="${1}" + tmux_command_line="${2}" + xterm_command_line="\"${2}\"" + window_name="${3}" + command_tail=" > /dev/null 2>&1 &" + + case "${AIRGEDDON_WINDOWS_HANDLING}" in + "tmux") + local tmux_color + tmux_color="" + [[ "${1}" =~ -fg[[:blank:]](\")?(#[0-9a-fA-F]+) ]] && tmux_color="${BASH_REMATCH[2]}" + case "${4}" in + "active") + start_tmux_processes "${window_name}" "clear;${tmux_command_line}" "${tmux_color}" "active" + ;; + *) + start_tmux_processes "${window_name}" "clear;${tmux_command_line}" "${tmux_color}" + ;; + esac + ;; + "xterm") + eval "xterm ${xterm_parameters} -e ${xterm_command_line}${command_tail}" + ;; + esac +} + #Script starting point function main() { @@ -13156,8 +14026,26 @@ function main() { check_language_strings - check_xwindow_system - detect_screen_resolution + if [ ${tmux_error} -eq 1 ]; then + language_strings "${language}" 86 "title" + echo + language_strings "${language}" 621 "yellow" + language_strings "${language}" 115 "read" + create_tmux_session "${session_name}" "false" + + exit_code=1 + exit ${exit_code} + fi + + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "xterm" ]; then + check_xwindow_system + detect_screen_resolution + else + essential_tools_names=(${essential_tools_names[@]/xterm/tmux}) + possible_package_names[${essential_tools_names[7]}]="tmux" + unset possible_package_names["xterm"] + fi + set_possible_aliases initialize_optional_tools_values @@ -13189,18 +14077,20 @@ function main() { check_bash_version check_root_permissions - echo - if [[ ${resolution_detected} -eq 1 ]] && [[ "${xterm_ok}" -eq 1 ]]; then - language_strings "${language}" 294 "blue" - else - if [ "${xterm_ok}" -eq 0 ]; then - language_strings "${language}" 476 "red" - exit_code=1 - exit_script_option + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "xterm" ]; then + echo + if [[ ${resolution_detected} -eq 1 ]] && [[ "${xterm_ok}" -eq 1 ]]; then + language_strings "${language}" 294 "blue" else - language_strings "${language}" 295 "red" - echo - language_strings "${language}" 300 "yellow" + if [ "${xterm_ok}" -eq 0 ]; then + language_strings "${language}" 476 "red" + exit_code=1 + exit_script_option + else + language_strings "${language}" 295 "red" + echo + language_strings "${language}" 300 "yellow" + fi fi fi diff --git a/imgs/wiki/airgeddon_vector_black.svg b/imgs/wiki/airgeddon_vector_black.svg new file mode 100644 index 000000000..7d579e58b --- /dev/null +++ b/imgs/wiki/airgeddon_vector_black.svg @@ -0,0 +1,24 @@ + + airgeddon + + + + + + + + + + + + + + + + + + + + + + diff --git a/imgs/wiki/airgeddon_vector_white.svg b/imgs/wiki/airgeddon_vector_white.svg new file mode 100644 index 000000000..59849f494 --- /dev/null +++ b/imgs/wiki/airgeddon_vector_white.svg @@ -0,0 +1,20 @@ + + airgeddon + + + + + + + + + + + + + + + + + + diff --git a/imgs/wiki/airgeddon_wallpaper_black_1920x1080.png b/imgs/wiki/airgeddon_wallpaper_black_1920x1080.png new file mode 100644 index 000000000..6e241f2c4 Binary files /dev/null and b/imgs/wiki/airgeddon_wallpaper_black_1920x1080.png differ diff --git a/imgs/wiki/airgeddon_wallpaper_white_1920x1080.png b/imgs/wiki/airgeddon_wallpaper_white_1920x1080.png new file mode 100644 index 000000000..906140555 Binary files /dev/null and b/imgs/wiki/airgeddon_wallpaper_white_1920x1080.png differ diff --git a/imgs/wiki/npm.png b/imgs/wiki/npm.png new file mode 100644 index 000000000..44044e5ae Binary files /dev/null and b/imgs/wiki/npm.png differ diff --git a/known_pins.db b/known_pins.db index 651b60f1b..08d5a09af 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.........: 20190113 +#Date.........: 20190415 #Bash Version.: 4.2 or later #Set PIN database. Keys are the first 6 bssid digits and are ordered @@ -13,57 +13,69 @@ function set_pin_database() { declare -gA PINDB PINDB["000138"]="35606543" + PINDB["00026F"]="07651564" PINDB["0004ED"]="29985685 19951683" PINDB["0005CA"]="73851738 76916144" - PINDB["000726"]="18625790 10847138" + PINDB["000726"]="18625790 10847138 12345670" PINDB["0008A1"]="58764015" PINDB["000A26"]="81857401" PINDB["000A52"]="22498403" + PINDB["000AEB"]="41236079" PINDB["000B3B"]="40053707" PINDB["000B85"]="70066647" + PINDB["000C43"]="54768642" PINDB["000CC3"]="47392717 12345670" PINDB["000CF1"]="30447028" + PINDB["000CF6"]="49659948" PINDB["001122"]="12345678" + PINDB["0011A3"]="34296462" PINDB["0011E6"]="12345670" - PINDB["0013F7"]="14755989" - PINDB["0014D1"]="26848185" + PINDB["0013F7"]="14755989 48703970 06017637" + PINDB["0014D1"]="26848185 86986304 57243368 75099992" PINDB["00160A"]="22640086" PINDB["001802"]="16546615" - PINDB["0018E7"]="15537782" - PINDB["001915"]="12345670 63396638 00123457" + PINDB["0018E7"]="15537782 90467912 37017422 71095837 90427145 79489515 41759745 04286631 00000000" + PINDB["001915"]="12345670 63396638 00123457 41174722" PINDB["001918"]="12345670" PINDB["001970"]="12345670 64637129 22310298" - PINDB["001A2B"]="15624697 16495265 88478760 77775078 51340865 21143892 18836486 12454389" + PINDB["001A2B"]="15624697 16495265 88478760 77775078 51340865 21143892 18836486 12454389 01234567" PINDB["001A3F"]="54063945 34214183" - PINDB["001B11"]="84794079" + PINDB["001AA9"]="31957199" + PINDB["001AEF"]="12345670" + PINDB["001B11"]="84794079 36494002" PINDB["001C28"]="38377433" PINDB["001D19"]="66026402 12345670" - PINDB["001D6A"]="88171449" + PINDB["001D6A"]="88171449 12345670" PINDB["001D73"]="88420707" PINDB["001D7E"]="66026402" + PINDB["001DCD"]="26723129" PINDB["001DCE"]="85560130 12345670" - PINDB["001DCF"]="12345670" + PINDB["001DCF"]="12345670 11234555" + PINDB["001DD0"]="36800230" PINDB["001DD1"]="37272937" - PINDB["001DD2"]="58542132 14550126 49143836" + PINDB["001DD2"]="58542132 14550126 49143836 61581944" PINDB["001DD6"]="11677672" PINDB["001E2A"]="12345670" + PINDB["001EE5"]="04387411" + PINDB["001F1F"]="58227046 85521162" PINDB["001F9F"]="59762454 74673841 83712630" PINDB["001FA4"]="12345670" - PINDB["001FCE"]="14169809" + PINDB["001FCE"]="14169809 91261960 15624697" PINDB["002129"]="22310298 00717625 00009980 64103747 95891705 64637129" - PINDB["002191"]="28423737 82744458" + PINDB["002191"]="28423737 82744458 07364679" PINDB["002202"]="12345670" PINDB["00223F"]="48247818" PINDB["00226B"]="59900887" - PINDB["002275"]="12885381 25751118 14989346 53704825 34922453 29221790" + PINDB["002275"]="12885381 25751118 14989346 53704825 34922453 29221790 44058685" PINDB["002293"]="92854048 92937208" - PINDB["0022F7"]="60530004 25853209" - PINDB["002369"]="51348014" - PINDB["0023CD"]="54080812" - PINDB["002401"]="97744757 10987957 91866882 78671294 45558221" + PINDB["0022B0"]="35860167" + PINDB["0022F7"]="60530004 25853209 23096004 26834481" + PINDB["002369"]="51348014 37591267" + PINDB["0023CD"]="54080812 21379666" + PINDB["002401"]="97744757 10987957 91866882 78671294 45558221 60530004 31011193 81320820" PINDB["002417"]="31011193 84207302" PINDB["00248C"]="34693841" - PINDB["0024A5"]="11248729" + PINDB["0024A5"]="11248729 44960452" PINDB["0024B2"]="89425671 38686191 37449858" PINDB["00259C"]="78091597 19805672" PINDB["0025D3"]="19004938" @@ -71,10 +83,12 @@ function set_pin_database() { PINDB["002624"]="95374611 78202962" PINDB["002644"]="49780871 78202962" PINDB["00265A"]="79594295 03888070 36290512 76971464 17245685 96119433 12157259 51592905" - PINDB["00265B"]="28390046 15488107 36277216 91514257" - PINDB["0026CE"]="61203402" + PINDB["00265B"]="28390046 15488107 36277216 91514257 82068899 30027602" + PINDB["0026CE"]="61203402 10805794 09752214 11003229 95661469" PINDB["0026E8"]="15483607" PINDB["0026F2"]="32312966 64426679 37380342" + PINDB["002711"]="00852401" + PINDB["002722"]="12345678" PINDB["003220"]="87491562" PINDB["003872"]="18836486" PINDB["00487A"]="15471628" @@ -83,37 +97,56 @@ function set_pin_database() { PINDB["004F67"]="13648947" PINDB["006064"]="13948696 71876160 17002318 00112633 00372152 00555831 00600732 00061937 00665988" PINDB["00664B"]="85275560" - PINDB["008EF2"]="74956203 50791810 95755212" + PINDB["008610"]="30236066" + PINDB["008EF2"]="74956203 50791810 95755212 50491810 23715448 43662203" PINDB["00904C"]="39246189" PINDB["00908F"]="38384127 38322921 42390480" + PINDB["0090A9"]="68477035" PINDB["00A026"]="81349487 84385727 82244521 83368929 84302403" PINDB["00AADD"]="01234567" + PINDB["00ACE0"]="03771204" PINDB["00B00C"]="49693928" PINDB["00B6B7"]="10157268 17033473" PINDB["00BEF2"]="28752455" PINDB["00D041"]="79679190" PINDB["00E04B"]="27549391" + PINDB["00E04C"]="09752214" PINDB["00F1CE"]="14169809" PINDB["00F81C"]="24684323" - PINDB["021018"]="00022169" + PINDB["011DCF"]="11234555" + PINDB["021018"]="00022169 20172527" PINDB["048D38"]="01234567 61499065" - PINDB["04C06F"]="08182173" - PINDB["081074"]="20956455" + PINDB["04C06F"]="08182173 35404187 08776297 04759386" + PINDB["081074"]="20956455 20912505" PINDB["081076"]="63458374" - PINDB["0876FF"]="79412988" + PINDB["083E8E"]="94502992" + PINDB["08606E"]="01287042" + PINDB["086361"]="24530361" + PINDB["0876FF"]="79412988 79199124" PINDB["088039"]="00012436" PINDB["08863B"]="14129162 34968611 87279320 36323364 08112118 83469909 14159114 21250491 76726446" PINDB["08952A"]="28812838" + PINDB["08EDB9"]="86925583" + PINDB["0C54A5"]="82585297" + PINDB["0C722C"]="80554448" PINDB["0C96BF"]="12345670" + PINDB["0C96E6"]="12345678" + PINDB["100D7F"]="53172297" + PINDB["105F06"]="58829431" PINDB["107BEF"]="38163289" PINDB["10BEF5"]="30543362" PINDB["10BF48"]="04032052" + PINDB["10C61F"]="22643223" PINDB["10FEED"]="18382501 00246330 96238936 08825270 93878845 57275062" - PINDB["14A9E3"]="00288729 03617984" + PINDB["14144B"]="36286034" + PINDB["14A9E3"]="00288729 03617984 00265744 00344463" PINDB["14B968"]="51321086" PINDB["14CC20"]="12310319 52394775" - PINDB["14D64D"]="44686871 59185239 46020383 20700737 64535203" + PINDB["14D64D"]="44686871 59185239 46020383 20700737 64535203 25434668 62538893 61151765 54951600 53856999" PINDB["14D6D4"]="31008167" + PINDB["14DAE9"]="81103980" + PINDB["17AD1E"]="12345670" + PINDB["182861"]="59229933" PINDB["18A6F7"]="05150960" PINDB["18D6C7"]="07338526" PINDB["18F145"]="21143892" @@ -121,222 +154,326 @@ function set_pin_database() { PINDB["19DCED"]="45678965" PINDB["1A0B40"]="17068161" PINDB["1C740D"]="15843128" - PINDB["1C7EE5"]="76229909 37967635 92433960 22609298 60418579 60206732" - PINDB["1CAFF7"]="48612661" - PINDB["1CBDB9"]="70313376 55349758" + PINDB["1C7EE5"]="76229909 37967635 92433960 22609298 60418579 60206732 27343043 65126141 43580293" + PINDB["1CAFF7"]="48612661 50928248 12663309 00448864 20164065 98134496 60629890" + PINDB["1CBDB9"]="70313376 55349758 13351939" + PINDB["1CC63C"]="08441461" PINDB["1E3E84"]="79952514" - PINDB["202BC1"]="19303594" - PINDB["204E7F"]="45197079" + PINDB["202BC1"]="19303594 01239980" + PINDB["204E7F"]="45197079 62327145" + PINDB["207355"]="70050219" PINDB["208986"]="12345670" - PINDB["20AA4B"]="54789609 32275841 96716977" + PINDB["20AA4B"]="54789609 32275841 96716977 66363194" PINDB["20CF30"]="77898951" PINDB["20F3A3"]="25905892" PINDB["224E7F"]="15584953" + PINDB["22BC1A"]="29432349" + PINDB["22BCF2"]="28981572" PINDB["2400BA"]="23071841" - PINDB["28107B"]="46264848 20172527" - PINDB["285FDB"]="08007117" + PINDB["240995"]="10201480" + PINDB["241FA0"]="12345678" + PINDB["28107B"]="46264848 20172527 21464065" + PINDB["28285D"]="66202240" + PINDB["285FDB"]="08007117 00009980" + PINDB["28BE9B"]="52721113" + PINDB["28C68E"]="27161395" PINDB["2C957F"]="07144721" - PINDB["2CAB25"]="12345670 47888777 34412916" - PINDB["2CB05D"]="27257210 52231858 11534624 72522233 19537511 42375852 70092523 17054850 87205732 11239208 74155279 87221541 92085251 52718380 46218230 09820852 23950313 07753695 42375852 75863869 12090006 37523077 06686635" + PINDB["2CAB25"]="12345670 47888777 34412916 18625790 14393426 10847138 70205404 33736082" + PINDB["2CAEE4"]="21464065" + PINDB["2CB05D"]="27257210 52231858 11534624 72522233 19537511 42375852 70092523 17054850 87205732 11239208 74155279 87221541 92085251 52718380 46218230 09820852 23950313 07753695 42375852 75863869 12090006 37523077 06686635 45476013 38941476 54510555 33033631 12523146" PINDB["3039F2"]="16538061 16702738 18355604 88202907 73767053 43297917 19756967 13409708 11967859 12820078 05537303 11915140 13880996 15116574 15584151 17342711 17368759 18511000 19142029 19783871 21158766 24100489 47148826 64630113 74184095 75886264 77828491 78551312 92537309 94862423 18001907 12345670" PINDB["30469A"]="27334959 37489014 37496081 37494650 37490034 40184708 40166148 19482417 30592407 30176683 95221021 27016497 33102320 21703003 30022645 38940972" PINDB["30918F"]="78365230" - PINDB["340804"]="36022656 93395274" + PINDB["340804"]="36022656 93395274 39837875 23556676" PINDB["34080F"]="56364675" + PINDB["344B50"]="13419622" PINDB["344DEA"]="87972122" + PINDB["34CDBE"]="09656802" PINDB["38229D"]="00779876 05537303 11967859 12749355 13409708 13849238 15116574 16538061 16811836 19986951 26427195 29942275 42497868 47148826 75284930 77828491 88202907 92537309" PINDB["3859F9"]="12475407" PINDB["386077"]="12345670 94380507" PINDB["3872C0"]="15624697 12345678 18811728 20172527 18836486 12345678 00029186 49385052 12715657 16035232 19117652" + PINDB["389939"]="38993923" PINDB["3C4711"]="12345678" - PINDB["404A03"]="78159952 11866428 79205177" + PINDB["3C81D6"]="76629909" + PINDB["3C81D8"]="31957199" + PINDB["3E500F"]="28504610" + PINDB["404A03"]="78159952 11866428 79205177 74395675" PINDB["4409D4"]="48085793" + PINDB["485B39"]="25732726" + PINDB["48E173"]="20917784" PINDB["4C09D4"]="86351386" PINDB["4C17EB"]="43944552 12345670" - PINDB["4C60DE"]="01322934 42473534 22958143 53550866 31836289" - PINDB["4C72B9"]="82585297" - PINDB["4C8BEF"]="04260681" - PINDB["4E26D4"]="51217563" + PINDB["4C60DE"]="01322934 42473534 22958143 53550866 31836289 22297235 31015424" + PINDB["4C72B9"]="82585297 96606674 20661731" + PINDB["4C8BEF"]="04260681 85064409" PINDB["4CFB45"]="63666922 60998125" - PINDB["50465D"]="83010910 46540010 21101021" + PINDB["4E26D4"]="51217563" + PINDB["50465D"]="83010910 46540010 21101021 51504472 01101027 64214306" PINDB["5067F0"]="20064525 66026402 12608065 12204786" + PINDB["5404A6"]="69923326 31028325" PINDB["5422F8"]="12345670" PINDB["5465DE"]="65979754" PINDB["546EFC"]="02917092" + PINDB["54BEF7"]="19280066 82585297" PINDB["54D46F"]="11199083 99731281" - PINDB["54E6FC"]="53525659 66394662 41942826 93464239 96517062" - PINDB["586D8F"]="47158382 69382161 67387953 37110802" - PINDB["589835"]="36232925 78568242 56217391 13128562 53890894 00001604" + PINDB["54E6FC"]="53525659 66394662 41942826 93464239 96517062 00846363 53473226 14204968" + PINDB["586D8F"]="47158382 69382161 67387953 37110802 43059089 68045753" + PINDB["589835"]="36232925 78568242 56217391 13128562 53890894 00001604 40798011 30102019 43279593" PINDB["5A8E85"]="16259553" PINDB["5AF102"]="90000000" - PINDB["5C338E"]="00764025 03015162 04581277 11765592 15986511 30414129 30999022 33685984 39657053 53842763 60387400 73968597 78614062 78963641 82848439 85776104 91345080 12345670 61449206 93017749" - PINDB["5C353B"]="64874487 95755212 58945537 79082020 12345670 64774487" + PINDB["5C338E"]="00764025 03015162 04581277 11765592 15986511 30414129 30999022 33685984 39657053 53842763 60387400 73968597 78614062 78963641 82848439 85776104 91345080 12345670 61449206 93017749 87391107 37810573 45413896" + PINDB["5C353B"]="64874487 95755212 58945537 79082020 12345670 64774487 47385580" PINDB["5C571A"]="46577450" - PINDB["5CD998"]="11554424 67554409" + PINDB["5CD998"]="11554424 67554409 22630964" PINDB["5CF96A"]="54353640" - PINDB["60E327"]="36743025 56163926 20102043 23956544 34125335 83476532 86227728 09845237 59642114 31486811 26790732 08791320 24890687 09981331 48122726 38142178" - PINDB["626BD3"]="25415001" - PINDB["62A8E4"]="51194529 34160923 32473841" + PINDB["60E327"]="36743025 56163926 20102043 23956544 34125335 83476532 86227728 09845237 59642114 31486811 26790732 08791320 24890687 09981331 48122726 38142178 47477445" + PINDB["623DFF"]="52029288" + PINDB["6253D4"]="21884603" + PINDB["626BD3"]="25415001 73609605 72931806" + PINDB["627D5E"]="73088325" + PINDB["6296BF"]="74459520" + PINDB["62A8E4"]="51194529 34160923 32473841 32571240 53249722" PINDB["62C06F"]="34585849 36691524 33405049" - PINDB["62C714"]="32184129" - PINDB["6466B3"]="33357553" - PINDB["647002"]="76627705" + PINDB["62C714"]="32184129 34404808" + PINDB["62CDBE"]="65770528" + PINDB["642737"]="43183319" + PINDB["6444B3"]="48838924" + PINDB["646637"]="89285701" + PINDB["6466B3"]="33357553 99807986 34519523 58576816 42973409 15636447 59228738 49971606 23629769 87120448 00967907 81890576" + PINDB["647002"]="76627705 17141390 84909053 83123412 18756784 05549566 89786048 39031457 51325671 56098389 51512064 01672145 09571051 86711654" PINDB["6487D7"]="31506519 16825321 18708622 64578835" + PINDB["64D954"]="34198131" PINDB["687F74"]="42901174 68623227 94126198 58743249" - PINDB["68B6FC"]="82380243" + PINDB["68B6FC"]="82380243 05842803 23137042 16141209" PINDB["68C06F"]="41719565 41873281" PINDB["68F956"]="00000001" + PINDB["6A1D67"]="04161608" + PINDB["6A233D"]="35645726" + PINDB["6A3DFF"]="53582522" + PINDB["6A53D4"]="22711403" PINDB["6A6BD3"]="70481921" PINDB["6A7D5E"]="74399000" - PINDB["6AA8E4"]="51016128 51011727" - PINDB["6AC06F"]="44574886 36433124 36715725 34052648" - PINDB["6AC714"]="32179323 32060003" - PINDB["6AID67"]="04161608" + PINDB["6A96BF"]="73357643" + PINDB["6AA8E4"]="51016128 51011727 51099442" + PINDB["6AC06F"]="44574886 36433124 36715725 34052648 44547886" + PINDB["6AC714"]="32179323 32060003 25032918" + PINDB["6ACBA8"]="48385923" + PINDB["6CFDB9"]="11171409" PINDB["6F3AC8"]="72895443" + PINDB["705681"]="16538061" + PINDB["72088B"]="42860808" + PINDB["721D67"]="04432326" PINDB["72233D"]="36228645" - PINDB["723DFF"]="50540686 53015921" + PINDB["723DFF"]="50540686 53015921 52597329" PINDB["72559C"]="00287203 08075963" - PINDB["72A8E4"]="31763523 51319045 51728649" + PINDB["726BD3"]="70626209" + PINDB["7296BF"]="72687444" + PINDB["72A8E4"]="31763523 51319045 51728649 31514644" PINDB["72AC67"]="67943432" + PINDB["72C06F"]="38691645" + PINDB["72C714"]="34548004" PINDB["72E370"]="75293284" - PINDB["744401"]="00446747 10052648 27615126 31547208 45226823 03132692 12345670 11250562 87293593 04300106 59451595 14043123" + PINDB["744401"]="00446747 10052648 27615126 31547208 45226823 03132692 12345670 11250562 87293593 04300106 59451595 14043123 57415109 13362416 39747129" PINDB["74852A"]="94380507" - PINDB["74888B"]="16538061 18355604 43297917 73767053 88202907 16702738 19756967 13409708 00779876 05537303 10212004 10555569 11161189 11915140 11967859 12820078 13588106 14058400 14321054 15116574 15584151 17342711 17908214 18001907 19379982 21158766 24100489 29942275 42497868 45014451 47148826 58952153 64630113 75886264 77828491 78551312 92537309 94862423 12345670 88478760 14145629 14904950" + PINDB["74888B"]="16538061 18355604 43297917 73767053 88202907 16702738 19756967 13409708 00779876 05537303 10212004 10555569 11161189 11915140 11967859 12820078 13588106 14058400 14321054 15116574 15584151 17342711 17908214 18001907 19379982 21158766 24100489 29942275 42497868 45014451 47148826 58952153 64630113 75886264 77828491 78551312 92537309 94862423 12345670 88478760 14145629 14904950 82435707" PINDB["74EA3A"]="37211202 22512864 25877274 36189946 05788940 15513526 21426087 83854125" + PINDB["77888B"]="88202907" + PINDB["784476"]="12345678" + PINDB["78542E"]="91639561" + PINDB["78888B"]="88202907" PINDB["788DF7"]="53482488" + PINDB["78E400"]="12788921" + PINDB["791379"]="79348416" + PINDB["7A4D8E"]="29374601" PINDB["7A53D4"]="41092606" + PINDB["7A5FDB"]="27987445" + PINDB["7AD15E"]="55748162" PINDB["7B4877"]="25142457" - PINDB["7C034C"]="43944552 12345670" - PINDB["7C4FB5"]="75332662 51394554 35642596 72688656 13245670" + PINDB["7C034C"]="43944552 12345670 11105824" + PINDB["7C03D8"]="31957199" + PINDB["7C4FB5"]="75332662 51394554 35642596 72688656 13245670 12345670" PINDB["7C7D3D"]="75101565" PINDB["7CD34C"]="43944552 12345670" - PINDB["801F02"]="12345670 26713366 59420484" + PINDB["7DCC54"]="41441282" + PINDB["801F02"]="12345670 26713366 59420484 71733388" PINDB["803F5D"]="85173057" PINDB["80B686"]="38484636" PINDB["80D09B"]="19355801" PINDB["8416F9"]="17744683 59669210" - PINDB["841B5E"]="78100053 21120374 48062435 06042547 07017643 29167012 73312055" + PINDB["841B5E"]="78100053 21120374 48062435 06042547 07017643 29167012 73312055 11996361" + PINDB["84742B"]="12345670" PINDB["849CA6"]="12345670" - PINDB["84C9B2"]="84257123 12345670 27786598" + PINDB["84C9B2"]="84257123 12345670 27786598 28037286 44163334" + PINDB["880355"]="18575675" PINDB["88252C"]="35642596 03526859" - PINDB["8C0CA3"]="02991172" + PINDB["88E274"]="25643981" + PINDB["88E3AB"]="00502207" + PINDB["8C0C22"]="22263896" + PINDB["8C0CA3"]="02991172 40371211 71259987 82079541 28233275 58565704 22547121 25811612 55573532 19236833 21942103 16630230 27429498 38517804 63167314 15750143 79350379 77984513 79845133 73709271 88235322 12274869 82327121 41197126 63299984 51505262 04766278 12106264 22247322 91144560" PINDB["8CA982"]="18625790" PINDB["8CCA32"]="71259987" - PINDB["8COC22"]="22263896" + PINDB["8CEBC6"]="00000000" PINDB["905C44"]="71756837" - PINDB["90C792"]="96603086 02716985 38225505" + PINDB["90C792"]="96603086 02716985 38225505 85398573" PINDB["90E6BA"]="17035419" - PINDB["90F652"]="95817149 20917784 56738209 59820000 31315036 65723081 85438996 87883282 26555898 01715224 31581431 61296879 15094148 26412948 91090430 31718851 51979850 56339420 59955467 78110830 91191229 23619128 44538811 64836157 76556098 09834811 44938161 12345670 51161484 70231540 80335092 94966503 96932407" - PINDB["940C6D"]="06292379" - PINDB["944452"]="15310828 29874590 08318725 17579957 26023809 93645348 08983954 88154473 73532866 40011851" + PINDB["90F652"]="95817149 20917784 56738209 59820000 31315036 65723081 85438996 87883282 26555898 01715224 31581431 61296879 15094148 26412948 91090430 31718851 51979850 56339420 59955467 78110830 91191229 23619128 44538811 64836157 76556098 09834811 44938161 12345670 51161484 70231540 80335092 94966503 96932407 93661171 09489530 64776835 57644660 33046518 42823551 71083490 62530248 47081116 43701742 49759051 73964759 81431472 13496654 80777229 02325385 31969529 59020905" + PINDB["90F656"]="44632267" + PINDB["940C6D"]="06292379 61465275" + PINDB["944452"]="15310828 29874590 08318725 17579957 26023809 93645348 08983954 88154473 73532866 40011851 06835590 90017810" PINDB["944A0C"]="41238806" PINDB["94FEF4"]="43944552" PINDB["988B5D"]="12345670" PINDB["9897D1"]="07266881 10705513 85713642 29342273 84280848 63201048 30726437 73691365 34474242 18297492 61969063 15848789 28230274" PINDB["98DED0"]="12345678" - PINDB["98FC11"]="21421112" - PINDB["9CD24B"]="73185321 68109165 00000001" + PINDB["98F537"]="13415679" + PINDB["98FC11"]="21421112 99756666 33617503 55132909" + PINDB["9C9726"]="06699437" + PINDB["9CD24B"]="73185321 68109165 00000001 13419622" PINDB["9CD643"]="39194282" PINDB["A00BBA"]="00000000" PINDB["A02187"]="92442559" - PINDB["A021B7"]="39149138 41252147 80324560 82581507 25815078 22813503 11352464 47624313 92442559 81121496 43454044 86559256 33440279 15880208 53134424 72218013 01874341 43135479 51920104 26515274 84361455 71202358 12345679" + PINDB["A021B7"]="39149138 41252147 80324560 82581507 25815078 22813503 11352464 47624313 92442559 81121496 43454044 86559256 33440279 15880208 53134424 72218013 01874341 43135479 51920104 26515274 84361455 71202358 12345679 01318104" PINDB["A0648F"]="51327330" PINDB["A08E78"]="62306157" PINDB["A0AB1B"]="44384494" PINDB["A0EC80"]="21970726 12345670" - PINDB["A4526F"]="16538061 16702738 18355604 43297917 73767053 88202907 19756967 13409708 94862423 00779876 11161189 11915140 11967859 12820078 13588106 13849238 14058400 14522529 15116574 15397812 15584151 17908214 18001907 18511000 19783871 21362767 24100489 42497868 45014451 47148826 75886264 77828491 78551312 91403902 15328366 15938718" + PINDB["A0F3C1"]="03919934" + PINDB["A42B8C"]="21047015" + PINDB["A4526F"]="16538061 16702738 18355604 43297917 73767053 88202907 19756967 13409708 94862423 00779876 11161189 11915140 11967859 12820078 13588106 13849238 14058400 14522529 15116574 15397812 15584151 17908214 18001907 18511000 19783871 21362767 24100489 42497868 45014451 47148826 75886264 77828491 78551312 91403902 15328366 15938718 12345679 45550867" PINDB["A4B1E9"]="75090753" PINDB["A62148"]="67541270" PINDB["A8D3F7"]="08593399 31013628 98011193 69216664 33109893 15392275" + PINDB["A8F94B"]="28612919" + PINDB["AA8DD3"]="03053447" + PINDB["AABBCC"]="76334693" + PINDB["AC220B"]="20172527" PINDB["ACE87B"]="77502896" - PINDB["B0487A"]="61116597 53171801 65822234 31400206 06465179 18668872 22637307 40176451 37493691 57739601 40184708 40166148 37505073 61116597 37494506 37494063 37489014 37496081 37494650 37490034 54335677" - PINDB["B05B67"]="30366367" + PINDB["AE6240"]="39184412" + PINDB["B0487A"]="61116597 53171801 65822234 31400206 06465179 18668872 22637307 40176451 37493691 57739601 40184708 40166148 37505073 61116597 37494506 37494063 37489014 37496081 37494650 37490034 54335677 71625089 44860936 42686774 30643229 67375219 55427586" + PINDB["B05B67"]="30366367 31187688" + PINDB["B0B2DC"]="47866591" + PINDB["B246FC"]="96799208" + PINDB["B40C2A"]="75033941" PINDB["B4749F"]="23659391" + PINDB["B60D75"]="19309972" PINDB["B6B0D6"]="59686873" + PINDB["B869F4"]="61596986" + PINDB["B89BC9"]="41613849" PINDB["B89BCB"]="41613849" - PINDB["B8A386"]="60973375 20172527 19217581" + PINDB["B8A386"]="60973375 20172527 19217581 49730449 76229909 13830724 19951683" PINDB["B8AE86"]="37376826" - PINDB["BC7670"]="59515135" + PINDB["BC1401"]="49847925" + PINDB["BC75D6"]="37211202" + PINDB["BC7670"]="59515135 63431919" PINDB["BC9680"]="34412916" PINDB["BCAABB"]="12345678" - PINDB["BCF685"]="48782265" + PINDB["BCF685"]="48782265 21464065 46264848" + PINDB["BEE3C4"]="75033941" PINDB["BF06F4"]="20607470" PINDB["C025E9"]="89346259 08645616" PINDB["C03F0E"]="25032918 45445402 49945386 41138571 13250003 09302525 14516894 83143632 63247435 94751345 50615056 30702073 53363480" - PINDB["C04A00"]="46182661 15706065 15268976 23682351" + PINDB["C04A00"]="46182661 15706065 15268976 23682351 76746864 21249051 51644048" PINDB["C054A5"]="12345678" PINDB["C07CD1"]="49070897" PINDB["C0AC54"]="12345670" - PINDB["C0C1C0"]="78985933 04840954 96405628 63797435 27905814" - PINDB["C43DC7"]="82234515 63753349" + PINDB["C0C1C0"]="78985933 04840954 96405628 63797435 27905814 01101110 64382913" + PINDB["C0F8DA"]="51542252" + PINDB["C43DC7"]="82234515 63753349 20388560 20205287 51419981" PINDB["C46E1F"]="11695059 73307334" - PINDB["C4E984"]="72914908" + PINDB["C4E984"]="72914908 79016018" PINDB["C528D2"]="95685656" - PINDB["C83A35"]="28818885 01756401 11195207 11203124 11210085 11214809 11215042 11213840 11194569 11195764 11214885 11216643 05365852 48343763 61724242 12345678 60641687" + PINDB["C81760"]="12345678" + PINDB["C83A35"]="28818885 01756401 11195207 11203124 11210085 11214809 11215042 11213840 11194569 11195764 11214885 11216643 05365852 48343763 61724242 12345678 60641687 15002648 61436800 18698800 02814087 38015687 23664173 62047043" + PINDB["C83DD4"]="12345670" PINDB["C85195"]="13113889" - PINDB["C86000"]="46264848" - PINDB["C86C87"]="53488954 42566212 71033884 83961984 40172910 04337706" - PINDB["C8D3A3"]="21464065 20172527 17084215 12345670" + PINDB["C86000"]="46264848 66916468" + PINDB["C86C87"]="53488954 42566212 71033884 83961984 40172910 04337706 40309125 41152256 43468379" + PINDB["C8BE19"]="73457756" + PINDB["C8D3A3"]="21464065 20172527 17084215 12345670 19951683 13950132" PINDB["C8D5FE"]="12345678" - PINDB["CC5D4E"]="51565220 48919586 52755248" + PINDB["C8D719"]="90291333" + PINDB["CC1AFB"]="12345670" + PINDB["CC5D4E"]="51565220 48919586 52755248 28889601 99904562 65101483 99517786 65884102" PINDB["CC7B35"]="17481960 17503488" - PINDB["CC96A0"]="51191535" - PINDB["CCB255"]="97354833 61041165" - PINDB["D0AEEC"]="12263813 36831678 43419012 46275288 49570724 58441640 67791088 76871559 63220926 23970472 04325093 35041054 31433273 97855996 11248729 52217388 59432265 77485625 06235307 78597235 92276337 41496541 73534136 36925025 82225524 53269867 06267124 50405732 30085084 60858108 11199083 99731281" + PINDB["CC96A0"]="51191535 12345670 16118416 12349838 12349982" + PINDB["CCB255"]="97354833 61041165 58473955 46264848 60977045 00082778" + PINDB["D0AEEC"]="12263813 36831678 43419012 46275288 49570724 58441640 67791088 76871559 63220926 23970472 04325093 35041054 31433273 97855996 11248729 52217388 59432265 77485625 06235307 78597235 92276337 41496541 73534136 36925025 82225524 53269867 06267124 50405732 30085084 60858108 11199083 99731281 65186206 13226442 10295175 26019178 43008827 50256495" + PINDB["D0AEEE"]="75277048" PINDB["D0D412"]="16538061 16702738 18355604 88202907 73767053 43297917 19756967 13409708 11161189 11915140 12749355 13588106 14145629 24100489 42497868 47148826 77828491" - PINDB["D46E0E"]="43285632" + PINDB["D42122"]="00187558" + PINDB["D46E0E"]="43285632 64843018" PINDB["D47BB0"]="14550911 98852413 70795660 20859978 13090586 67774128 14738340 11317890 53741134 22388414 72768198 11651659 83914829 36956074 11277576 16007666 29342273 18297492" - PINDB["D85D4C"]="73448907" + PINDB["D80F99"]="12345670" + PINDB["D85D4C"]="73448907 13262204 11997870" PINDB["D86194"]="71537573 10009321 31348034 18794786 15738370 18546774 47415270 63742336 93782302" PINDB["D86CE9"]="10864111 20172527 15624697" PINDB["D8B6B7"]="49385052 12715657 66131533 96567111 18811728 20172527 16035232 18836486 19117652 37356569" + PINDB["D8EB97"]="31850483" PINDB["D8FB5E"]="20859978" + PINDB["DC028E"]="13419622" PINDB["DC0B1A"]="19756967 73767053 16702738 16538061 88202907 18355604 13409708 21158766 43297917 00779876 05537303 11915140 11967859 12820078 14058400 15116574 15584151 16756205 17342711 18001907 18511000 19955087 21124495 21362767 24100489 29942275 42497868 45550867 47148826 64630113 74184095 77828491 78551312 91403902 92537309 94862423" PINDB["DC537C"]="95755212 64874487 58945537 79082020 12345670 29528165 00259590 46300096" + PINDB["DE231B"]="95817149" PINDB["E04136"]="29342273 18297492 10705313 59249115 10705513" - PINDB["E0469A"]="30022645 19004938 75401139 47386914" + PINDB["E0469A"]="30022645 19004938 75401139 47386914 38452208" PINDB["E06995"]="12345670" PINDB["E08FEC"]="00235211" PINDB["E09115"]="42764199" - PINDB["E091F5"]="37380342 82234577 49945386 12345670" - PINDB["E0CB4E"]="62987523" + PINDB["E091F5"]="37380342 82234577 49945386 12345670 59584094" + PINDB["E0CB4E"]="62987523 49884388" PINDB["E24136"]="89817841 29612000 19107011 92008601 15763297" - PINDB["E43ED7"]="29187386 60551085 07281808 78232099 37706937" - PINDB["E4C146"]="71537573 10009321 31348034 18794786 15738370 18546774 47415270 63742336 93782302 24248907 63668346 96453780" - PINDB["E840F2"]="12345670" - PINDB["E894F6"]="45892066 36264957" + PINDB["E43ED7"]="29187386 60551085 07281808 78232099 37706937 12345670" + PINDB["E4C146"]="71537573 10009321 31348034 18794786 15738370 18546774 47415270 63742336 93782302 24248907 63668346 96453780 00000001" + PINDB["E839DF"]="14309489" + PINDB["E840F2"]="12345670 82585297 94380507" + PINDB["E894F6"]="45892066 36264957 25289794 36129836" PINDB["E8ABFA"]="11192091" + PINDB["E8CD2D"]="32151688" PINDB["E8D11B"]="46240255 30859098 16615519 08935946 40033990 66543404" - PINDB["E8DE27"]="68663803 83331817 92674639 96323472" - PINDB["E8F1B0"]="76308574" + PINDB["E8DE27"]="68663803 83331817 92674639 96323472 82398903 20422394 92292208 33030265 00934527 41322581 43537525 39078070 91439093 49312263" + PINDB["E8ED05"]="51192174" + PINDB["E8F1B0"]="76308574 46264848 76229909" + PINDB["EB40F2"]="12345670" PINDB["EC1A59"]="19366838" + PINDB["EC43F6"]="95076522" PINDB["ECC146"]="71537573" - PINDB["F07D68"]="01290141 00927659" + PINDB["EE43F6"]="37074005" + PINDB["F07D68"]="01290141 00927659 10481769 03617984 26016573 68175242 18580754 80968344 51558352 02445908 34463512" + PINDB["F0842F"]="93869577" PINDB["F084C9"]="12345670" PINDB["F43E61"]="12345670 47158382 69382161 18625790" + PINDB["F43E62"]="12345670" PINDB["F4C714"]="79072205" - PINDB["F4EC38"]="32066968 26599625 05181667 99195038 18674095 48555524 12345678 25933291 48291477 45266065 66683407 82188184 86697934 11542216 62887485 91726681 41185315 96781593 09165847 04898702 42768777 23380622 67971862 11288879 03419724 72344071 19634173 95048147 51660567 52594809 82853600 05884889 44947477 44762810 25575583 85091153 75913038 50413812" + PINDB["F4EC38"]="32066968 26599625 05181667 99195038 18674095 48555524 12345678 25933291 48291477 45266065 66683407 82188184 86697934 11542216 62887485 91726681 41185315 96781593 09165847 04898702 42768777 23380622 67971862 11288879 03419724 72344071 19634173 95048147 51660567 52594809 82853600 05884889 44947477 44762810 25575583 85091153 75913038 50413812 62884785 15970039 67556366 18741452" PINDB["F4F26D"]="60384164 36308729 13454050 68280048 62718943 56769814" PINDB["F59B36"]="60960542" PINDB["F8038E"]="12345670" PINDB["F80FD9"]="12345670" - PINDB["F81A67"]="06695972 78488113 92407213 68474836 14721359 88821344 50042227 36735600 04165415 65597231" + PINDB["F81A67"]="06695972 78488113 92407213 68474836 14721359 88821344 50042227 36735600 04165415 65597231 34194614 06223038 68007591 29876150 76328640" + PINDB["F81AFA"]="12345678" PINDB["F81BFA"]="12345670" PINDB["F827C5"]="12345670" PINDB["F83DFF"]="25905892 49531046" PINDB["F86394"]="12345670" PINDB["F87F35"]="12345670" + PINDB["F88B37"]="92997233" PINDB["F88B86"]="12345670" PINDB["F88E85"]="49385052 12715657 66131533 96567111 18811728 19117652 16035232 20172527 64868653 16259553 18836486" + PINDB["F88EC7"]="22066640" + PINDB["F8C091"]="99956042" PINDB["F8C346"]="12345670" - PINDB["F8D111"]="41441282 93834186 93802598 46337443 81315697 11801962 48155113 23229006 89754316" + PINDB["F8D111"]="41441282 93834186 93802598 46337443 81315697 11801962 48155113 23229006 89754316 71031811 11212256 46518408 08114419 33984001 63687293 42852520 99611026 43290666 29692705 65636107 90552854 93609470 15316592 11997870 69018480" PINDB["F8E1CF"]="12345670" PINDB["F8ED80"]="12345670" PINDB["F8F111"]="71031811 11212256 46518408 08114419" PINDB["F8FB56"]="12345670" - PINDB["FC8B97"]="12345670" + PINDB["FC7516"]="46264848" + PINDB["FC8B97"]="12345670 34412916" PINDB["FC94C3"]="12345670" - PINDB["FCF528"]="20329761" + PINDB["FCF528"]="20329761 39905628" + PINDB["FD69D0"]="66870913" + PINDB["FF7FD7"]="67444076" } set_pin_database diff --git a/language_strings.sh b/language_strings.sh index fa35143ae..1c5858247 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.........: 20190403 +#Date.........: 20190416 #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="9.11-1" + language_strings_version="9.20-1" } #Set different language text strings @@ -5374,17 +5374,17 @@ function language_strings() { arr["GERMAN",376]="Eine lokale Datenbankdatei mit PINs (${known_pins_dbfile}) wurde gefunden. Es wird jedoch geprüft, ob es eine Aktualisierung gibt" arr["TURKISH",376]="Yerel PIN'ler veritabanı dosyası (${known_pins_dbfile}) bulundu. Her neyse yeni bir kontrol yapılacaktır" - arr["ENGLISH",377]="A more up-to-date PINs database file has been successfully downloaded" - arr["SPANISH",377]="Se ha descargado con éxito un fichero de base de datos de PINs más actualizado" + arr["ENGLISH",377]="An up-to-date PINs database file has been successfully downloaded" + arr["SPANISH",377]="Se ha descargado con éxito un fichero de base de datos de PINs actualizado" arr["FRENCH",377]="La base de données a été actualisée" - arr["CATALAN",377]="S'ha descarregat amb èxit un fitxer de base de dades de PINs més actualitzat" + arr["CATALAN",377]="S'ha descarregat amb èxit un fitxer de base de dades de PINs actualitzat" arr["PORTUGUESE",377]="O banco de dados foi atualizado com sucesso" arr["RUSSIAN",377]="Новая версия файла базы данных PIN была успешно загружена" arr["GREEK",377]="Ένα ενημερωμένο αρχείο με την βάση δεδομένων PIN έχει κατέβει με επιτυχία" - arr["ITALIAN",377]="È stato scaricato con successo un file di base dati dei PINs piú aggiornato" + arr["ITALIAN",377]="È stato scaricato con successo un file di base dati dei PINs aggiornato" arr["POLISH",377]="Nowszy plik bazy danych PIN został pomyślnie pobrany" - arr["GERMAN",377]="Eine aktuellere PIN-Datenbankdatei wurde erfolgreich heruntergeladen" - arr["TURKISH",377]="Daha güncel bir PIN veritabanı dosyası başarıyla indirildi" + arr["GERMAN",377]="Eine PIN-Datenbankdatei wurde erfolgreich heruntergeladen" + arr["TURKISH",377]="Daha bir PIN veritabanı dosyası başarıyla indirildi" arr["ENGLISH",378]="An error occurred while trying to download the PINs database file" arr["SPANISH",378]="Ocurrió un error al intentar descargar el fichero de base de datos de PINs" @@ -6214,17 +6214,17 @@ function language_strings() { arr["GERMAN",446]="0. Zum Optionsmenü zurückkehren" arr["TURKISH",446]="0. Ayarlar menüsüne geri dön" - arr["ENGLISH",447]="10. Set permanently airgeddon's language to the current one" - arr["SPANISH",447]="10. Cambiar permanentemente el idioma de airgeddon al actual" - arr["FRENCH",447]="10. Etablir comme langue permanente d'airgeddon celle utilisée actuellement" - arr["CATALAN",447]="10. Canviar permanentment l'idioma de airgeddon a l'actual" - arr["PORTUGUESE",447]="10. Alterar permanentemente o idioma do airgeddon para o atual" - arr["RUSSIAN",447]="10. Сделать текущий язык airgeddon постоянным" - arr["GREEK",447]="10. Θέστε μόνιμα την τρέχουσα γλώσσα του airgeddon ως προεπιλεγμένη" - arr["ITALIAN",447]="10. Modificare in modo permanente la lingua di airgeddon a quella attuale" - arr["POLISH",447]="10. Trwale ustaw język airgeddon na aktualny" - arr["GERMAN",447]="10. Ändern Sie dauerhaft die Sprache von airgeddon zur aktuellen Sprache" - arr["TURKISH",447]="10. Sürekli olarak airgeddon'un dilini geçerli olana ayarla" + arr["ENGLISH",447]="11. Set permanently airgeddon's language to the current one" + arr["SPANISH",447]="11. Cambiar permanentemente el idioma de airgeddon al actual" + arr["FRENCH",447]="11. Etablir comme langue permanente d'airgeddon celle utilisée actuellement" + arr["CATALAN",447]="11. Canviar permanentment l'idioma de airgeddon a l'actual" + arr["PORTUGUESE",447]="11. Alterar permanentemente o idioma do airgeddon para o atual" + arr["RUSSIAN",447]="11. Сделать текущий язык airgeddon постоянным" + arr["GREEK",447]="11. Θέστε μόνιμα την τρέχουσα γλώσσα του airgeddon ως προεπιλεγμένη" + arr["ITALIAN",447]="11. Modificare in modo permanente la lingua di airgeddon a quella attuale" + arr["POLISH",447]="11. Trwale ustaw język airgeddon na aktualny" + arr["GERMAN",447]="11. Ändern Sie dauerhaft die Sprache von airgeddon zur aktuellen Sprache" + arr["TURKISH",447]="11. Sürekli olarak airgeddon'un dilini geçerli olana ayarla" arr["ENGLISH",448]="If you installed airgeddon from a repository, you should not enable automatic updates. airgeddon will be updated when there is a new version in the repository" arr["SPANISH",448]="Si instalaste airgeddon desde un repositorio, no deberías activar la actualización automática. airgeddon se actualizará cuando haya una nueva versión en el repositorio" @@ -6778,17 +6778,17 @@ function language_strings() { arr["GERMAN",493]="Die Arcadyan-Algorithmus-PIN wurde bereits für diesen Target berechnet (${normal_color}${wps_data_array[${wps_bssid},'Arcadyan']}${yellow_color}). Keine Notwendigkeit, es erneut zu berechnen" arr["TURKISH",493]="Arcadyan algoritması PIN'i zaten bu hedef için hesaplanmıştır (${normal_color}${wps_data_array[${wps_bssid},'Arcadyan']}${yellow_color}). Tekrar hesaplamaya gerek yok" - arr["ENGLISH",494]="13. Offline PIN generation using algorithms and database" - arr["SPANISH",494]="13. Generación offline de PINs con algoritmos y base de datos" - arr["FRENCH",494]="13. Génération offline de PINs avec les algorithmes et la base de données" - arr["CATALAN",494]="13. Generació offline de PINs amb algoritmes i base de dades" - arr["PORTUGUESE",494]="13. Gerar PINs offline com algoritmos e com o banco de dados" - arr["RUSSIAN",494]="13. Офлайн генерация PIN-кода, используя алгоритмы и базу данных" - arr["GREEK",494]="13. Offline δημιουργία PIN με χρήση δίαφορων αλγορίθμων και έτοιμης βάσης δεδομένων" - arr["ITALIAN",494]="13. Generazione offline di PIN con algoritmi e database" - arr["POLISH",494]="13. Generowanie offline kodów PIN z algorytmami i bazą danych" - arr["GERMAN",494]="13. Offline Generierung von PINs mit Algorithmen und Datenbank" - arr["TURKISH",494]="13. Algoritmaları ve veritabanını kullanarak çevrimdışı PIN üretimi" + arr["ENGLISH",494]="14. Offline PIN generation using algorithms and database" + arr["SPANISH",494]="14. Generación offline de PINs con algoritmos y base de datos" + arr["FRENCH",494]="14. Génération offline de PINs avec les algorithmes et la base de données" + arr["CATALAN",494]="14. Generació offline de PINs amb algoritmes i base de dades" + arr["PORTUGUESE",494]="14. Gerar PINs offline com algoritmos e com o banco de dados" + arr["RUSSIAN",494]="14. Офлайн генерация PIN-кода, используя алгоритмы и базу данных" + arr["GREEK",494]="14. Offline δημιουργία PIN με χρήση δίαφορων αλγορίθμων και έτοιμης βάσης δεδομένων" + arr["ITALIAN",494]="14. Generazione offline di PIN con algoritmi e database" + arr["POLISH",494]="14. Generowanie offline kodów PIN z algorytmami i bazą danych" + arr["GERMAN",494]="14. Offline Generierung von PINs mit Algorithmen und Datenbank" + arr["TURKISH",494]="14. Algoritmaları ve veritabanını kullanarak çevrimdışı PIN üretimi" arr["ENGLISH",495]="Offline PIN generation menu" arr["SPANISH",495]="Menú de generación offline de PINs" @@ -8242,6 +8242,138 @@ function language_strings() { arr["GERMAN",615]="Ein Fehler wurde in Ihren Einstellungen gefunden. Bitte überprüfen Sie die Datei ${rc_file}. Sie haben die Option aktiviert, um die Verwendung von iptables anstelle von nftables zu erzwingen (${normal_color}AIRGEDDON_FORCE_IPTABLES${red_color}), aber auf Ihrem System sind iptables nicht installiert. Deaktivieren Sie diese Option oder installieren Sie iptables, um das Problem zu lösen" arr["TURKISH",615]="${pending_of_translation} Yapılandırmanızda bir hata var. Lütfen ${rc_file} dosyasını kontrol edin. Nftables (${normal_color}AIRGEDDON_FORCE_IPTABLES${red_color}) yerine iptables kullanımını zorlama seçeneğini etkinleştirdiniz, ancak sisteminizde iptables kurulu değil. Bu seçeneği devre dışı bırakın veya sorunu çözmek için iptables yükleyin" + arr["ENGLISH",616]="10. Change windows handling method to tmux" + arr["SPANISH",616]="10. Cambiar el método de manejo de ventanas a tmux" + arr["FRENCH",616]="10. Changer la méthode de gestion des fenêtres en tmux" + arr["CATALAN",616]="10. Canviar el mètode de maneig de finestres a tmux" + arr["PORTUGUESE",616]="10. Alterar gerenciador de janelas para tmux" + arr["RUSSIAN",616]="10. Изменить метод управления окнами на tmux" + arr["GREEK",616]="${pending_of_translation} 10. Αλλάξτε τη μέθοδο διαχείρισης παραθύρων σε tmux" + arr["ITALIAN",616]="10. Cambiare il metodo di gestione delle finestre a tmux" + arr["POLISH",616]="${pending_of_translation} 10. Zmień metodę zarządzania oknami na tmux" + arr["GERMAN",616]="10. Ändern Sie die Fensterverwaltung zu tmux" + arr["TURKISH",616]="${pending_of_translation} 10. Pencere yönetimi yöntemini tmux olarak değiştirin" + + arr["ENGLISH",617]="10. Change windows handling method to xterm" + arr["SPANISH",617]="10. Cambiar el método de manejo de ventanas a xterm" + arr["FRENCH",617]="10. Changer la méthode de gestion des fenêtres en xterm" + arr["CATALAN",617]="10. Canviar el mètode de maneig de finestres a xterm" + arr["PORTUGUESE",617]="Alterar gerenciador de janelas para xterm" + arr["RUSSIAN",617]="10. Изменить метод управления окнами на xterm" + arr["GREEK",617]="${pending_of_translation} 10. Αλλάξτε τη μέθοδο διαχείρισης παραθύρων σε xterm" + arr["ITALIAN",617]="10. Cambiare il metodo di gestione delle finestre a xterm" + arr["POLISH",617]="${pending_of_translation} 10. Zmień metodę zarządzania oknami na xterm" + arr["GERMAN",617]="10. Ändern Sie die Fensterverwaltung zu xterm" + arr["TURKISH",617]="${pending_of_translation} 10. Pencere yönetimi yöntemini xterm olarak değiştirin" + + arr["ENGLISH",618]="Windows handling: ${pink_color}xterm${normal_color}" + arr["SPANISH",618]="Manejo de ventanas: ${pink_color}xterm${normal_color}" + arr["FRENCH",618]="Gestion des fenêtres: ${pink_color}xterm${normal_color}" + arr["CATALAN",618]="Maneig de finestres: ${pink_color}xterm${normal_color}" + arr["PORTUGUESE",618]="Gerenciador de janelas: ${pink_color}xterm${normal_color}" + arr["RUSSIAN",618]="Управление окнами: ${pink_color}xterm${normal_color}" + arr["GREEK",618]="${pending_of_translation} Διαχείριση παραθύρων: ${pink_color}xterm${normal_color}" + arr["ITALIAN",618]="Gestione delle finestre: ${pink_color}xterm${normal_color}" + arr["POLISH",618]="${pending_of_translation} Zarządzanie oknami: ${pink_color}xterm${normal_color}" + arr["GERMAN",618]="Fensterverwaltung: ${pink_color}xterm${normal_color}" + arr["TURKISH",618]="${pending_of_translation} Pencere yönetimi: ${pink_color}xterm${normal_color}" + + arr["ENGLISH",619]="Windows handling: ${pink_color}tmux${normal_color}" + arr["SPANISH",619]="Manejo de ventanas: ${pink_color}tmux${normal_color}" + arr["FRENCH",619]="Gestion des fenêtres: ${pink_color}tmux${normal_color}" + arr["CATALAN",619]="Maneig de finestres: ${pink_color}tmux${normal_color}" + arr["PORTUGUESE",619]="Gerenciador de janelas: ${pink_color}tmux${normal_color}" + arr["RUSSIAN",619]="Управление окнами: ${pink_color}tmux${normal_color}" + arr["GREEK",619]="${pending_of_translation} Διαχείριση παραθύρων: ${pink_color}tmux${normal_color}" + arr["ITALIAN",619]="Gestione delle finestre: ${pink_color}tmux${normal_color}" + arr["POLISH",619]="${pending_of_translation} Zarządzanie oknami: ${pink_color}tmux${normal_color}" + arr["GERMAN",619]="Fensterverwaltung: ${pink_color}tmux${normal_color}" + arr["TURKISH",619]="${pending_of_translation} Pencere yönetimi: ${pink_color}tmux${normal_color}" + + arr["ENGLISH",620]="The windows handling method has been modified in the configuration file. Restart the script in order to make the changes to take effect" + arr["SPANISH",620]="Se ha modificado en el fichero de configuración el método de gestión de ventanas. Reinicia el script para que los cambios tengan efecto" + arr["FRENCH",620]="La méthode de gestion des fenêtres a été modifiée dans le fichier de configuration. Redémarrez le script pour que les modifications prennent effet" + arr["CATALAN",620]="S'ha modificat en el fitxer de configuració el mètode de gestió de finestres. Reinicia el script perquè els canvis tinguin efecte" + arr["PORTUGUESE",620]="O gerenciador de janelas foi modificado no arquivo de configuração. Reinicie o script para que as alterações entrem em vigor" + arr["RUSSIAN",620]="Метод управления окнами был изменён в файле конфигурации. Перезапустите скрипт, чтобы изменения вступили в силу" + arr["GREEK",620]="${pending_of_translation} Η μέθοδος διαχείρισης παραθύρων έχει τροποποιηθεί στο αρχείο ρυθμίσεων. Κάντε επανεκκίνηση του σεναρίου για να εφαρμοστούν οι αλλαγές" + arr["ITALIAN",620]="Il metodo di gestione delle finestre è stato modificato nel file di configurazione. Riavviare lo script per rendere effettive le modifiche" + arr["POLISH",620]="${pending_of_translation} Metoda zarządzania oknami została zmodyfikowana w pliku konfiguracyjnym. Uruchom ponownie skrypt, aby zmiany odniosły skutek" + arr["GERMAN",620]="Die Fensterverwaltungsmethode wurde in der Konfigurationsdatei geändert. Starten Sie das Skript neu, damit die Änderungen wirksam werden" + arr["TURKISH",620]="${pending_of_translation} Pencere yönetim yöntemi, yapılandırma dosyasında değiştirildi. Değişikliklerin etkili olması için betiği yeniden başlatın" + + arr["ENGLISH",621]="It's not possible to run airgeddon in the current tmux session. This session will be send to background and a new tmux session will be created for launching airgeddon" + arr["SPANISH",621]="No es posible ejecutar airgeddon en la sesión tmux actual. Esta sesión será enviada a segundo plano y se creará una nueva sesión tmux donde airgeddon será lanzado" + arr["FRENCH",621]="Il n'est pas possible de lancer airgeddon dans la session de tmux en cours. Cette session sera envoyée à l’arrière-plan et une nouvelle session tmux sera crée pour lancer airgeddon" + arr["CATALAN",621]="No és possible executar airgeddon en la sessió tmux actual. Aquesta sessió serà enviada a segon pla i es crearà una nova sessió tmux on airgeddon serà llançat" + arr["PORTUGUESE",621]="Não é possível executar o airgeddon na sessão atual do tmux. Esta sessão será colocada em segundo plano e uma nova sessão do tmux será criada onde o airgeddon será executado" + arr["RUSSIAN",621]="Невозможно запустить airgeddon в текущей сессии tmux. Этот сеанс будет отправлен в фоновый режим, и будет создан новый сеанс tmux для запуска airgeddon" + arr["GREEK",621]="${pending_of_translation} Δεν είναι δυνατό να εκτελέσετε airgeddon στην τρέχουσα συνεδρία tmux. Αυτή η περίοδος θα στείλει στο παρασκήνιο και θα δημιουργηθεί μια νέα συνεδρία tmux για την εκκίνηση του airgeddon" + arr["ITALIAN",621]="Non è possibile eseguire airgeddon nella sessione corrente di tmux. Questa sessione verrà mandata in background e verrà creata una nuova sessione tmux in cui verrà lanciato airgeddon" + arr["POLISH",621]="${pending_of_translation} Nie można uruchomić airgeddon w bieżącej sesji tmux. Ta sesja zostanie wysłana do tła i zostanie utworzona nowa sesja tmux, w której zostanie uruchomiony airgeddon" + arr["GERMAN",621]="Es ist nicht möglich, airgeddon in der aktuellen tmux-Sitzung auszuführen. Diese Sitzung wird in den Hintergrund gesendet und eine neue Sitzung wird erstellt, in der airgeddon gestartet wird" + arr["TURKISH",621]="${pending_of_translation} Mevcut tmux seansında airgeddon çalıştırmak mümkün değildir. Bu oturum arka plana gönderilecek ve airgeddon'un başlatılacağı yeni bir tmux oturumu oluşturulacak" + + arr["ENGLISH",622]="13. (reaver) Null PIN attack" + arr["SPANISH",622]="13. (reaver) Ataque de PIN nulo" + arr["FRENCH",622]="13. (reaver) Attaque de PIN nul" + arr["CATALAN",622]="13. (reaver) Atac de PIN nul" + arr["PORTUGUESE",622]="13. (reaver) Ataque de PIN nulo" + arr["RUSSIAN",622]="13. (reaver) Атака с нулевым PIN" + arr["GREEK",622]="${pending_of_translation} 13. (reaver) Null PIN επίθεση" + arr["ITALIAN",622]="13. (reaver) Attacco del PIN nullo" + arr["POLISH",622]="${pending_of_translation} 13. (reaver) Atak null PIN" + arr["GERMAN",622]="13. (reaver) Null-PIN-Angriff" + arr["TURKISH",622]="${pending_of_translation} 13. (reaver) Boş PIN saldırısı" + + arr["ENGLISH",623]="You have reaver installed (v${reaver_version}). You meet the version requirement to perform null PIN integrated reaver attack (minimum version v${minimum_reaver_nullpin_version}). Script can continue..." + arr["SPANISH",623]="Tienes reaver instalado (v${reaver_version}). Cumples con el requisito de versión para realizar el ataque de PIN nulo integrado con reaver (versión minima v${minimum_reaver_nullpin_version}). El script puede continuar..." + arr["FRENCH",623]="Reaver est installé (v${reaver_version}). Cette version est compatible avec l'attaque par PIN nul (version minimale: ${minimum_reaver_nullpin_version}). Le script peut continuer..." + arr["CATALAN",623]="Tens reaver instal·lat (v${reaver_version}). Compleixes amb el requisit de versió per a realitzar l'atac de PIN nul integrat amb reaver (versió mínima v${minimum_reaver_nullpin_version}). El script pot continuar..." + arr["PORTUGUESE",623]="Você tem o reaver instalado (v${reaver_version}). Você cumpre a exigência de versão para o ataque de PIN nulo com reaver (versão mínima v${minimum_reaver_nullpin_version}). O script pode continuar..." + arr["RUSSIAN",623]="У вас установлен reaver (v${reaver_version}). Версия удовлетворяет требованиям для выполнения интегрированной в reaver атаки нулевого PIN (минимальная версия v${minimum_reaver_nullpin_version}). Скрипт может продолжить работу..." + arr["GREEK",623]="${pending_of_translation} Έχετε εγκατεστημένο το reaver (v${reaver_version}). Έχετε την απαραίτητη έκδοση reaver (ελάχιστη έκδοση v${minimum_reaver_nullpin_version}), για την επίθεση null PIN με ενσωματωμένο reaver. Το script μπορεί να συνεχίσει..." + arr["ITALIAN",623]="È stato installato reaver (v${reaver_version}). Soddisfi il requisito della versione per realizzare l'attacco del PIN nullo integrato in reaver (versione minima v${minimum_reaver_nullpin_version}). Lo script può continuare..." + arr["POLISH",623]="${pending_of_translation} Masz zainstalowany reaver (v${reaver_version}). Spełnia on wymagania dotyczące wersji, aby wykonać atak null PIN (wersja minimalna v${minimum_reaver_nullpin_version}). Skrypt może kontynuować..." + arr["GERMAN",623]="Reaver ist installiert (v${reaver_version}). Sie erfüllen die Versionsvoraussetzung, um den Null-PIN-Angriff auszuführen, der mit Reaver integriert ist (min Version v${minimum_reaver_nullpin_version}). Das Skript kann fortfahren..." + arr["TURKISH",623]="${pending_of_translation} Reaver sisteminizde kurulu (v${reaver_version}). Boş PIN entegre reaver saldırısını gerçekleştirmek için sürüm gereksinimini karşılıyorsunuz (minimum sürüm v${minimum_reaver_nullpin_version}). Script devam edebilir..." + + arr["ENGLISH",624]="You have reaver installed (v${reaver_version}), but not required version. To perform null PIN integrated reaver attack you must have at least version v${minimum_reaver_nullpin_version}" + arr["SPANISH",624]="Tienes reaver instalado (v${reaver_version}), aunque no la versión requerida. Para realizar el ataque de PIN nulo integrado con reaver has de tener al menos la versión v${minimum_reaver_nullpin_version}" + arr["FRENCH",624]="Reaver est installé (v${reaver_version}) mais cette version n'est pas compatible avec l'attaque par PIN nul. Version minimale requise: v${minimum_reaver_nullpin_version}" + arr["CATALAN",624]="Tens reaver instal·lat (v${reaver_version}), encara que no és la versió requerida. Per realitzar l'atac de PIN nul integrat amb reaver has de tenir almenys la versió v${minimum_reaver_nullpin_version}" + arr["PORTUGUESE",624]="Você tem o reaver instalado (v${reaver_version}), mas não a versão necessária. Para fazer o ataque de PIN nulo com reaver você precisa ter pelo menos a versão v${minimum_reaver_nullpin_version}" + arr["RUSSIAN",624]="У вас установлен reaver (v${reaver_version}), но не та версия, которая требуется. Для выполнения интегрированной в reaver атаки нулевого PIN у вас должна быть по крайней мере v${minimum_reaver_nullpin_version}" + arr["GREEK",624]="${pending_of_translation} Έχετε εγκατεστημένο το reaver (v${reaver_version}), αλλά όχι την απαιτούμενη έκδοση. Για να κάνετε την επίθεση null PIN με ενσωματωμένο reaver θα πρέπει να έχετε τουλάχιστον την έκδοση v${minimum_reaver_nullpin_version}" + arr["ITALIAN",624]="È stato installato reaver (v${reaver_version}), ma non la versione richiesta. Per realizzare l'attacco del PIN nullo integrato in reaver devi avere almeno la versione v${minimum_reaver_nullpin_version}" + arr["POLISH",624]="${pending_of_translation} Masz zainstalowany reaver (v${reaver_version}), ale nie wymaganą wersję. Aby zrealizować atak null PIN zintegrowany z programem reaver musisz mieć co najmniej wersję v${minimum_reaver_nullpin_version}" + arr["GERMAN",624]="Reaver ist installiert (v${reaver_version}), jedoch nicht die erforderliche Version. Um den Null-PIN-Angriff mit Reaver zu integrieren, müssen Sie mindestens die Version v${minimum_reaver_nullpin_version} haben" + arr["TURKISH",624]="${pending_of_translation} Reaver sisteminizde kurulu (v${reaver_version}), ancak sürüm uygun değil. Boş PIN entegre reaver saldırısını gerçekleştirmek için minimum sürüm olan ${minimum_reaver_nullpin_version} olmalıdır" + + arr["ENGLISH",625]="Null PIN attack is pretty fast and achieve the password almost instantly but only a few access points are vulnerable. Some of them are \"Huawei HG658C\", \"ZTE H218N\", \"ZTE H108N\" and \"ZTE H298N\"" + arr["SPANISH",625]="El ataque de PIN nulo es muy rápido y consigue la contraseña instantáneamente pero solo unos pocos puntos de acceso son vulnerables. Algunos conocidos son \"Huawei HG658C\", \"ZTE H218N\", \"ZTE H108N\" y \"ZTE H298N\"" + arr["FRENCH",625]="L'attaque de PIN nul est très rapide et il obtient le mot de passe instantanément, mais juste quelques points d'accès sont vulnérables. Certains sont \"Huawei HG658C\", \"ZTE H218N\", \"ZTE H108N\" et \"ZTE H298N\"" + arr["CATALAN",625]="L'atac PIN nul és molt ràpid i aconsegueix la contrasenya instantàniament però només uns pocs punts d'accés són vulnerables. alguns són \"Huawei HG658C\", \"ZTE H218N\", \"ZTE H108N\" i \"ZTE H298N\"" + arr["PORTUGUESE",625]="O ataque de PIN nulo é muito rápido e obtém a senha instantaneamente, mas apenas alguns pontos de acesso são vulneráveis. Alguns como: \"Huawei HG658C\", \"ZTE H218N\", \"ZTE H108N\" e \"ZTE H298N\"" + arr["RUSSIAN",625]="Атака по нулевому PIN-коду очень быстрая и мгновенно получает пароль, но уязвимы только несколько точек доступа. Примеры некоторых из них: \"Huawei HG658C\", \"ZTE H218N\", \"ZTE H108N\" и \"ZTE H298N\"" + arr["GREEK",625]="${pending_of_translation} Η μηδενική επίθεση PIN είναι πολύ γρήγορη και παίρνει τον κωδικό αμέσως, αλλά μόνο λίγα σημεία πρόσβασης είναι ευάλωτα. Κάποιοι είναι \"Huawei HG658C\", \"ZTE H218N\", \"ZTE H108N\" και \"ZTE H298N\"" + arr["ITALIAN",625]="L'attacco del PIN nullo è molto veloce e ottiene la password all'istante, ma solo pochi punti di accesso sono vulnerabili. Alcuni conosciuti sono \"Huawei HG658C\", \"ZTE H218N\", \"ZTE H108N\" e \"ZTE H298N\"" + arr["POLISH",625]="${pending_of_translation} Atak null kodu PIN jest bardzo szybki i natychmiast otrzymuje hasło, ale tylko kilka punktów dostępu jest podatnych na ataki. Niektóre są \"Huawei HG658C\", \"ZTE H218N\", \"ZTE H108N\" i \"ZTE H298N\"" + arr["GERMAN",625]="Der Null-PIN-Angriff ist sehr schnell und erhält das Kennwort sofort, aber nur wenige access points sind anfällig. Einige sind \"Huawei HG658C\", \"ZTE H218N\", \"ZTE H108N\" und \"ZTE H298N\"" + arr["TURKISH",625]="${pending_of_translation} Boş PIN saldırısı çok hızlıdır ve şifreyi anında alır, ancak yalnızca birkaç erişim noktası korunmasızdır. Bazı \"Huawei HG658C\", \"ZTE H218N\", \"ZTE H108N\" ve \"ZTE H298N\"" + + arr["ENGLISH",626]="Since airgeddon 9.20 version, tmux is supported and it can be used instead of xterm as windows handler. Script can be launched in a headless environment without a graphical X window system. It is recommended only for advanced users. Like any other option, it can be configured on the options menu, on the ${rc_file} options file or launched using AIRGEDDON_WINDOWS_HANDLING \"flag\" in the command line. More information about options customization at Wiki: ${urlgithub_wiki}/Options" + arr["SPANISH",626]="A partir de la versión 9.20 de airgeddon, tmux está soportado y se puede utilizar en lugar de xterm como gestor de ventanas. Se puede lanzar el script en un entorno sin un sistema gráfico de ventanas X. Solo se recomienda hacerlo para usuarios avanzados. Como cualquier otra opción, se puede configurar desde el menú de opciones, configurarlo en el fichero de opciones ${rc_file} o lanzarlo usando el \"flag\" AIRGEDDON_WINDOWS_HANDLING en la línea de comandos. Más información acerca de la personalización de opciones en el Wiki: ${urlgithub_wiki}/Options" + arr["FRENCH",626]="À partir de la version 9.20 d'airgeddon, tmux est supporté et peut être utilisé à la place de xterm en tant que gestionnaire de fenêtres. Vous pouvez lancer le script dans un environnement dépourvu de système graphique X Windows. Il est recommandé aux utilisateurs avancés. Comme toute autre option, elle peut être configurée à partir du menu d'options, dans le fichier d'options ${rc_file} ou le lancer à l'aide de \"flag\" AIRGEDDON_WINDOWS_HANDLING sur la ligne de commande. Plus d'informations sur la personnalisation des options dans le Wiki: ${urlgithub_wiki}/Options" + arr["CATALAN",626]="A partir de la versió 9.20 de airgeddon, tmux està suportat i es pot utilitzar en lloc de xterm com a gestor de finestres. Es pot llançar l'script en un entorn sense un sistema gràfic de finestres X. Només es recomana fer-ho per a usuaris avançats. Com qualsevol altra opció, es pot configurar des del menú d'opcions, configurar en el fitxer d'opcions ${rc_file} o llançar usant el \"flag\" AIRGEDDON_WINDOWS_HANDLING en la línia d'ordres. Més informació sobre la personalització d'opcions al Wiki: ${urlgithub_wiki}/Options" + arr["PORTUGUESE",626]="A partir da versão 9.20 do airgeddon, o tmux pode ser usado em vez do xterm como gerenciador de janelas. Você pode iniciar o script em um ambiente sem um sistema gráfico (X-Window). É recomendado apenas para usuários avançados. Como as demais opções, pode ser configurado a partir do menu, configurado no arquivo de opções ${rc_file} ou iniciado usando o \"parâmetro\" AIRGEDDON_WINDOWS_HANDLING na linha de comando. Mais informações sobre a customização de opções no Wiki: ${urlgithub_wiki}/Options" + arr["RUSSIAN",626]="Начиная с версии airgeddon 9.20, поддерживается tmux и он может использоваться вместо xterm в качестве обработчика окон. Скрипт может быть запущен в автономной среде без графической системы X Window. Рекомендуется только для опытных пользователей. Как и любой другой параметр, его можно настроить в меню параметров, в файле параметров ${rc_file} или запустить с помощью AIRGEDDON_WINDOWS_HANDLING \"flag\" в командной строке. Больше информации о настройке опций на Wiki: ${urlgithub_wiki}/Options" + arr["GREEK",626]="${pending_of_translation} Από την εκδοχή airgeddon 9.20, υποστηρίζεται το tmux και μπορεί να χρησιμοποιηθεί αντί του xterm ως χειριστής παραθύρων. Το σενάριο μπορεί να εκτοξευθεί σε περιβάλλον χωρίς κεφαλή χωρίς γραφικό σύστημα παραθύρων X. Συνιστάται μόνο για προχωρημένους χρήστες. Όπως και κάθε άλλη επιλογή, μπορεί να ρυθμιστεί στο μενού επιλογών, στο αρχείο επιλογών ${rc_file} ή να ξεκινήσει χρησιμοποιώντας τη \"flag\" AIRGEDDON_WINDOWS_HANDLING στη γραμμή εντολών. Περισσότερες πληροφορίες σχετικά με την προσαρμογή των επιλογών στο Wiki: ${urlgithub_wiki}/Options" + arr["ITALIAN",626]="A partire dalla versione 9.20 di airgeddon, tmux è supportato e può essere usato al posto di xterm come gestore di finestre. È possibile avviare lo script in un ambiente senza un sistema grafico di finestre X. È consigliato solo per utenti esperti. Come qualsiasi altra opzione, può essere configurata dal menu delle opzioni, configurata nel file delle opzioni ${rc_file} o avviata utilizzando il \"flag\" AIRGEDDON_WINDOWS_HANDLING dalla linea di comando. Maggiori informazioni sulla personalizzazione delle opzioni nella Wiki: ${urlgithub_wiki}/Options" + arr["POLISH",626]="${pending_of_translation} Począwszy od wersji 9.20 airgeddon, tmux jest obsługiwany i może być używany zamiast xterm jako menedżer okien. Skrypt można uruchomić w środowisku bez systemu graficznego okien X. Zalecany jest tylko dla zaawansowanych użytkowników. Jak każda inna opcja, można ją skonfigurować z menu opcji, skonfigurować w pliku opcji ${rc_file} lub uruchomić za pomocą \"flag\" AIRGEDDON_WINDOWS_HANDLING w wierszu poleceń. Więcej informacji na temat dostosowywania opcji w Wikiv" + arr["GERMAN",626]="Ab airgeddon Version 9.20 wird tmux unterstützt und kann anstelle von xterm als Fenstermanager verwendet werden. Sie können das Skript in einer Umgebung ohne Grafiksystem von X-Fenstern starten, es wird nur für fortgeschrittene Benutzer empfohlen. Wie jede andere Option kann sie über das Optionsmenü konfiguriert werden, in der Optionsdatei ${rc_file} konfiguriert oder mit dem \"flag\" AIRGEDDON_WINDOWS_HANDLING in der Befehlszeile gestartet werden. Weitere Informationen zur Anpassung der Optionen im Wiki: ${urlgithub_wiki}/Options" + arr["TURKISH",626]="${pending_of_translation} airgeddon'un 9.20 sürümünden itibaren, tmux destekleniyor ve bir pencere yöneticisi olarak xterm yerine kullanılabilir. Senaryoyu X windows grafik sistemine sahip olmayan bir ortamda başlatabilirsiniz, sadece ileri düzey kullanıcılar için önerilir. Diğer seçeneklerde olduğu gibi, seçenekler menüsünden yapılandırılabilir, ${rc_file} seçenekler dosyasında yapılandırılabilir veya komut satırında \"flag\" AIRGEDDON_WINDOWS_HANDLING kullanılarak başlatılabilir. Wiki'deki seçeneklerin özelleştirilmesi hakkında daha fazla bilgi: ${urlgithub_wiki}/Options" + case "${3}" in "yellow") interrupt_checkpoint "${2}" "${3}" diff --git a/pindb_checksum.txt b/pindb_checksum.txt index 0fef0fdf5..957c423c3 100644 --- a/pindb_checksum.txt +++ b/pindb_checksum.txt @@ -1 +1 @@ -42b2f1b19d4c07c489b7c0e6c4135449 +37a176e9a0eaedb7de1f06b98143bee2