diff --git a/CHANGELOG.md b/CHANGELOG.md index eac66f27a..af55e5505 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +### 7.11 + - Added hccapx support for hashcat 3.40 or higher + - Decrypted hashcat trophy files beautified + - Added confirm questions before attacks if no target selected + - WPA/WPA2 decrypted files using aircrack now have trophy file + - Some outputs colorized using ccze + ### 7.1 - Added default choice for some yes/no question. Regexp improved - Tested compatibility with Backbox 4.7 and Parrot 3.6 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7f2b24549..35b301fbe 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -16,6 +16,7 @@ Please note we have a code of conduct, please follow it in all your interactions 2. Translate the strings located in `language_strings.sh`. 3. Ask by mail [v1s1t0r.1s.h3r3@gmail.com] if you have any doubt. You'll be informed about how to proceed. 4. You can be added as a collaborator on the project. +5. Knowledge about `git` is not mandatory but is really appreciated to push directly into the project repository. ## Collaborating Developers @@ -40,9 +41,10 @@ To be added on it you must prove first you are a *trusted collaborator* with you ## WPS PIN Database Collaborators -1. Add PINs ordered by the key in the associative array located in the `known_pins.db` file. (Keys are the first 6 BSSID digits). -2. Update the `pindb_checksum.txt` file with the calculated checksum of the database file using `md5sum` tool. -3. Update the date under shebang. +1. Send MAC of the BSSID and the default PIN to [v1s1t0r.1s.h3r3@gmail.com]. If you are going to push directly into the repository, keep reading the next points. +2. Add PINs ordered by the key in the associative array located in the `known_pins.db` file. (Keys are the first 6 BSSID digits). +3. Update the `pindb_checksum.txt` file with the calculated checksum of the database file using `md5sum` tool. +4. Update the date under shebang. *PINs should be from devices that generate generic ones.* @@ -144,6 +146,10 @@ If you enjoyed the script, feel free to donate. Support the project through Payp   [![Bitcoin][Bitcoin]](https://blockchain.info/address/1AKnTXbomtwUzrm81FRzi5acSSXxGteGTH) +Bitcoin QR code: + +[![BitcoinQR][BitcoinQR]](https://blockchain.info/address/1AKnTXbomtwUzrm81FRzi5acSSXxGteGTH) + [Readme]: README.md [Changelog]: CHANGELOG.md @@ -162,3 +168,4 @@ If you enjoyed the script, feel free to donate. Support the project through Payp [Paypal]: /imgs/banners/paypal_donate.png "Show me the money!" [Bitcoin]: /imgs/banners/bitcoin_donate.png "Show me the money!" +[BitcoinQR]: /imgs/banners/bitcoin_qr.png "Show me the money!" diff --git a/Dockerfile b/Dockerfile index f59d8d930..ce8ea5c35 100644 --- a/Dockerfile +++ b/Dockerfile @@ -50,7 +50,8 @@ RUN \ usbutils \ rfkill \ x11-utils \ - wget + wget \ + ccze #Install update tools RUN \ diff --git a/README.md b/README.md index 8bd467890..7b3f045b4 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ All the needed info about how to install|use|enjoy `airgeddon` is present at [Gi [Hat Tip To]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Hat%20Tip%20To [Inspiration]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Inspiration -[Version-shield]: https://img.shields.io/badge/version-7.1-blue.svg?style=flat-square&colorA=273133&colorB=0093ee "Latest version" +[Version-shield]: https://img.shields.io/badge/version-7.11-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 41fd56f5d..96984a2ba 100644 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -2,8 +2,8 @@ #Title........: airgeddon.sh #Description..: This is a multi-use bash script for Linux systems to audit wireless networks. #Author.......: v1s1t0r -#Date.........: 20170525 -#Version......: 7.1 +#Date.........: 20170614 +#Version......: 7.11 #Usage........: bash airgeddon.sh #Bash Version.: 4.2 or later @@ -16,6 +16,9 @@ auto_update=1 #Enabled 1 / Disabled 0 - Auto change language feature - Default value 1 auto_change_language=1 +#Enabled 1 / Disabled 0 - Allow colorized output - Default value 1 +allow_colorization=1 + #Language vars #Change this line to select another default language. Select one from available values in array language="ENGLISH" @@ -106,13 +109,12 @@ declare -A possible_alias_names=( ) #General vars -airgeddon_version="7.1" -language_strings_expected_version="7.1-1" +airgeddon_version="7.11" +language_strings_expected_version="7.11-1" standardhandshake_filename="handshake-01.cap" tmpdir="/tmp/" osversionfile_dir="/etc/" minimum_bash_version_required="4.2" -hashcat3_version="3.0" resume_message=224 abort_question=12 pending_of_translation="[PoT]" @@ -122,6 +124,22 @@ curl_404_error="404: Not Found" language_strings_file="language_strings.sh" broadcast_mac="FF:FF:FF:FF:FF:FF" +#aircrack vars +aircrack_tmp_simple_name_file="aircrack" +aircrack_pot_tmp="${aircrack_tmp_simple_name_file}.pot" + +#hashcat vars +hashcat3_version="3.0" +hashcat_hccapx_version="3.40" +hashcat_tmp_simple_name_file="hctmp" +hashcat_tmp_file="${hashcat_tmp_simple_name_file}.hccap" +hashcat_pot_tmp="${hashcat_tmp_simple_name_file}.pot" +hashcat_output_file="${hashcat_tmp_simple_name_file}.out" +hccapx_tool="cap2hccapx" +possible_hccapx_converter_known_locations=( + "/usr/lib/hashcat-utils/${hccapx_tool}.bin" + ) + #WEP vars wep_data="wepdata" wepdir="wep/" @@ -157,6 +175,7 @@ urlscript_pins_dbfile="https://raw.githubusercontent.com/${github_user}/${github urlscript_pins_dbfile_checksum="https://raw.githubusercontent.com/${github_user}/${github_repository}/${branch}/${pins_dbfile_checksum}" urlscript_language_strings_file="https://raw.githubusercontent.com/${github_user}/${github_repository}/${branch}/${language_strings_file}" urlgithub_wiki="https://${repository_hostname}/${github_user}/${github_repository}/wiki" +bitcoin="1AKnTXbomtwUzrm81FRzi5acSSXxGteGTH" mail="v1s1t0r.1s.h3r3@gmail.com" author="v1s1t0r" @@ -249,7 +268,7 @@ known_arm_compatible_distros=( ) #Hint vars -declare main_hints=(128 134 163) +declare main_hints=(128 134 163 437 438 442) declare dos_hints=(129 131 133) declare handshake_hints=(127 130 132 136) declare handshake_attack_hints=(142) @@ -722,6 +741,19 @@ function check_interface_coherence() { return ${interface_auto_change} } +#Add contributing footer to a file +function add_contributing_footer_to_file() { + + debug_print + + { + echo "" + echo "---------------" + echo "" + echo "${footer_texts[${language},1]}" + } >> "${1}" +} + #Prepare the vars to be used on wps pin database attacks function set_wps_mac_parameters() { @@ -1476,18 +1508,33 @@ function ask_bssid() { local regexp="^([a-fA-F0-9]{2}:){5}[a-zA-Z0-9]{2}$" if [ "${1}" = "wps" ]; then + if [ -z "${wps_bssid}" ]; then + ask_yesno 439 "no" + if [ ${yesno} = "n" ]; then + return 1 + fi + fi + while [[ ! ${wps_bssid} =~ ${regexp} ]]; do read_bssid "wps" done echo language_strings "${language}" 364 "blue" else + if [ -z "${bssid}" ]; then + ask_yesno 439 "no" + if [ ${yesno} = "n" ]; then + return 1 + fi + fi + while [[ ! ${bssid} =~ ${regexp} ]]; do read_bssid done echo language_strings "${language}" 28 "blue" fi + return 0 } #Read the user input on essid questions @@ -1506,6 +1553,14 @@ function ask_essid() { debug_print if [ -z "${essid}" ]; then + + if [ "${1}" = "verify" ]; then + ask_yesno 439 "no" + if [ ${yesno} = "n" ]; then + return 1 + fi + fi + while [[ -z "${essid}" ]]; do read_essid done @@ -1742,10 +1797,18 @@ function set_wep_key_script() { cat >&8 <<-'EOF' echo -en " ${wep_hex_key}" + echo "" EOF cat >&8 <<-EOF } >> "${weppotenteredpath}" + + { + echo "" + echo "---------------" + echo "" + echo "${footer_texts[${language},1]}" + } >> "${weppotenteredpath}" fi } @@ -2379,6 +2442,9 @@ function mdk3_deauth_option() { language_strings "${language}" 34 "yellow" ask_bssid + if [ "$?" != "0" ]; then + return + fi ask_channel exec_mdk3deauth } @@ -2401,6 +2467,9 @@ function aireplay_deauth_option() { language_strings "${language}" 34 "yellow" ask_bssid + if [ "$?" != "0" ]; then + return + fi ask_channel exec_aireplaydeauth } @@ -2422,7 +2491,10 @@ function wds_confusion_option() { echo language_strings "${language}" 34 "yellow" - ask_essid + ask_essid "verify" + if [ "$?" != "0" ]; then + return + fi ask_channel exec_wdsconfusion } @@ -2444,7 +2516,10 @@ function beacon_flood_option() { echo language_strings "${language}" 34 "yellow" - ask_essid + ask_essid "verify" + if [ "$?" != "0" ]; then + return + fi ask_channel exec_beaconflood } @@ -2467,6 +2542,9 @@ function auth_dos_option() { language_strings "${language}" 34 "yellow" ask_bssid + if [ "$?" != "0" ]; then + return + fi exec_authdos } @@ -2488,6 +2566,9 @@ function michael_shutdown_option() { language_strings "${language}" 34 "yellow" ask_bssid + if [ "$?" != "0" ]; then + return + fi exec_michaelshutdown } @@ -2541,6 +2622,9 @@ function wps_attacks_parameters() { language_strings "${language}" 34 "yellow" ask_bssid "wps" + if [ "$?" != "0" ]; then + return 1 + fi ask_channel "wps" case ${wps_attack} in @@ -2881,6 +2965,7 @@ function clean_tmpfiles() { rm -rf "${tmpdir}clts"* > /dev/null 2>&1 rm -rf "${tmpdir}wnws.txt" > /dev/null 2>&1 rm -rf "${tmpdir}hctmp"* > /dev/null 2>&1 + rm -rf "${tmpdir}${aircrack_pot_tmp}" > /dev/null 2>&1 rm -rf "${tmpdir}${hostapd_file}" > /dev/null 2>&1 rm -rf "${tmpdir}${dhcpd_file}" > /dev/null 2>&1 rm -rf "${tmpdir}${control_file}" > /dev/null 2>&1 @@ -3971,6 +4056,7 @@ function aircrack_dictionary_attack_option() { language_strings "${language}" 190 "yellow" language_strings "${language}" 115 "read" exec_aircrack_dictionary_attack + manage_aircrack_pot } #Validate and ask for the different parameters used in an aircrack bruteforce based attack @@ -3998,6 +4084,7 @@ function aircrack_bruteforce_attack_option() { language_strings "${language}" 190 "yellow" language_strings "${language}" 115 "read" exec_aircrack_bruteforce_attack + manage_aircrack_pot } #Validate and ask for the different parameters used in a hashcat dictionary based attack @@ -4012,6 +4099,11 @@ function hashcat_dictionary_attack_option() { return fi + convert_cap_to_hashcat_format + if [ "$?" != "0" ]; then + return + fi + manage_asking_for_dictionary_file echo @@ -4033,6 +4125,11 @@ function hashcat_bruteforce_attack_option() { return fi + convert_cap_to_hashcat_format + if [ "$?" != "0" ]; then + return + fi + set_minlength_and_maxlength charset_option=0 @@ -4061,8 +4158,12 @@ function hashcat_rulebased_attack_option() { return fi - manage_asking_for_dictionary_file + convert_cap_to_hashcat_format + if [ "$?" != "0" ]; then + return + fi + manage_asking_for_dictionary_file manage_asking_for_rule_file echo @@ -4077,12 +4178,28 @@ function manage_hashcat_pot() { debug_print - local regexp="All hashes have been recovered" - if [ -n "${hashcat_fix}" ]; then - local regexp="Status\.{1,9}:[[:space:]]Cracked" + hashcat_output=$(cat "${tmpdir}${hashcat_output_file}") + + pass_decrypted_by_hashcat=0 + if compare_floats_greater_or_equal "${hashcat_version}" "${hashcat3_version}"; then + local regexp="Status\.+:[[:space:]]Cracked" + if [[ ${hashcat_output} =~ ${regexp} ]]; then + pass_decrypted_by_hashcat=1 + else + if compare_floats_greater_or_equal "${hashcat_version}" "${hashcat_hccapx_version}"; then + if [[ -f "${tmpdir}${hashcat_pot_tmp}" ]]; then + pass_decrypted_by_hashcat=1 + fi + fi + fi + else + local regexp="All hashes have been recovered" + if [[ ${hashcat_output} =~ ${regexp} ]]; then + pass_decrypted_by_hashcat=1 + fi fi - if [[ ${hashcat_output} =~ ${regexp} ]]; then + if [ "${pass_decrypted_by_hashcat}" -eq 1 ]; then echo language_strings "${language}" 234 "yellow" @@ -4094,7 +4211,7 @@ function manage_hashcat_pot() { if [ "${lastcharhashcat_potpath}" != "/" ]; then hashcat_potpath="${hashcat_potpath}/" fi - hashcatpot_filename="hashcat-${bssid}.pot" + hashcatpot_filename="hashcat-${bssid}.txt" hashcat_potpath="${hashcat_potpath}${hashcatpot_filename}" validpath=1 @@ -4102,7 +4219,21 @@ function manage_hashcat_pot() { read_path "hashcatpot" done - cp "${tmpdir}hctmp.pot" "${potenteredpath}" + [[ $(cat "${tmpdir}${hashcat_pot_tmp}") =~ .+:(.+)$ ]] && hashcat_key="${BASH_REMATCH[1]}" + { + echo "" + date +%Y-%m-%d + echo "${hashcat_texts[${language},1]}" + echo "" + echo "BSSID: ${bssid}" + echo "" + echo "---------------" + echo "" + echo "${hashcat_key}" + } >> "${potenteredpath}" + + add_contributing_footer_to_file "${potenteredpath}" + echo language_strings "${language}" 236 "blue" language_strings "${language}" 115 "read" @@ -4110,6 +4241,57 @@ function manage_hashcat_pot() { fi } +#Check if the password was decrypted using aircrack and manage to save it on a file +function manage_aircrack_pot() { + + debug_print + + pass_decrypted_by_aircrack=0 + if [ -f "${tmpdir}${aircrack_pot_tmp}" ]; then + pass_decrypted_by_aircrack=1 + fi + + if [ "${pass_decrypted_by_aircrack}" -eq 1 ]; then + + echo + language_strings "${language}" 234 "yellow" + ask_yesno 235 "yes" + if [ ${yesno} = "y" ]; then + aircrack_potpath="${default_save_path}" + lastcharaircrack_potpath=${aircrack_potpath: -1} + if [ "${lastcharaircrack_potpath}" != "/" ]; then + aircrack_potpath="${aircrack_potpath}/" + fi + aircrackpot_filename="aircrack-${bssid}.txt" + aircrack_potpath="${aircrack_potpath}${aircrackpot_filename}" + + validpath=1 + while [[ "${validpath}" != "0" ]]; do + read_path "aircrackpot" + done + + aircrack_key=$(cat "${tmpdir}${aircrack_pot_tmp}") + { + echo "" + date +%Y-%m-%d + echo "${aircrack_texts[${language},1]}" + echo "" + echo "BSSID: ${bssid}" + echo "" + echo "---------------" + echo "" + echo "${aircrack_key}" + } >> "${aircrackpotenteredpath}" + + add_contributing_footer_to_file "${aircrackpotenteredpath}" + + echo + language_strings "${language}" 440 "blue" + language_strings "${language}" 115 "read" + fi + fi +} + #Check if the passwords were captured using ettercap and manage to save them on a file function manage_ettercap_log() { @@ -4418,8 +4600,9 @@ function set_show_charset() { function exec_aircrack_bruteforce_attack() { debug_print - - crunch "${minlength}" "${maxlength}" "${charset}" | aircrack-ng -a 2 -b "${bssid}" -w - "${enteredpath}" + rm -rf "${tmpdir}${aircrack_pot_tmp}" > /dev/null 2>&1 + aircrack_cmd="crunch \"${minlength}\" \"${maxlength}\" \"${charset}\" | aircrack-ng -a 2 -b \"${bssid}\" -l \"${tmpdir}${aircrack_pot_tmp}\" -w - \"${enteredpath}\" ${colorize}" + eval "${aircrack_cmd}" language_strings "${language}" 115 "read" } @@ -4428,7 +4611,9 @@ function exec_aircrack_dictionary_attack() { debug_print - aircrack-ng -a 2 -b "${bssid}" -w "${DICTIONARY}" "${enteredpath}" + rm -rf "${tmpdir}${aircrack_pot_tmp}" > /dev/null 2>&1 + aircrack_cmd="aircrack-ng -a 2 -b \"${bssid}\" -l \"${tmpdir}${aircrack_pot_tmp}\" -w \"${DICTIONARY}\" \"${enteredpath}\" ${colorize}" + eval "${aircrack_cmd}" language_strings "${language}" 115 "read" } @@ -4437,10 +4622,8 @@ function exec_hashcat_dictionary_attack() { debug_print - convert_cap_to_hashcat_format - hashcat_cmd="hashcat -m 2500 -a 0 \"${tmpdir}hctmp.hccap\" \"${DICTIONARY}\" --potfile-disable -o \"${tmpdir}hctmp.pot\" ${hashcat_fix} | tee /dev/fd/5" - exec 5>&1 - hashcat_output=$(eval "${hashcat_cmd}") + hashcat_cmd="hashcat -m 2500 -a 0 \"${tmpdir}${hashcat_tmp_file}\" \"${DICTIONARY}\" --potfile-disable -o \"${tmpdir}${hashcat_pot_tmp}\"${hashcat_fix} | tee \"${tmpdir}${hashcat_output_file}\" ${colorize}" + eval "${hashcat_cmd}" language_strings "${language}" 115 "read" } @@ -4449,10 +4632,8 @@ function exec_hashcat_bruteforce_attack() { debug_print - convert_cap_to_hashcat_format - hashcat_cmd="hashcat -m 2500 -a 3 \"${tmpdir}hctmp.hccap\" \"${charset}\" --potfile-disable -o \"${tmpdir}hctmp.pot\" ${hashcat_fix} | tee /dev/fd/5" - exec 5>&1 - hashcat_output=$(eval "${hashcat_cmd}") + hashcat_cmd="hashcat -m 2500 -a 3 \"${tmpdir}${hashcat_tmp_file}\" \"${charset}\" --potfile-disable -o \"${tmpdir}${hashcat_pot_tmp}\"${hashcat_fix} | tee \"${tmpdir}${hashcat_output_file}\" ${colorize}" + eval "${hashcat_cmd}" language_strings "${language}" 115 "read" } @@ -4461,10 +4642,8 @@ function exec_hashcat_rulebased_attack() { debug_print - convert_cap_to_hashcat_format - hashcat_cmd="hashcat -m 2500 -a 0 \"${tmpdir}hctmp.hccap\" \"${DICTIONARY}\" -r \"${RULES}\" --potfile-disable -o \"${tmpdir}hctmp.pot\" ${hashcat_fix} | tee /dev/fd/5" - exec 5>&1 - hashcat_output=$(eval "${hashcat_cmd}") + hashcat_cmd="hashcat -m 2500 -a 0 \"${tmpdir}${hashcat_tmp_file}\" \"${DICTIONARY}\" -r \"${RULES}\" --potfile-disable -o \"${tmpdir}${hashcat_pot_tmp}\"${hashcat_fix} | tee \"${tmpdir}${hashcat_output_file}\" ${colorize}" + eval "${hashcat_cmd}" language_strings "${language}" 115 "read" } @@ -4949,6 +5128,7 @@ function set_wps_attack_script() { script_interface="${interface}" script_wps_bssid="${wps_bssid}" script_wps_channel="${wps_channel}" + colorize="${colorize}" EOF cat >&7 <<-'EOF' @@ -5137,7 +5317,7 @@ function set_wps_attack_script() { fi this_pin_timeout=0 - (set -o pipefail && eval "${script_attack_cmd1}${current_pin}${script_attack_cmd2}") + (set -o pipefail && eval "${script_attack_cmd1}${current_pin}${script_attack_cmd2} ${colorize}") if [ "$?" = "124" ]; then if [ "${script_wps_attack_tool}" = "reaver" ]; then this_pin_timeout=1 @@ -5179,7 +5359,7 @@ function set_wps_attack_script() { echo fi - (set -o pipefail && eval "${script_attack_cmd1}${current_pin}${script_attack_cmd2}") + (set -o pipefail && eval "${script_attack_cmd1}${current_pin}${script_attack_cmd2} ${colorize}") if [ "$?" = "124" ]; then if [ "${script_wps_attack_tool}" = "reaver" ]; then this_pin_timeout=1 @@ -5209,7 +5389,7 @@ function set_wps_attack_script() { echo fi - (set -o pipefail && eval "${script_attack_cmd1}${script_attack_cmd2}") + (set -o pipefail && eval "${script_attack_cmd1}${script_attack_cmd2} ${colorize}") if [ "$?" = "124" ]; then this_pin_timeout=1 fi @@ -5221,7 +5401,7 @@ function set_wps_attack_script() { if [ "${script_wps_attack_tool}" = "bully" ]; then echo fi - eval "${script_attack_cmd1}${script_attack_cmd2}" + eval "${script_attack_cmd1}${script_attack_cmd2} ${colorize}" parse_output ;; esac @@ -5357,6 +5537,13 @@ function set_control_script() { "${et_captive_portal_logpath}" done fi + + { + echo "" + echo "---------------" + echo "" + echo "${footer_texts[${language},1]}" + } >> "${et_captive_portal_logpath}" sleep 2 killall hostapd > /dev/null 2>&1 @@ -6230,7 +6417,35 @@ function convert_cap_to_hashcat_format() { tmpfiles_toclean=1 rm -rf "${tmpdir}hctmp"* > /dev/null 2>&1 - echo "1" | aircrack-ng "${enteredpath}" -J "${tmpdir}hctmp" -b "${bssid}" > /dev/null 2>&1 + if [ "${hccapx_needed}" -eq 0 ]; then + echo "1" | aircrack-ng "${enteredpath}" -J "${tmpdir}${hashcat_tmp_simple_name_file}" -b "${bssid}" > /dev/null 2>&1 + return 0 + else + hccapx_converter_found=0 + if hash ${hccapx_tool} 2> /dev/null; then + hccapx_converter_found=1 + hccapx_converter_path="${hccapx_tool}" + else + for item in "${possible_hccapx_converter_known_locations[@]}"; do + if [ -f "${item}" ]; then + hccapx_converter_found=1 + hccapx_converter_path="${item}" + break + fi + done + fi + + if [ "${hccapx_converter_found}" -eq 1 ]; then + hashcat_tmp_file="${hashcat_tmp_simple_name_file}.hccapx" + "${hccapx_converter_path}" "${enteredpath}" "${tmpdir}${hashcat_tmp_file}" > /dev/null 2>&1 + return 0 + else + echo + language_strings "${language}" 436 "red" + language_strings "${language}" 115 "read" + return 1 + fi + fi } #Handshake tools menu @@ -6585,6 +6800,10 @@ function validate_path() { enteredpath="${pathname}${standardhandshake_filename}" suggested_filename="${standardhandshake_filename}" ;; + "aircrackpot") + suggested_filename="${aircrackpot_filename}" + aircrackpotenteredpath+="${aircrackpot_filename}" + ;; "hashcatpot") suggested_filename="${hashcatpot_filename}" potenteredpath+="${hashcatpot_filename}" @@ -6678,6 +6897,14 @@ function read_path() { read_and_clean_path "RULES" check_file_exists "${RULES}" ;; + "aircrackpot") + language_strings "${language}" 441 "green" + read_and_clean_path "aircrackpotenteredpath" + if [ -z "${aircrackpotenteredpath}" ]; then + aircrackpotenteredpath="${aircrack_potpath}" + fi + validate_path "${aircrackpotenteredpath}" "${1}" + ;; "hashcatpot") language_strings "${language}" 233 "green" read_and_clean_path "potenteredpath" @@ -7358,8 +7585,12 @@ function et_prerequisites() { language_strings "${language}" 31 "blue" else ask_bssid + if [ "$?" != "0" ]; then + return_to_et_main_menu=1 + return + fi ask_channel - ask_essid + ask_essid "noverify" fi if [[ "${et_mode}" = "et_sniffing" ]] || [[ "${et_mode}" = "et_sniffing_sslstrip" ]]; then @@ -7942,8 +8173,11 @@ function set_hashcat_parameters() { hashcat_fix="" hashcat_charset_fix_needed=0 if compare_floats_greater_or_equal "${hashcat_version}" "${hashcat3_version}"; then - hashcat_fix=" -D 1 --force" + hashcat_fix=" --weak-hash-threshold 0 -D 1 --force" hashcat_charset_fix_needed=1 + if compare_floats_greater_or_equal "${hashcat_version}" "${hashcat_hccapx_version}"; then + hccapx_needed=1 + fi fi } @@ -8782,6 +9016,7 @@ function initialize_script_settings() { fake_beef_found=0 set_script_folder_and_name http_proxy_set=0 + hccapx_needed=0 } #Detect screen resolution if possible @@ -8922,6 +9157,19 @@ function docker_detection() { fi } +#Set colorization output if set +function initialize_colorized_output() { + + debug_print + + colorize="" + if [ "${allow_colorization}" -eq 1 ]; then + if hash ccze 2> /dev/null; then + colorize="| ccze -A" + fi + fi +} + #Script starting point function welcome() { @@ -8990,6 +9238,7 @@ function welcome() { check_update_tools fi + initialize_colorized_output set_windows_sizes select_interface initialize_menu_options_dependencies diff --git a/binaries/arch/airgeddon-git-7.1-1-any.pkg.tar.xz b/binaries/arch/airgeddon-git-7.1-1-any.pkg.tar.xz new file mode 100644 index 000000000..da893d4c8 Binary files /dev/null and b/binaries/arch/airgeddon-git-7.1-1-any.pkg.tar.xz differ diff --git a/binaries/arch/legacy/airgeddon-git-r668.3506721-1-any.pkg.tar.xz b/binaries/arch/legacy/airgeddon-git-7.1-0-any.pkg.tar.xz similarity index 100% rename from binaries/arch/legacy/airgeddon-git-r668.3506721-1-any.pkg.tar.xz rename to binaries/arch/legacy/airgeddon-git-7.1-0-any.pkg.tar.xz diff --git a/binaries/arch/airgeddon-git-r693.dbbaa4e-1-any.pkg.tar.xz b/binaries/arch/legacy/airgeddon-git-r693.dbbaa4e-1-any.pkg.tar.xz similarity index 100% rename from binaries/arch/airgeddon-git-r693.dbbaa4e-1-any.pkg.tar.xz rename to binaries/arch/legacy/airgeddon-git-r693.dbbaa4e-1-any.pkg.tar.xz diff --git a/binaries/kali/airgeddon_7.11-1_all.deb b/binaries/kali/airgeddon_7.11-1_all.deb new file mode 100644 index 000000000..68cbb91de Binary files /dev/null and b/binaries/kali/airgeddon_7.11-1_all.deb differ diff --git a/binaries/kali/airgeddon_7.1-1_all.deb b/binaries/kali/legacy/airgeddon_7.1-1_all.deb similarity index 100% rename from binaries/kali/airgeddon_7.1-1_all.deb rename to binaries/kali/legacy/airgeddon_7.1-1_all.deb diff --git a/imgs/banners/bitcoin_qr.png b/imgs/banners/bitcoin_qr.png new file mode 100644 index 000000000..4110e6eca Binary files /dev/null and b/imgs/banners/bitcoin_qr.png differ diff --git a/language_strings.sh b/language_strings.sh index 8b785d353..dfd67ef13 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.........: 20170525 +#Date.........: 20170615 #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="7.1-1" + language_strings_version="7.11-1" } #Set different language text strings @@ -360,6 +360,33 @@ function language_strings() { wep_texts["RUSSIAN",8]="Нажмите [Enter] в главном окне для продолжения, это окно будет закрыто" wep_texts["GREEK",8]="Πατήστε [Enter] στο κύριο παράθυρο του script για να συνεχίσετε, το παράθυρο αυτό θα κλείσει" + declare -gA hashcat_texts + hashcat_texts["ENGLISH",1]="airgeddon. Decrypted password using hashcat" + hashcat_texts["SPANISH",1]="airgeddon. Contraseña desencriptada con hashcat" + hashcat_texts["FRENCH",1]="airgeddon. Mot de passe déchiffré avec hashcat" + hashcat_texts["CATALAN",1]="airgeddon. Contrasenya desencriptada amb hashcat" + hashcat_texts["PORTUGUESE",1]="airgeddon descriptografou a senha usando hashcat" + hashcat_texts["RUSSIAN",1]="airgeddon. Пароль расшифрован с использованием hashcat" + hashcat_texts["GREEK",1]="airgeddon. Αποκρυπτογραφημένος κωδικός πρόσβασης με χρήση hashcat" + + declare -gA aircrack_texts + aircrack_texts["ENGLISH",1]="airgeddon. Decrypted password using aircrack" + aircrack_texts["SPANISH",1]="airgeddon. Contraseña desencriptada con aircrack" + aircrack_texts["FRENCH",1]="airgeddon. Mot de passe déchiffré avec aircrack" + aircrack_texts["CATALAN",1]="airgeddon. Contrasenya desencriptada amb aircrack" + aircrack_texts["PORTUGUESE",1]="airgeddon descriptografou a senha usando aircrack" + aircrack_texts["RUSSIAN",1]="airgeddon. Пароль расшифрован с использованием aircrack" + aircrack_texts["GREEK",1]="airgeddon. Αποκρυπτογραφημένος κωδικός πρόσβασης με χρήση aircrack" + + declare -gA footer_texts + footer_texts["ENGLISH",1]="If you enjoyed the script and found it useful, you can support the project by making a donation. Through Paypal (${mail}) or sending a fraction of a bitcoin (${bitcoin}). Any amount, no matter how small (1, 2, 5 $/€) is welcome. More information and direct links to do it at: ${urlgithub_wiki}/Contributing" + footer_texts["SPANISH",1]="Si te gustó el script y te pareció útil, puedes apoyar el proyecto haciendo una donación. A través de Paypal (${mail}) o enviando una fracción de bitcoin (${bitcoin}). Cualquier cantidad por pequeña que sea (1, 2, 5 $/€) es bien recibida. Más información y enlaces directos para realizarla en: ${urlgithub_wiki}/Contributing" + footer_texts["FRENCH",1]="Si le script vous a plus et que vous l'avez trouvé utile; vous pouvez soutenir le projet en faisant un don PayPal (${mail}) ou en envoyant une fraction de bitcoin (${bitcoin}). Toute contribution (1, 2, 5 $/€) est bienvenue. Pour faire un don allez à: ${urlgithub_wiki}/Contributing" + footer_texts["CATALAN",1]="Si et va agradar el script i et va semblar útil, pots donar suport al projecte fent una donació. A través de Paypal (${mail}) o enviant una fracció bitcoin (${bitcoin}). Qualsevol quantitat per petita que sigui (1, 2, 5 $/€) és ben rebuda. Més informació i enllaços directes per a realitzar-la en: ${urlgithub_wiki}/Contributing" + footer_texts["PORTUGUESE",1]="Se você gostou do script e o achou útil, apoie o projeto fazendo uma doação, através: do PayPal (${mail}) ou enviando uma fração de bitcoin (${bitcoin}). Qualquer quantidade, mesmo pequena (1, 2, 5 $/€) é bem-vinda. Links diretos e de com realizar em: ${urlgithub_wiki}/Contributing" + footer_texts["RUSSIAN",1]="Если вам понравилась эта программа и она оказался для вас полезной, вы можете поддержать проект, сделав пожертвование. Через PayPal (${mail}) или отправив часть биткойна на (${bitcoin}). Приветствуется любая сумма, даже небольшая (1, 2, 5 $/€). Более подробную информацию и прямые ссылки можно получить по адресу: ${urlgithub_wiki}/Contributing" + footer_texts["GREEK",1]="Εαν ευχαριστηθήκατε το script και το βρήκατε χρήσιμο, μπορείτε να υποστηρίξετε το project κάνοντας κάποια δωρεά. Μέσω του Paypal (${mail}) ή στέλνοντας κάποιο ποσοστό bitcoin (${bitcoin}). Είναι καλοδεχούμενο οποιοδήποτε ποσό (1, 2, 5 $/€), δεν έχει σημασία το πόσο λίγο μπορεί να είναι. Δίνονται περισσότερες πληροφορίες και links για να κάνετε δωρεά στη διεύθυνση: ${urlgithub_wiki}/Contributing" + declare -A arr arr["ENGLISH",0]="This interface ${interface} is already in managed mode" arr["SPANISH",0]="Esta interfaz ${interface} ya está en modo managed" @@ -3212,7 +3239,7 @@ function language_strings() { arr["ENGLISH",356]="Some combinations don't work well. Such as reaver and Ralink chipset cards. If your card has this chipset is recommended to use bully" arr["SPANISH",356]="Algunas combinaciones no funcionan bien. Como por ejemplo reaver y las tarjetas con chipset Ralink. Si tu tarjeta tiene este chipset es mejor utilizar bully" arr["FRENCH",356]="Il existe certains problèmes spécifiques de compatibilité. L’exemple le plus marquant est sans aucun doute celui des chipsets Ralink qui ne fonctionnent pas bien avec reaver. Il est donc conseillé d'utiliser bully avec ces chipsets" - arr["CATALAN",356]="Algunes combinacions no funcionan bé. Com per exemple Reaver i les targetes amb chipset Ralink. Si la teva targeta té aquest chipset és millor utilitzar bully" + arr["CATALAN",356]="Algunes combinacions no funcionan bé. Com per exemple reaver i les targetes amb chipset Ralink. Si la teva targeta té aquest chipset és millor utilitzar bully" arr["PORTUGUESE",356]="Algumas combinações não funcionam bem. Tais como reaver e placas de rede com chipset Ralink. Se o sua placa de rede tem este chipset é melhor usar bully" arr["RUSSIAN",356]="Некоторые комбинации не работают нормально. К примеру reaver и карты с чипсетом Ralink. Если ваша карта имеет этот чипсет, то рекомендуется использовать bully" arr["GREEK",356]="Μερικοί συνδυασμοί δεν λειτουργούν καλά. Όπως για παράδειγμα το reaver με κάρτες που έχουν Ralink chipset. Αν η κάρτα σας έχει αυτό το chipset είναι προτιμότερο να χρησιμοποιήσετε το bully" @@ -3265,13 +3292,13 @@ function language_strings() { arr["RUSSIAN",362]="Пользовательский PIN установлен на ${normal_color}${custom_pin}" arr["GREEK",362]="Το εξατομικευμένο PIN τέθηκε σε ${normal_color}${custom_pin}" - arr["ENGLISH",363]="Type custom PIN :" - arr["SPANISH",363]="Escribe el PIN personalizado :" - arr["FRENCH",363]="Rentrez PIN personnalisé :" - arr["CATALAN",363]="Escriu el PIN personalitzat :" - arr["PORTUGUESE",363]="Escreva o ESSID do alvo :" - arr["RUSSIAN",363]="Напишите пользовательский PIN :" - arr["GREEK",363]="Πληκτρολογήστε εξατομικευμένο PIN :" + arr["ENGLISH",363]="Type custom PIN (8 digits):" + arr["SPANISH",363]="Escribe el PIN personalizado (8 dígitos):" + arr["FRENCH",363]="Rentrez PIN personnalisé (8 chiffres):" + arr["CATALAN",363]="Escriu el PIN personalitzat (8 dígits):" + arr["PORTUGUESE",363]="Digite o PIN personalizado (8 dígitos):" + arr["RUSSIAN",363]="Введите пользовательский PIN (8 цифр):" + arr["GREEK",363]="Πληκτρολογήστε εξατομικευμένο PIN (8 ψηφία):" arr["ENGLISH",364]="BSSID set to ${normal_color}${wps_bssid}" arr["SPANISH",364]="BSSID elegido ${normal_color}${wps_bssid}" @@ -3721,7 +3748,7 @@ function language_strings() { arr["RUSSIAN",419]="Вы хотите подменить свой MAC-адрес во время этой атаки? ${normal_color}${visual_choice}" arr["GREEK",419]="Θέλετε να κρύψετε την αληθινή διεύθυνση MAC, δημιουργώντας μία ψεύτικη κατά την διάρκεια αυτής της επίθεσης; ${normal_color}${visual_choice}" - arr["ENGLISH",420]="It has been detected that you are running airgeddon inside a Docker container. During this attack hostapd is used to create a fake AP. This component often conflicts with network-manager. From inside the container, airgeddon can't handle it. If you have network-manager installed on your host machine, close it or kill the conflicting processes or you'll get an error. For more information, see the Docker section of the Wiki: ${normal_color} ${urlgithub_wiki}/Docker" + arr["ENGLISH",420]="It has been detected that you are running airgeddon inside a Docker container. During this attack hostapd is used to create a fake AP. This component often conflicts with network-manager. From inside the container, airgeddon can't handle it. If you have network-manager installed on your host machine, close it or kill the conflicting processes or you'll get an error. For more information, see the Docker section of the Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["SPANISH",420]="Se ha detectado que estás ejecutando airgeddon en un contenedor de Docker. En este ataque se utiliza hostapd para crear un falso AP. Este componente suele dar conflicto con network-manager. Desde el contenedor, airgeddon no puede gestionarlo. Si tienes network-manager instalado en tu máquina host, ciérralo o mata los procesos en conflicto u obtendrás un error. Para más información consulta la sección Docker del Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["FRENCH",420]="Il a été détecté qu'airgeddon a été lancé depuis un conteneur Docker. Cette attaque à besoin d'hostapd pour créer un Point d'Accès piège. Hostapd a tendance à entrer en conflit avec network-manager et airgeddon ne peut pas le gérer depuis le conteneur. Si network-manager est installé sur votre machine host, arrêtez ou tuez les processus conflictuels. Dans le cas contraire vous obtiendrez une erreur. Pour plus d'informations, consultez la section Docker de notre Wiki: ${normal_color}${urlgithub_wiki}/Docker" arr["CATALAN",420]="S'ha detectat que estàs executant airgeddon en un contenidor de Docker. En aquest atac s'utilitza hostapd per crear un fals AP. Aquest component sol donar conflicte amb network-manager. Des del contenidor, airgeddon no pot gestionar-lo. Si tens network-manager instal·lat a la teua màquina host, tanca'l o mata els processos en conflicte u obtindràs un error. Per a més informació consulta la secció Docker del Wiki: ${normal_color}${urlgithub_wiki}/Docker" @@ -3849,6 +3876,62 @@ function language_strings() { arr["RUSSIAN",435]="Ошибка при попытке изменить режим интерфейса. Во время этого процесса имя интерфейса должно быть изменено, но похоже, что у вас уже есть интерфейс, занимающий нужное имя (${normal_color}${desired_interface_name}${red_color})" arr["GREEK",435]="Προέκυψε σφάλμα καθώς άλλαζε η κατάσταση της διεπαφής. Κατά τη διάρκεια της διαδικασίας, το όνομα της διεπαφής πρέπει να αλλάξει, αλλά φαίνεται ότι έχετε ήδη μια διεπαφή που έχει το όνομα που θα χρειαζόταν (${normal_color}${desired_interface_name}${red_color})" + arr["ENGLISH",436]="The hashcat version you have installed (${hashcat_version}) is greater or equal than ${hashcat_hccapx_version} so you need to convert the capture files to \"hccapx\" format, airgeddon will do this automatically. To do this you need a converter that is not present on your system (hashcat-utils package), install it to be able to perform this attack" + arr["SPANISH",436]="La versión de hashcat que tienes instalada (${hashcat_version}) es igual o superior a la ${hashcat_hccapx_version} por lo que es necesario convertir los ficheros de captura a formato \"hccapx\", airgeddon lo hará automáticamente. Pero para ello hace falta un conversor que no está presente en tu sistema (paquete hashcat-utils), instálalo para poder realizar este ataque" + arr["FRENCH",436]="La Version d'hashcat installée (${hashcat_version}) est égale ou supérieure à la version ${hashcat_hccapx_version}. Il est nécessaire dans ce cas de convertir les captures au format \"hccapx\", ce que fera automatiquement airgeddon. Il faut pour cela un convertisseur qui n'est pas installé dans votre système (paquet hashcat-utils). Veuilez l'installer pour effectuer cette attaque" + arr["CATALAN",436]="La versió de hashcat que tens instal·lada (${hashcat_version}) és igual o superior a la ${hashcat_hccapx_version} pel que cal convertir els fitxers de captura a format \"hccapx\", airgeddon ho farà automàticament. Però per a això cal un convertidor que no està present al sistema (paquet hashcat-utils), instal·lal per poder realitzar aquest atac" + arr["PORTUGUESE",436]="A versão do hashcat instalada (${hashcat_version}) é maior ou igual a ${hashcat_hccapx_version}, portanto é necessário convertermos o arquivo de captura para o formato \"hccapx\", airgeddon fará isso automaticamente. Mas isso requer um conversor que não está instalado no seu sistema (pacote hashcat-utils), instale-o para realizar este ataque" + arr["RUSSIAN",436]="Установленная версия hashcat (${hashcat_version}) больше или равна ${hashcat_hccapx_version}, поэтому вам нужно конвертировать файлы захвата в формат \"hccapx\", airgeddon сделает это автоматически. Для этого вам нужен конвертер, которого нет в вашей системе (пакет hashcat-utils), установите его, чтобы иметь возможность выполнить эту атаку" + arr["GREEK",436]="Η έκδοση του hashcat που έχετε εγκαταστήσει (${hashcat_version}) είναι ίδια ή νεότερη από την έκδοση ${hashcat_hccapx_version}, άρα το airgeddon θα μετατρέψει τα αρχεία καταγραφής σε \"hccapx\" για να συνεχιστεί η διαδικασία. Για να επιτευχθεί αυτό χρειάζεστε ένα μετατροπέα που δεν υπάρχει στο σύστημά σας (περιέχεται στο πακέτο hashcat-utils), εγκαταστήστε το για να εκτελέσετε αυτήν την επίθεση" + + arr["ENGLISH",437]="If you enjoyed the script and found it useful, you can support the project by making a donation. Through Paypal (${mail}) or sending a fraction of a bitcoin (${bitcoin}). Any amount, no matter how small (1, 2, 5 $/€) is welcome. More information and direct links to do it at: ${urlgithub_wiki}/Contributing" + arr["SPANISH",437]="Si te gustó el script y te pareció útil, puedes apoyar el proyecto haciendo una donación. A través de Paypal (${normal_color}${mail}${pink_color}) o enviando una fracción de bitcoin (${normal_color}${bitcoin}${pink_color}). Cualquier cantidad por pequeña que sea (1, 2, 5 $/€) es bien recibida. Más información y enlaces directos para realizarla en: ${normal_color}${urlgithub_wiki}/Contributing" + arr["FRENCH",437]="Si le script vous a plus et que vous l'avez trouvé utile; vous pouvez soutenir le projet en faisant un don PayPal (${normal_color}${mail}${pink_color}) ou en envoyant une fraction de bitcoin (${normal_color}${bitcoin}${pink_color}). Toute contribution (1, 2, 5 $/€) est bienvenue. Pour faire un don allez à: ${normal_color}${urlgithub_wiki}/Contributing" + arr["CATALAN",437]="Si et va agradar el script i et va semblar útil, pots donar suport al projecte fent una donació. A través de Paypal (${normal_color}${mail}${pink_color}) o enviant una fracció bitcoin (${normal_color}${bitcoin}${pink_color}). Qualsevol quantitat per petita que sigui (1, 2, 5 $/€) és ben rebuda. Més informació i enllaços directes per a realitzar-la en: ${normal_color}${urlgithub_wiki}/Contributing" + arr["PORTUGUESE",437]="Se você gostou do script e o achou útil, apoie o projeto fazendo uma doação, através: do PayPal (${normal_color}${mail}${pink_color}) ou enviando uma fração de bitcoin (${normal_color}${bitcoin}${pink_color}). Qualquer quantidade, mesmo pequena (1, 2, 5 $/€) é bem-vinda. Links diretos e de com realizar em: ${urlgithub_wiki}/Contributing" + arr["RUSSIAN",437]="Если вам понравилась эта программа и она оказался для вас полезной, вы можете поддержать проект, сделав пожертвование. Через PayPal (${normal_color}${mail}${pink_color}) или отправив часть биткойна на (${normal_color}${bitcoin}${pink_color}). Приветствуется любая сумма, даже небольшая (1, 2, 5 $/€). Более подробную информацию и прямые ссылки можно получить по адресу: ${normal_color}${urlgithub_wiki}/Contributing" + arr["GREEK",437]="Εαν ευχαριστηθήκατε το script και το βρήκατε χρήσιμο, μπορείτε να υποστηρίξετε το project κάνοντας κάποια δωρεά. Μέσω του Paypal (${normal_color}${mail}${pink_color}) ή στέλνοντας κάποιο ποσοστό bitcoin (${normal_color}${bitcoin}${pink_color}). Είναι καλοδεχούμενο οποιοδήποτε ποσό (1, 2, 5 $/€), δεν έχει σημασία το πόσο λίγο μπορεί να είναι. Δίνονται περισσότερες πληροφορίες και links για να κάνετε δωρεά στη διεύθυνση: ${normal_color}${urlgithub_wiki}/Contributing" + + arr["ENGLISH",438]="We are looking for translators to other languages. If you want to see airgeddon in your native language and you also know english, contact us. More information at: ${normal_color}${urlgithub_wiki}/Contributing" + arr["SPANISH",438]="Buscamos traductores para otros idiomas. Si quieres ver airgeddon en tu lengua materna y además sabes inglés, contáctanos. Más información en: ${normal_color}${urlgithub_wiki}/Contributing" + arr["FRENCH",438]="Nous recherchons des traducteurs pour d'autres langues. Si vous voulez voir airgeddon dans votre langue maternelle et que vous connaissez l'anglais contactez-nous: ${normal_color}${urlgithub_wiki}/Contributing" + arr["CATALAN",438]="Busquem traductors per a altres idiomes. Si vols veure airgeddon en la teva llengua materna i més saps anglès, contacta'ns. Més informació a: ${normal_color}${urlgithub_wiki}/Contributing" + arr["PORTUGUESE",438]="Procuramos tradutores para outros idiomas. Se você quiser ver airgeddon em sua língua nativa e também sabe inglês, por favor contacte-nos. Mais informações: ${normal_color}${urlgithub_wiki}/Contributing" + arr["RUSSIAN",438]="Мы ищем переводчиков на другие языки. Если вы хотите увидеть airgeddon на своем родном языке, и вы знаете английский язык, пожалуйста, свяжитесь с нами. Дополнительная информация: ${normal_color}${urlgithub_wiki}/Contributing" + arr["GREEK",438]="Ψάχνουμε μεταφραστές για την υποστήριξη περισσότερων γλωσσών. Αν θέλετε να χρησιμοποιείτε το airgeddon στη μητρική σας γλώσσα, αλλά ξέρετε και αγγλικά, παρακαλούμε επικοινωνήστε μαζί μας. Περισσότερες πληροφορίες: ${normal_color}${urlgithub_wiki}/Contributing" + + arr["ENGLISH",439]="${blue_color}You haven't selected any target, you'll be prompted to input data manually. ${green_color}Do you want to continue? ${normal_color}${visual_choice}" + arr["SPANISH",439]="${blue_color}Se ha detectado que no tienes seleccionado ningún objetivo, tendrás que introducir los datos manualmente. ${green_color}¿Deseas continuar? ${normal_color}${visual_choice}" + arr["FRENCH",439]="${blue_color}Aucun objectif n'a été sélectionnéIl semble que vous avez sélectionné aucun but, vous devez saisir les données manuellement. ${green_color}Voulez-vous continuer? ${normal_color}${visual_choice}" + arr["CATALAN",439]="${blue_color}S'ha detectat que no tens seleccionat cap objectiu, hauràs d'introduir les dades manualment. ${green_color}¿Vols continuar? ${normal_color}${visual_choice}" + arr["PORTUGUESE",439]="${blue_color}Nenhum alvo foi selecionou, você será direcionado para inserir os dados manualmente. ${green_color}deseja continuar? ${normal_color}${visual_choice}" + arr["RUSSIAN",439]="${blue_color}Вы не выбрали какую-либо цель, вам будет предложено ввести данные вручную. ${green_color}Вы хотите продолжить? ${normal_color}${visual_choice}" + arr["GREEK",439]="${blue_color}Δεν έχετε επιλέξει κάποιο στόχο, θα σας ζητηθεί να εισάγετε τα δεδομένα χειροκίνητα. ${green_color}Θέλετε να συνεχίσετε; ${normal_color}${visual_choice}" + + arr["ENGLISH",440]="Aircrack trophy file generated successfully at [${normal_color}${aircrackpotenteredpath}${blue_color}]" + arr["SPANISH",440]="Fichero de trofeo aircrack generado con éxito en [${normal_color}${aircrackpotenteredpath}${blue_color}]" + arr["FRENCH",440]="Le fichier trophée aircrack a bien été crée dans [${normal_color}${aircrackpotenteredpath}${blue_color}]" + arr["CATALAN",440]="Fitxer de trofeu aircrack generat amb èxit a [${normal_color}${aircrackpotenteredpath}${blue_color}]" + arr["PORTUGUESE",440]="Arquivo de troféu aircrack gerado com sucesso [${normal_color}${aircrackpotenteredpath}${blue_color}]" + arr["RUSSIAN",440]="Трофейный файл aircrack был успешно сгенерирован в [${normal_color}${aircrackpotenteredpath}${blue_color}]" + arr["GREEK",440]="Το aircrack αρχείο τρόπαιο δημιουργήθηκε επιτυχώς [${normal_color}${aircrackpotenteredpath}${blue_color}]" + + arr["ENGLISH",441]="Type the path to store the file or press [Enter] to accept the default proposal ${normal_color}[${aircrack_potpath}]" + arr["SPANISH",441]="Escribe la ruta donde guardaremos el fichero o pulsa [Enter] para aceptar la propuesta por defecto ${normal_color}[${aircrack_potpath}]" + arr["FRENCH",441]="Entrez le chemin où vous voulez enregistrer le fichier ou bien appuyez sur [Entrée] pour utiliser le chemin proposé ${normal_color}[${aircrack_potpath}]" + arr["CATALAN",441]="Escriu la ruta on guardarem el fitxer o prem [Enter] per acceptar la proposta per defecte ${normal_color}[${aircrack_potpath}]" + arr["PORTUGUESE",441]="Digite o caminho onde armazenar o arquivo ou pressione [Enter] para aceitar o padrão ${normal_color}[${aircrack_potpath}]" + arr["RUSSIAN",441]="Напечатайте путь к сохранённому файлу или нажмите [Enter] для принятия предложения по умолчанию ${normal_color}[${aircrack_potpath}]" + arr["GREEK",441]="Πληκτρολογήστε το μονοπάτι για την αποθήκευση του αρχείου ή πατήστε [Enter] για την προεπιλεγμένη επιλογή ${normal_color}[${aircrack_potpath}]" + + arr["ENGLISH",442]="If you install ccze you'll see some parts of airgeddon in a colorized way with better aspect. It's not a requirement or a dependency, but it will improve the user experience" + arr["SPANISH",442]="Si instalas el paquete ccze podrás ver algunas partes de airgeddon colorizadas y con mejor aspecto. No es un requerimiento ni una dependencia, pero mejorará la experiencia de usuario" + arr["FRENCH",442]="L'installation du paquet ccze améliore le rendu graphique d'airgeddon. Ce n'est pas un prérequis mais un petit plus pour rendre l’utilisation d'airgeddon plus agréable." + arr["CATALAN",442]="Si instal·les el paquet ccze podràs veure algunes parts de airgeddon coloriçades i amb millor aspecte. No és un requeriment ni una dependència, però millorarà l'experiència d'usuari" + arr["PORTUGUESE",442]="Se você instalar o pacote ccze poderá ver algumas partes do airgeddon coloridas e mais bonitas. Não é uma exigência nem uma dependência, mas melhora a experiência do usuário" + arr["RUSSIAN",442]="Если вы установите ccze, то некоторые цветные элементы airgeddon будут выглядеть лучше. Это не требование или зависимость, но это улучшит работу пользователя" + arr["GREEK",442]="Αν εγκαταστήσετε το ccze θα δείτε μερικά κομμάτια του airgeddon, πολύχρωμα με καλύτερη εμφάνιση. Δεν είναι απαραίτητο dependency, αλλά θα βελτιώσει την εμπειρία του χρήστη" + case "${3}" in "yellow") interrupt_checkpoint "${2}" "${3}"