From fbecd38a00466758e8ae7f5af7ba2799bb0d822a Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Thu, 5 Oct 2023 14:53:42 +0200 Subject: [PATCH 01/74] Remove useless process killing and set 2 #TODO tasks --- airgeddon.sh | 34 +++------------------------------- 1 file changed, 3 insertions(+), 31 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index 2ae285789..577195663 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -9597,12 +9597,6 @@ function launch_fake_ap() { debug_print - if [ -n "${enterprise_mode}" ]; then - kill "$(ps -C hostapd-wpe --no-headers -o pid | tr -d ' ')" &> /dev/null - else - kill "$(ps -C hostapd --no-headers -o pid | tr -d ' ')" &> /dev/null - fi - if "${AIRGEDDON_FORCE_NETWORK_MANAGER_KILLING:-true}"; then ${airmon} check kill > /dev/null 2>&1 nm_processes_killed=1 @@ -9880,8 +9874,6 @@ function launch_dhcp_server() { debug_print - kill "$(ps -C dhcpd --no-headers -o pid | tr -d ' ')" &> /dev/null - recalculate_windows_sizes case ${et_mode} in "et_onlyap") @@ -9915,17 +9907,14 @@ function exec_et_deauth() { case ${et_dos_attack} in "${mdk_command}") - kill "$(ps -C "${mdk_command}" --no-headers -o pid | tr -d ' ')" &> /dev/null rm -rf "${tmpdir}bl.txt" > /dev/null 2>&1 echo "${bssid}" > "${tmpdir}bl.txt" deauth_et_cmd="${mdk_command} ${iface_monitor_et_deauth} d -b ${tmpdir}\"bl.txt\" -c ${channel}" ;; "Aireplay") - kill "$(ps -C aireplay-ng --no-headers -o pid | tr -d ' ')" &> /dev/null deauth_et_cmd="aireplay-ng --deauth 0 -a ${bssid} --ignore-negative-one ${iface_monitor_et_deauth}" ;; "Wds Confusion") - kill "$(ps -C "${mdk_command}" --no-headers -o pid | tr -d ' ')" &> /dev/null deauth_et_cmd="${mdk_command} ${iface_monitor_et_deauth} w -e ${essid} -c ${channel}" ;; esac @@ -10727,7 +10716,7 @@ function set_et_control_script() { readarray -t ET_PROCESSES_TO_KILL < <(cat < "${path_to_processes}" 2> /dev/null) for item in "${ET_PROCESSES_TO_KILL[@]}"; do - kill "${item}" &> /dev/null + kill -9 "${item}" &> /dev/null done } @@ -10839,6 +10828,7 @@ function set_et_control_script() { cat >&7 <<-'EOF' kill_et_windows + #TODO changes on kill_et_windows to avoid the below killing kill "$(ps -C hostapd --no-headers -o pid | tr -d ' ')" &> /dev/null kill "$(ps -C dhcpd --no-headers -o pid | tr -d ' ')" &> /dev/null kill "$(ps -C "${mdk_command}" --no-headers -o pid | tr -d ' ')" &> /dev/null @@ -11433,7 +11423,6 @@ function launch_webserver() { debug_print - kill "$(ps -C lighttpd --no-headers -o pid | tr -d ' ')" &> /dev/null recalculate_windows_sizes lighttpd_window_position=${g4_bottomright_window} manage_output "-hold -bg \"#000000\" -fg \"#FFFF00\" -geometry ${lighttpd_window_position} -T \"Webserver\"" "lighttpd -D -f \"${tmpdir}${webserver_file}\"" "Webserver" @@ -11584,6 +11573,7 @@ function kill_beef() { debug_print local beef_pid + #TODO check how to do this more clean for multi_instance beef_pid="$(ps -C "${optional_tools_names[17]}" --no-headers -o pid | tr -d ' ')" if ! kill "${beef_pid}" &> /dev/null; then if ! kill "$(ps -C "beef" --no-headers -o pid | tr -d ' ')" &> /dev/null; then @@ -11982,14 +11972,6 @@ function kill_et_windows() { if [ "${dos_pursuit_mode}" -eq 1 ]; then kill_dos_pursuit_mode_processes - case ${et_dos_attack} in - "${mdk_command}"|"Wds Confusion") - kill "$(ps -C "${mdk_command}" --no-headers -o pid | tr -d ' ')" &> /dev/null - ;; - "Aireplay") - kill "$(ps -C aireplay-ng --no-headers -o pid | tr -d ' ')" &> /dev/null - ;; - esac fi for item in "${et_processes[@]}"; do @@ -11998,12 +11980,8 @@ function kill_et_windows() { if [ -n "${enterprise_mode}" ]; then 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 "$(ps -C hostapd --no-headers -o pid | tr -d ' ')" &> /dev/null - kill "$(ps -C dnsmasq --no-headers -o pid | tr -d ' ')" &> /dev/null - kill "$(ps -C lighttpd --no-headers -o pid | tr -d ' ')" &> /dev/null fi if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then @@ -14290,9 +14268,6 @@ function exit_script_option() { action_on_exit_taken=1 language_strings "${language}" 297 "multiline" clean_routing_rules - kill "$(ps -C dhcpd --no-headers -o pid | tr -d ' ')" &> /dev/null - kill "$(ps -C hostapd --no-headers -o pid | tr -d ' ')" &> /dev/null - kill "$(ps -C lighttpd --no-headers -o pid | tr -d ' ')" &> /dev/null kill_beef time_loop echo -e "${green_color} Ok\r${normal_color}" @@ -14343,9 +14318,6 @@ function hardcore_exit() { if [ "${routing_modified}" -eq 1 ]; then clean_routing_rules - kill "$(ps -C dhcpd --no-headers -o pid | tr -d ' ')" &> /dev/null - kill "$(ps -C hostapd --no-headers -o pid | tr -d ' ')" &> /dev/null - kill "$(ps -C lighttpd --no-headers -o pid | tr -d ' ')" &> /dev/null kill_beef fi From 4c866fe8afa317a2ae4f0420a529f4f7200fb81e Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Sat, 14 Oct 2023 20:34:21 +0200 Subject: [PATCH 02/74] Add multi-instance file managing system --- airgeddon.sh | 165 ++++++++++++++++++++++++--------------------------- 1 file changed, 78 insertions(+), 87 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index 577195663..695b8e66a 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -141,7 +141,6 @@ standardpmkid_filename="pmkid_hash.txt" standardpmkidcap_filename="pmkid.cap" timeout_capture_handshake="20" timeout_capture_pmkid="25" -tmpdir="/tmp/" osversionfile_dir="/etc/" plugins_dir="plugins/" minimum_bash_version_required="4.2" @@ -720,6 +719,7 @@ function debug_print() { "generate_dynamic_line" "initialize_colors" "initialize_script_settings" + "instance_setter" "interrupt_checkpoint" "language_strings" "last_echo" @@ -1039,7 +1039,6 @@ function wash_json_scan() { debug_print - tmpfiles_toclean=1 rm -rf "${tmpdir}wps_json_data.txt" > /dev/null 2>&1 rm -rf "${tmpdir}wps_fifo" > /dev/null 2>&1 @@ -3137,7 +3136,6 @@ function create_certificates_config_files() { debug_print - tmpfiles_toclean=1 rm -rf "${tmpdir}${certsdir}" > /dev/null 2>&1 mkdir "${tmpdir}${certsdir}" > /dev/null 2>&1 @@ -3545,8 +3543,6 @@ function prepare_wep_attack() { debug_print - tmpfiles_toclean=1 - rm -rf "${tmpdir}${wep_attack_file}" > /dev/null 2>&1 rm -rf "${tmpdir}${wep_key_handler}" > /dev/null 2>&1 rm -rf "${tmpdir}${wep_data}"* > /dev/null 2>&1 @@ -4607,7 +4603,6 @@ function exec_mdkdeauth() { language_strings "${language}" 89 "title" language_strings "${language}" 32 "green" - tmpfiles_toclean=1 rm -rf "${tmpdir}bl.txt" > /dev/null 2>&1 echo "${bssid}" > "${tmpdir}bl.txt" @@ -4639,8 +4634,6 @@ function exec_aireplaydeauth() { language_strings "${language}" 90 "title" language_strings "${language}" 32 "green" - tmpfiles_toclean=1 - echo if [ "${dos_pursuit_mode}" -eq 1 ]; then language_strings "${language}" 506 "yellow" @@ -4671,8 +4664,6 @@ function exec_wdsconfusion() { language_strings "${language}" 91 "title" language_strings "${language}" 32 "green" - tmpfiles_toclean=1 - echo if [ "${dos_pursuit_mode}" -eq 1 ]; then language_strings "${language}" 506 "yellow" @@ -4701,8 +4692,6 @@ function exec_beaconflood() { language_strings "${language}" 92 "title" language_strings "${language}" 32 "green" - tmpfiles_toclean=1 - echo if [ "${dos_pursuit_mode}" -eq 1 ]; then language_strings "${language}" 506 "yellow" @@ -4731,8 +4720,6 @@ function exec_authdos() { language_strings "${language}" 93 "title" language_strings "${language}" 32 "green" - tmpfiles_toclean=1 - echo if [ "${dos_pursuit_mode}" -eq 1 ]; then language_strings "${language}" 506 "yellow" @@ -4761,8 +4748,6 @@ function exec_michaelshutdown() { language_strings "${language}" 94 "title" language_strings "${language}" 32 "green" - tmpfiles_toclean=1 - echo if [ "${dos_pursuit_mode}" -eq 1 ]; then language_strings "${language}" 506 "yellow" @@ -5854,51 +5839,57 @@ function clean_tmpfiles() { debug_print - rm -rf "${tmpdir}bl.txt" > /dev/null 2>&1 - rm -rf "${tmpdir}target.txt" > /dev/null 2>&1 - rm -rf "${tmpdir}handshake"* > /dev/null 2>&1 - rm -rf "${tmpdir}pmkid"* > /dev/null 2>&1 - rm -rf "${tmpdir}nws"* > /dev/null 2>&1 - rm -rf "${tmpdir}clts"* > /dev/null 2>&1 - rm -rf "${tmpdir}wnws.txt" > /dev/null 2>&1 - rm -rf "${tmpdir}hctmp"* > /dev/null 2>&1 - rm -rf "${tmpdir}jtrtmp"* > /dev/null 2>&1 - rm -rf "${tmpdir}${aircrack_pot_tmp}" > /dev/null 2>&1 - rm -rf "${tmpdir}${et_processesfile}" > /dev/null 2>&1 - rm -rf "${tmpdir}${hostapd_file}" > /dev/null 2>&1 - rm -rf "${tmpdir}${hostapd_wpe_file}" > /dev/null 2>&1 - rm -rf "${tmpdir}${hostapd_wpe_log}" > /dev/null 2>&1 - rm -rf "${scriptfolder}${hostapd_wpe_default_log}" > /dev/null 2>&1 - rm -rf "${tmpdir}${dhcpd_file}" > /dev/null 2>&1 - rm -rf "${tmpdir}${dnsmasq_file}" >/dev/null 2>&1 - rm -rf "${tmpdir}${control_et_file}" > /dev/null 2>&1 - rm -rf "${tmpdir}${control_enterprise_file}" > /dev/null 2>&1 - rm -rf "${tmpdir}parsed_file" > /dev/null 2>&1 - rm -rf "${tmpdir}${ettercap_file}"* > /dev/null 2>&1 - rm -rf "${tmpdir}${bettercap_file}"* > /dev/null 2>&1 - rm -rf "${tmpdir}${bettercap_config_file}" > /dev/null 2>&1 - rm -rf "${tmpdir}${bettercap_hook_file}" > /dev/null 2>&1 - rm -rf "${tmpdir}${beef_file}" > /dev/null 2>&1 - if [ "${beef_found}" -eq 1 ]; then - rm -rf "${beef_path}${beef_file}" > /dev/null 2>&1 + if [ "${1}" = "exit_script" ]; then + rm -rf "${tmpdir}" > /dev/null 2>&1 + else + rm -rf "${tmpdir}bl.txt" > /dev/null 2>&1 + rm -rf "${tmpdir}target.txt" > /dev/null 2>&1 + rm -rf "${tmpdir}handshake"* > /dev/null 2>&1 + rm -rf "${tmpdir}pmkid"* > /dev/null 2>&1 + rm -rf "${tmpdir}nws"* > /dev/null 2>&1 + rm -rf "${tmpdir}clts"* > /dev/null 2>&1 + rm -rf "${tmpdir}wnws.txt" > /dev/null 2>&1 + rm -rf "${tmpdir}hctmp"* > /dev/null 2>&1 + rm -rf "${tmpdir}jtrtmp"* > /dev/null 2>&1 + rm -rf "${tmpdir}${aircrack_pot_tmp}" > /dev/null 2>&1 + rm -rf "${tmpdir}${et_processesfile}" > /dev/null 2>&1 + rm -rf "${tmpdir}${hostapd_file}" > /dev/null 2>&1 + rm -rf "${tmpdir}${hostapd_wpe_file}" > /dev/null 2>&1 + rm -rf "${tmpdir}${hostapd_wpe_log}" > /dev/null 2>&1 + rm -rf "${scriptfolder}${hostapd_wpe_default_log}" > /dev/null 2>&1 + rm -rf "${tmpdir}${dhcpd_file}" > /dev/null 2>&1 + rm -rf "${tmpdir}${dnsmasq_file}" >/dev/null 2>&1 + rm -rf "${tmpdir}${control_et_file}" > /dev/null 2>&1 + rm -rf "${tmpdir}${control_enterprise_file}" > /dev/null 2>&1 + rm -rf "${tmpdir}parsed_file" > /dev/null 2>&1 + rm -rf "${tmpdir}${ettercap_file}"* > /dev/null 2>&1 + rm -rf "${tmpdir}${bettercap_file}"* > /dev/null 2>&1 + rm -rf "${tmpdir}${bettercap_config_file}" > /dev/null 2>&1 + rm -rf "${tmpdir}${bettercap_hook_file}" > /dev/null 2>&1 + rm -rf "${tmpdir}${beef_file}" > /dev/null 2>&1 + rm -rf "${tmpdir}${webserver_file}" > /dev/null 2>&1 + rm -rf "${tmpdir}${webdir}" > /dev/null 2>&1 + rm -rf "${tmpdir}${certsdir}" > /dev/null 2>&1 + rm -rf "${tmpdir}${enterprisedir}" > /dev/null 2>&1 + rm -rf "${tmpdir}${asleap_pot_tmp}" > /dev/null 2>&1 + rm -rf "${tmpdir}wps"* > /dev/null 2>&1 + rm -rf "${tmpdir}${wps_attack_script_file}" > /dev/null 2>&1 + rm -rf "${tmpdir}${wps_out_file}" > /dev/null 2>&1 + rm -rf "${tmpdir}${wep_attack_file}" > /dev/null 2>&1 + rm -rf "${tmpdir}${wep_key_handler}" > /dev/null 2>&1 + rm -rf "${tmpdir}${wep_data}"* > /dev/null 2>&1 + rm -rf "${tmpdir}${wepdir}" > /dev/null 2>&1 + rm -rf "${tmpdir}dos_pm"* > /dev/null 2>&1 + rm -rf "${tmpdir}${channelfile}" > /dev/null 2>&1 fi - rm -rf "${tmpdir}${webserver_file}" > /dev/null 2>&1 - rm -rf "${tmpdir}${webdir}" > /dev/null 2>&1 - rm -rf "${tmpdir}${certsdir}" > /dev/null 2>&1 - rm -rf "${tmpdir}${enterprisedir}" > /dev/null 2>&1 - rm -rf "${tmpdir}${asleap_pot_tmp}" > /dev/null 2>&1 + if [ "${dhcpd_path_changed}" -eq 1 ]; then rm -rf "${dhcp_path}" > /dev/null 2>&1 fi - rm -rf "${tmpdir}wps"* > /dev/null 2>&1 - rm -rf "${tmpdir}${wps_attack_script_file}" > /dev/null 2>&1 - rm -rf "${tmpdir}${wps_out_file}" > /dev/null 2>&1 - rm -rf "${tmpdir}${wep_attack_file}" > /dev/null 2>&1 - rm -rf "${tmpdir}${wep_key_handler}" > /dev/null 2>&1 - rm -rf "${tmpdir}${wep_data}"* > /dev/null 2>&1 - rm -rf "${tmpdir}${wepdir}" > /dev/null 2>&1 - rm -rf "${tmpdir}dos_pm"* > /dev/null 2>&1 - rm -rf "${tmpdir}${channelfile}" > /dev/null 2>&1 + + if [ "${beef_found}" -eq 1 ]; then + rm -rf "${beef_path}${beef_file}" > /dev/null 2>&1 + fi } #Manage cleaning firewall rules and restore orginal routing state @@ -6136,6 +6127,28 @@ function print_hint() { print_simple_separator } +#Detect number of the alive airgeddon instances and set the next one if apply +function instance_setter() { + + debug_print + + local dir_number="1" + local airgeddon_instance_dir="ag${dir_number}/" + + if [[ -d "/tmp/${airgeddon_instance_dir}" ]]; then + while true; do + ((dir_number++)) + airgeddon_instance_dir="ag${dir_number}/" + if [[ ! -d "/tmp/${airgeddon_instance_dir}" ]]; then + break + fi + done + fi + + tmpdir="/tmp/${airgeddon_instance_dir}" + mkdir -p "${tmpdir}" > /dev/null 2>&1 +} + #airgeddon main menu function main_menu() { @@ -9031,7 +9044,6 @@ function exec_jtr_dictionary_attack() { debug_print - tmpfiles_toclean=1 rm -rf "${tmpdir}jtrtmp"* > /dev/null 2>&1 jtr_cmd="john \"${jtrenterpriseenteredpath}\" --format=netntlm-naive --wordlist=\"${DICTIONARY}\" --pot=\"${tmpdir}${jtr_pot_tmp}\" --encoding=UTF-8 | tee \"${tmpdir}${jtr_output_file}\" ${colorize}" @@ -9044,7 +9056,6 @@ function exec_jtr_bruteforce_attack() { debug_print - tmpfiles_toclean=1 rm -rf "${tmpdir}jtrtmp"* > /dev/null 2>&1 jtr_cmd="crunch \"${minlength}\" \"${maxlength}\" \"${charset}\" | john \"${jtrenterpriseenteredpath}\" --stdin --format=netntlm-naive --pot=\"${tmpdir}${jtr_pot_tmp}\" --encoding=UTF-8 | tee \"${tmpdir}${jtr_output_file}\" ${colorize}" @@ -9060,11 +9071,9 @@ function exec_hashcat_dictionary_attack() { if [ "${1}" = "personal_handshake" ]; then hashcat_cmd="hashcat -m ${hashcat_handshake_cracking_plugin} -a 0 \"${tmpdir}${hashcat_tmp_file}\" \"${DICTIONARY}\" --potfile-disable -o \"${tmpdir}${hashcat_pot_tmp}\"${hashcat_cmd_fix} | tee \"${tmpdir}${hashcat_output_file}\" ${colorize}" elif [ "${1}" = "personal_pmkid" ]; then - tmpfiles_toclean=1 rm -rf "${tmpdir}hctmp"* > /dev/null 2>&1 hashcat_cmd="hashcat -m ${hashcat_pmkid_cracking_plugin} -a 0 \"${hashcatpmkidenteredpath}\" \"${DICTIONARY}\" --potfile-disable -o \"${tmpdir}${hashcat_pot_tmp}\"${hashcat_cmd_fix} | tee \"${tmpdir}${hashcat_output_file}\" ${colorize}" else - tmpfiles_toclean=1 rm -rf "${tmpdir}hctmp"* > /dev/null 2>&1 hashcat_cmd="hashcat -m ${hashcat_enterprise_cracking_plugin} -a 0 \"${hashcatenterpriseenteredpath}\" \"${DICTIONARY}\" --potfile-disable -o \"${tmpdir}${hashcat_pot_tmp}\"${hashcat_cmd_fix} | tee \"${tmpdir}${hashcat_output_file}\" ${colorize}" fi @@ -9080,11 +9089,9 @@ function exec_hashcat_bruteforce_attack() { if [ "${1}" = "personal_handshake" ]; then hashcat_cmd="hashcat -m ${hashcat_handshake_cracking_plugin} -a 3 \"${tmpdir}${hashcat_tmp_file}\" ${charset} --increment --increment-min=${minlength} --increment-max=${maxlength} --potfile-disable -o \"${tmpdir}${hashcat_pot_tmp}\"${hashcat_cmd_fix} | tee \"${tmpdir}${hashcat_output_file}\" ${colorize}" elif [ "${1}" = "personal_pmkid" ]; then - tmpfiles_toclean=1 rm -rf "${tmpdir}hctmp"* > /dev/null 2>&1 hashcat_cmd="hashcat -m ${hashcat_pmkid_cracking_plugin} -a 3 \"${hashcatpmkidenteredpath}\" ${charset} --increment --increment-min=${minlength} --increment-max=${maxlength} --potfile-disable -o \"${tmpdir}${hashcat_pot_tmp}\"${hashcat_cmd_fix} | tee \"${tmpdir}${hashcat_output_file}\" ${colorize}" else - tmpfiles_toclean=1 rm -rf "${tmpdir}hctmp"* > /dev/null 2>&1 hashcat_cmd="hashcat -m ${hashcat_enterprise_cracking_plugin} -a 3 \"${hashcatenterpriseenteredpath}\" ${charset} --increment --increment-min=${minlength} --increment-max=${maxlength} --potfile-disable -o \"${tmpdir}${hashcat_pot_tmp}\"${hashcat_cmd_fix} | tee \"${tmpdir}${hashcat_output_file}\" ${colorize}" fi @@ -9100,11 +9107,9 @@ function exec_hashcat_rulebased_attack() { if [ "${1}" = "personal_handshake" ]; then hashcat_cmd="hashcat -m ${hashcat_handshake_cracking_plugin} -a 0 \"${tmpdir}${hashcat_tmp_file}\" \"${DICTIONARY}\" -r \"${RULES}\" --potfile-disable -o \"${tmpdir}${hashcat_pot_tmp}\"${hashcat_cmd_fix} | tee \"${tmpdir}${hashcat_output_file}\" ${colorize}" elif [ "${1}" = "personal_pmkid" ]; then - tmpfiles_toclean=1 rm -rf "${tmpdir}hctmp"* > /dev/null 2>&1 hashcat_cmd="hashcat -m ${hashcat_pmkid_cracking_plugin} -a 0 \"${hashcatpmkidenteredpath}\" \"${DICTIONARY}\" -r \"${RULES}\" --potfile-disable -o \"${tmpdir}${hashcat_pot_tmp}\"${hashcat_cmd_fix} | tee \"${tmpdir}${hashcat_output_file}\" ${colorize}" else - tmpfiles_toclean=1 rm -rf "${tmpdir}hctmp"* > /dev/null 2>&1 hashcat_cmd="hashcat -m ${hashcat_enterprise_cracking_plugin} -a 0 \"${hashcatenterpriseenteredpath}\" \"${DICTIONARY}\" -r \"${RULES}\" --potfile-disable -o \"${tmpdir}${hashcat_pot_tmp}\"${hashcat_cmd_fix} | tee \"${tmpdir}${hashcat_output_file}\" ${colorize}" fi @@ -9450,7 +9455,6 @@ function set_bettercap_config() { debug_print - tmpfiles_toclean=1 rm -rf "${tmpdir}${bettercap_config_file}" > /dev/null 2>&1 if [ "${et_mode}" = "et_sniffing_sslstrip2_beef" ]; then @@ -9503,7 +9507,6 @@ function set_hostapd_config() { debug_print - tmpfiles_toclean=1 rm -rf "${tmpdir}${hostapd_file}" > /dev/null 2>&1 local digit_to_change @@ -9541,7 +9544,6 @@ function set_hostapd_wpe_config() { debug_print - tmpfiles_toclean=1 rm -rf "${tmpdir}${hostapd_wpe_file}" > /dev/null 2>&1 different_mac_digit=$(tr -dc A-F0-9 < /dev/urandom | fold -w2 | head -n 100 | grep -v "${bssid:10:1}" | head -c 1) @@ -9681,7 +9683,6 @@ function set_dhcp_config() { et_range_stop=${alt_range_stop} fi - tmpfiles_toclean=1 rm -rf "${tmpdir}${dhcpd_file}" > /dev/null 2>&1 rm -rf "${tmpdir}clts.txt" > /dev/null 2>&1 ip link set "${interface}" up > /dev/null 2>&1 @@ -9961,7 +9962,6 @@ function set_wps_attack_script() { debug_print - tmpfiles_toclean=1 rm -rf "${tmpdir}${wps_attack_script_file}" > /dev/null 2>&1 rm -rf "${tmpdir}${wps_out_file}" > /dev/null 2>&1 @@ -10975,7 +10975,6 @@ function launch_dns_blackhole() { recalculate_windows_sizes - tmpfiles_toclean=1 rm -rf "${tmpdir}${dnsmasq_file}" > /dev/null 2>&1 { @@ -11466,7 +11465,6 @@ function set_beef_config() { debug_print - tmpfiles_toclean=1 rm -rf "${tmpdir}${beef_file}" > /dev/null 2>&1 beef_db_path="" @@ -11573,7 +11571,7 @@ function kill_beef() { debug_print local beef_pid - #TODO check how to do this more clean for multi_instance + #TODO changes here beef_pid="$(ps -C "${optional_tools_names[17]}" --no-headers -o pid | tr -d ' ')" if ! kill "${beef_pid}" &> /dev/null; then if ! kill "$(ps -C "beef" --no-headers -o pid | tr -d ' ')" &> /dev/null; then @@ -12023,7 +12021,6 @@ function convert_cap_to_hashcat_format() { debug_print - tmpfiles_toclean=1 rm -rf "${tmpdir}hctmp"* > /dev/null 2>&1 if [ "${hccapx_needed}" -eq 0 ]; then echo "1" | timeout -s SIGTERM 3 aircrack-ng "${enteredpath}" -J "${tmpdir}${hashcat_tmp_simple_name_file}" -b "${bssid}" > /dev/null 2>&1 @@ -13142,7 +13139,6 @@ function explore_for_targets_option() { fi language_strings "${language}" 115 "read" - tmpfiles_toclean=1 rm -rf "${tmpdir}nws"* > /dev/null 2>&1 rm -rf "${tmpdir}clts.csv" > /dev/null 2>&1 @@ -13298,7 +13294,6 @@ function explore_for_wps_targets_option() { language_strings "${language}" 411 "yellow" language_strings "${language}" 115 "read" - tmpfiles_toclean=1 rm -rf "${tmpdir}wps"* > /dev/null 2>&1 recalculate_windows_sizes @@ -14256,13 +14251,11 @@ function exit_script_option() { echo -e "${green_color} Ok\r${normal_color}" fi - if [ "${tmpfiles_toclean}" -eq 1 ]; then - action_on_exit_taken=1 - language_strings "${language}" 164 "multiline" - clean_tmpfiles - time_loop - echo -e "${green_color} Ok\r${normal_color}" - fi + action_on_exit_taken=1 + language_strings "${language}" 164 "multiline" + clean_tmpfiles "exit_script" + time_loop + echo -e "${green_color} Ok\r${normal_color}" if [ "${routing_modified}" -eq 1 ]; then action_on_exit_taken=1 @@ -14312,9 +14305,7 @@ function hardcore_exit() { eval "${networkmanager_cmd} > /dev/null 2>&1" fi - if [ "${tmpfiles_toclean}" -eq 1 ]; then - clean_tmpfiles - fi + clean_tmpfiles "exit_script" if [ "${routing_modified}" -eq 1 ]; then clean_routing_rules @@ -15479,7 +15470,6 @@ function initialize_script_settings() { nm_processes_killed=0 airmon_fix autochanged_language=0 - tmpfiles_toclean=0 routing_modified=0 iptables_saved=0 spoofed_mac=0 @@ -16777,6 +16767,7 @@ function echo_white() { function main() { initialize_script_settings + instance_setter initialize_colors env_vars_initialization detect_distro_phase1 From 167c38c23a2173baf8c79379b3893e783ec0a00b Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Sat, 14 Oct 2023 23:21:19 +0200 Subject: [PATCH 03/74] Prepare #TODOs to solve bettercap and beef processess killing --- airgeddon.sh | 30 +++++------------------------- 1 file changed, 5 insertions(+), 25 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index 695b8e66a..c4daf8958 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -9400,7 +9400,6 @@ function exec_et_sniffing_sslstrip2_beef_attack() { language_strings "${language}" 298 "yellow" language_strings "${language}" 115 "read" - kill_beef kill_et_windows if [ "${dos_pursuit_mode}" -eq 1 ]; then @@ -10828,11 +10827,8 @@ function set_et_control_script() { cat >&7 <<-'EOF' kill_et_windows - #TODO changes on kill_et_windows to avoid the below killing + #TODO delete below lines when changes on kill_et_windows are in place (tree pid search finished) kill "$(ps -C hostapd --no-headers -o pid | tr -d ' ')" &> /dev/null - kill "$(ps -C dhcpd --no-headers -o pid | tr -d ' ')" &> /dev/null - kill "$(ps -C "${mdk_command}" --no-headers -o pid | tr -d ' ')" &> /dev/null - kill "$(ps -C aireplay-ng --no-headers -o pid | tr -d ' ')" &> /dev/null kill "$(ps -C dnsmasq --no-headers -o pid | tr -d ' ')" &> /dev/null kill "$(ps -C lighttpd --no-headers -o pid | tr -d ' ')" &> /dev/null EOF @@ -11564,22 +11560,6 @@ function set_beef_config() { } >> "${tmpdir}${beef_file}" } -#Kill beef process -#shellcheck disable=SC2009 -function kill_beef() { - - debug_print - - local beef_pid - #TODO changes here - beef_pid="$(ps -C "${optional_tools_names[17]}" --no-headers -o pid | tr -d ' ')" - if ! kill "${beef_pid}" &> /dev/null; then - if ! kill "$(ps -C "beef" --no-headers -o pid | tr -d ' ')" &> /dev/null; then - kill "$(ps -C "ruby" --no-headers -o pid,cmd | grep "beef" | awk '{print $1}')" &> /dev/null - fi - fi -} - #Detects if your beef is Flexible Brainfuck interpreter instead of BeEF function detect_fake_beef() { @@ -11746,8 +11726,6 @@ function launch_beef() { debug_print - kill_beef - if [ "${beef_found}" -eq 0 ]; then start_beef_service fi @@ -11776,6 +11754,8 @@ function launch_beef() { et_processes+=($!) fi + #TODO here, add beef pid to et_processes array when the tree pid search function is done + sleep 2 } @@ -11833,6 +11813,8 @@ function launch_bettercap_sniffing() { else et_processes+=($!) fi + + #TODO here, add bettercap pid to et_processes array when the tree pid search function is done } #Parse ettercap log searching for captured passwords @@ -14261,7 +14243,6 @@ function exit_script_option() { action_on_exit_taken=1 language_strings "${language}" 297 "multiline" clean_routing_rules - kill_beef time_loop echo -e "${green_color} Ok\r${normal_color}" fi @@ -14309,7 +14290,6 @@ function hardcore_exit() { if [ "${routing_modified}" -eq 1 ]; then clean_routing_rules - kill_beef fi if [[ "${spoofed_mac}" -eq 1 ]] && [[ "${ifacemode}" = "Managed" ]]; then From 2712ff52bdac2fdc15b5db8964ee313f2b5a3738 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Sat, 14 Oct 2023 23:22:34 +0200 Subject: [PATCH 04/74] Solve error on exiting while restoring routing rules (caused two commits ago) --- airgeddon.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index c4daf8958..e21065b9d 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -14233,12 +14233,6 @@ function exit_script_option() { echo -e "${green_color} Ok\r${normal_color}" fi - action_on_exit_taken=1 - language_strings "${language}" 164 "multiline" - clean_tmpfiles "exit_script" - time_loop - echo -e "${green_color} Ok\r${normal_color}" - if [ "${routing_modified}" -eq 1 ]; then action_on_exit_taken=1 language_strings "${language}" 297 "multiline" @@ -14247,6 +14241,12 @@ function exit_script_option() { echo -e "${green_color} Ok\r${normal_color}" fi + action_on_exit_taken=1 + language_strings "${language}" 164 "multiline" + clean_tmpfiles "exit_script" + time_loop + echo -e "${green_color} Ok\r${normal_color}" + if [[ "${spoofed_mac}" -eq 1 ]] && [[ "${ifacemode}" = "Managed" ]]; then language_strings "${language}" 418 "multiline" restore_spoofed_macs From f977a8ac47a8f50c57629fdcd4d86db070225c31 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 20 Oct 2023 00:22:45 +0200 Subject: [PATCH 05/74] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e8d65f10..e46afc34a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ### 11.22 - Improvement on process killing on Evil Twin attacks + - Added Multi-instance support to launch more than one airgeddon at a time ### 11.21 - Chinese language translation added (Thank you to "zcbxx") From 9c0b45395a64abe66f49c713bfa10fe94762be9e Mon Sep 17 00:00:00 2001 From: masipro Date: Wed, 1 Nov 2023 06:31:50 +0100 Subject: [PATCH 06/74] Improvement of the process kill function in et attack --- airgeddon.sh | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index bd3ad6577..f57034191 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -10711,11 +10711,18 @@ function set_et_control_script() { EOF cat >&7 <<-'EOF' - function kill_et_windows() { + function kill_et_processes_control_script() { + local parent_pid="" + local child_pids="" readarray -t ET_PROCESSES_TO_KILL < <(cat < "${path_to_processes}" 2> /dev/null) for item in "${ET_PROCESSES_TO_KILL[@]}"; do - kill -9 "${item}" &> /dev/null + parent_pid=${item} + child_pids=$(pgrep -P ${parent_pid}) + if [ -n "${child_pids}" ]; then + pkill -P ${parent_pid} &> /dev/null + fi + kill -9 ${parent_pid} &> /dev/null done } @@ -10826,11 +10833,7 @@ function set_et_control_script() { EOF cat >&7 <<-'EOF' - kill_et_windows - #TODO delete below lines when changes on kill_et_windows are in place (tree pid search finished) - kill "$(ps -C hostapd --no-headers -o pid | tr -d ' ')" &> /dev/null - kill "$(ps -C dnsmasq --no-headers -o pid | tr -d ' ')" &> /dev/null - kill "$(ps -C lighttpd --no-headers -o pid | tr -d ' ')" &> /dev/null + kill_et_processes_control_script EOF if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then @@ -11957,7 +11960,14 @@ function kill_et_windows() { fi for item in "${et_processes[@]}"; do - kill "${item}" &> /dev/null + local parent_pid="" + local child_pids="" + parent_pid=${item} + child_pids=$(pgrep -P ${parent_pid}) + if [ -n "${child_pids}" ]; then + pkill -P ${parent_pid} &> /dev/null + fi + kill -9 ${parent_pid} &> /dev/null done if [ -n "${enterprise_mode}" ]; then From 7702a410967a15f58e2c5bdf8248fd9ee7bf76c5 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 3 Nov 2023 00:11:37 +0100 Subject: [PATCH 07/74] Fix shellcheck warnings and modify some function comments --- airgeddon.sh | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index f57034191..660596402 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -3590,6 +3590,7 @@ function set_wep_key_script() { ;; esac } + function start_tmux_processes() { window_name="\${1}" @@ -3689,6 +3690,7 @@ function set_wep_key_script() { if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then cat >&8 <<-EOF + #Function to kill tmux windows using window name function kill_tmux_windows() { local TMUX_WINDOWS_LIST=() @@ -3838,6 +3840,7 @@ function set_wep_script() { ;; esac } + function start_tmux_processes() { window_name="\${1}" @@ -3860,6 +3863,8 @@ function set_wep_script() { tmux setw -t "\${window_name}" window-style "\${tmux_color_cmd}" tmux send-keys -t "${session_name}:\${window_name}" "\${command_line}" ENTER } + + #Function to capture PID of a process started inside tmux and setting it to a global variable function get_tmux_process_id() { local process_pid @@ -3870,6 +3875,8 @@ function set_wep_script() { done global_process_pid="\${process_pid}" } + + #Function to kill tmux windows using window name function kill_tmux_window_by_name() { if [ "\${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then tmux kill-window -t "${session_name}:\${1}" 2> /dev/null @@ -10494,6 +10501,7 @@ function set_enterprise_control_script() { if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then cat >&7 <<-EOF + #Function to kill tmux windows using window name function kill_tmux_windows() { local TMUX_WINDOWS_LIST=() @@ -10717,12 +10725,12 @@ function set_et_control_script() { local child_pids="" readarray -t ET_PROCESSES_TO_KILL < <(cat < "${path_to_processes}" 2> /dev/null) for item in "${ET_PROCESSES_TO_KILL[@]}"; do - parent_pid=${item} - child_pids=$(pgrep -P ${parent_pid}) + parent_pid="${item}" + child_pids=$(pgrep -P "${parent_pid}") if [ -n "${child_pids}" ]; then - pkill -P ${parent_pid} &> /dev/null + pkill -P "${parent_pid}" &> /dev/null fi - kill -9 ${parent_pid} &> /dev/null + kill -9 "${parent_pid}" &> /dev/null done } @@ -10737,6 +10745,7 @@ function set_et_control_script() { if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then cat >&7 <<-EOF + #Function to kill tmux windows using window name function kill_tmux_windows() { local TMUX_WINDOWS_LIST=() @@ -11962,12 +11971,12 @@ function kill_et_windows() { for item in "${et_processes[@]}"; do local parent_pid="" local child_pids="" - parent_pid=${item} - child_pids=$(pgrep -P ${parent_pid}) + parent_pid="${item}" + child_pids=$(pgrep -P "${parent_pid}") if [ -n "${child_pids}" ]; then - pkill -P ${parent_pid} &> /dev/null + pkill -P "${parent_pid}" &> /dev/null fi - kill -9 ${parent_pid} &> /dev/null + kill -9 "${parent_pid}" &> /dev/null done if [ -n "${enterprise_mode}" ]; then @@ -16450,7 +16459,7 @@ function check_internet_access() { return 1 } -#Check for access to a url using curl +#Check for access to a URL using curl function check_url_curl() { debug_print @@ -16467,7 +16476,7 @@ function check_url_curl() { return 1 } -#Check for access to a url using wget +#Check for access to a URL using wget function check_url_wget() { debug_print From f7e08d31952b46ea643cb0c1107ee58536534d5b Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 3 Nov 2023 00:13:43 +0100 Subject: [PATCH 08/74] Remove two TODOs. They were fixed on last pid killing improvement commit --- airgeddon.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index 660596402..4eba70a93 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -11768,8 +11768,6 @@ function launch_beef() { et_processes+=($!) fi - #TODO here, add beef pid to et_processes array when the tree pid search function is done - sleep 2 } @@ -11827,8 +11825,6 @@ function launch_bettercap_sniffing() { else et_processes+=($!) fi - - #TODO here, add bettercap pid to et_processes array when the tree pid search function is done } #Parse ettercap log searching for captured passwords From 2df82477f5872c6ae019463e4beb96ad5b3f14a6 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Mon, 4 Dec 2023 20:09:43 +0100 Subject: [PATCH 09/74] Adapt evil twin network ip ranges to work on multi instance --- airgeddon.sh | 73 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 42 insertions(+), 31 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index 4eba70a93..db3fd9872 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -237,23 +237,6 @@ mail="v1s1t0r.1s.h3r3@gmail.com" author="v1s1t0r" #Dhcpd, Hostapd and misc Evil Twin vars -ip_range="192.169.1.0" -alt_ip_range="192.167.1.0" -router_ip="192.169.1.1" -alt_router_ip="192.167.1.1" -broadcast_ip="192.169.1.255" -alt_broadcast_ip="192.167.1.255" -range_start="192.169.1.33" -range_stop="192.169.1.100" -alt_range_start="192.167.1.33" -alt_range_stop="192.167.1.100" -std_c_mask="255.255.255.0" -ip_mask="255.255.255.255" -std_c_mask_cidr="24" -ip_mask_cidr="32" -any_mask_cidr="0" -any_ip="0.0.0.0" -any_ipv6="::/0" loopback_ip="127.0.0.1" loopback_ipv6="::1/128" routing_tmp_file="ag.iptables_nftables" @@ -9289,6 +9272,7 @@ function exec_et_onlyap_attack() { set_hostapd_config launch_fake_ap + set_network_interface_data set_dhcp_config set_std_internet_routing_rules launch_dhcp_server @@ -9318,6 +9302,7 @@ function exec_et_sniffing_attack() { set_hostapd_config launch_fake_ap + set_network_interface_data set_dhcp_config set_std_internet_routing_rules launch_dhcp_server @@ -9351,6 +9336,7 @@ function exec_et_sniffing_sslstrip2_attack() { set_hostapd_config launch_fake_ap + set_network_interface_data set_dhcp_config set_std_internet_routing_rules launch_dhcp_server @@ -9384,6 +9370,7 @@ function exec_et_sniffing_sslstrip2_beef_attack() { set_hostapd_config launch_fake_ap + set_network_interface_data set_dhcp_config set_std_internet_routing_rules launch_dhcp_server @@ -9430,6 +9417,7 @@ function exec_et_captive_portal_attack() { set_hostapd_config launch_fake_ap + set_network_interface_data set_dhcp_config set_std_internet_routing_rules launch_dhcp_server @@ -9670,25 +9658,48 @@ function launch_fake_ap() { sleep 3 } -#Create configuration file for dhcpd -function set_dhcp_config() { +#Set network data parameters +function set_network_interface_data() { debug_print - if ! ip route | grep ${ip_range} > /dev/null; then - et_ip_range=${ip_range} - et_ip_router=${router_ip} - et_broadcast_ip=${broadcast_ip} - et_range_start=${range_start} - et_range_stop=${range_stop} - else - et_ip_range=${alt_ip_range} - et_ip_router=${alt_router_ip} - et_broadcast_ip=${alt_broadcast_ip} - et_range_start=${alt_range_start} - et_range_stop=${alt_range_stop} + std_c_mask="255.255.255.0" + ip_mask="255.255.255.255" + std_c_mask_cidr="24" + ip_mask_cidr="32" + any_mask_cidr="0" + any_ip="0.0.0.0" + any_ipv6="::/0" + + first_octet="192" + second_octet="169" + third_octet="1" + fourth_octet="0" + + ip_range="${first_octet}.${second_octet}.${third_octet}.${fourth_octet}" + + if ip route | grep ${ip_range} > /dev/null; then + while true; do + third_octet=$((third_octet + 1)) + ip_range="${first_octet}.${second_octet}.${third_octet}.${fourth_octet}" + if ! ip route | grep ${ip_range} > /dev/null; then + break + fi + done fi + et_ip_range="${ip_range}" + et_ip_router="${first_octet}.${second_octet}.${third_octet}.1" + et_broadcast_ip="${first_octet}.${second_octet}.${third_octet}.255" + et_range_start="${first_octet}.${second_octet}.${third_octet}.33" + et_range_stop="${first_octet}.${second_octet}.${third_octet}.100" +} + +#Create configuration file for dhcpd +function set_dhcp_config() { + + debug_print + rm -rf "${tmpdir}${dhcpd_file}" > /dev/null 2>&1 rm -rf "${tmpdir}clts.txt" > /dev/null 2>&1 ip link set "${interface}" up > /dev/null 2>&1 From e507f809a9e514638f36796728bc8234133ec77b Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Mon, 4 Dec 2023 20:16:27 +0100 Subject: [PATCH 10/74] Standardize some math expressions --- airgeddon.sh | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index db3fd9872..1e04d4e07 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -2654,7 +2654,7 @@ function select_secondary_interface() { return_to_et_main_menu_from_beef=1 fi return 1 - elif [[ ! ${secondary_iface} =~ ^[[:digit:]]+$ ]] || (( secondary_iface < 1 || secondary_iface > option_counter )); then + elif [[ ! ${secondary_iface} =~ ^[[:digit:]]+$ ]] || ((secondary_iface < 1 || secondary_iface > option_counter)); then if [ "${1}" = "dos_pursuit_mode" ]; then invalid_secondary_iface_selected "dos_pursuit_mode" else @@ -2729,7 +2729,7 @@ function select_interface() { print_hint ${current_menu} read -rp "> " iface - if [[ ! ${iface} =~ ^[[:digit:]]+$ ]] || (( iface < 1 || iface > option_counter )); then + if [[ ! ${iface} =~ ^[[:digit:]]+$ ]] || ((iface < 1 || iface > option_counter)); then invalid_iface_selected else option_counter2=0 @@ -6127,7 +6127,7 @@ function instance_setter() { if [[ -d "/tmp/${airgeddon_instance_dir}" ]]; then while true; do - ((dir_number++)) + dir_number=$((dir_number + 1)) airgeddon_instance_dir="ag${dir_number}/" if [[ ! -d "/tmp/${airgeddon_instance_dir}" ]]; then break @@ -7765,7 +7765,7 @@ function select_wpa_bssid_target_from_captured_file() { print_hint ${current_menu} target_network_on_file=0 - while [[ ! ${target_network_on_file} =~ ^[[:digit:]]+$ ]] || (( target_network_on_file < 1 || target_network_on_file > option_counter )); do + while [[ ! ${target_network_on_file} =~ ^[[:digit:]]+$ ]] || ((target_network_on_file < 1 || target_network_on_file > option_counter)); do echo language_strings "${language}" 3 "green" read -rp "> " target_network_on_file @@ -7900,7 +7900,7 @@ function aircrack_bruteforce_attack_option() { set_minlength_and_maxlength "personal_handshake" charset_option=0 - while [[ ! ${charset_option} =~ ^[[:digit:]]+$ ]] || (( charset_option < 1 || charset_option > 11 )); do + while [[ ! ${charset_option} =~ ^[[:digit:]]+$ ]] || ((charset_option < 1 || charset_option > 11)); do set_charset "aircrack" done @@ -7947,7 +7947,7 @@ function enterprise_jtr_bruteforce_attack_option() { set_minlength_and_maxlength "enterprise" charset_option=0 - while [[ ! ${charset_option} =~ ^[[:digit:]]+$ ]] || (( charset_option < 1 || charset_option > 11 )); do + while [[ ! ${charset_option} =~ ^[[:digit:]]+$ ]] || ((charset_option < 1 || charset_option > 11)); do set_charset "jtr" done @@ -8022,7 +8022,7 @@ function hashcat_bruteforce_attack_option() { set_minlength_and_maxlength "${1}" charset_option=0 - while [[ ! ${charset_option} =~ ^[[:digit:]]+$ ]] || (( charset_option < 1 || charset_option > 11 )); do + while [[ ! ${charset_option} =~ ^[[:digit:]]+$ ]] || ((charset_option < 1 || charset_option > 11)); do set_charset "hashcat" done @@ -8170,7 +8170,7 @@ function manage_hashcat_pot() { echo "" } >> "${potenteredpath}" - for (( x=0; x<${#enterprise_users[@]}; x++ )); do + for ((x=0; x<${#enterprise_users[@]}; x++)); do { echo "${enterprise_users[${x}]} / ${hashcat_keys[${x}]}" } >> "${potenteredpath}" @@ -8263,7 +8263,7 @@ function manage_jtr_pot() { echo "" } >> "${jtrpotenteredpath}" - for (( x=0; x<${#enterprise_users[@]}; x++ )); do + for ((x=0; x<${#enterprise_users[@]}; x++)); do { echo "${enterprise_users[${x}]} / ${jtr_keys[${x}]}" } >> "${jtrpotenteredpath}" @@ -9505,7 +9505,7 @@ function set_hostapd_config() { local digit_to_change digit_to_change="${bssid:10:1}" - (( different_mac_digit=("16#${digit_to_change}" + 1 + RANDOM % 15) % 16 )) + ((different_mac_digit=("16#${digit_to_change}" + 1 + RANDOM % 15) % 16)) et_bssid=$(printf %s%X%s\\n "${bssid::10}" "${different_mac_digit}" "${bssid:11}") { @@ -13430,9 +13430,9 @@ function explore_for_wps_targets_option() { read -rp "> " selected_wps_target_network fi - while [[ ! ${selected_wps_target_network} =~ ^[[:digit:]]+$ ]] || (( selected_wps_target_network < 1 || selected_wps_target_network > wash_counter )) || [[ ${wps_lockeds[${selected_wps_target_network}]} = "Yes" ]]; do + while [[ ! ${selected_wps_target_network} =~ ^[[:digit:]]+$ ]] || ((selected_wps_target_network < 1 || selected_wps_target_network > wash_counter)) || [[ ${wps_lockeds[${selected_wps_target_network}]} = "Yes" ]]; do - if [[ ${selected_wps_target_network} =~ ^[[:digit:]]+$ ]] && (( selected_wps_target_network >= 1 && selected_wps_target_network <= wash_counter )); then + if [[ ${selected_wps_target_network} =~ ^[[:digit:]]+$ ]] && ((selected_wps_target_network >= 1 && selected_wps_target_network <= wash_counter)); then if [ "${wps_lockeds[${selected_wps_target_network}]}" = "Yes" ]; then ask_yesno 350 "no" if [ "${yesno}" = "y" ]; then @@ -13542,7 +13542,7 @@ function select_target() { read -rp "> " selected_target_network fi - while [[ ! ${selected_target_network} =~ ^[[:digit:]]+$ ]] || (( selected_target_network < 1 || selected_target_network > i )); do + while [[ ! ${selected_target_network} =~ ^[[:digit:]]+$ ]] || ((selected_target_network < 1 || selected_target_network > i)); do echo language_strings "${language}" 72 "red" echo @@ -14344,7 +14344,7 @@ function time_loop() { debug_print echo -ne " " - for (( j=1; j<=4; j++ )); do + for ((j=1; j<=4; j++)); do echo -ne "." sleep 0.035 done From 8c2b14190dd037c8cd72bb60429416635eedcc20 Mon Sep 17 00:00:00 2001 From: masipro Date: Wed, 6 Dec 2023 11:22:18 +0100 Subject: [PATCH 11/74] Improvement of the process kill function in et attack. kill all descendant processes --- airgeddon.sh | 60 +++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 45 insertions(+), 15 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index 1a651f3fb..3838ee50f 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -10730,18 +10730,33 @@ function set_et_control_script() { EOF cat >&7 <<-'EOF' - function kill_et_processes_control_script() { + + function kill_pid_and_children_recursive() { + + debug_print local parent_pid="" local child_pids="" + + parent_pid="${1}" + child_pids=$(pgrep -P "${parent_pid}" 2> /dev/null) + + for child_pid in ${child_pids}; do + kill_pid_and_children_recursive "${child_pid}" + done + if [ -n "${child_pids}" ]; then + pkill -P "${parent_pid}" &> /dev/null + fi + + kill "${parent_pid}" &> /dev/null + wait "${parent_pid}" 2> /dev/null + } + + function kill_et_processes_control_script() { + readarray -t ET_PROCESSES_TO_KILL < <(cat < "${path_to_processes}" 2> /dev/null) for item in "${ET_PROCESSES_TO_KILL[@]}"; do - parent_pid="${item}" - child_pids=$(pgrep -P "${parent_pid}") - if [ -n "${child_pids}" ]; then - pkill -P "${parent_pid}" &> /dev/null - fi - kill -9 "${parent_pid}" &> /dev/null + kill_pid_and_children_recursive "${item}" done } @@ -11966,6 +11981,28 @@ function write_et_processes() { fi } +#Kill a given PID and all its subprocesses recursively + function kill_pid_and_children_recursive() { + + debug_print + + local parent_pid="" + local child_pids="" + + parent_pid="${1}" + child_pids=$(pgrep -P "${parent_pid}" 2> /dev/null) + + for child_pid in ${child_pids}; do + kill_pid_and_children_recursive "${child_pid}" + done + if [ -n "${child_pids}" ]; then + pkill -P "${parent_pid}" &> /dev/null + fi + + kill "${parent_pid}" &> /dev/null + wait "${parent_pid}" 2> /dev/null + } + #Kill the Evil Twin and Enterprise processes function kill_et_windows() { @@ -11976,14 +12013,7 @@ function kill_et_windows() { fi for item in "${et_processes[@]}"; do - local parent_pid="" - local child_pids="" - parent_pid="${item}" - child_pids=$(pgrep -P "${parent_pid}") - if [ -n "${child_pids}" ]; then - pkill -P "${parent_pid}" &> /dev/null - fi - kill -9 "${parent_pid}" &> /dev/null + kill_pid_and_children_recursive "${item}" done if [ -n "${enterprise_mode}" ]; then From a1d0277f33b06b109fdbc8758452c6ba2c17bf23 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Sat, 30 Dec 2023 20:44:07 +0100 Subject: [PATCH 12/74] Add airgeddon instances orchestrator feature --- airgeddon.sh | 86 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 82 insertions(+), 4 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index 3838ee50f..4c0a989ff 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -143,6 +143,8 @@ timeout_capture_handshake="20" timeout_capture_pmkid="25" osversionfile_dir="/etc/" plugins_dir="plugins/" +ag_orchestrator_file="ag.orchestrator.txt" +system_tmpdir="/tmp/" minimum_bash_version_required="4.2" resume_message=224 abort_question=12 @@ -684,6 +686,7 @@ function debug_print() { "check_pending_of_translation" "clean_env_vars" "contains_element" + "create_instance_orchestrator_file" "create_rcfile" "echo_blue" "echo_brown" @@ -701,6 +704,7 @@ function debug_print() { "flying_saucer" "generate_dynamic_line" "initialize_colors" + "initialize_instance_settings" "initialize_script_settings" "instance_setter" "interrupt_checkpoint" @@ -711,6 +715,7 @@ function debug_print() { "print_large_separator" "print_simple_separator" "read_yesno" + "register_instance_pid" "remove_warnings" "set_script_paths" "special_text_missed_optional_tool" @@ -5831,6 +5836,9 @@ function clean_tmpfiles() { if [ "${1}" = "exit_script" ]; then rm -rf "${tmpdir}" > /dev/null 2>&1 + if is_last_airgeddon_instance; then + delete_instance_orchestrator_file + fi else rm -rf "${tmpdir}bl.txt" > /dev/null 2>&1 rm -rf "${tmpdir}target.txt" > /dev/null 2>&1 @@ -6117,6 +6125,16 @@ function print_hint() { print_simple_separator } +#Initialize instances related actions +function initialize_instance_settings() { + + debug_print + + instance_setter + create_instance_orchestrator_file + register_instance_pid +} + #Detect number of the alive airgeddon instances and set the next one if apply function instance_setter() { @@ -6125,20 +6143,80 @@ function instance_setter() { local dir_number="1" local airgeddon_instance_dir="ag${dir_number}/" - if [[ -d "/tmp/${airgeddon_instance_dir}" ]]; then + if [ -d "${system_tmpdir}${airgeddon_instance_dir}" ]; then while true; do dir_number=$((dir_number + 1)) airgeddon_instance_dir="ag${dir_number}/" - if [[ ! -d "/tmp/${airgeddon_instance_dir}" ]]; then + if [ ! -d "${system_tmpdir}${airgeddon_instance_dir}" ]; then break fi done fi - tmpdir="/tmp/${airgeddon_instance_dir}" + tmpdir="${system_tmpdir}${airgeddon_instance_dir}" mkdir -p "${tmpdir}" > /dev/null 2>&1 } +#Create orchestrator file if needed +function create_instance_orchestrator_file() { + + debug_print + + if [ ! -f "${system_tmpdir}${ag_orchestrator_file}" ]; then + touch "${system_tmpdir}${ag_orchestrator_file}" > /dev/null 2>&1 + else + local airgeddon_pid_alive=0 + + readarray -t AIRGEDDON_PIDS < <(cat < "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null) + for item in "${AIRGEDDON_PIDS[@]}"; do + if ps -p "${item}" > /dev/null 2>&1; then + airgeddon_pid_alive=1 + break + fi + done + + if [ "${airgeddon_pid_alive}" -eq 0 ]; then + rm -rf "${system_tmpdir}${ag_orchestrator_file}" > /dev/null 2>&1 + touch "${system_tmpdir}${ag_orchestrator_file}" > /dev/null 2>&1 + fi + fi +} + +#Delete orchestrator file if needed +function delete_instance_orchestrator_file() { + + debug_print + + if [ -f "${system_tmpdir}${ag_orchestrator_file}" ]; then + rm -rf "${system_tmpdir}${ag_orchestrator_file}" > /dev/null 2>&1 + fi +} + +#Register instance pid into orchestrator file +function register_instance_pid() { + + debug_print + + { + echo "${BASHPID}" + } >> "${system_tmpdir}${ag_orchestrator_file}" +} + +#Check if this instance is the last airgeddon instance running +function is_last_airgeddon_instance() { + + debug_print + + readarray -t AIRGEDDON_PIDS < <(cat < "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null) + for item in "${AIRGEDDON_PIDS[@]}"; do + if [[ "${item}" != "${BASHPID}" ]] && ps -p "${item}" > /dev/null 2>&1; then + return 1 + fi + done + + return 0 +} + #airgeddon main menu function main_menu() { @@ -16805,7 +16883,7 @@ function echo_white() { function main() { initialize_script_settings - instance_setter + initialize_instance_settings initialize_colors env_vars_initialization detect_distro_phase1 From e5ed3a43991cb13b23ffd205470279e4e6737183 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Wed, 10 Jan 2024 23:23:29 +0100 Subject: [PATCH 13/74] Modify pid reading from orchestrator file. Needed for future changes --- airgeddon.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/airgeddon.sh b/airgeddon.sh index 4c0a989ff..ab0c36f84 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -6166,10 +6166,12 @@ function create_instance_orchestrator_file() { touch "${system_tmpdir}${ag_orchestrator_file}" > /dev/null 2>&1 else local airgeddon_pid_alive=0 + local agpid="" readarray -t AIRGEDDON_PIDS < <(cat < "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null) for item in "${AIRGEDDON_PIDS[@]}"; do - if ps -p "${item}" > /dev/null 2>&1; then + [[ "${item}" =~ ^(et)?([0-9]+)(rs[0-1])?$ ]] && agpid="${BASH_REMATCH[2]}" + if ps -p "${agpid}" > /dev/null 2>&1; then airgeddon_pid_alive=1 break fi From 41881be26017b439bb45e7ff76237e422825e4e6 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Thu, 11 Jan 2024 01:14:20 +0100 Subject: [PATCH 14/74] More pid reading modifications from orchestrator file. Needed for future changes --- airgeddon.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index ab0c36f84..e37ab6004 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -6209,9 +6209,12 @@ function is_last_airgeddon_instance() { debug_print - readarray -t AIRGEDDON_PIDS < <(cat < "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null) + local agpid="" + + readarray -t AIRGEDDON_PIDS < <(cat <"${system_tmpdir}${ag_orchestrator_file}" 2>/dev/null) for item in "${AIRGEDDON_PIDS[@]}"; do - if [[ "${item}" != "${BASHPID}" ]] && ps -p "${item}" > /dev/null 2>&1; then + [[ "${item}" =~ ^(et)?([0-9]+)(rs[0-1])?$ ]] && agpid="${BASH_REMATCH[2]}" + if [[ "${agpid}" != "${BASHPID}" ]] && ps -p "${agpid}" >/dev/null 2>&1; then return 1 fi done From 0fe074bd9f5b1ea16802a5af6c61ae2af66a43e3 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 12 Jan 2024 00:31:31 +0100 Subject: [PATCH 15/74] Create a function to handle evil twin marks on orchestrator file and saving/restoring original routing state --- airgeddon.sh | 63 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 57 insertions(+), 6 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index e37ab6004..2b7d1c842 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -1526,7 +1526,7 @@ function prepare_et_interface() { fi } -#Restore the state of the interfaces after Evil Twin or Enterprise process +#Restore the state of the interfaces after Evil Twin or Enterprise attack process function restore_et_interface() { debug_print @@ -1570,6 +1570,8 @@ function restore_et_interface() { fi fi fi + + control_routing_status "end" } #Unblock if possible the interface if blocked @@ -5829,6 +5831,58 @@ function clean_env_vars() { 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_FORCE_NETWORK_MANAGER_KILLING AIRGEDDON_MDK_VERSION AIRGEDDON_PLUGINS_ENABLED AIRGEDDON_DEVELOPMENT_MODE AIRGEDDON_DEBUG_MODE AIRGEDDON_WINDOWS_HANDLING } +#Control the status of the routing taking into consideration instances orchestration +function control_routing_status() { + + debug_print + + local saved_routing_status_found="" + local original_routing_status="" + local etset="" + local agpid="" + local et_still_running=0 + + if [ "${1}" = "start" ]; then + readarray -t AIRGEDDON_PIDS < <(cat < "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null) + for item in "${AIRGEDDON_PIDS[@]}"; do + [[ "${item}" =~ ^(et)?([0-9]+)(rs[0-1])?$ ]] && etset="${BASH_REMATCH[1]}" && agpid="${BASH_REMATCH[2]}" + if [ -z "${saved_routing_status_found}" ]; then + [[ "${item}" =~ ^(et)?([0-9]+)(rs[0-1])?$ ]] && saved_routing_status_found="${BASH_REMATCH[3]}" + fi + + if [[ "${BASHPID}" = "${agpid}" ]] && [[ "${etset}" != "et" ]]; then + sed -ri "s:^(${BASHPID}):et\1:" "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null + fi + done + + if [ -z "${saved_routing_status_found}" ]; then + original_routing_status=$(cat /proc/sys/net/ipv4/ip_forward) + sed -ri "s:^(et${BASHPID})$:\1rs${original_routing_status}:" "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null + fi + else + readarray -t AIRGEDDON_PIDS < <(cat < "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null) + for item in "${AIRGEDDON_PIDS[@]}"; do + [[ "${item}" =~ ^(et)?([0-9]+)(rs[0-1])?$ ]] && etset="${BASH_REMATCH[1]}" && agpid="${BASH_REMATCH[2]}" + if [ -z "${saved_routing_status_found}" ]; then + [[ "${item}" =~ ^(et)?([0-9]+)(rs[0-1])?$ ]] && saved_routing_status_found="${BASH_REMATCH[3]}" + fi + + if [[ "${BASHPID}" = "${agpid}" ]] && [[ "${etset}" = "et" ]]; then + sed -ri "s:^(et${BASHPID}):${BASHPID}:" "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null + fi + + if [[ "${BASHPID}" != "${agpid}" ]] && [[ "${etset}" = "et" ]]; then + et_still_running=1 + fi + done + + if [[ -n "${saved_routing_status_found}" ]] && [[ "${et_still_running}" -eq 0 ]]; then + original_routing_status="${saved_routing_status_found//[^0-9]/}" + echo "${original_routing_status}" > /proc/sys/net/ipv4/ip_forward 2> /dev/null + fi + fi +} + #Clean temporary files function clean_tmpfiles() { @@ -5895,10 +5949,7 @@ function clean_routing_rules() { debug_print - if [ -n "${original_routing_state}" ]; then - echo "${original_routing_state}" > /proc/sys/net/ipv4/ip_forward 2> /dev/null - fi - + control_routing_status "end" clean_initialize_iptables_nftables if [ "${iptables_saved}" -eq 1 ]; then @@ -9885,8 +9936,8 @@ function set_std_internet_routing_rules() { debug_print + control_routing_status "start" if [ "${routing_modified}" -eq 0 ]; then - original_routing_state=$(cat /proc/sys/net/ipv4/ip_forward) save_iptables_nftables fi From cf78de4f3ede1f9722ce7140fc81b907e13ce178 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 2 Feb 2024 23:31:30 +0100 Subject: [PATCH 16/74] Modify language string 297 --- language_strings.sh | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/language_strings.sh b/language_strings.sh index a5eb1f532..fdaf89a69 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -5191,19 +5191,19 @@ function initialize_language_strings() { arr["ARABIC",296]="جميع معايير الهجوم جاهزة ويمكن أن تبدأ. سيتم فتح العديد من لوحات المفاتيح ، لا تغلقها. عندما تريد إيقاف الهجوم ، اضغط على [Enter] في وحدة التحكم هذه وسيغلق البرنامج البرامج الأخرى تلقائيًا" arr["CHINESE",296]="所有参数和要求都已设置。攻击即将开始。将打开多个窗口,不要关闭任何窗口。当你想停止攻击时,在此窗口上按 [Enter],脚本将自动将它们全部关闭" - arr["ENGLISH",297]="Cleaning nftables/iptables and routing rules" - arr["SPANISH",297]="Limpiando nftables/iptables y reglas de routing" - arr["FRENCH",297]="Effacement des règles de routage nftables/iptables" - arr["CATALAN",297]="Netejant nftables/iptables i regles de routing" - arr["PORTUGUESE",297]="Limpando nftables/iptables e regras de roteamento" - arr["RUSSIAN",297]="Очистка nftables/iptables и правил маршуртизации" - arr["GREEK",297]="Γινεται καθαρισμός των nftables/iptables και των κανόνων δρομολόγησης" - arr["ITALIAN",297]="Pulendo nftables/iptables e le regole di routing" - arr["POLISH",297]="Usuwanie nftables/iptables i reguł routingu" - arr["GERMAN",297]="Bereinigung von nftables/iptables und Routing-Regeln" - arr["TURKISH",297]="Nftables/iptables ve routing rules temizleniyor" - arr["ARABIC",297]="وقواعد التوجيه nftables/iptables تنظيف" - arr["CHINESE",297]="清理 nftables/iptables 和路由规则" + arr["ENGLISH",297]="Cleaning nftables/iptables and routing rules if apply" + arr["SPANISH",297]="Limpiando nftables/iptables y reglas de routing si procede" + arr["FRENCH",297]="\${pending_of_translation} Effacement des règles de routage nftables/iptables le cas échéant" + arr["CATALAN",297]="\${pending_of_translation} Netejant nftables/iptables i regles de routing si escau" + arr["PORTUGUESE",297]="\${pending_of_translation} Limpando nftables/iptables e regras de roteamento se aplicável" + arr["RUSSIAN",297]="\${pending_of_translation} Очистка nftables/iptables и правил маршуртизации если применимо" + arr["GREEK",297]="\${pending_of_translation} Γινεται καθαρισμός των nftables/iptables και των κανόνων δρομολόγησης εάν υπάρχουν" + arr["ITALIAN",297]="\${pending_of_translation} Pulendo nftables/iptables e le regole di routing se applicabile" + arr["POLISH",297]="\${pending_of_translation} Usuwanie nftables/iptables i reguł routingu jeśli dotyczy" + arr["GERMAN",297]="\${pending_of_translation} Bereinigung von nftables/iptables und Routing-Regeln falls zutreffend" + arr["TURKISH",297]="\${pending_of_translation} nftables/iptables ve routing rules ve varsa temizleniyor" + arr["ARABIC",297]="\${pending_of_translation} وقواعد التوجيه إن أمكن nftables/iptables تنظيف" + arr["CHINESE",297]="\${pending_of_translation} 清理 nftables/iptables 和路由规则 如果适用" arr["ENGLISH",298]="Evil Twin attack has been started. Press [Enter] key on this window to stop it" arr["SPANISH",298]="El ataque Evil Twin ha comenzado. Pulse la tecla [Enter] en esta ventana para pararlo" From 7f5e9fa7832b2e356475d660c092c22790c067e5 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Tue, 13 Feb 2024 17:05:58 +0100 Subject: [PATCH 17/74] Preparing version numbers for v11.30 --- README.md | 2 +- airgeddon.sh | 6 +++--- language_strings.sh | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 81f6e2526..040053f1d 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,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-11.22-blue.svg?style=flat-square&colorA=273133&colorB=0093ee "Latest version" +[Version-shield]: https://img.shields.io/badge/version-11.30-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=a9a9a9 "Docker rules!" diff --git a/airgeddon.sh b/airgeddon.sh index 53319c698..d42a8ed66 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -2,7 +2,7 @@ #Title........: airgeddon.sh #Description..: This is a multi-use bash script for Linux systems to audit wireless networks. #Author.......: v1s1t0r -#Version......: 11.22 +#Version......: 11.30 #Usage........: bash airgeddon.sh #Bash Version.: 4.2 or later @@ -134,8 +134,8 @@ declare -A possible_alias_names=( ) #General vars -airgeddon_version="11.22" -language_strings_expected_version="11.22-1" +airgeddon_version="11.30" +language_strings_expected_version="11.30-1" standardhandshake_filename="handshake-01.cap" standardpmkid_filename="pmkid_hash.txt" standardpmkidcap_filename="pmkid.cap" diff --git a/language_strings.sh b/language_strings.sh index 9a6fd3cee..cfb5b646e 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -10,7 +10,7 @@ function set_language_strings_version() { debug_print - language_strings_version="11.22-1" + language_strings_version="11.30-1" } #Set different language text strings From b588e824625f4ddd426033d4a0ecb7fc96f6ee8e Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Tue, 12 Mar 2024 18:43:14 +0100 Subject: [PATCH 18/74] Fix problem of adding two pids to orchestrator file when launched from tmux --- airgeddon.sh | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index d42a8ed66..6263e5f27 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -6246,9 +6246,11 @@ function initialize_instance_settings() { debug_print - instance_setter - create_instance_orchestrator_file - register_instance_pid + if ! is_instance_inside_tmux; then + instance_setter + create_instance_orchestrator_file + register_instance_pid + fi } #Detect number of the alive airgeddon instances and set the next one if apply @@ -6300,7 +6302,7 @@ function create_instance_orchestrator_file() { fi } -#Delete orchestrator file if needed +#Delete orchestrator file if exists function delete_instance_orchestrator_file() { debug_print @@ -16172,6 +16174,15 @@ function initialize_colors() { white_color="\e[1;97m" } +#Check if current instance is running inside a tmux +function is_instance_inside_tmux() { + if [ -n "${TMUX}" ]; then + return 0 + else + return 1 + fi +} + #Kill tmux session started by airgeddon function kill_tmux_session() { From c45740cc4243d1852f4c2bae5a964d8f183530d8 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Wed, 13 Mar 2024 13:54:43 +0100 Subject: [PATCH 19/74] Remove is_instance_inside_tmux function to unify tmux detection methods --- airgeddon.sh | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index 6263e5f27..7ef89f436 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -683,6 +683,7 @@ function debug_print() { declare excluded_functions=( "airmon_fix" "ask_yesno" + "check_inside_tmux" "check_pending_of_translation" "clean_env_vars" "contains_element" @@ -6246,7 +6247,7 @@ function initialize_instance_settings() { debug_print - if ! is_instance_inside_tmux; then + if ! check_inside_tmux; then instance_setter create_instance_orchestrator_file register_instance_pid @@ -16174,15 +16175,6 @@ function initialize_colors() { white_color="\e[1;97m" } -#Check if current instance is running inside a tmux -function is_instance_inside_tmux() { - if [ -n "${TMUX}" ]; then - return 0 - else - return 1 - fi -} - #Kill tmux session started by airgeddon function kill_tmux_session() { From 8f3343a489247f3d2462c14835dd5ef44d661c75 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Wed, 13 Mar 2024 14:22:35 +0100 Subject: [PATCH 20/74] Move the instance registering to the right place (after tmux initialization). This way no tmux detection is needed and now pids are registering fine (xterm and tmux) --- airgeddon.sh | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index 7ef89f436..4cee3bb2f 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -6247,11 +6247,9 @@ function initialize_instance_settings() { debug_print - if ! check_inside_tmux; then - instance_setter - create_instance_orchestrator_file - register_instance_pid - fi + instance_setter + create_instance_orchestrator_file + register_instance_pid } #Detect number of the alive airgeddon instances and set the next one if apply @@ -17012,9 +17010,9 @@ function echo_white() { function main() { initialize_script_settings - initialize_instance_settings initialize_colors env_vars_initialization + initialize_instance_settings detect_distro_phase1 detect_distro_phase2 special_distro_features From 004d5f81b6f84b76cbe5363607acc732752b674b Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Wed, 13 Mar 2024 14:29:22 +0100 Subject: [PATCH 21/74] Remove the check_inside_tmux function from exclusion list of the debug_print function. Not needed anymore. --- airgeddon.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/airgeddon.sh b/airgeddon.sh index 4cee3bb2f..0bc3f98eb 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -683,7 +683,6 @@ function debug_print() { declare excluded_functions=( "airmon_fix" "ask_yesno" - "check_inside_tmux" "check_pending_of_translation" "clean_env_vars" "contains_element" From e36ab26a45c1adffaa8b172b764311c025003df4 Mon Sep 17 00:00:00 2001 From: xpz3 <46419195+xpz3@users.noreply.github.com> Date: Sun, 17 Mar 2024 02:46:03 +1300 Subject: [PATCH 22/74] Create a unique name for each tmux session --- airgeddon.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/airgeddon.sh b/airgeddon.sh index 3833c33cd..cbac0d033 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -381,7 +381,16 @@ crunch_symbolcharset="!#$%/=?{}[]-*:;" hashcat_charsets=("?l" "?u" "?d" "?s") #Tmux vars -session_name="airgeddon" +if [[ "${1}" == "true" ]]; then + if [[ "${2}" != "" ]]; then + airgeddon_uid="${2}" + else + exit 0 + fi +else + airgeddon_uid="${BASHPID}" +fi +session_name="airgeddon${airgeddon_uid}" tmux_main_window="airgeddon-Main" no_hardcore_exit=0 From b2fb9afca499c4cea80c8f13a9101225fbbb6cf7 Mon Sep 17 00:00:00 2001 From: xpz3 <46419195+xpz3@users.noreply.github.com> Date: Sun, 17 Mar 2024 02:49:01 +1300 Subject: [PATCH 23/74] Remove existing tmux session killing function and call --- airgeddon.sh | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index cbac0d033..cf4849687 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -16272,24 +16272,11 @@ function check_inside_tmux() { 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 From 851aa971a61bde3caf0a653ef8275a0f007f35f7 Mon Sep 17 00:00:00 2001 From: xpz3 <46419195+xpz3@users.noreply.github.com> Date: Sun, 17 Mar 2024 02:51:38 +1300 Subject: [PATCH 24/74] Send tmux session name to child process --- airgeddon.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airgeddon.sh b/airgeddon.sh index cf4849687..d7312ee14 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -16202,7 +16202,7 @@ 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;cd ${scriptfolder};bash ${scriptname}" ENTER + tmux send-keys -t "${session_name}:${tmux_main_window}" "clear;cd ${scriptfolder};bash ${scriptname} true ${airgeddon_uid}" ENTER sleep 0.2 if [ "${1}" = "normal" ]; then tmux attach -t "${session_name}" From 5b72bd3faa3bf9e25ae750bc1596192e5ed6d871 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Sun, 17 Mar 2024 23:38:02 +0100 Subject: [PATCH 25/74] Code style standardization on tmux multi instance changes and set logic into functions instead of while initializing vars --- airgeddon.sh | 57 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 22 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index d7312ee14..d2ef16326 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -381,16 +381,8 @@ crunch_symbolcharset="!#$%/=?{}[]-*:;" hashcat_charsets=("?l" "?u" "?d" "?s") #Tmux vars -if [[ "${1}" == "true" ]]; then - if [[ "${2}" != "" ]]; then - airgeddon_uid="${2}" - else - exit 0 - fi -else - airgeddon_uid="${BASHPID}" -fi -session_name="airgeddon${airgeddon_uid}" +airgeddon_uid="" +session_name="airgeddon" tmux_main_window="airgeddon-Main" no_hardcore_exit=0 @@ -16046,16 +16038,6 @@ function env_vars_values_validation() { 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 @@ -16196,13 +16178,41 @@ function kill_tmux_session() { fi } +#Initialize tmux if apply +function initialize_tmux() { + + debug_print + + if [ "${1}" = "true" ]; then + if [ -n "${2}" ]; then + airgeddon_uid="${2}" + else + exit 0 + fi + else + airgeddon_uid="${BASHPID}" + fi + + session_name="airgeddon${airgeddon_uid}" + + 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 +} + #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;cd ${scriptfolder};bash ${scriptname} true ${airgeddon_uid}" ENTER + tmux send-keys -t "${session_name}:${tmux_main_window}" "clear;cd ${scriptfolder};bash ${scriptname} \"true\" \"${airgeddon_uid}\"" ENTER sleep 0.2 if [ "${1}" = "normal" ]; then tmux attach -t "${session_name}" @@ -17009,6 +17019,9 @@ function main() { initialize_script_settings initialize_colors env_vars_initialization + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + initialize_tmux "${1}" "${2}" + fi initialize_instance_settings detect_distro_phase1 detect_distro_phase2 @@ -17038,7 +17051,7 @@ function main() { set_default_save_path graphics_prerequisites - if [ "${tmux_error}" -eq 1 ]; then + if [[ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]] && [[ "${tmux_error}" -eq 1 ]]; then language_strings "${language}" 86 "title" echo language_strings "${language}" 621 "yellow" From e29f412fea04a481d64dd43c8ce093d69d716695 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Tue, 19 Mar 2024 18:05:28 +0100 Subject: [PATCH 26/74] Improve PID instance registering for tmux. Not finished yet. --- airgeddon.sh | 68 ++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 47 insertions(+), 21 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index d2ef16326..328d73d2f 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -5909,7 +5909,7 @@ function control_routing_status() { local et_still_running=0 if [ "${1}" = "start" ]; then - readarray -t AIRGEDDON_PIDS < <(cat < "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null) + readarray -t AIRGEDDON_PIDS 2> /dev/null < <(cat < "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null) for item in "${AIRGEDDON_PIDS[@]}"; do [[ "${item}" =~ ^(et)?([0-9]+)(rs[0-1])?$ ]] && etset="${BASH_REMATCH[1]}" && agpid="${BASH_REMATCH[2]}" if [ -z "${saved_routing_status_found}" ]; then @@ -5926,7 +5926,7 @@ function control_routing_status() { sed -ri "s:^(et${BASHPID})$:\1rs${original_routing_status}:" "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null fi else - readarray -t AIRGEDDON_PIDS < <(cat < "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null) + readarray -t AIRGEDDON_PIDS 2> /dev/null < <(cat < "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null) for item in "${AIRGEDDON_PIDS[@]}"; do [[ "${item}" =~ ^(et)?([0-9]+)(rs[0-1])?$ ]] && etset="${BASH_REMATCH[1]}" && agpid="${BASH_REMATCH[2]}" if [ -z "${saved_routing_status_found}" ]; then @@ -6247,6 +6247,12 @@ function initialize_instance_settings() { debug_print + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "xterm" ]; then + agpid_to_use="${BASHPID}" + else + agpid_to_use="${airgeddon_uid}" + fi + instance_setter create_instance_orchestrator_file register_instance_pid @@ -6257,21 +6263,35 @@ function instance_setter() { debug_print - local dir_number="1" - local airgeddon_instance_dir="ag${dir_number}/" - - if [ -d "${system_tmpdir}${airgeddon_instance_dir}" ]; then - while true; do - dir_number=$((dir_number + 1)) - airgeddon_instance_dir="ag${dir_number}/" - if [ ! -d "${system_tmpdir}${airgeddon_instance_dir}" ]; then - break + local create_dir=0 + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + if hash tmux 2> /dev/null; then + local current_tmux_display_name=$(tmux display-message -p '#W') + if [ "${current_tmux_display_name}" = "${tmux_main_window}" ]; then + create_dir=1 fi - done + fi + else + create_dir=1 fi - tmpdir="${system_tmpdir}${airgeddon_instance_dir}" - mkdir -p "${tmpdir}" > /dev/null 2>&1 + if [ "${create_dir}" -eq 1 ]; then + local dir_number="1" + local airgeddon_instance_dir="ag${dir_number}/" + + if [ -d "${system_tmpdir}${airgeddon_instance_dir}" ]; then + while true; do + dir_number=$((dir_number + 1)) + airgeddon_instance_dir="ag${dir_number}/" + if [ ! -d "${system_tmpdir}${airgeddon_instance_dir}" ]; then + break + fi + done + fi + + tmpdir="${system_tmpdir}${airgeddon_instance_dir}" + mkdir -p "${tmpdir}" > /dev/null 2>&1 + fi } #Create orchestrator file if needed @@ -6285,7 +6305,7 @@ function create_instance_orchestrator_file() { local airgeddon_pid_alive=0 local agpid="" - readarray -t AIRGEDDON_PIDS < <(cat < "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null) + readarray -t AIRGEDDON_PIDS 2> /dev/null < <(cat < "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null) for item in "${AIRGEDDON_PIDS[@]}"; do [[ "${item}" =~ ^(et)?([0-9]+)(rs[0-1])?$ ]] && agpid="${BASH_REMATCH[2]}" if ps -p "${agpid}" > /dev/null 2>&1; then @@ -6311,14 +6331,16 @@ function delete_instance_orchestrator_file() { fi } -#Register instance pid into orchestrator file +#Register instance pid into orchestrator file if is not already registered function register_instance_pid() { debug_print - { - echo "${BASHPID}" - } >> "${system_tmpdir}${ag_orchestrator_file}" + if ! grep -q "${agpid_to_use}" "${system_tmpdir}${ag_orchestrator_file}"; then + { + echo "${agpid_to_use}" + } >> "${system_tmpdir}${ag_orchestrator_file}" + fi } #Check if this instance is the last airgeddon instance running @@ -6328,10 +6350,14 @@ function is_last_airgeddon_instance() { local agpid="" - readarray -t AIRGEDDON_PIDS < <(cat <"${system_tmpdir}${ag_orchestrator_file}" 2>/dev/null) + readarray -t AIRGEDDON_PIDS 2> /dev/null < <(cat <"${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null) for item in "${AIRGEDDON_PIDS[@]}"; do [[ "${item}" =~ ^(et)?([0-9]+)(rs[0-1])?$ ]] && agpid="${BASH_REMATCH[2]}" - if [[ "${agpid}" != "${BASHPID}" ]] && ps -p "${agpid}" >/dev/null 2>&1; then + #TODO improve the logic, there is a use case where it is failing. Steps to reproduce: + #1. Open tmux airgeddon + #2. Create tmux session out of airgeddon, then launch tmux airgeddon from inside + #3. Close the first tmux airgeddon... it will remove the orchestrator file even being still one airgeddon alive + if [[ "${agpid}" != "${BASHPID}" ]] && [[ "${agpid}" != "${agpid_to_use}" ]] && ps -p "${agpid}" >/dev/null 2>&1; then return 1 fi done From 83fb0596cda8a0290337136fddd997f6f908f680 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 22 Mar 2024 15:58:41 +0100 Subject: [PATCH 27/74] Fix problem registering ET and RS in orchestrator file caused by prior commits --- airgeddon.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index 87297a02c..e96286104 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -5916,14 +5916,14 @@ function control_routing_status() { [[ "${item}" =~ ^(et)?([0-9]+)(rs[0-1])?$ ]] && saved_routing_status_found="${BASH_REMATCH[3]}" fi - if [[ "${BASHPID}" = "${agpid}" ]] && [[ "${etset}" != "et" ]]; then - sed -ri "s:^(${BASHPID}):et\1:" "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null + if [[ "${agpid_to_use}" = "${agpid}" ]] && [[ "${etset}" != "et" ]]; then + sed -ri "s:^(${agpid}):et\1:" "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null fi done if [ -z "${saved_routing_status_found}" ]; then original_routing_status=$(cat /proc/sys/net/ipv4/ip_forward) - sed -ri "s:^(et${BASHPID})$:\1rs${original_routing_status}:" "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null + sed -ri "s:^(et${agpid_to_use})$:\1rs${original_routing_status}:" "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null fi else readarray -t AIRGEDDON_PIDS 2> /dev/null < <(cat < "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null) @@ -5933,11 +5933,11 @@ function control_routing_status() { [[ "${item}" =~ ^(et)?([0-9]+)(rs[0-1])?$ ]] && saved_routing_status_found="${BASH_REMATCH[3]}" fi - if [[ "${BASHPID}" = "${agpid}" ]] && [[ "${etset}" = "et" ]]; then - sed -ri "s:^(et${BASHPID}):${BASHPID}:" "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null + if [[ "${agpid_to_use}" = "${agpid}" ]] && [[ "${etset}" = "et" ]]; then + sed -ri "s:^(et${agpid}):${agpid}:" "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null fi - if [[ "${BASHPID}" != "${agpid}" ]] && [[ "${etset}" = "et" ]]; then + if [[ "${agpid_to_use}" != "${agpid}" ]] && [[ "${etset}" = "et" ]]; then et_still_running=1 fi done From 1ae42d26366c462f9b77c7f77e46135b69ab294e Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Thu, 28 Mar 2024 12:56:37 +0100 Subject: [PATCH 28/74] Add TODO for future fixes --- airgeddon.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/airgeddon.sh b/airgeddon.sh index e96286104..63df45908 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -6314,6 +6314,10 @@ function create_instance_orchestrator_file() { fi done + #TODO improve the logic, there is a use case where it is failing. Steps to reproduce: + #1. Create tmux session out of airgeddon, then launch tmux airgeddon from inside + #2. Launch tmux airgeddon. The first orchestrator file is deleted and that shouldn't happen + if [ "${airgeddon_pid_alive}" -eq 0 ]; then rm -rf "${system_tmpdir}${ag_orchestrator_file}" > /dev/null 2>&1 touch "${system_tmpdir}${ag_orchestrator_file}" > /dev/null 2>&1 @@ -6353,10 +6357,12 @@ function is_last_airgeddon_instance() { readarray -t AIRGEDDON_PIDS 2> /dev/null < <(cat <"${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null) for item in "${AIRGEDDON_PIDS[@]}"; do [[ "${item}" =~ ^(et)?([0-9]+)(rs[0-1])?$ ]] && agpid="${BASH_REMATCH[2]}" + #TODO improve the logic, there is a use case where it is failing. Steps to reproduce: #1. Open tmux airgeddon #2. Create tmux session out of airgeddon, then launch tmux airgeddon from inside #3. Close the first tmux airgeddon... it will remove the orchestrator file even being still one airgeddon alive + if [[ "${agpid}" != "${BASHPID}" ]] && [[ "${agpid}" != "${agpid_to_use}" ]] && ps -p "${agpid}" >/dev/null 2>&1; then return 1 fi From 754c77283e9358a55182242a3a1c2240dd2e5624 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Tue, 2 Apr 2024 00:49:25 +0200 Subject: [PATCH 29/74] Fix problems with PID registering on tmux use cases --- airgeddon.sh | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index 63df45908..59a45a9fd 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -6247,15 +6247,21 @@ function initialize_instance_settings() { debug_print - if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "xterm" ]; then - agpid_to_use="${BASHPID}" - else - agpid_to_use="${airgeddon_uid}" - fi + agpid_to_use="${BASHPID}" instance_setter - create_instance_orchestrator_file - register_instance_pid + if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then + if hash tmux 2> /dev/null; then + local current_tmux_display_name=$(tmux display-message -p '#W') + if [ "${current_tmux_display_name}" = "${tmux_main_window}" ]; then + create_instance_orchestrator_file + register_instance_pid + fi + fi + else + create_instance_orchestrator_file + register_instance_pid + fi } #Detect number of the alive airgeddon instances and set the next one if apply @@ -6314,10 +6320,6 @@ function create_instance_orchestrator_file() { fi done - #TODO improve the logic, there is a use case where it is failing. Steps to reproduce: - #1. Create tmux session out of airgeddon, then launch tmux airgeddon from inside - #2. Launch tmux airgeddon. The first orchestrator file is deleted and that shouldn't happen - if [ "${airgeddon_pid_alive}" -eq 0 ]; then rm -rf "${system_tmpdir}${ag_orchestrator_file}" > /dev/null 2>&1 touch "${system_tmpdir}${ag_orchestrator_file}" > /dev/null 2>&1 @@ -6340,10 +6342,12 @@ function register_instance_pid() { debug_print - if ! grep -q "${agpid_to_use}" "${system_tmpdir}${ag_orchestrator_file}"; then - { - echo "${agpid_to_use}" - } >> "${system_tmpdir}${ag_orchestrator_file}" + if [ -f "${system_tmpdir}${ag_orchestrator_file}" ]; then + if ! grep -q "${agpid_to_use}" "${system_tmpdir}${ag_orchestrator_file}"; then + { + echo "${agpid_to_use}" + } >> "${system_tmpdir}${ag_orchestrator_file}" + fi fi } @@ -6358,12 +6362,7 @@ function is_last_airgeddon_instance() { for item in "${AIRGEDDON_PIDS[@]}"; do [[ "${item}" =~ ^(et)?([0-9]+)(rs[0-1])?$ ]] && agpid="${BASH_REMATCH[2]}" - #TODO improve the logic, there is a use case where it is failing. Steps to reproduce: - #1. Open tmux airgeddon - #2. Create tmux session out of airgeddon, then launch tmux airgeddon from inside - #3. Close the first tmux airgeddon... it will remove the orchestrator file even being still one airgeddon alive - - if [[ "${agpid}" != "${BASHPID}" ]] && [[ "${agpid}" != "${agpid_to_use}" ]] && ps -p "${agpid}" >/dev/null 2>&1; then + if [[ "${agpid}" != "${agpid_to_use}" ]] && ps -p "${agpid}" >/dev/null 2>&1; then return 1 fi done From a6a20857a0fa089dcfa4f86150f05563fe4d5f5b Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Tue, 2 Apr 2024 01:06:28 +0200 Subject: [PATCH 30/74] Standardize airgeddon exit using exit_code var --- airgeddon.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airgeddon.sh b/airgeddon.sh index 59a45a9fd..4fd60f14c 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -16218,7 +16218,7 @@ function initialize_tmux() { if [ -n "${2}" ]; then airgeddon_uid="${2}" else - exit 0 + exit ${exit_code} fi else airgeddon_uid="${BASHPID}" From ed56c253d87d07f3b0eccbe38a2ba269aac49075 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Tue, 7 May 2024 16:37:48 +0200 Subject: [PATCH 31/74] Improve busy ports check avoid false positives when others non-conflicting interfaces are using the ports. Now prepared for multi instance --- airgeddon.sh | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index 86beecd2b..3ef4b6bef 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -1308,7 +1308,7 @@ function check_busy_ports() { if [[ -n "${tcp_ports[*]}" ]] && [[ "${#tcp_ports[@]}" -ge 1 ]]; then port_type="tcp" for tcp_port in "${tcp_ports[@]}"; do - if ! check_tcp_udp_port "${tcp_port}" "${port_type}"; then + if ! check_tcp_udp_port "${tcp_port}" "${port_type}" "${interface}"; then busy_port="${tcp_port}" find_process_name_by_port "${tcp_port}" "${port_type}" echo @@ -1322,7 +1322,7 @@ function check_busy_ports() { if [[ -n "${udp_ports[*]}" ]] && [[ "${#udp_ports[@]}" -ge 1 ]]; then port_type="udp" for udp_port in "${udp_ports[@]}"; do - if ! check_tcp_udp_port "${udp_port}" "${port_type}"; then + if ! check_tcp_udp_port "${udp_port}" "${port_type}" "${interface}"; then busy_port="${udp_port}" find_process_name_by_port "${udp_port}" "${port_type}" echo @@ -1336,7 +1336,7 @@ function check_busy_ports() { return 0 } -#Validate if a given tcp/udp port is busy +#Validate if a given tcp/udp port is busy on the given interface #shellcheck disable=SC2207 function check_tcp_udp_port() { @@ -1347,7 +1347,20 @@ function check_tcp_udp_port() { port=$(printf "%04x" "${1}") port_type="${2}" - declare -a busy_ports=($(grep -v "local_address" --no-filename "/proc/net/${port_type}" "/proc/net/${port_type}6" | awk '{print $2$4}' | cut -d ":" -f 2 | sort -u)) + local network_interface + local ip_address + local hex_ip_address + network_interface="${3}" + ip_address=$(ip -4 -o addr show "${network_interface}" 2> /dev/null | awk '{print $4}' | cut -d "/" -f 1) + + if [ -n "${ip_address}" ]; then + hex_ip_address=$(ip_dec_to_hex "${ip_address}") + else + hex_ip_address="" + fi + + declare -a busy_ports=($(awk -v iplist="${hex_ip_address},00000000" 'BEGIN {split(iplist,a,","); for (i in a) ips[a[i]]} /local_address/ {next} {split($2,a,":"); if (a[1] in ips) ports[a[2] $4]} END {for (port in ports) print port}' "/proc/net/${port_type}" "/proc/net/${port_type}6")) + for hexport in "${busy_ports[@]}"; do if [[ "${port_type}" == "tcp" || "${port_type}" == "tcp6" ]]; then if [ "${hexport}" = "${port}0A" ]; then @@ -1384,6 +1397,22 @@ function find_process_name_by_port() { blocking_process_name=$(ss -tupln | grep -oP "${regexp}") } +#Convert an IP address from decimal to hexdecimal returning its value +ip_dec_to_hex() { + + debug_print + + IFS='.' read -r -a octets <<< "${1}" + + local hex + hex="" + for octet in "${octets[@]}"; do + hex="$(printf "%02X%s" "${octet}" "${hex}")" + done + + echo "${hex}" +} + #Validate if a wireless card is supporting VIF (Virtual Interface) function check_vif_support() { From f49c64a9808295399fa6f8fad2f57144cd9f3015 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Tue, 7 May 2024 17:13:23 +0200 Subject: [PATCH 32/74] Fix shellcheck warnings --- airgeddon.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index 3fe61b9c2..c2b6df11d 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -6281,7 +6281,8 @@ function initialize_instance_settings() { instance_setter if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then if hash tmux 2> /dev/null; then - local current_tmux_display_name=$(tmux display-message -p '#W') + local current_tmux_display_name + current_tmux_display_name=$(tmux display-message -p '#W') if [ "${current_tmux_display_name}" = "${tmux_main_window}" ]; then create_instance_orchestrator_file register_instance_pid @@ -6301,7 +6302,8 @@ function instance_setter() { local create_dir=0 if [ "${AIRGEDDON_WINDOWS_HANDLING}" = "tmux" ]; then if hash tmux 2> /dev/null; then - local current_tmux_display_name=$(tmux display-message -p '#W') + local current_tmux_display_name + current_tmux_display_name=$(tmux display-message -p '#W') if [ "${current_tmux_display_name}" = "${tmux_main_window}" ]; then create_dir=1 fi From 2bcb0f421cb480f26270156366d1e1a8af6ea4cd Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Wed, 22 May 2024 19:34:07 +0200 Subject: [PATCH 33/74] Add a function to detect if this instance was the first one modifying routing state --- airgeddon.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/airgeddon.sh b/airgeddon.sh index c2b6df11d..5ae2d25b5 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -6382,6 +6382,25 @@ function register_instance_pid() { fi } +#Check if this instance is the first one modifying routing state +function is_first_routing_modifier_airgeddon_instance() { + + debug_print + + local agpid="" + + readarray -t AIRGEDDON_PIDS 2> /dev/null < <(cat <"${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null) + for item in "${AIRGEDDON_PIDS[@]}"; do + [[ "${item}" =~ ^(et)?([0-9]+)rs[0-1]$ ]] && agpid="${BASH_REMATCH[2]}" + + if [ "${agpid}" = "${BASHPID}" ]; then + return 0 + fi + done + + return 1 +} + #Check if this instance is the last airgeddon instance running function is_last_airgeddon_instance() { From 5b7c85bc96f1b1c5f01fb78923b0f6eb0c4eab58 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Wed, 22 May 2024 20:00:36 +0200 Subject: [PATCH 34/74] Add a global variable setting airgeddon instance name to be used later in other parts of airgeddon --- airgeddon.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index 5ae2d25b5..eb1aff15a 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -6314,12 +6314,14 @@ function instance_setter() { if [ "${create_dir}" -eq 1 ]; then local dir_number="1" - local airgeddon_instance_dir="ag${dir_number}/" + airgeddon_instance_name="ag${dir_number}" + local airgeddon_instance_dir="${airgeddon_instance_name}/" if [ -d "${system_tmpdir}${airgeddon_instance_dir}" ]; then while true; do dir_number=$((dir_number + 1)) - airgeddon_instance_dir="ag${dir_number}/" + airgeddon_instance_name="ag${dir_number}" + airgeddon_instance_dir="${airgeddon_instance_name}/" if [ ! -d "${system_tmpdir}${airgeddon_instance_dir}" ]; then break fi From 486eb4f64da01cf46f963d17e833b447189b48d9 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 24 May 2024 21:42:41 +0200 Subject: [PATCH 35/74] Adapt nftables part to work in multi-instance mode. Still pending iptables (nft is done) --- airgeddon.sh | 177 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 105 insertions(+), 72 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index eb1aff15a..b1e05fc6f 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -6045,13 +6045,12 @@ function clean_routing_rules() { debug_print control_routing_status "end" - clean_initialize_iptables_nftables + clean_initialize_iptables_nftables "end" - if [ "${iptables_saved}" -eq 1 ]; then + if is_last_airgeddon_instance && [[ -n "${system_tmpdir}${routing_tmp_file}" ]]; then restore_iptables_nftables + rm -rf "${system_tmpdir}${routing_tmp_file}" > /dev/null 2>&1 fi - - rm -rf "${tmpdir}${routing_tmp_file}" > /dev/null 2>&1 } #Save iptables/nftables rules @@ -6060,21 +6059,9 @@ function save_iptables_nftables() { debug_print if [ "${iptables_nftables}" -eq 1 ]; then - if hash "iptables-${iptables_cmd}-save" 2> /dev/null; then - if "iptables-${iptables_cmd}-save" > "${tmpdir}${routing_tmp_file}" 2> /dev/null; then - iptables_saved=1 - fi - elif hash "${iptables_cmd}-compat-save" 2> /dev/null; then - if "${iptables_cmd}-compat-save" > "${tmpdir}${routing_tmp_file}" 2> /dev/null; then - iptables_saved=1 - fi - fi + "${iptables_cmd}" list ruleset > "${system_tmpdir}${routing_tmp_file}" 2> /dev/null else - if hash "${iptables_cmd}-save" 2> /dev/null; then - if "${iptables_cmd}-save" > "${tmpdir}${routing_tmp_file}" 2> /dev/null; then - iptables_saved=1 - fi - fi + "${iptables_cmd}-save" > "${system_tmpdir}${routing_tmp_file}" 2> /dev/null fi } @@ -6084,38 +6071,81 @@ function restore_iptables_nftables() { debug_print if [ "${iptables_nftables}" -eq 1 ]; then - if hash "iptables-${iptables_cmd}-restore" 2> /dev/null; then - "iptables-${iptables_cmd}-restore" < "${tmpdir}${routing_tmp_file}" 2> /dev/null - elif hash "${iptables_cmd}-compat-restore" 2> /dev/null; then - "${iptables_cmd}-compat-restore" < "${tmpdir}${routing_tmp_file}" 2> /dev/null - fi + "${iptables_cmd}" -f "${system_tmpdir}${routing_tmp_file}" 2> /dev/null else - if hash "${iptables_cmd}-restore" 2> /dev/null; then - "${iptables_cmd}-restore" < "${tmpdir}${routing_tmp_file}" 2> /dev/null - fi + "${iptables_cmd}-restore" < "${system_tmpdir}${routing_tmp_file}" 2> /dev/null fi } -#Clean and initialize iptables/nftables rules -function clean_initialize_iptables_nftables() { +#Prepare iptables/nftables after a clean to avoid errors +function prepare_iptables_nftables() { + + debug_print + + if [ "${iptables_nftables}" -eq 1 ]; then + "${iptables_cmd}" add table ip filter_"${airgeddon_instance_name}" + "${iptables_cmd}" add chain ip filter_"${airgeddon_instance_name}" forward_"${airgeddon_instance_name}" '{type filter hook forward priority 0;}' + "${iptables_cmd}" add chain ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" '{type filter hook input priority 0;}' + "${iptables_cmd}" add table ip nat_"${airgeddon_instance_name}" + "${iptables_cmd}" add chain ip nat_"${airgeddon_instance_name}" prerouting_"${airgeddon_instance_name}" '{type nat hook prerouting priority -100;}' + "${iptables_cmd}" add chain ip nat_"${airgeddon_instance_name}" postrouting_"${airgeddon_instance_name}" '{type nat hook postrouting priority 100;}' + else + #TODO prepare chains for iptables + : + fi +} + +#Clean only this instance iptables/nftables rules +function clean_this_instance_iptables_nftables() { + + debug_print + + if [ "${iptables_nftables}" -eq 1 ]; then + "${iptables_cmd}" delete table filter_"${airgeddon_instance_name}" + "${iptables_cmd}" delete table nat_"${airgeddon_instance_name}" + else + #TODO delete only this instance iptables rules + : + fi +} + +#Clean all iptables/nftables rules +function clean_all_iptables_nftables() { debug_print if [ "${iptables_nftables}" -eq 1 ]; then - "${iptables_cmd}" add table ip filter 2> /dev/null - "${iptables_cmd}" add chain ip filter INPUT 2> /dev/null - "${iptables_cmd}" add chain ip filter OUTPUT 2> /dev/null - "${iptables_cmd}" add chain ip filter FORWARD 2> /dev/null - "${iptables_cmd}" flush table ip filter 2> /dev/null - "${iptables_cmd}" add table ip nat 2> /dev/null - "${iptables_cmd}" add chain nat PREROUTING "{ type nat hook prerouting priority 0 ; }" 2> /dev/null - "${iptables_cmd}" add chain nat POSTROUTING "{ type nat hook postrouting priority 100 ; }" 2> /dev/null - "${iptables_cmd}" flush table ip nat 2> /dev/null + "${iptables_cmd}" flush ruleset 2> /dev/null else "${iptables_cmd}" -F 2> /dev/null "${iptables_cmd}" -t nat -F 2> /dev/null + "${iptables_cmd}" -t mangle -F 2> /dev/null + "${iptables_cmd}" -t raw -F 2> /dev/null + "${iptables_cmd}" -t security -F 2> /dev/null "${iptables_cmd}" -X 2> /dev/null "${iptables_cmd}" -t nat -X 2> /dev/null + "${iptables_cmd}" -t mangle -X 2> /dev/null + "${iptables_cmd}" -t raw -X 2> /dev/null + "${iptables_cmd}" -t security -X 2> /dev/null + fi +} + +#Contains the logic to decide what iptables/nftables rules to clean +function clean_initialize_iptables_nftables() { + + debug_print + + if [ "${1}" = "start" ]; then + if is_first_routing_modifier_airgeddon_instance; then + clean_all_iptables_nftables + fi + prepare_iptables_nftables + else + if is_last_airgeddon_instance; then + clean_all_iptables_nftables + else + clean_this_instance_iptables_nftables + fi fi } @@ -10086,7 +10116,7 @@ function set_std_internet_routing_rules() { debug_print control_routing_status "start" - if [ "${routing_modified}" -eq 0 ]; then + if is_first_routing_modifier_airgeddon_instance; then save_iptables_nftables fi @@ -10094,78 +10124,79 @@ function set_std_internet_routing_rules() { ip route add ${et_ip_range}/${std_c_mask_cidr} dev "${interface}" table local proto static scope link > /dev/null 2>&1 routing_modified=1 - clean_initialize_iptables_nftables + clean_initialize_iptables_nftables "start" + #TODO create its own rules (pending only iptables part, nft is done) if [ "${et_mode}" != "et_captive_portal" ]; then if [ "${iptables_nftables}" -eq 1 ]; then - "${iptables_cmd}" add rule ip filter FORWARD counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" forward_"${airgeddon_instance_name}" counter accept else - "${iptables_cmd}" -P FORWARD ACCEPT + "${iptables_cmd}" -P FORWARD ACCEPT "${iptables_comment}" fi echo "1" > /proc/sys/net/ipv4/ip_forward 2> /dev/null else if [ "${iptables_nftables}" -eq 1 ]; then - "${iptables_cmd}" add rule ip filter FORWARD counter drop + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" forward_"${airgeddon_instance_name}" counter drop else - "${iptables_cmd}" -P FORWARD DROP + "${iptables_cmd}" -P FORWARD DROP "${iptables_comment}" fi echo "0" > /proc/sys/net/ipv4/ip_forward 2> /dev/null fi if [ "${et_mode}" = "et_captive_portal" ]; then if [ "${iptables_nftables}" -eq 1 ]; then - "${iptables_cmd}" add rule ip nat PREROUTING tcp dport ${www_port} counter dnat to ${et_ip_router}:${www_port} - "${iptables_cmd}" add rule ip filter INPUT tcp dport ${www_port} counter accept - "${iptables_cmd}" add rule ip filter INPUT tcp dport ${https_port} counter accept + "${iptables_cmd}" add rule ip nat_"${airgeddon_instance_name}" prerouting_"${airgeddon_instance_name}" tcp dport ${www_port} counter dnat to ${et_ip_router}:${www_port} + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" tcp dport ${www_port} counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" tcp dport ${https_port} counter accept else - "${iptables_cmd}" -t nat -A PREROUTING -p tcp --dport ${www_port} -j DNAT --to-destination ${et_ip_router}:${www_port} - "${iptables_cmd}" -A INPUT -p tcp --destination-port ${www_port} -j ACCEPT - "${iptables_cmd}" -A INPUT -p tcp --destination-port ${https_port} -j ACCEPT + "${iptables_cmd}" -t nat -A PREROUTING -p tcp --dport ${www_port} -j DNAT --to-destination ${et_ip_router}:${www_port} "${iptables_comment}" + "${iptables_cmd}" -A INPUT -p tcp --destination-port ${www_port} -j ACCEPT "${iptables_comment}" + "${iptables_cmd}" -A INPUT -p tcp --destination-port ${https_port} -j ACCEPT "${iptables_comment}" fi if [ "${iptables_nftables}" -eq 1 ]; then - "${iptables_cmd}" add rule ip filter INPUT udp dport ${dns_port} counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" udp dport ${dns_port} counter accept else - "${iptables_cmd}" -A INPUT -p udp --destination-port ${dns_port} -j ACCEPT + "${iptables_cmd}" -A INPUT -p udp --destination-port ${dns_port} -j ACCEPT "${iptables_comment}" fi elif [ "${et_mode}" = "et_sniffing_sslstrip2" ]; then if [ "${iptables_nftables}" -eq 1 ]; then - "${iptables_cmd}" add rule ip filter INPUT tcp dport ${bettercap_proxy_port} counter accept - "${iptables_cmd}" add rule ip filter INPUT udp dport ${bettercap_dns_port} counter accept - "${iptables_cmd}" add rule ip filter INPUT iifname "lo" counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" tcp dport ${bettercap_proxy_port} counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" udp dport ${bettercap_dns_port} counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" iifname "lo" counter accept else - "${iptables_cmd}" -A INPUT -p tcp --destination-port ${bettercap_proxy_port} -j ACCEPT - "${iptables_cmd}" -A INPUT -p udp --destination-port ${bettercap_dns_port} -j ACCEPT - "${iptables_cmd}" -A INPUT -i lo -j ACCEPT + "${iptables_cmd}" -A INPUT -p tcp --destination-port ${bettercap_proxy_port} -j ACCEPT "${iptables_comment}" + "${iptables_cmd}" -A INPUT -p udp --destination-port ${bettercap_dns_port} -j ACCEPT "${iptables_comment}" + "${iptables_cmd}" -A INPUT -i lo -j ACCEPT "${iptables_comment}" fi elif [ "${et_mode}" = "et_sniffing_sslstrip2_beef" ]; then if [ "${iptables_nftables}" -eq 1 ]; then - "${iptables_cmd}" add rule ip filter INPUT tcp dport ${bettercap_proxy_port} counter accept - "${iptables_cmd}" add rule ip filter INPUT udp dport ${bettercap_dns_port} counter accept - "${iptables_cmd}" add rule ip filter INPUT iifname "lo" counter accept - "${iptables_cmd}" add rule ip filter INPUT tcp dport ${beef_port} counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" tcp dport ${bettercap_proxy_port} counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" udp dport ${bettercap_dns_port} counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" iifname "lo" counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" tcp dport ${beef_port} counter accept else - "${iptables_cmd}" -A INPUT -p tcp --destination-port ${bettercap_proxy_port} -j ACCEPT - "${iptables_cmd}" -A INPUT -p udp --destination-port ${bettercap_dns_port} -j ACCEPT - "${iptables_cmd}" -A INPUT -i lo -j ACCEPT - "${iptables_cmd}" -A INPUT -p tcp --destination-port ${beef_port} -j ACCEPT + "${iptables_cmd}" -A INPUT -p tcp --destination-port ${bettercap_proxy_port} -j ACCEPT "${iptables_comment}" + "${iptables_cmd}" -A INPUT -p udp --destination-port ${bettercap_dns_port} -j ACCEPT "${iptables_comment}" + "${iptables_cmd}" -A INPUT -i lo -j ACCEPT "${iptables_comment}" + "${iptables_cmd}" -A INPUT -p tcp --destination-port ${beef_port} -j ACCEPT "${iptables_comment}" fi fi if [ "${et_mode}" != "et_captive_portal" ]; then if [ "${iptables_nftables}" -eq 1 ]; then - "${iptables_cmd}" add rule nat POSTROUTING ip saddr ${et_ip_range}/${std_c_mask_cidr} oifname "${internet_interface}" counter masquerade + "${iptables_cmd}" add rule nat_"${airgeddon_instance_name}" postrouting_"${airgeddon_instance_name}" ip saddr ${et_ip_range}/${std_c_mask_cidr} oifname "${internet_interface}" counter masquerade else - "${iptables_cmd}" -t nat -A POSTROUTING -o "${internet_interface}" -j MASQUERADE + "${iptables_cmd}" -t nat -A POSTROUTING -o "${internet_interface}" -j MASQUERADE "${iptables_comment}" fi fi if [ "${iptables_nftables}" -eq 1 ]; then - "${iptables_cmd}" add rule ip filter INPUT ip saddr ${et_ip_range}/${std_c_mask_cidr} ip daddr ${et_ip_router}/${ip_mask_cidr} icmp type echo-request ct state new,related,established counter accept - "${iptables_cmd}" add rule ip filter INPUT ip saddr ${et_ip_range}/${std_c_mask_cidr} ip daddr ${et_ip_router}/${ip_mask_cidr} counter drop + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" ip saddr ${et_ip_range}/${std_c_mask_cidr} ip daddr ${et_ip_router}/${ip_mask_cidr} icmp type echo-request ct state new,related,established counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" ip saddr ${et_ip_range}/${std_c_mask_cidr} ip daddr ${et_ip_router}/${ip_mask_cidr} counter drop else - "${iptables_cmd}" -A INPUT -p icmp --icmp-type 8 -s ${et_ip_range}/${std_c_mask} -d ${et_ip_router}/${ip_mask} -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT - "${iptables_cmd}" -A INPUT -s ${et_ip_range}/${std_c_mask} -d ${et_ip_router}/${ip_mask} -j DROP + "${iptables_cmd}" -A INPUT -p icmp --icmp-type 8 -s ${et_ip_range}/${std_c_mask} -d ${et_ip_router}/${ip_mask} -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT "${iptables_comment}" + "${iptables_cmd}" -A INPUT -s ${et_ip_range}/${std_c_mask} -d ${et_ip_router}/${ip_mask} -j DROP "${iptables_comment}" fi sleep 2 } @@ -14693,10 +14724,13 @@ function iptables_nftables_detection() { if [ "${iptables_nftables}" -eq 0 ]; then if hash iptables-legacy 2> /dev/null && ! hash iptables 2> /dev/null; then iptables_cmd="iptables-legacy" + iptables_comment="-m comment --comment \"${airgeddon_instance_name}\"" elif hash iptables 2> /dev/null && ! hash iptables-legacy 2> /dev/null; then iptables_cmd="iptables" + iptables_comment="-m comment --comment \"${airgeddon_instance_name}\"" elif hash iptables 2> /dev/null && hash iptables-legacy 2> /dev/null; then iptables_cmd="iptables" + iptables_comment="-m comment --comment \"${airgeddon_instance_name}\"" fi else iptables_cmd="nft" @@ -15799,7 +15833,6 @@ function initialize_script_settings() { airmon_fix autochanged_language=0 routing_modified=0 - iptables_saved=0 spoofed_mac=0 mac_spoofing_desired=0 dhcpd_path_changed=0 From abe9b0b8e23b8ced5d5cea49f005f1e764304774 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Sat, 25 May 2024 01:30:30 +0200 Subject: [PATCH 36/74] Adapt iptables part to work in multi-instance mode --- airgeddon.sh | 60 +++++++++++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index b1e05fc6f..83eba6fcb 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -6090,8 +6090,10 @@ function prepare_iptables_nftables() { "${iptables_cmd}" add chain ip nat_"${airgeddon_instance_name}" prerouting_"${airgeddon_instance_name}" '{type nat hook prerouting priority -100;}' "${iptables_cmd}" add chain ip nat_"${airgeddon_instance_name}" postrouting_"${airgeddon_instance_name}" '{type nat hook postrouting priority 100;}' else - #TODO prepare chains for iptables - : + "${iptables_cmd}" -t filter -N input_"${airgeddon_instance_name}" + "${iptables_cmd}" -A INPUT -j input_"${airgeddon_instance_name}" + "${iptables_cmd}" -t filter -N forward_"${airgeddon_instance_name}" + "${iptables_cmd}" -A FORWARD -j forward_"${airgeddon_instance_name}" fi } @@ -6104,8 +6106,12 @@ function clean_this_instance_iptables_nftables() { "${iptables_cmd}" delete table filter_"${airgeddon_instance_name}" "${iptables_cmd}" delete table nat_"${airgeddon_instance_name}" else - #TODO delete only this instance iptables rules - : + "${iptables_cmd}" -D INPUT -j input_"${airgeddon_instance_name}" 2> /dev/null + "${iptables_cmd}" -D FORWARD -j forward_"${airgeddon_instance_name}" 2> /dev/null + "${iptables_cmd}" -F input_"${airgeddon_instance_name}" 2> /dev/null + "${iptables_cmd}" -F forward_"${airgeddon_instance_name}" 2> /dev/null + "${iptables_cmd}" -X input_"${airgeddon_instance_name}" 2> /dev/null + "${iptables_cmd}" -X forward_"${airgeddon_instance_name}" 2> /dev/null fi } @@ -6122,11 +6128,17 @@ function clean_all_iptables_nftables() { "${iptables_cmd}" -t mangle -F 2> /dev/null "${iptables_cmd}" -t raw -F 2> /dev/null "${iptables_cmd}" -t security -F 2> /dev/null - "${iptables_cmd}" -X 2> /dev/null - "${iptables_cmd}" -t nat -X 2> /dev/null "${iptables_cmd}" -t mangle -X 2> /dev/null "${iptables_cmd}" -t raw -X 2> /dev/null "${iptables_cmd}" -t security -X 2> /dev/null + "${iptables_cmd}" -D INPUT -j input_"${airgeddon_instance_name}" 2> /dev/null + "${iptables_cmd}" -D FORWARD -j forward_"${airgeddon_instance_name}" 2> /dev/null + "${iptables_cmd}" -F input_"${airgeddon_instance_name}" 2> /dev/null + "${iptables_cmd}" -F forward_"${airgeddon_instance_name}" 2> /dev/null + "${iptables_cmd}" -X input_"${airgeddon_instance_name}" 2> /dev/null + "${iptables_cmd}" -X forward_"${airgeddon_instance_name}" 2> /dev/null + "${iptables_cmd}" -X 2> /dev/null + "${iptables_cmd}" -t nat -X 2> /dev/null fi } @@ -10126,19 +10138,18 @@ function set_std_internet_routing_rules() { clean_initialize_iptables_nftables "start" - #TODO create its own rules (pending only iptables part, nft is done) if [ "${et_mode}" != "et_captive_portal" ]; then if [ "${iptables_nftables}" -eq 1 ]; then "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" forward_"${airgeddon_instance_name}" counter accept else - "${iptables_cmd}" -P FORWARD ACCEPT "${iptables_comment}" + "${iptables_cmd}" -P FORWARD ACCEPT fi echo "1" > /proc/sys/net/ipv4/ip_forward 2> /dev/null else if [ "${iptables_nftables}" -eq 1 ]; then "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" forward_"${airgeddon_instance_name}" counter drop else - "${iptables_cmd}" -P FORWARD DROP "${iptables_comment}" + "${iptables_cmd}" -P FORWARD DROP fi echo "0" > /proc/sys/net/ipv4/ip_forward 2> /dev/null fi @@ -10149,15 +10160,15 @@ function set_std_internet_routing_rules() { "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" tcp dport ${www_port} counter accept "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" tcp dport ${https_port} counter accept else - "${iptables_cmd}" -t nat -A PREROUTING -p tcp --dport ${www_port} -j DNAT --to-destination ${et_ip_router}:${www_port} "${iptables_comment}" - "${iptables_cmd}" -A INPUT -p tcp --destination-port ${www_port} -j ACCEPT "${iptables_comment}" - "${iptables_cmd}" -A INPUT -p tcp --destination-port ${https_port} -j ACCEPT "${iptables_comment}" + "${iptables_cmd}" -t nat -A PREROUTING -p tcp --dport ${www_port} -j DNAT --to-destination ${et_ip_router}:${www_port} + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp --destination-port ${www_port} -j ACCEPT + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp --destination-port ${https_port} -j ACCEPT fi if [ "${iptables_nftables}" -eq 1 ]; then "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" udp dport ${dns_port} counter accept else - "${iptables_cmd}" -A INPUT -p udp --destination-port ${dns_port} -j ACCEPT "${iptables_comment}" + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p udp --destination-port ${dns_port} -j ACCEPT fi elif [ "${et_mode}" = "et_sniffing_sslstrip2" ]; then if [ "${iptables_nftables}" -eq 1 ]; then @@ -10165,9 +10176,9 @@ function set_std_internet_routing_rules() { "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" udp dport ${bettercap_dns_port} counter accept "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" iifname "lo" counter accept else - "${iptables_cmd}" -A INPUT -p tcp --destination-port ${bettercap_proxy_port} -j ACCEPT "${iptables_comment}" - "${iptables_cmd}" -A INPUT -p udp --destination-port ${bettercap_dns_port} -j ACCEPT "${iptables_comment}" - "${iptables_cmd}" -A INPUT -i lo -j ACCEPT "${iptables_comment}" + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp --destination-port ${bettercap_proxy_port} -j ACCEPT + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p udp --destination-port ${bettercap_dns_port} -j ACCEPT + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -i lo -j ACCEPT fi elif [ "${et_mode}" = "et_sniffing_sslstrip2_beef" ]; then if [ "${iptables_nftables}" -eq 1 ]; then @@ -10176,10 +10187,10 @@ function set_std_internet_routing_rules() { "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" iifname "lo" counter accept "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" tcp dport ${beef_port} counter accept else - "${iptables_cmd}" -A INPUT -p tcp --destination-port ${bettercap_proxy_port} -j ACCEPT "${iptables_comment}" - "${iptables_cmd}" -A INPUT -p udp --destination-port ${bettercap_dns_port} -j ACCEPT "${iptables_comment}" - "${iptables_cmd}" -A INPUT -i lo -j ACCEPT "${iptables_comment}" - "${iptables_cmd}" -A INPUT -p tcp --destination-port ${beef_port} -j ACCEPT "${iptables_comment}" + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp --destination-port ${bettercap_proxy_port} -j ACCEPT + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p udp --destination-port ${bettercap_dns_port} -j ACCEPT + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -i lo -j ACCEPT + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp --destination-port ${beef_port} -j ACCEPT fi fi @@ -10187,7 +10198,7 @@ function set_std_internet_routing_rules() { if [ "${iptables_nftables}" -eq 1 ]; then "${iptables_cmd}" add rule nat_"${airgeddon_instance_name}" postrouting_"${airgeddon_instance_name}" ip saddr ${et_ip_range}/${std_c_mask_cidr} oifname "${internet_interface}" counter masquerade else - "${iptables_cmd}" -t nat -A POSTROUTING -o "${internet_interface}" -j MASQUERADE "${iptables_comment}" + "${iptables_cmd}" -t nat -A POSTROUTING -o "${internet_interface}" -j MASQUERADE fi fi @@ -10195,8 +10206,8 @@ function set_std_internet_routing_rules() { "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" ip saddr ${et_ip_range}/${std_c_mask_cidr} ip daddr ${et_ip_router}/${ip_mask_cidr} icmp type echo-request ct state new,related,established counter accept "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" ip saddr ${et_ip_range}/${std_c_mask_cidr} ip daddr ${et_ip_router}/${ip_mask_cidr} counter drop else - "${iptables_cmd}" -A INPUT -p icmp --icmp-type 8 -s ${et_ip_range}/${std_c_mask} -d ${et_ip_router}/${ip_mask} -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT "${iptables_comment}" - "${iptables_cmd}" -A INPUT -s ${et_ip_range}/${std_c_mask} -d ${et_ip_router}/${ip_mask} -j DROP "${iptables_comment}" + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p icmp --icmp-type 8 -s ${et_ip_range}/${std_c_mask} -d ${et_ip_router}/${ip_mask} -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -s ${et_ip_range}/${std_c_mask} -d ${et_ip_router}/${ip_mask} -j DROP fi sleep 2 } @@ -14724,13 +14735,10 @@ function iptables_nftables_detection() { if [ "${iptables_nftables}" -eq 0 ]; then if hash iptables-legacy 2> /dev/null && ! hash iptables 2> /dev/null; then iptables_cmd="iptables-legacy" - iptables_comment="-m comment --comment \"${airgeddon_instance_name}\"" elif hash iptables 2> /dev/null && ! hash iptables-legacy 2> /dev/null; then iptables_cmd="iptables" - iptables_comment="-m comment --comment \"${airgeddon_instance_name}\"" elif hash iptables 2> /dev/null && hash iptables-legacy 2> /dev/null; then iptables_cmd="iptables" - iptables_comment="-m comment --comment \"${airgeddon_instance_name}\"" fi else iptables_cmd="nft" From 5e7093f212b31a83e87755291cb2ce8931d6f65f Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Sat, 25 May 2024 02:16:47 +0200 Subject: [PATCH 37/74] Fix dhcp 67/udp port conflict on multi-instance --- airgeddon.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/airgeddon.sh b/airgeddon.sh index 83eba6fcb..edd02abab 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -243,6 +243,7 @@ loopback_ip="127.0.0.1" loopback_ipv6="::1/128" routing_tmp_file="ag.iptables_nftables" dhcpd_file="ag.dhcpd.conf" +dhcpd_pid_file="dhcpd.pid" dnsmasq_file="ag.dnsmasq.conf" internet_dns1="8.8.8.8" internet_dns2="8.8.4.4" @@ -1367,7 +1368,7 @@ function check_tcp_udp_port() { return 1 fi else - if [ "${hexport}" = "${port}07" ]; then + if [[ "${hexport}" = "${port}07" ]] && [[ "${port}" != "0043" ]]; then return 1 fi fi @@ -10229,6 +10230,8 @@ function launch_dhcp_server() { dchcpd_scr_window_position=${g4_middleleft_window} ;; esac + + rm -rf "/var/run/${dhcpd_pid_file}" 2> /dev/null 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+=($!) From 411f1350ccbb017a63aad0be0d3812439459ed28 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Tue, 28 May 2024 15:44:21 +0200 Subject: [PATCH 38/74] Changed iptables/nftables forward policy to deny by default. This will allow more granularity in the future --- airgeddon.sh | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index edd02abab..576361161 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -6085,12 +6085,13 @@ function prepare_iptables_nftables() { if [ "${iptables_nftables}" -eq 1 ]; then "${iptables_cmd}" add table ip filter_"${airgeddon_instance_name}" - "${iptables_cmd}" add chain ip filter_"${airgeddon_instance_name}" forward_"${airgeddon_instance_name}" '{type filter hook forward priority 0;}' + "${iptables_cmd}" add chain ip filter_"${airgeddon_instance_name}" forward_"${airgeddon_instance_name}" '{type filter hook forward priority 0; policy drop;}' "${iptables_cmd}" add chain ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" '{type filter hook input priority 0;}' "${iptables_cmd}" add table ip nat_"${airgeddon_instance_name}" "${iptables_cmd}" add chain ip nat_"${airgeddon_instance_name}" prerouting_"${airgeddon_instance_name}" '{type nat hook prerouting priority -100;}' "${iptables_cmd}" add chain ip nat_"${airgeddon_instance_name}" postrouting_"${airgeddon_instance_name}" '{type nat hook postrouting priority 100;}' else + "${iptables_cmd}" -P FORWARD DROP "${iptables_cmd}" -t filter -N input_"${airgeddon_instance_name}" "${iptables_cmd}" -A INPUT -j input_"${airgeddon_instance_name}" "${iptables_cmd}" -t filter -N forward_"${airgeddon_instance_name}" @@ -10139,20 +10140,16 @@ function set_std_internet_routing_rules() { clean_initialize_iptables_nftables "start" + echo "1" > /proc/sys/net/ipv4/ip_forward 2> /dev/null + if [ "${et_mode}" != "et_captive_portal" ]; then if [ "${iptables_nftables}" -eq 1 ]; then - "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" forward_"${airgeddon_instance_name}" counter accept - else - "${iptables_cmd}" -P FORWARD ACCEPT - fi - echo "1" > /proc/sys/net/ipv4/ip_forward 2> /dev/null - else - if [ "${iptables_nftables}" -eq 1 ]; then - "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" forward_"${airgeddon_instance_name}" counter drop + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" forward_"${airgeddon_instance_name}" iifname "${interface}" oifname "${internet_interface}" counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" forward_"${airgeddon_instance_name}" iifname "${internet_interface}" oifname "${interface}" counter accept else - "${iptables_cmd}" -P FORWARD DROP + "${iptables_cmd}" -A forward_"${airgeddon_instance_name}" -i "${interface}" -o "${internet_interface}" -j ACCEPT + "${iptables_cmd}" -A forward_"${airgeddon_instance_name}" -i "${internet_interface}" -o "${interface}" -j ACCEPT fi - echo "0" > /proc/sys/net/ipv4/ip_forward 2> /dev/null fi if [ "${et_mode}" = "et_captive_portal" ]; then From 33df907cb795e682561d2dca95a276238954299e Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Tue, 28 May 2024 15:54:35 +0200 Subject: [PATCH 39/74] Fix bug related to overwriting original iptables/nftables state --- airgeddon.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airgeddon.sh b/airgeddon.sh index 576361161..059a7394f 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -10130,7 +10130,7 @@ function set_std_internet_routing_rules() { debug_print control_routing_status "start" - if is_first_routing_modifier_airgeddon_instance; then + if is_first_routing_modifier_airgeddon_instance && [[ ! -f "${system_tmpdir}${routing_tmp_file}" ]]; then save_iptables_nftables fi From d0bdb4c31ab1e8d23c3741dbfa0d2990f737bc35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=9D=BE?= <2744588786@qq.com> Date: Fri, 31 May 2024 17:22:51 +0800 Subject: [PATCH 40/74] Optimize DOS Pursuit mode process killing by using recursive killing of all child processes --- airgeddon.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index dc93335a4..42ecd0636 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -12359,8 +12359,7 @@ function kill_dos_pursuit_mode_processes() { debug_print for item in "${dos_pursuit_mode_pids[@]}"; do - kill -9 "${item}" &> /dev/null - wait "${item}" 2> /dev/null + kill_pid_and_children_recursive "${item}" done if ! stty sane > /dev/null 2>&1; then From 324fd95a24cf13a8fedea3767c3a4b0b7d45efcb Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Wed, 5 Jun 2024 15:45:44 +0200 Subject: [PATCH 41/74] Implement number of running instances detection --- airgeddon.sh | 27 +++++++++++++++++++++++++++ language_strings.sh | 28 ++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/airgeddon.sh b/airgeddon.sh index 7a5bccea2..c88010bf1 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -6429,6 +6429,24 @@ function register_instance_pid() { fi } +#Detect and return the number of airgeddon running instances +function detect_running_instances() { + + debug_print + + airgeddon_running_instances_counter=1 + + readarray -t AIRGEDDON_PIDS 2> /dev/null < <(cat < "${system_tmpdir}${ag_orchestrator_file}" 2> /dev/null) + for item in "${AIRGEDDON_PIDS[@]}"; do + [[ "${item}" =~ ^(et)?([0-9]+)(rs[0-1])?$ ]] && agpid="${BASH_REMATCH[2]}" + if [[ "${agpid}" != "${BASHPID}" ]] && ps -p "${agpid}" > /dev/null 2>&1; then + airgeddon_running_instances_counter=$((airgeddon_running_instances_counter + 1)) + fi + done + + return "${airgeddon_running_instances_counter}" +} + #Check if this instance is the first one modifying routing state function is_first_routing_modifier_airgeddon_instance() { @@ -17259,6 +17277,15 @@ function main() { fi fi + detect_running_instances + if [ "$?" -gt 1 ]; then + echo + language_strings "${language}" 720 "yellow" + echo + language_strings "${language}" 721 "blue" + language_strings "${language}" 115 "read" + fi + echo language_strings "${language}" 8 "blue" print_known_distros diff --git a/language_strings.sh b/language_strings.sh index bd557e14c..c62b4e5f2 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -11112,6 +11112,34 @@ function initialize_language_strings() { arr["TURKISH",719]="\${pending_of_translation} Wifi bağdaştırıcılarınızdan birinde, sisteminizde ayarlanandan farklı yerleşik bir ülke kodu var. Bu gerçekleştiğinde çekirdek, yalnızca HER İKİ Reg etki alanındaki izinleri içeren özel bir düzenleyici etki alanı \"\${normal_color}99\${yellow_color}\" oluşturur. Ya donanımınız farklı bir bölgeye ait ya da reg alan adınızı yanlış ayarladınız ve işlevselliğinizi bilerek sınırladınız" arr["ARABIC",719]="\${pending_of_translation} يحتوي أحد محولات wifi لديك على رمز بلد مدمج يختلف عن الرمز المعين على نظامك. عندما يحدث هذا، تقوم النواة بإنشاء مجال تنظيمي مخصص \"\${normal_color}99\${yellow_color}\" والذي يحتوي فقط على الأذونات في كلا نطاقي التسجيل. إما أن جهازك ينتمي إلى منطقة مختلفة، أو أنك قمت بتعيين نطاق التسجيل الخاص بك بشكل غير صحيح وقمت بتقييد وظائفك عن قصد" arr["CHINESE",719]="\${pending_of_translation} 您的其中一款 WiFi 适配器的内置国家/地区代码与您系统上设置的国家/地区代码不同。当发生这种情况时,内核会创建一个自定义监管域 \"\${normal_color}99\${yellow_color}\",其中仅包含两个监管域中的权限。您的硬件来自不同的地区,或者您不正确地设置了您的注册域并故意限制了您的功能" + + arr["ENGLISH",720]="It was detected more than one airgeddon instance running. Keep in mind that sharing and using the same wireless adapter in more than one instance at the same time, probably will lead to uncontrolled errors or unexpected results" + arr["SPANISH",720]="Se ha detectado más de una instancia de airgeddon ejecutándose. Ten en cuenta que compartir y utilizar el mismo adaptador inalámbrico en más de una instancia al mismo tiempo probablemente provocará errores no controlados o resultados inesperados" + arr["FRENCH",720]="\${pending_of_translation} Il a été détecté que plusieurs instances d'airgeddon étaient en cours d'exécution. Gardez à l'esprit que le partage et l'utilisation du même adaptateur sans fil dans plusieurs instances en même temps entraîneront probablement des erreurs incontrôlées ou des résultats inattendus" + arr["CATALAN",720]="\${pending_of_translation} S'ha detectat més d'una instància d'airgeddon en execució. Tingueu en compte que compartir i utilitzar el mateix adaptador sense fil en més d'una instància alhora, probablement provocarà errors incontrolats o resultats inesperats" + arr["PORTUGUESE",720]="\${pending_of_translation} Foi detectada mais de uma instância do airgeddon em execução. Tenha em mente que compartilhar e usar o mesmo adaptador sem fio em mais de uma instância ao mesmo tempo provavelmente levará a erros descontrolados ou resultados inesperados" + arr["RUSSIAN",720]="\${pending_of_translation} Было обнаружено более одного запущенного экземпляра airgeddon. Имейте в виду, что совместное использование одного и того же беспроводного адаптера более чем в одном экземпляре одновременно может привести к неконтролируемым ошибкам или неожиданным результатам" + arr["GREEK",720]="\${pending_of_translation} Εντοπίστηκαν περισσότερες από μία περιπτώσεις airgeddon σε λειτουργία. Λάβετε υπόψη ότι η κοινή χρήση και η χρήση του ίδιου ασύρματου προσαρμογέα σε περισσότερες από μία περιπτώσεις ταυτόχρονα, πιθανότατα θα οδηγήσει σε μη ελεγχόμενα σφάλματα ή απροσδόκητα αποτελέσματα" + arr["ITALIAN",720]="\${pending_of_translation} È stata rilevata più di un'istanza di airgeddon in esecuzione. Tieni presente che la condivisione e l'utilizzo dello stesso adattatore wireless in più istanze contemporaneamente porterà probabilmente a errori incontrollati o risultati imprevisti" + arr["POLISH",720]="\${pending_of_translation} Wykryto, że działa więcej niż jedna instancja airgeddon. Należy pamiętać, że współdzielenie i używanie tej samej karty bezprzewodowej w więcej niż jednej instancji jednocześnie prawdopodobnie doprowadzi do niekontrolowanych błędów lub nieoczekiwanych rezultatów" + arr["GERMAN",720]="\${pending_of_translation} Es wurde festgestellt, dass mehr als eine Airgeddon-Instanz ausgeführt wird. Beachten Sie, dass die gemeinsame Nutzung und Verwendung desselben WLAN-Adapters in mehreren Instanzen gleichzeitig wahrscheinlich zu unkontrollierten Fehlern oder unerwarteten Ergebnissen führt" + arr["TURKISH",720]="\${pending_of_translation} Birden fazla airgeddon örneğinin çalıştığı tespit edildi. Aynı kablosuz bağdaştırıcıyı aynı anda birden fazla örnekte paylaşmanın ve kullanmanın muhtemelen kontrol edilemeyen hatalara veya beklenmeyen sonuçlara yol açacağını unutmayın" + arr["ARABIC",720]="\${pending_of_translation} تم اكتشاف وجود أكثر من مثيل airgeddon قيد التشغيل. ضع في اعتبارك أن مشاركة واستخدام نفس المحول اللاسلكي في أكثر من حالة في نفس الوقت، قد يؤدي على الأرجح إلى أخطاء لا يمكن التحكم فيها أو نتائج غير متوقعة" + arr["CHINESE",720]="\${pending_of_translation} 检测到有多个 airgeddon 实例正在运行。请记住,同时在多个实例中共享和使用同一个无线适配器可能会导致无法控制的错误或意外结果" + + arr["ENGLISH",721]="Number of running instances: \${normal_color}\${airgeddon_running_instances_counter}" + arr["SPANISH",721]="Número de instancias en ejecución: \${normal_color}\${airgeddon_running_instances_counter}" + arr["FRENCH",721]="\${pending_of_translation} Nombre d'instances en cours d'exécution: \${normal_color}\${airgeddon_running_instances_counter}" + arr["CATALAN",721]="\${pending_of_translation} Nombre d'instàncies en execució: \${normal_color}\${airgeddon_running_instances_counter}" + arr["PORTUGUESE",721]="\${pending_of_translation} Número de instâncias em execução: \${normal_color}\${airgeddon_running_instances_counter}" + arr["RUSSIAN",721]="\${pending_of_translation} Количество запущенных экземпляров: \${normal_color}\${airgeddon_running_instances_counter}" + arr["GREEK",721]="\${pending_of_translation} Αριθμός εμφανίσεων που εκτελούνται: \${normal_color}\${airgeddon_running_instances_counter}" + arr["ITALIAN",721]="\${pending_of_translation} Numero di istanze in esecuzione: \${normal_color}\${airgeddon_running_instances_counter}" + arr["POLISH",721]="\${pending_of_translation} Liczba uruchomionych instancji: \${normal_color}\${airgeddon_running_instances_counter}" + arr["GERMAN",721]="\${pending_of_translation} Anzahl der laufenden Instanzen: \${normal_color}\${airgeddon_running_instances_counter}" + arr["TURKISH",721]="\${pending_of_translation} Çalışan örneklerin sayısı: \${normal_color}\${airgeddon_running_instances_counter}" + arr["ARABIC",721]="\${pending_of_translation} \${normal_color}\${airgeddon_running_instances_counter}\${blue_color} :عدد المثيلات قيد التشغيل" + arr["CHINESE",721]="\${pending_of_translation} 正在运行的实例数:\${normal_color}\${airgeddon_running_instances_counter}" } #Expand escaped variables in language strings with their actual values From 1e664790e0cecba6278dd4413df00517319f93e8 Mon Sep 17 00:00:00 2001 From: JBalanza Date: Thu, 6 Jun 2024 12:43:03 +0200 Subject: [PATCH 42/74] Update french strings --- language_strings.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/language_strings.sh b/language_strings.sh index c62b4e5f2..19798a9ca 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -11115,7 +11115,7 @@ function initialize_language_strings() { arr["ENGLISH",720]="It was detected more than one airgeddon instance running. Keep in mind that sharing and using the same wireless adapter in more than one instance at the same time, probably will lead to uncontrolled errors or unexpected results" arr["SPANISH",720]="Se ha detectado más de una instancia de airgeddon ejecutándose. Ten en cuenta que compartir y utilizar el mismo adaptador inalámbrico en más de una instancia al mismo tiempo probablemente provocará errores no controlados o resultados inesperados" - arr["FRENCH",720]="\${pending_of_translation} Il a été détecté que plusieurs instances d'airgeddon étaient en cours d'exécution. Gardez à l'esprit que le partage et l'utilisation du même adaptateur sans fil dans plusieurs instances en même temps entraîneront probablement des erreurs incontrôlées ou des résultats inattendus" + arr["FRENCH",720]="Il a été détecté plus d'une instance d'airgeddon en exécution. Prendre en compte que le partage et l'utilisation du même adaptateur sans fil dans plusieurs instances au même temps, peut entraîner des erreurs incontrôlées ou des résultats imprévus" arr["CATALAN",720]="\${pending_of_translation} S'ha detectat més d'una instància d'airgeddon en execució. Tingueu en compte que compartir i utilitzar el mateix adaptador sense fil en més d'una instància alhora, probablement provocarà errors incontrolats o resultats inesperats" arr["PORTUGUESE",720]="\${pending_of_translation} Foi detectada mais de uma instância do airgeddon em execução. Tenha em mente que compartilhar e usar o mesmo adaptador sem fio em mais de uma instância ao mesmo tempo provavelmente levará a erros descontrolados ou resultados inesperados" arr["RUSSIAN",720]="\${pending_of_translation} Было обнаружено более одного запущенного экземпляра airgeddon. Имейте в виду, что совместное использование одного и того же беспроводного адаптера более чем в одном экземпляре одновременно может привести к неконтролируемым ошибкам или неожиданным результатам" @@ -11129,7 +11129,7 @@ function initialize_language_strings() { arr["ENGLISH",721]="Number of running instances: \${normal_color}\${airgeddon_running_instances_counter}" arr["SPANISH",721]="Número de instancias en ejecución: \${normal_color}\${airgeddon_running_instances_counter}" - arr["FRENCH",721]="\${pending_of_translation} Nombre d'instances en cours d'exécution: \${normal_color}\${airgeddon_running_instances_counter}" + arr["FRENCH",721]="Numéro d'instances en exécution: \${normal_color}\${airgeddon_running_instances_counter}" arr["CATALAN",721]="\${pending_of_translation} Nombre d'instàncies en execució: \${normal_color}\${airgeddon_running_instances_counter}" arr["PORTUGUESE",721]="\${pending_of_translation} Número de instâncias em execução: \${normal_color}\${airgeddon_running_instances_counter}" arr["RUSSIAN",721]="\${pending_of_translation} Количество запущенных экземпляров: \${normal_color}\${airgeddon_running_instances_counter}" From 9f6a77518e424c5b7b6d49b4c2b1766bbf15cdf5 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Thu, 6 Jun 2024 14:59:31 +0200 Subject: [PATCH 43/74] Update polish translations --- language_strings.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/language_strings.sh b/language_strings.sh index 19798a9ca..b11507936 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -11121,7 +11121,7 @@ function initialize_language_strings() { arr["RUSSIAN",720]="\${pending_of_translation} Было обнаружено более одного запущенного экземпляра airgeddon. Имейте в виду, что совместное использование одного и того же беспроводного адаптера более чем в одном экземпляре одновременно может привести к неконтролируемым ошибкам или неожиданным результатам" arr["GREEK",720]="\${pending_of_translation} Εντοπίστηκαν περισσότερες από μία περιπτώσεις airgeddon σε λειτουργία. Λάβετε υπόψη ότι η κοινή χρήση και η χρήση του ίδιου ασύρματου προσαρμογέα σε περισσότερες από μία περιπτώσεις ταυτόχρονα, πιθανότατα θα οδηγήσει σε μη ελεγχόμενα σφάλματα ή απροσδόκητα αποτελέσματα" arr["ITALIAN",720]="\${pending_of_translation} È stata rilevata più di un'istanza di airgeddon in esecuzione. Tieni presente che la condivisione e l'utilizzo dello stesso adattatore wireless in più istanze contemporaneamente porterà probabilmente a errori incontrollati o risultati imprevisti" - arr["POLISH",720]="\${pending_of_translation} Wykryto, że działa więcej niż jedna instancja airgeddon. Należy pamiętać, że współdzielenie i używanie tej samej karty bezprzewodowej w więcej niż jednej instancji jednocześnie prawdopodobnie doprowadzi do niekontrolowanych błędów lub nieoczekiwanych rezultatów" + arr["POLISH",720]="Wykryto, że airgeddon został uruchomiony więcej niż raz. Należy pamiętać, że współdzielenie i używanie tej samej karty bezprzewodowej w więcej niż jednej instancji jednocześnie najprawdopodobniej doprowadzi do niekontrolowanych błędów lub nieoczekiwanych rezultatów" arr["GERMAN",720]="\${pending_of_translation} Es wurde festgestellt, dass mehr als eine Airgeddon-Instanz ausgeführt wird. Beachten Sie, dass die gemeinsame Nutzung und Verwendung desselben WLAN-Adapters in mehreren Instanzen gleichzeitig wahrscheinlich zu unkontrollierten Fehlern oder unerwarteten Ergebnissen führt" arr["TURKISH",720]="\${pending_of_translation} Birden fazla airgeddon örneğinin çalıştığı tespit edildi. Aynı kablosuz bağdaştırıcıyı aynı anda birden fazla örnekte paylaşmanın ve kullanmanın muhtemelen kontrol edilemeyen hatalara veya beklenmeyen sonuçlara yol açacağını unutmayın" arr["ARABIC",720]="\${pending_of_translation} تم اكتشاف وجود أكثر من مثيل airgeddon قيد التشغيل. ضع في اعتبارك أن مشاركة واستخدام نفس المحول اللاسلكي في أكثر من حالة في نفس الوقت، قد يؤدي على الأرجح إلى أخطاء لا يمكن التحكم فيها أو نتائج غير متوقعة" @@ -11135,7 +11135,7 @@ function initialize_language_strings() { arr["RUSSIAN",721]="\${pending_of_translation} Количество запущенных экземпляров: \${normal_color}\${airgeddon_running_instances_counter}" arr["GREEK",721]="\${pending_of_translation} Αριθμός εμφανίσεων που εκτελούνται: \${normal_color}\${airgeddon_running_instances_counter}" arr["ITALIAN",721]="\${pending_of_translation} Numero di istanze in esecuzione: \${normal_color}\${airgeddon_running_instances_counter}" - arr["POLISH",721]="\${pending_of_translation} Liczba uruchomionych instancji: \${normal_color}\${airgeddon_running_instances_counter}" + arr["POLISH",721]="Liczba uruchomionych instancji: \${normal_color}\${airgeddon_running_instances_counter}" arr["GERMAN",721]="\${pending_of_translation} Anzahl der laufenden Instanzen: \${normal_color}\${airgeddon_running_instances_counter}" arr["TURKISH",721]="\${pending_of_translation} Çalışan örneklerin sayısı: \${normal_color}\${airgeddon_running_instances_counter}" arr["ARABIC",721]="\${pending_of_translation} \${normal_color}\${airgeddon_running_instances_counter}\${blue_color} :عدد المثيلات قيد التشغيل" From 9e683951c464e03573834f627af4b15b7fe7d127 Mon Sep 17 00:00:00 2001 From: Luan7905 Date: Fri, 7 Jun 2024 00:50:47 -0300 Subject: [PATCH 44/74] Update Portuguese translations --- language_strings.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/language_strings.sh b/language_strings.sh index b11507936..cd7a75463 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -11103,7 +11103,7 @@ function initialize_language_strings() { arr["SPANISH",719]="Uno de tus adaptadores wifi tiene un código de país integrado diferente al configurado en el sistema. Cuando esto sucede, el kernel crea un dominio regulatorio personalizado \"\${normal_color}99\${yellow_color}\" que contiene solo permisos en AMBOS dominios de registro. O tu hardware es de una región diferente o configuraste incorrectamente el dominio de registro y limitando su funcionalidad a propósito" arr["FRENCH",719]="\${pending_of_translation} L'un de vos adaptateurs Wi-Fi possède un code de pays intégré différent de celui défini sur votre système. Lorsque cela se produit, le noyau crée un domaine réglementaire personnalisé \"\${normal_color}99\${yellow_color}\" qui contient uniquement les autorisations dans les DEUX domaines reg. Soit votre matériel provient d'une région différente, soit vous avez mal défini votre domaine d'enregistrement et limité volontairement vos fonctionnalités" arr["CATALAN",719]="\${pending_of_translation} Un dels vostres adaptadors wifi té un codi de país integrat diferent del establert al vostre sistema. Quan això succeeix, el nucli crea un domini regulador personalitzat \"\${normal_color}99\${yellow_color}\" que només conté permisos als DOS dominis reg. O el vostre maquinari és d'una regió diferent o heu configurat el vostre domini de registre incorrectament i heu limitat la vostra funcionalitat a propòsit" - arr["PORTUGUESE",719]="\${pending_of_translation} Um de seus adaptadores wi-fi possui um código de país integrado diferente daquele definido em seu sistema. Quando isso acontece, o kernel cria um domínio regulatório personalizado \"\${normal_color}99\${yellow_color}\" que contém apenas permissões em AMBOS os domínios reg. Ou seu hardware é de uma região diferente ou você configurou incorretamente seu domínio de registro e limitou sua funcionalidade propositalmente" + arr["PORTUGUESE",719]="Um dos seus adaptadores wi-fi possui um código de país integrado diferente do definido em seu sistema. Quando isso acontece, o kernel cria um domínio regulatório personalizado \"\${normal_color}99\${yellow_color}\" que contém apenas permissões em AMBOS. Ou seu hardware é de uma região diferente, ou você configurou incorretamente seu domínio de registro e limitou sua funcionalidade propositalmente" arr["RUSSIAN",719]="\${pending_of_translation} Один из ваших адаптеров Wi-Fi имеет встроенный код страны, отличный от кода, установленного в вашей системе. Когда это происходит, ядро создает собственный нормативный домен \"\${normal_color}99\${yellow_color}\", который содержит разрешения только в ОБОИХ доменах регистрации. Либо ваше оборудование из другого региона, либо вы неправильно настроили рег-домен и намеренно ограничили функциональность" arr["GREEK",719]="\${pending_of_translation} Ένας από τους προσαρμογείς wifi σας έχει ενσωματωμένο κωδικό χώρας διαφορετικό από αυτόν που έχει οριστεί στο σύστημά σας. Όταν συμβεί αυτό, ο πυρήνας δημιουργεί έναν προσαρμοσμένο ρυθμιστικό τομέα \"\${normal_color}99\${yellow_color}\" ο οποίος περιέχει μόνο δικαιώματα και στους δύο τομείς reg. Είτε το υλικό σας προέρχεται από διαφορετική περιοχή, είτε έχετε ρυθμίσει εσφαλμένα τον τομέα reg σας και έχετε περιορίσει τη λειτουργικότητά σας επίτηδες" arr["ITALIAN",719]="\${pending_of_translation} Uno dei tuoi adattatori Wi-Fi ha un codice paese integrato diverso da quello impostato sul tuo sistema. Quando ciò accade, il kernel crea un dominio normativo personalizzato \"\${normal_color}99\${yellow_color}\" che contiene solo le autorizzazioni in ENTRAMBI i domini reg. O il tuo hardware proviene da una regione diversa oppure hai impostato in modo errato il tuo dominio reg e limitato di proposito la tua funzionalità" @@ -11117,7 +11117,7 @@ function initialize_language_strings() { arr["SPANISH",720]="Se ha detectado más de una instancia de airgeddon ejecutándose. Ten en cuenta que compartir y utilizar el mismo adaptador inalámbrico en más de una instancia al mismo tiempo probablemente provocará errores no controlados o resultados inesperados" arr["FRENCH",720]="Il a été détecté plus d'une instance d'airgeddon en exécution. Prendre en compte que le partage et l'utilisation du même adaptateur sans fil dans plusieurs instances au même temps, peut entraîner des erreurs incontrôlées ou des résultats imprévus" arr["CATALAN",720]="\${pending_of_translation} S'ha detectat més d'una instància d'airgeddon en execució. Tingueu en compte que compartir i utilitzar el mateix adaptador sense fil en més d'una instància alhora, probablement provocarà errors incontrolats o resultats inesperats" - arr["PORTUGUESE",720]="\${pending_of_translation} Foi detectada mais de uma instância do airgeddon em execução. Tenha em mente que compartilhar e usar o mesmo adaptador sem fio em mais de uma instância ao mesmo tempo provavelmente levará a erros descontrolados ou resultados inesperados" + arr["PORTUGUESE",720]="Existe mais de uma instância do airgeddon em execução. Tenha em mente que usar o mesmo adaptador wi-fi em mais de uma instância simultaneamente provavelmente levará a erros e resultados inesperados" arr["RUSSIAN",720]="\${pending_of_translation} Было обнаружено более одного запущенного экземпляра airgeddon. Имейте в виду, что совместное использование одного и того же беспроводного адаптера более чем в одном экземпляре одновременно может привести к неконтролируемым ошибкам или неожиданным результатам" arr["GREEK",720]="\${pending_of_translation} Εντοπίστηκαν περισσότερες από μία περιπτώσεις airgeddon σε λειτουργία. Λάβετε υπόψη ότι η κοινή χρήση και η χρήση του ίδιου ασύρματου προσαρμογέα σε περισσότερες από μία περιπτώσεις ταυτόχρονα, πιθανότατα θα οδηγήσει σε μη ελεγχόμενα σφάλματα ή απροσδόκητα αποτελέσματα" arr["ITALIAN",720]="\${pending_of_translation} È stata rilevata più di un'istanza di airgeddon in esecuzione. Tieni presente che la condivisione e l'utilizzo dello stesso adattatore wireless in più istanze contemporaneamente porterà probabilmente a errori incontrollati o risultati imprevisti" @@ -11131,7 +11131,7 @@ function initialize_language_strings() { arr["SPANISH",721]="Número de instancias en ejecución: \${normal_color}\${airgeddon_running_instances_counter}" arr["FRENCH",721]="Numéro d'instances en exécution: \${normal_color}\${airgeddon_running_instances_counter}" arr["CATALAN",721]="\${pending_of_translation} Nombre d'instàncies en execució: \${normal_color}\${airgeddon_running_instances_counter}" - arr["PORTUGUESE",721]="\${pending_of_translation} Número de instâncias em execução: \${normal_color}\${airgeddon_running_instances_counter}" + arr["PORTUGUESE",721]="Número de instâncias em execução: \${normal_color}\${airgeddon_running_instances_counter}" arr["RUSSIAN",721]="\${pending_of_translation} Количество запущенных экземпляров: \${normal_color}\${airgeddon_running_instances_counter}" arr["GREEK",721]="\${pending_of_translation} Αριθμός εμφανίσεων που εκτελούνται: \${normal_color}\${airgeddon_running_instances_counter}" arr["ITALIAN",721]="\${pending_of_translation} Numero di istanze in esecuzione: \${normal_color}\${airgeddon_running_instances_counter}" From 705624d28dd3e062a5df7efc72a71a179e6ec57b Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 7 Jun 2024 13:04:06 +0200 Subject: [PATCH 45/74] Update french translations --- language_strings.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language_strings.sh b/language_strings.sh index cd7a75463..4d07c381d 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -11101,7 +11101,7 @@ function initialize_language_strings() { arr["ENGLISH",719]="One of your wireless adapters has a built-in country code different from the one set on your system. When this happens the kernel makes a custom regulatory domain \"\${normal_color}99\${yellow_color}\" which contains only permissions in BOTH reg domains. Either your hardware is from a different region, or you have improperly set your reg domain and limited your functionality on purpose" arr["SPANISH",719]="Uno de tus adaptadores wifi tiene un código de país integrado diferente al configurado en el sistema. Cuando esto sucede, el kernel crea un dominio regulatorio personalizado \"\${normal_color}99\${yellow_color}\" que contiene solo permisos en AMBOS dominios de registro. O tu hardware es de una región diferente o configuraste incorrectamente el dominio de registro y limitando su funcionalidad a propósito" - arr["FRENCH",719]="\${pending_of_translation} L'un de vos adaptateurs Wi-Fi possède un code de pays intégré différent de celui défini sur votre système. Lorsque cela se produit, le noyau crée un domaine réglementaire personnalisé \"\${normal_color}99\${yellow_color}\" qui contient uniquement les autorisations dans les DEUX domaines reg. Soit votre matériel provient d'une région différente, soit vous avez mal défini votre domaine d'enregistrement et limité volontairement vos fonctionnalités" + arr["FRENCH",719]="Une des vos adaptateurs Wi-Fi a un code de pays intégré différent de celui défini sur votre système. Quand cela se produit, le Kernel crée un domaine réglementaire personnalisé \"\${normal_color}99\${yellow_color}\" qui contient uniquement les autorisations dans les DEUX domaines inscrits. Peut votre matériel provient d'une région différente ou vous avez mal défini votre domaine d'enregistrement et limité volontairement vos fonctionnalités" arr["CATALAN",719]="\${pending_of_translation} Un dels vostres adaptadors wifi té un codi de país integrat diferent del establert al vostre sistema. Quan això succeeix, el nucli crea un domini regulador personalitzat \"\${normal_color}99\${yellow_color}\" que només conté permisos als DOS dominis reg. O el vostre maquinari és d'una regió diferent o heu configurat el vostre domini de registre incorrectament i heu limitat la vostra funcionalitat a propòsit" arr["PORTUGUESE",719]="Um dos seus adaptadores wi-fi possui um código de país integrado diferente do definido em seu sistema. Quando isso acontece, o kernel cria um domínio regulatório personalizado \"\${normal_color}99\${yellow_color}\" que contém apenas permissões em AMBOS. Ou seu hardware é de uma região diferente, ou você configurou incorretamente seu domínio de registro e limitou sua funcionalidade propositalmente" arr["RUSSIAN",719]="\${pending_of_translation} Один из ваших адаптеров Wi-Fi имеет встроенный код страны, отличный от кода, установленного в вашей системе. Когда это происходит, ядро создает собственный нормативный домен \"\${normal_color}99\${yellow_color}\", который содержит разрешения только в ОБОИХ доменах регистрации. Либо ваше оборудование из другого региона, либо вы неправильно настроили рег-домен и намеренно ограничили функциональность" From c175801774ab0dc10cd27fbeb078abc9eb9ebe5c Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 7 Jun 2024 13:48:29 +0200 Subject: [PATCH 46/74] Fix dns 53 port conflict on multi-instance --- airgeddon.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/airgeddon.sh b/airgeddon.sh index c88010bf1..68e4ddfb8 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -11360,6 +11360,8 @@ function launch_dns_blackhole() { { echo -e "interface=${interface}" echo -e "address=/#/${et_ip_router}" + echo -e "port=${dns_port}" + echo -e "bind-dynamic" echo -e "address=/google.com/172.217.5.238" echo -e "address=/gstatic.com/172.217.5.238" echo -e "no-dhcp-interface=${interface}" From cb62bf1fa1cdb5c33d9b44fa607712f93284e47c Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 7 Jun 2024 14:11:59 +0200 Subject: [PATCH 47/74] Fix lighttpd 80/tcp port conflict on multi-instance --- airgeddon.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/airgeddon.sh b/airgeddon.sh index 68e4ddfb8..c71ca1dbb 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -11464,6 +11464,7 @@ function set_webserver_config() { echo -e "url.redirect = ( \"^/(.*)$\" => \"http://connectivitycheck.microsoft.com/\")" echo -e "url.redirect-code = 302" echo -e "}" + echo -e "server.bind = \"${et_ip_router}\"\n" echo -e "server.port = ${www_port}\n" echo -e "index-file.names = ( \"${indexfile}\" )\n" echo -e "server.error-handler-404 = \"/\"\n" From eb70ec7dbffd096814926e26f431d11479167641 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 7 Jun 2024 14:41:11 +0200 Subject: [PATCH 48/74] Fix problem with dnsmasq on multi_instance --- airgeddon.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/airgeddon.sh b/airgeddon.sh index c71ca1dbb..d7f607243 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -11362,6 +11362,7 @@ function launch_dns_blackhole() { echo -e "address=/#/${et_ip_router}" echo -e "port=${dns_port}" echo -e "bind-dynamic" + echo -e "except-interface=lo" echo -e "address=/google.com/172.217.5.238" echo -e "address=/gstatic.com/172.217.5.238" echo -e "no-dhcp-interface=${interface}" From 7135ecacf49659338aaa15500a620bda60067799 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 7 Jun 2024 14:43:48 +0200 Subject: [PATCH 49/74] Standardize in a var loopback interface --- airgeddon.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index d7f607243..a89208ccb 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -241,6 +241,7 @@ author="v1s1t0r" #Dhcpd, Hostapd and misc Evil Twin vars loopback_ip="127.0.0.1" loopback_ipv6="::1/128" +loopback_interface="lo" routing_tmp_file="ag.iptables_nftables" dhcpd_file="ag.dhcpd.conf" dhcpd_pid_file="dhcpd.pid" @@ -10191,7 +10192,7 @@ function set_std_internet_routing_rules() { if [ "${iptables_nftables}" -eq 1 ]; then "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" tcp dport ${bettercap_proxy_port} counter accept "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" udp dport ${bettercap_dns_port} counter accept - "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" iifname "lo" counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" iifname "${loopback_interface}" counter accept else "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp --destination-port ${bettercap_proxy_port} -j ACCEPT "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p udp --destination-port ${bettercap_dns_port} -j ACCEPT @@ -10201,7 +10202,7 @@ function set_std_internet_routing_rules() { if [ "${iptables_nftables}" -eq 1 ]; then "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" tcp dport ${bettercap_proxy_port} counter accept "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" udp dport ${bettercap_dns_port} counter accept - "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" iifname "lo" counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" iifname "${loopback_interface}" counter accept "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" tcp dport ${beef_port} counter accept else "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp --destination-port ${bettercap_proxy_port} -j ACCEPT @@ -11362,7 +11363,7 @@ function launch_dns_blackhole() { echo -e "address=/#/${et_ip_router}" echo -e "port=${dns_port}" echo -e "bind-dynamic" - echo -e "except-interface=lo" + echo -e "except-interface=${loopback_interface}" echo -e "address=/google.com/172.217.5.238" echo -e "address=/gstatic.com/172.217.5.238" echo -e "no-dhcp-interface=${interface}" From 5e4780055ae89cdb52f6e7bb0c589d6fea3e55d0 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 7 Jun 2024 18:02:05 +0200 Subject: [PATCH 50/74] Fix captive portal appearing during a non-captive evil twin attack while a captive portal is in place during a multi_instance attack --- airgeddon.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index a89208ccb..766be5cf0 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -10174,11 +10174,11 @@ function set_std_internet_routing_rules() { if [ "${et_mode}" = "et_captive_portal" ]; then if [ "${iptables_nftables}" -eq 1 ]; then - "${iptables_cmd}" add rule ip nat_"${airgeddon_instance_name}" prerouting_"${airgeddon_instance_name}" tcp dport ${www_port} counter dnat to ${et_ip_router}:${www_port} + "${iptables_cmd}" add rule ip nat_"${airgeddon_instance_name}" prerouting_"${airgeddon_instance_name}" iifname "${interface}" tcp dport ${www_port} counter dnat to ${et_ip_router}:${www_port} "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" tcp dport ${www_port} counter accept "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" tcp dport ${https_port} counter accept else - "${iptables_cmd}" -t nat -A PREROUTING -p tcp --dport ${www_port} -j DNAT --to-destination ${et_ip_router}:${www_port} + "${iptables_cmd}" -t nat -A PREROUTING -p tcp -i "${interface}" --dport ${www_port} -j DNAT --to-destination ${et_ip_router}:${www_port} "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp --destination-port ${www_port} -j ACCEPT "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp --destination-port ${https_port} -j ACCEPT fi From d4111b627f8ec5675d6cb7e71d5075a9a04fc0c4 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 7 Jun 2024 18:23:12 +0200 Subject: [PATCH 51/74] Return to nft/iptables forward default policy to accept. Better results during testing while mixing multi_instance evil twin attacks of different types --- airgeddon.sh | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index 766be5cf0..44894812f 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -6087,7 +6087,7 @@ function prepare_iptables_nftables() { if [ "${iptables_nftables}" -eq 1 ]; then "${iptables_cmd}" add table ip filter_"${airgeddon_instance_name}" - "${iptables_cmd}" add chain ip filter_"${airgeddon_instance_name}" forward_"${airgeddon_instance_name}" '{type filter hook forward priority 0; policy drop;}' + "${iptables_cmd}" add chain ip filter_"${airgeddon_instance_name}" forward_"${airgeddon_instance_name}" '{type filter hook forward priority 0; policy accept;}' "${iptables_cmd}" add chain ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" '{type filter hook input priority 0;}' "${iptables_cmd}" add table ip nat_"${airgeddon_instance_name}" "${iptables_cmd}" add chain ip nat_"${airgeddon_instance_name}" prerouting_"${airgeddon_instance_name}" '{type nat hook prerouting priority -100;}' @@ -10162,16 +10162,6 @@ function set_std_internet_routing_rules() { echo "1" > /proc/sys/net/ipv4/ip_forward 2> /dev/null - if [ "${et_mode}" != "et_captive_portal" ]; then - if [ "${iptables_nftables}" -eq 1 ]; then - "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" forward_"${airgeddon_instance_name}" iifname "${interface}" oifname "${internet_interface}" counter accept - "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" forward_"${airgeddon_instance_name}" iifname "${internet_interface}" oifname "${interface}" counter accept - else - "${iptables_cmd}" -A forward_"${airgeddon_instance_name}" -i "${interface}" -o "${internet_interface}" -j ACCEPT - "${iptables_cmd}" -A forward_"${airgeddon_instance_name}" -i "${internet_interface}" -o "${interface}" -j ACCEPT - fi - fi - if [ "${et_mode}" = "et_captive_portal" ]; then if [ "${iptables_nftables}" -eq 1 ]; then "${iptables_cmd}" add rule ip nat_"${airgeddon_instance_name}" prerouting_"${airgeddon_instance_name}" iifname "${interface}" tcp dport ${www_port} counter dnat to ${et_ip_router}:${www_port} From 0765cf441ac9b9ed835946830dd3d2c7b12f9351 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 7 Jun 2024 18:27:36 +0200 Subject: [PATCH 52/74] Add more granular restrictions on nft/iptables for icmp packets and input rules --- airgeddon.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index 44894812f..64e529eb5 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -10211,11 +10211,11 @@ function set_std_internet_routing_rules() { fi if [ "${iptables_nftables}" -eq 1 ]; then - "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" ip saddr ${et_ip_range}/${std_c_mask_cidr} ip daddr ${et_ip_router}/${ip_mask_cidr} icmp type echo-request ct state new,related,established counter accept - "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" ip saddr ${et_ip_range}/${std_c_mask_cidr} ip daddr ${et_ip_router}/${ip_mask_cidr} counter drop + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" iifname "${interface}" ip daddr ${et_ip_router}/${ip_mask_cidr} icmp type echo-request ct state new,related,established counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" ip daddr ${et_ip_router}/${ip_mask_cidr} counter drop else - "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p icmp --icmp-type 8 -s ${et_ip_range}/${std_c_mask} -d ${et_ip_router}/${ip_mask} -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT - "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -s ${et_ip_range}/${std_c_mask} -d ${et_ip_router}/${ip_mask} -j DROP + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -i "${interface}" -p icmp --icmp-type 8 -d ${et_ip_router}/${ip_mask} -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -d ${et_ip_router}/${ip_mask} -j DROP fi sleep 2 } From 240cd4337197508ea95faae7e12ce0d1371dec67 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Sat, 8 Jun 2024 12:25:22 +0200 Subject: [PATCH 53/74] Order some nft/iptables rules and set a couple of forgotten loopback_interface vars --- airgeddon.sh | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index 64e529eb5..7e054a900 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -10167,15 +10167,11 @@ function set_std_internet_routing_rules() { "${iptables_cmd}" add rule ip nat_"${airgeddon_instance_name}" prerouting_"${airgeddon_instance_name}" iifname "${interface}" tcp dport ${www_port} counter dnat to ${et_ip_router}:${www_port} "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" tcp dport ${www_port} counter accept "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" tcp dport ${https_port} counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" udp dport ${dns_port} counter accept else "${iptables_cmd}" -t nat -A PREROUTING -p tcp -i "${interface}" --dport ${www_port} -j DNAT --to-destination ${et_ip_router}:${www_port} "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp --destination-port ${www_port} -j ACCEPT "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp --destination-port ${https_port} -j ACCEPT - fi - - if [ "${iptables_nftables}" -eq 1 ]; then - "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" udp dport ${dns_port} counter accept - else "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p udp --destination-port ${dns_port} -j ACCEPT fi elif [ "${et_mode}" = "et_sniffing_sslstrip2" ]; then @@ -10186,7 +10182,7 @@ function set_std_internet_routing_rules() { else "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp --destination-port ${bettercap_proxy_port} -j ACCEPT "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p udp --destination-port ${bettercap_dns_port} -j ACCEPT - "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -i lo -j ACCEPT + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -i "${loopback_interface}" -j ACCEPT fi elif [ "${et_mode}" = "et_sniffing_sslstrip2_beef" ]; then if [ "${iptables_nftables}" -eq 1 ]; then @@ -10197,7 +10193,7 @@ function set_std_internet_routing_rules() { else "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp --destination-port ${bettercap_proxy_port} -j ACCEPT "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p udp --destination-port ${bettercap_dns_port} -j ACCEPT - "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -i lo -j ACCEPT + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -i "${loopback_interface}" -j ACCEPT "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp --destination-port ${beef_port} -j ACCEPT fi fi From f7b13f8170bc20732c1b86080a959b92cfd5c799 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Sat, 8 Jun 2024 12:51:33 +0200 Subject: [PATCH 54/74] Fix bug on nft/iptables occurring after launching second Evil Twin attack on the same instance --- airgeddon.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index 7e054a900..c9cba39cf 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -6085,6 +6085,8 @@ function prepare_iptables_nftables() { debug_print + clean_this_instance_iptables_nftables + if [ "${iptables_nftables}" -eq 1 ]; then "${iptables_cmd}" add table ip filter_"${airgeddon_instance_name}" "${iptables_cmd}" add chain ip filter_"${airgeddon_instance_name}" forward_"${airgeddon_instance_name}" '{type filter hook forward priority 0; policy accept;}' @@ -6107,8 +6109,8 @@ function clean_this_instance_iptables_nftables() { debug_print if [ "${iptables_nftables}" -eq 1 ]; then - "${iptables_cmd}" delete table filter_"${airgeddon_instance_name}" - "${iptables_cmd}" delete table nat_"${airgeddon_instance_name}" + "${iptables_cmd}" delete table filter_"${airgeddon_instance_name}" 2> /dev/null + "${iptables_cmd}" delete table nat_"${airgeddon_instance_name}" 2> /dev/null else "${iptables_cmd}" -D INPUT -j input_"${airgeddon_instance_name}" 2> /dev/null "${iptables_cmd}" -D FORWARD -j forward_"${airgeddon_instance_name}" 2> /dev/null From 7fca72612be17b89080500a2d99c5e4b935c449d Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Wed, 12 Jun 2024 11:44:34 +0200 Subject: [PATCH 55/74] Update polish translations --- language_strings.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language_strings.sh b/language_strings.sh index 4d07c381d..8260221f1 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -11107,7 +11107,7 @@ function initialize_language_strings() { arr["RUSSIAN",719]="\${pending_of_translation} Один из ваших адаптеров Wi-Fi имеет встроенный код страны, отличный от кода, установленного в вашей системе. Когда это происходит, ядро создает собственный нормативный домен \"\${normal_color}99\${yellow_color}\", который содержит разрешения только в ОБОИХ доменах регистрации. Либо ваше оборудование из другого региона, либо вы неправильно настроили рег-домен и намеренно ограничили функциональность" arr["GREEK",719]="\${pending_of_translation} Ένας από τους προσαρμογείς wifi σας έχει ενσωματωμένο κωδικό χώρας διαφορετικό από αυτόν που έχει οριστεί στο σύστημά σας. Όταν συμβεί αυτό, ο πυρήνας δημιουργεί έναν προσαρμοσμένο ρυθμιστικό τομέα \"\${normal_color}99\${yellow_color}\" ο οποίος περιέχει μόνο δικαιώματα και στους δύο τομείς reg. Είτε το υλικό σας προέρχεται από διαφορετική περιοχή, είτε έχετε ρυθμίσει εσφαλμένα τον τομέα reg σας και έχετε περιορίσει τη λειτουργικότητά σας επίτηδες" arr["ITALIAN",719]="\${pending_of_translation} Uno dei tuoi adattatori Wi-Fi ha un codice paese integrato diverso da quello impostato sul tuo sistema. Quando ciò accade, il kernel crea un dominio normativo personalizzato \"\${normal_color}99\${yellow_color}\" che contiene solo le autorizzazioni in ENTRAMBI i domini reg. O il tuo hardware proviene da una regione diversa oppure hai impostato in modo errato il tuo dominio reg e limitato di proposito la tua funzionalità" - arr["POLISH",719]="\${pending_of_translation} Jeden z Twoich adapterów Wi-Fi ma wbudowany kod kraju inny niż ten ustawiony w Twoim systemie. Kiedy tak się dzieje, jądro tworzy niestandardową domenę regulacyjną \"\${normal_color}99\${yellow_color}\", która zawiera tylko uprawnienia w OBU domenach rej. Albo Twój sprzęt pochodzi z innego regionu, albo nieprawidłowo ustawiłeś domenę rejestracyjną i celowo ograniczyłeś funkcjonalność" + arr["POLISH",719]="Jeden z Twoich adapterów Wi-Fi ma wbudowany kod kraju inny, niż ustawiony w Twoim systemie. Kiedy tak się dzieje, kernel tworzy niestandardową domenę regulacyjną \"\${normal_color}99\${yellow_color}\", która zawiera tylko uprawnienia w OBYDWU domenach regulacyjnych. Albo Twój sprzęt pochodzi z innego regionu, albo celowo nieprawidłowo ustawiłeś domenę rejestracyjną i ograniczyłeś funkcjonalność" arr["GERMAN",719]="\${pending_of_translation} Einer Ihrer WLAN-Adapter verfügt über einen integrierten Ländercode, der sich von dem auf Ihrem System unterscheidet. Wenn dies geschieht, erstellt der Kernel eine benutzerdefinierte Regulierungsdomäne \"\${normal_color}99\${yellow_color}\", die nur Berechtigungen in BEIDEN Registrierungsdomänen enthält. Entweder stammt Ihre Hardware aus einer anderen Region oder Sie haben Ihre Reg-Domain falsch eingestellt und Ihre Funktionalität absichtlich eingeschränkt" arr["TURKISH",719]="\${pending_of_translation} Wifi bağdaştırıcılarınızdan birinde, sisteminizde ayarlanandan farklı yerleşik bir ülke kodu var. Bu gerçekleştiğinde çekirdek, yalnızca HER İKİ Reg etki alanındaki izinleri içeren özel bir düzenleyici etki alanı \"\${normal_color}99\${yellow_color}\" oluşturur. Ya donanımınız farklı bir bölgeye ait ya da reg alan adınızı yanlış ayarladınız ve işlevselliğinizi bilerek sınırladınız" arr["ARABIC",719]="\${pending_of_translation} يحتوي أحد محولات wifi لديك على رمز بلد مدمج يختلف عن الرمز المعين على نظامك. عندما يحدث هذا، تقوم النواة بإنشاء مجال تنظيمي مخصص \"\${normal_color}99\${yellow_color}\" والذي يحتوي فقط على الأذونات في كلا نطاقي التسجيل. إما أن جهازك ينتمي إلى منطقة مختلفة، أو أنك قمت بتعيين نطاق التسجيل الخاص بك بشكل غير صحيح وقمت بتقييد وظائفك عن قصد" From a61709345c4e88cfdbc4835f895052c19f5358ad Mon Sep 17 00:00:00 2001 From: saim1z Date: Wed, 12 Jun 2024 14:26:16 +0200 Subject: [PATCH 56/74] Update italian strings --- language_strings.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/language_strings.sh b/language_strings.sh index 8260221f1..bee357cfa 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -11106,7 +11106,7 @@ function initialize_language_strings() { arr["PORTUGUESE",719]="Um dos seus adaptadores wi-fi possui um código de país integrado diferente do definido em seu sistema. Quando isso acontece, o kernel cria um domínio regulatório personalizado \"\${normal_color}99\${yellow_color}\" que contém apenas permissões em AMBOS. Ou seu hardware é de uma região diferente, ou você configurou incorretamente seu domínio de registro e limitou sua funcionalidade propositalmente" arr["RUSSIAN",719]="\${pending_of_translation} Один из ваших адаптеров Wi-Fi имеет встроенный код страны, отличный от кода, установленного в вашей системе. Когда это происходит, ядро создает собственный нормативный домен \"\${normal_color}99\${yellow_color}\", который содержит разрешения только в ОБОИХ доменах регистрации. Либо ваше оборудование из другого региона, либо вы неправильно настроили рег-домен и намеренно ограничили функциональность" arr["GREEK",719]="\${pending_of_translation} Ένας από τους προσαρμογείς wifi σας έχει ενσωματωμένο κωδικό χώρας διαφορετικό από αυτόν που έχει οριστεί στο σύστημά σας. Όταν συμβεί αυτό, ο πυρήνας δημιουργεί έναν προσαρμοσμένο ρυθμιστικό τομέα \"\${normal_color}99\${yellow_color}\" ο οποίος περιέχει μόνο δικαιώματα και στους δύο τομείς reg. Είτε το υλικό σας προέρχεται από διαφορετική περιοχή, είτε έχετε ρυθμίσει εσφαλμένα τον τομέα reg σας και έχετε περιορίσει τη λειτουργικότητά σας επίτηδες" - arr["ITALIAN",719]="\${pending_of_translation} Uno dei tuoi adattatori Wi-Fi ha un codice paese integrato diverso da quello impostato sul tuo sistema. Quando ciò accade, il kernel crea un dominio normativo personalizzato \"\${normal_color}99\${yellow_color}\" che contiene solo le autorizzazioni in ENTRAMBI i domini reg. O il tuo hardware proviene da una regione diversa oppure hai impostato in modo errato il tuo dominio reg e limitato di proposito la tua funzionalità" + arr["ITALIAN",719]="Uno dei tuoi adattatori Wi-Fi ha un codice paese integrato diverso da quello impostato sul tuo sistema. Quando ciò accade, il kernel crea un dominio normativo personalizzato \"\${normal_color}99\${yellow_color}\" che contiene solo le autorizzazioni in ENTRAMBI i domini di registro. O il tuo hardware proviene da una regione diversa oppure hai impostato in modo errato il tuo dominio di registro limitando quindi a proposito la sua funzionalità" arr["POLISH",719]="Jeden z Twoich adapterów Wi-Fi ma wbudowany kod kraju inny, niż ustawiony w Twoim systemie. Kiedy tak się dzieje, kernel tworzy niestandardową domenę regulacyjną \"\${normal_color}99\${yellow_color}\", która zawiera tylko uprawnienia w OBYDWU domenach regulacyjnych. Albo Twój sprzęt pochodzi z innego regionu, albo celowo nieprawidłowo ustawiłeś domenę rejestracyjną i ograniczyłeś funkcjonalność" arr["GERMAN",719]="\${pending_of_translation} Einer Ihrer WLAN-Adapter verfügt über einen integrierten Ländercode, der sich von dem auf Ihrem System unterscheidet. Wenn dies geschieht, erstellt der Kernel eine benutzerdefinierte Regulierungsdomäne \"\${normal_color}99\${yellow_color}\", die nur Berechtigungen in BEIDEN Registrierungsdomänen enthält. Entweder stammt Ihre Hardware aus einer anderen Region oder Sie haben Ihre Reg-Domain falsch eingestellt und Ihre Funktionalität absichtlich eingeschränkt" arr["TURKISH",719]="\${pending_of_translation} Wifi bağdaştırıcılarınızdan birinde, sisteminizde ayarlanandan farklı yerleşik bir ülke kodu var. Bu gerçekleştiğinde çekirdek, yalnızca HER İKİ Reg etki alanındaki izinleri içeren özel bir düzenleyici etki alanı \"\${normal_color}99\${yellow_color}\" oluşturur. Ya donanımınız farklı bir bölgeye ait ya da reg alan adınızı yanlış ayarladınız ve işlevselliğinizi bilerek sınırladınız" @@ -11120,7 +11120,7 @@ function initialize_language_strings() { arr["PORTUGUESE",720]="Existe mais de uma instância do airgeddon em execução. Tenha em mente que usar o mesmo adaptador wi-fi em mais de uma instância simultaneamente provavelmente levará a erros e resultados inesperados" arr["RUSSIAN",720]="\${pending_of_translation} Было обнаружено более одного запущенного экземпляра airgeddon. Имейте в виду, что совместное использование одного и того же беспроводного адаптера более чем в одном экземпляре одновременно может привести к неконтролируемым ошибкам или неожиданным результатам" arr["GREEK",720]="\${pending_of_translation} Εντοπίστηκαν περισσότερες από μία περιπτώσεις airgeddon σε λειτουργία. Λάβετε υπόψη ότι η κοινή χρήση και η χρήση του ίδιου ασύρματου προσαρμογέα σε περισσότερες από μία περιπτώσεις ταυτόχρονα, πιθανότατα θα οδηγήσει σε μη ελεγχόμενα σφάλματα ή απροσδόκητα αποτελέσματα" - arr["ITALIAN",720]="\${pending_of_translation} È stata rilevata più di un'istanza di airgeddon in esecuzione. Tieni presente che la condivisione e l'utilizzo dello stesso adattatore wireless in più istanze contemporaneamente porterà probabilmente a errori incontrollati o risultati imprevisti" + arr["ITALIAN",720]="È stata rilevata più di un'istanza di airgeddon in esecuzione. Tieni presente che la condivisione e l'utilizzo dello stesso adattatore wireless in più istanze contemporaneamente porterà probabilmente a errori incontrollati o risultati imprevisti" arr["POLISH",720]="Wykryto, że airgeddon został uruchomiony więcej niż raz. Należy pamiętać, że współdzielenie i używanie tej samej karty bezprzewodowej w więcej niż jednej instancji jednocześnie najprawdopodobniej doprowadzi do niekontrolowanych błędów lub nieoczekiwanych rezultatów" arr["GERMAN",720]="\${pending_of_translation} Es wurde festgestellt, dass mehr als eine Airgeddon-Instanz ausgeführt wird. Beachten Sie, dass die gemeinsame Nutzung und Verwendung desselben WLAN-Adapters in mehreren Instanzen gleichzeitig wahrscheinlich zu unkontrollierten Fehlern oder unerwarteten Ergebnissen führt" arr["TURKISH",720]="\${pending_of_translation} Birden fazla airgeddon örneğinin çalıştığı tespit edildi. Aynı kablosuz bağdaştırıcıyı aynı anda birden fazla örnekte paylaşmanın ve kullanmanın muhtemelen kontrol edilemeyen hatalara veya beklenmeyen sonuçlara yol açacağını unutmayın" @@ -11134,7 +11134,7 @@ function initialize_language_strings() { arr["PORTUGUESE",721]="Número de instâncias em execução: \${normal_color}\${airgeddon_running_instances_counter}" arr["RUSSIAN",721]="\${pending_of_translation} Количество запущенных экземпляров: \${normal_color}\${airgeddon_running_instances_counter}" arr["GREEK",721]="\${pending_of_translation} Αριθμός εμφανίσεων που εκτελούνται: \${normal_color}\${airgeddon_running_instances_counter}" - arr["ITALIAN",721]="\${pending_of_translation} Numero di istanze in esecuzione: \${normal_color}\${airgeddon_running_instances_counter}" + arr["ITALIAN",721]="Numero di istanze in esecuzione: \${normal_color}\${airgeddon_running_instances_counter}" arr["POLISH",721]="Liczba uruchomionych instancji: \${normal_color}\${airgeddon_running_instances_counter}" arr["GERMAN",721]="\${pending_of_translation} Anzahl der laufenden Instanzen: \${normal_color}\${airgeddon_running_instances_counter}" arr["TURKISH",721]="\${pending_of_translation} Çalışan örneklerin sayısı: \${normal_color}\${airgeddon_running_instances_counter}" From d8bbe2bc96c1eda82ff0737e6f2ae1e26a85d597 Mon Sep 17 00:00:00 2001 From: xorond Date: Fri, 14 Jun 2024 11:19:40 +0200 Subject: [PATCH 57/74] update german and turkish translations --- language_strings.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/language_strings.sh b/language_strings.sh index bee357cfa..e188b1569 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -5200,8 +5200,8 @@ function initialize_language_strings() { arr["GREEK",297]="\${pending_of_translation} Γινεται καθαρισμός των nftables/iptables και των κανόνων δρομολόγησης εάν υπάρχουν" arr["ITALIAN",297]="\${pending_of_translation} Pulendo nftables/iptables e le regole di routing se applicabile" arr["POLISH",297]="\${pending_of_translation} Usuwanie nftables/iptables i reguł routingu jeśli dotyczy" - arr["GERMAN",297]="\${pending_of_translation} Bereinigung von nftables/iptables und Routing-Regeln falls zutreffend" - arr["TURKISH",297]="\${pending_of_translation} nftables/iptables ve routing rules ve varsa temizleniyor" + arr["GERMAN",297]="Bereinigung von nftables/iptables und Routing-Regeln falls zutreffend" + arr["TURKISH",297]="nftables/iptables ve routing rules varsa temizleniyor" arr["ARABIC",297]="\${pending_of_translation} وقواعد التوجيه إن أمكن nftables/iptables تنظيف" arr["CHINESE",297]="\${pending_of_translation} 清理 nftables/iptables 和路由规则 如果适用" @@ -11108,8 +11108,8 @@ function initialize_language_strings() { arr["GREEK",719]="\${pending_of_translation} Ένας από τους προσαρμογείς wifi σας έχει ενσωματωμένο κωδικό χώρας διαφορετικό από αυτόν που έχει οριστεί στο σύστημά σας. Όταν συμβεί αυτό, ο πυρήνας δημιουργεί έναν προσαρμοσμένο ρυθμιστικό τομέα \"\${normal_color}99\${yellow_color}\" ο οποίος περιέχει μόνο δικαιώματα και στους δύο τομείς reg. Είτε το υλικό σας προέρχεται από διαφορετική περιοχή, είτε έχετε ρυθμίσει εσφαλμένα τον τομέα reg σας και έχετε περιορίσει τη λειτουργικότητά σας επίτηδες" arr["ITALIAN",719]="Uno dei tuoi adattatori Wi-Fi ha un codice paese integrato diverso da quello impostato sul tuo sistema. Quando ciò accade, il kernel crea un dominio normativo personalizzato \"\${normal_color}99\${yellow_color}\" che contiene solo le autorizzazioni in ENTRAMBI i domini di registro. O il tuo hardware proviene da una regione diversa oppure hai impostato in modo errato il tuo dominio di registro limitando quindi a proposito la sua funzionalità" arr["POLISH",719]="Jeden z Twoich adapterów Wi-Fi ma wbudowany kod kraju inny, niż ustawiony w Twoim systemie. Kiedy tak się dzieje, kernel tworzy niestandardową domenę regulacyjną \"\${normal_color}99\${yellow_color}\", która zawiera tylko uprawnienia w OBYDWU domenach regulacyjnych. Albo Twój sprzęt pochodzi z innego regionu, albo celowo nieprawidłowo ustawiłeś domenę rejestracyjną i ograniczyłeś funkcjonalność" - arr["GERMAN",719]="\${pending_of_translation} Einer Ihrer WLAN-Adapter verfügt über einen integrierten Ländercode, der sich von dem auf Ihrem System unterscheidet. Wenn dies geschieht, erstellt der Kernel eine benutzerdefinierte Regulierungsdomäne \"\${normal_color}99\${yellow_color}\", die nur Berechtigungen in BEIDEN Registrierungsdomänen enthält. Entweder stammt Ihre Hardware aus einer anderen Region oder Sie haben Ihre Reg-Domain falsch eingestellt und Ihre Funktionalität absichtlich eingeschränkt" - arr["TURKISH",719]="\${pending_of_translation} Wifi bağdaştırıcılarınızdan birinde, sisteminizde ayarlanandan farklı yerleşik bir ülke kodu var. Bu gerçekleştiğinde çekirdek, yalnızca HER İKİ Reg etki alanındaki izinleri içeren özel bir düzenleyici etki alanı \"\${normal_color}99\${yellow_color}\" oluşturur. Ya donanımınız farklı bir bölgeye ait ya da reg alan adınızı yanlış ayarladınız ve işlevselliğinizi bilerek sınırladınız" + arr["GERMAN",719]="Einer Ihrer WLAN-Adapter hat einen integrierten Ländercode, der sich von dem auf Ihrem System unterscheidet. Wenn dies geschieht, erstellt der Kernel eine spezielle Regulierungsdomäne \"\${normal_color}99\${yellow_color}\", die nur Berechtigungen in BEIDEN Registrierungsdomänen enthält. Entweder stammt Ihre Hardware aus einer anderen Region oder Sie haben Ihre Reg-Domain falsch eingestellt und die Funktionalität absichtlich eingeschränkt" + arr["TURKISH",719]="Wifi bağdaştırıcılarınızdan birinde, sisteminizde ayarlanandan farklı bir yerleşik ülke kodu var. Bu gerçekleştiğinde Kernel, yalnızca HER İKİ Reg etki alanındaki izinleri içeren özel bir düzenleyici etki alanı \"\${normal_color}99\${yellow_color}\" oluşturur. Ya donanımınız farklı bir bölgeye ait ya da reg alan adınızı yanlış ayarladınız ve işlevselliğinizi bilerek sınırladınız" arr["ARABIC",719]="\${pending_of_translation} يحتوي أحد محولات wifi لديك على رمز بلد مدمج يختلف عن الرمز المعين على نظامك. عندما يحدث هذا، تقوم النواة بإنشاء مجال تنظيمي مخصص \"\${normal_color}99\${yellow_color}\" والذي يحتوي فقط على الأذونات في كلا نطاقي التسجيل. إما أن جهازك ينتمي إلى منطقة مختلفة، أو أنك قمت بتعيين نطاق التسجيل الخاص بك بشكل غير صحيح وقمت بتقييد وظائفك عن قصد" arr["CHINESE",719]="\${pending_of_translation} 您的其中一款 WiFi 适配器的内置国家/地区代码与您系统上设置的国家/地区代码不同。当发生这种情况时,内核会创建一个自定义监管域 \"\${normal_color}99\${yellow_color}\",其中仅包含两个监管域中的权限。您的硬件来自不同的地区,或者您不正确地设置了您的注册域并故意限制了您的功能" @@ -11122,8 +11122,8 @@ function initialize_language_strings() { arr["GREEK",720]="\${pending_of_translation} Εντοπίστηκαν περισσότερες από μία περιπτώσεις airgeddon σε λειτουργία. Λάβετε υπόψη ότι η κοινή χρήση και η χρήση του ίδιου ασύρματου προσαρμογέα σε περισσότερες από μία περιπτώσεις ταυτόχρονα, πιθανότατα θα οδηγήσει σε μη ελεγχόμενα σφάλματα ή απροσδόκητα αποτελέσματα" arr["ITALIAN",720]="È stata rilevata più di un'istanza di airgeddon in esecuzione. Tieni presente che la condivisione e l'utilizzo dello stesso adattatore wireless in più istanze contemporaneamente porterà probabilmente a errori incontrollati o risultati imprevisti" arr["POLISH",720]="Wykryto, że airgeddon został uruchomiony więcej niż raz. Należy pamiętać, że współdzielenie i używanie tej samej karty bezprzewodowej w więcej niż jednej instancji jednocześnie najprawdopodobniej doprowadzi do niekontrolowanych błędów lub nieoczekiwanych rezultatów" - arr["GERMAN",720]="\${pending_of_translation} Es wurde festgestellt, dass mehr als eine Airgeddon-Instanz ausgeführt wird. Beachten Sie, dass die gemeinsame Nutzung und Verwendung desselben WLAN-Adapters in mehreren Instanzen gleichzeitig wahrscheinlich zu unkontrollierten Fehlern oder unerwarteten Ergebnissen führt" - arr["TURKISH",720]="\${pending_of_translation} Birden fazla airgeddon örneğinin çalıştığı tespit edildi. Aynı kablosuz bağdaştırıcıyı aynı anda birden fazla örnekte paylaşmanın ve kullanmanın muhtemelen kontrol edilemeyen hatalara veya beklenmeyen sonuçlara yol açacağını unutmayın" + arr["GERMAN",720]="Es wurde festgestellt, dass mehr als eine Airgeddon-Instanz ausgeführt wird. Beachten Sie, dass die gemeinsame Nutzung und Verwendung desselben WLAN-Adapters in mehreren Instanzen gleichzeitig wahrscheinlich zu unkontrollierten Fehlern oder unerwarteten Ergebnissen führt" + arr["TURKISH",720]="airgeddon'un birden fazla kere aynı anda çalıştığı tespit edildi. Aynı kablosuz bağdaştırıcıyı aynı anda paylaşmanın ve kullanmanın muhtemelen kontrol edilemeyen hatalara veya beklenmeyen sonuçlara yol açacağını unutmayın" arr["ARABIC",720]="\${pending_of_translation} تم اكتشاف وجود أكثر من مثيل airgeddon قيد التشغيل. ضع في اعتبارك أن مشاركة واستخدام نفس المحول اللاسلكي في أكثر من حالة في نفس الوقت، قد يؤدي على الأرجح إلى أخطاء لا يمكن التحكم فيها أو نتائج غير متوقعة" arr["CHINESE",720]="\${pending_of_translation} 检测到有多个 airgeddon 实例正在运行。请记住,同时在多个实例中共享和使用同一个无线适配器可能会导致无法控制的错误或意外结果" @@ -11136,8 +11136,8 @@ function initialize_language_strings() { arr["GREEK",721]="\${pending_of_translation} Αριθμός εμφανίσεων που εκτελούνται: \${normal_color}\${airgeddon_running_instances_counter}" arr["ITALIAN",721]="Numero di istanze in esecuzione: \${normal_color}\${airgeddon_running_instances_counter}" arr["POLISH",721]="Liczba uruchomionych instancji: \${normal_color}\${airgeddon_running_instances_counter}" - arr["GERMAN",721]="\${pending_of_translation} Anzahl der laufenden Instanzen: \${normal_color}\${airgeddon_running_instances_counter}" - arr["TURKISH",721]="\${pending_of_translation} Çalışan örneklerin sayısı: \${normal_color}\${airgeddon_running_instances_counter}" + arr["GERMAN",721]="Anzahl der laufenden Instanzen: \${normal_color}\${airgeddon_running_instances_counter}" + arr["TURKISH",721]="Çalışan airgeddon uygulamalarının sayısı: \${normal_color}\${airgeddon_running_instances_counter}" arr["ARABIC",721]="\${pending_of_translation} \${normal_color}\${airgeddon_running_instances_counter}\${blue_color} :عدد المثيلات قيد التشغيل" arr["CHINESE",721]="\${pending_of_translation} 正在运行的实例数:\${normal_color}\${airgeddon_running_instances_counter}" } From 7a64cf4a6b86cd51551483fed3628b903bb8510a Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 14 Jun 2024 12:12:43 +0200 Subject: [PATCH 58/74] Update french translations --- language_strings.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language_strings.sh b/language_strings.sh index e188b1569..118bf4ac9 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -5193,7 +5193,7 @@ function initialize_language_strings() { arr["ENGLISH",297]="Cleaning nftables/iptables and routing rules if apply" arr["SPANISH",297]="Limpiando nftables/iptables y reglas de routing si procede" - arr["FRENCH",297]="\${pending_of_translation} Effacement des règles de routage nftables/iptables le cas échéant" + arr["FRENCH",297]="En rangeant des règles de routage nftables/iptables s'il y a lieu" arr["CATALAN",297]="\${pending_of_translation} Netejant nftables/iptables i regles de routing si escau" arr["PORTUGUESE",297]="\${pending_of_translation} Limpando nftables/iptables e regras de roteamento se aplicável" arr["RUSSIAN",297]="\${pending_of_translation} Очистка nftables/iptables и правил маршуртизации если применимо" From a6a25d0748689bd404d174f1224c8db2ae36cc9e Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 14 Jun 2024 12:25:28 +0200 Subject: [PATCH 59/74] Update polish translations --- language_strings.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language_strings.sh b/language_strings.sh index 118bf4ac9..c07fa0220 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -5199,7 +5199,7 @@ function initialize_language_strings() { arr["RUSSIAN",297]="\${pending_of_translation} Очистка nftables/iptables и правил маршуртизации если применимо" arr["GREEK",297]="\${pending_of_translation} Γινεται καθαρισμός των nftables/iptables και των κανόνων δρομολόγησης εάν υπάρχουν" arr["ITALIAN",297]="\${pending_of_translation} Pulendo nftables/iptables e le regole di routing se applicabile" - arr["POLISH",297]="\${pending_of_translation} Usuwanie nftables/iptables i reguł routingu jeśli dotyczy" + arr["POLISH",297]="Usuwanie nftables/iptables i reguł routingu jeśli istnieją" arr["GERMAN",297]="Bereinigung von nftables/iptables und Routing-Regeln falls zutreffend" arr["TURKISH",297]="nftables/iptables ve routing rules varsa temizleniyor" arr["ARABIC",297]="\${pending_of_translation} وقواعد التوجيه إن أمكن nftables/iptables تنظيف" From e68ce7869ef0b52b008572eb8c5ad7b143aa4df8 Mon Sep 17 00:00:00 2001 From: AkumaHiNoTori <62224602+AkumaBiNoTori@users.noreply.github.com> Date: Fri, 14 Jun 2024 14:24:14 +0300 Subject: [PATCH 60/74] Update language_strings.sh arabic translation --- language_strings.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/language_strings.sh b/language_strings.sh index c07fa0220..712f8ba47 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -5202,7 +5202,7 @@ function initialize_language_strings() { arr["POLISH",297]="Usuwanie nftables/iptables i reguł routingu jeśli istnieją" arr["GERMAN",297]="Bereinigung von nftables/iptables und Routing-Regeln falls zutreffend" arr["TURKISH",297]="nftables/iptables ve routing rules varsa temizleniyor" - arr["ARABIC",297]="\${pending_of_translation} وقواعد التوجيه إن أمكن nftables/iptables تنظيف" + arr["ARABIC",297]=" وقواعد التوجيه إذا لزم nftables/iptables تنظيف" arr["CHINESE",297]="\${pending_of_translation} 清理 nftables/iptables 和路由规则 如果适用" arr["ENGLISH",298]="Evil Twin attack has been started. Press [Enter] key on this window to stop it" @@ -11110,7 +11110,7 @@ function initialize_language_strings() { arr["POLISH",719]="Jeden z Twoich adapterów Wi-Fi ma wbudowany kod kraju inny, niż ustawiony w Twoim systemie. Kiedy tak się dzieje, kernel tworzy niestandardową domenę regulacyjną \"\${normal_color}99\${yellow_color}\", która zawiera tylko uprawnienia w OBYDWU domenach regulacyjnych. Albo Twój sprzęt pochodzi z innego regionu, albo celowo nieprawidłowo ustawiłeś domenę rejestracyjną i ograniczyłeś funkcjonalność" arr["GERMAN",719]="Einer Ihrer WLAN-Adapter hat einen integrierten Ländercode, der sich von dem auf Ihrem System unterscheidet. Wenn dies geschieht, erstellt der Kernel eine spezielle Regulierungsdomäne \"\${normal_color}99\${yellow_color}\", die nur Berechtigungen in BEIDEN Registrierungsdomänen enthält. Entweder stammt Ihre Hardware aus einer anderen Region oder Sie haben Ihre Reg-Domain falsch eingestellt und die Funktionalität absichtlich eingeschränkt" arr["TURKISH",719]="Wifi bağdaştırıcılarınızdan birinde, sisteminizde ayarlanandan farklı bir yerleşik ülke kodu var. Bu gerçekleştiğinde Kernel, yalnızca HER İKİ Reg etki alanındaki izinleri içeren özel bir düzenleyici etki alanı \"\${normal_color}99\${yellow_color}\" oluşturur. Ya donanımınız farklı bir bölgeye ait ya da reg alan adınızı yanlış ayarladınız ve işlevselliğinizi bilerek sınırladınız" - arr["ARABIC",719]="\${pending_of_translation} يحتوي أحد محولات wifi لديك على رمز بلد مدمج يختلف عن الرمز المعين على نظامك. عندما يحدث هذا، تقوم النواة بإنشاء مجال تنظيمي مخصص \"\${normal_color}99\${yellow_color}\" والذي يحتوي فقط على الأذونات في كلا نطاقي التسجيل. إما أن جهازك ينتمي إلى منطقة مختلفة، أو أنك قمت بتعيين نطاق التسجيل الخاص بك بشكل غير صحيح وقمت بتقييد وظائفك عن قصد" + arr["ARABIC",719]=" والذي يحتوي فقط على الأذونات في كلا نطاقي التسجيل. إما أن جهازك ينتمي إلى منطقة مختلفة، أو أنك قمت بتعيين نطاق التسجيل الخاص بك بشكل غير صحيح وقمت بتقييد وظائفك عن قصد \"\${yellow_color}99\${normal_color}\" بانشاء مجال تنظيمي مخصص kernel علي رمز بلد غير الرمز الموجود علي نظامك. عندما يحدث هذا, يقوم ال wireless adapter يحتوي احدى ال " arr["CHINESE",719]="\${pending_of_translation} 您的其中一款 WiFi 适配器的内置国家/地区代码与您系统上设置的国家/地区代码不同。当发生这种情况时,内核会创建一个自定义监管域 \"\${normal_color}99\${yellow_color}\",其中仅包含两个监管域中的权限。您的硬件来自不同的地区,或者您不正确地设置了您的注册域并故意限制了您的功能" arr["ENGLISH",720]="It was detected more than one airgeddon instance running. Keep in mind that sharing and using the same wireless adapter in more than one instance at the same time, probably will lead to uncontrolled errors or unexpected results" @@ -11124,7 +11124,7 @@ function initialize_language_strings() { arr["POLISH",720]="Wykryto, że airgeddon został uruchomiony więcej niż raz. Należy pamiętać, że współdzielenie i używanie tej samej karty bezprzewodowej w więcej niż jednej instancji jednocześnie najprawdopodobniej doprowadzi do niekontrolowanych błędów lub nieoczekiwanych rezultatów" arr["GERMAN",720]="Es wurde festgestellt, dass mehr als eine Airgeddon-Instanz ausgeführt wird. Beachten Sie, dass die gemeinsame Nutzung und Verwendung desselben WLAN-Adapters in mehreren Instanzen gleichzeitig wahrscheinlich zu unkontrollierten Fehlern oder unerwarteten Ergebnissen führt" arr["TURKISH",720]="airgeddon'un birden fazla kere aynı anda çalıştığı tespit edildi. Aynı kablosuz bağdaştırıcıyı aynı anda paylaşmanın ve kullanmanın muhtemelen kontrol edilemeyen hatalara veya beklenmeyen sonuçlara yol açacağını unutmayın" - arr["ARABIC",720]="\${pending_of_translation} تم اكتشاف وجود أكثر من مثيل airgeddon قيد التشغيل. ضع في اعتبارك أن مشاركة واستخدام نفس المحول اللاسلكي في أكثر من حالة في نفس الوقت، قد يؤدي على الأرجح إلى أخطاء لا يمكن التحكم فيها أو نتائج غير متوقعة" + arr["ARABIC",720]=" في أكثر من حالة في نفس الوقت، قد يؤدي على الأرجح إلى أخطاء لا يمكن التحكم فيها أو نتائج غير متوقعة wireless adapter قيد التشغيل. يجب العلم أن مشاركة واستخدام نفس airgeddon تم اكتشاف وجود أكثر من " arr["CHINESE",720]="\${pending_of_translation} 检测到有多个 airgeddon 实例正在运行。请记住,同时在多个实例中共享和使用同一个无线适配器可能会导致无法控制的错误或意外结果" arr["ENGLISH",721]="Number of running instances: \${normal_color}\${airgeddon_running_instances_counter}" @@ -11138,7 +11138,7 @@ function initialize_language_strings() { arr["POLISH",721]="Liczba uruchomionych instancji: \${normal_color}\${airgeddon_running_instances_counter}" arr["GERMAN",721]="Anzahl der laufenden Instanzen: \${normal_color}\${airgeddon_running_instances_counter}" arr["TURKISH",721]="Çalışan airgeddon uygulamalarının sayısı: \${normal_color}\${airgeddon_running_instances_counter}" - arr["ARABIC",721]="\${pending_of_translation} \${normal_color}\${airgeddon_running_instances_counter}\${blue_color} :عدد المثيلات قيد التشغيل" + arr["ARABIC",721]="\${normal_color}\${airgeddon_running_instances_counter}\${blue_color} :عدد المثيلات قيد التشغيل" arr["CHINESE",721]="\${pending_of_translation} 正在运行的实例数:\${normal_color}\${airgeddon_running_instances_counter}" } From 19c2c46413c14f2f12054482ef52305d2ef5cbb5 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 14 Jun 2024 14:12:22 +0200 Subject: [PATCH 61/74] Remove leading spaces from some arabic strings --- language_strings.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/language_strings.sh b/language_strings.sh index 712f8ba47..e04c1bd0e 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -5202,7 +5202,7 @@ function initialize_language_strings() { arr["POLISH",297]="Usuwanie nftables/iptables i reguł routingu jeśli istnieją" arr["GERMAN",297]="Bereinigung von nftables/iptables und Routing-Regeln falls zutreffend" arr["TURKISH",297]="nftables/iptables ve routing rules varsa temizleniyor" - arr["ARABIC",297]=" وقواعد التوجيه إذا لزم nftables/iptables تنظيف" + arr["ARABIC",297]="وقواعد التوجيه إذا لزم nftables/iptables تنظيف" arr["CHINESE",297]="\${pending_of_translation} 清理 nftables/iptables 和路由规则 如果适用" arr["ENGLISH",298]="Evil Twin attack has been started. Press [Enter] key on this window to stop it" @@ -11110,7 +11110,7 @@ function initialize_language_strings() { arr["POLISH",719]="Jeden z Twoich adapterów Wi-Fi ma wbudowany kod kraju inny, niż ustawiony w Twoim systemie. Kiedy tak się dzieje, kernel tworzy niestandardową domenę regulacyjną \"\${normal_color}99\${yellow_color}\", która zawiera tylko uprawnienia w OBYDWU domenach regulacyjnych. Albo Twój sprzęt pochodzi z innego regionu, albo celowo nieprawidłowo ustawiłeś domenę rejestracyjną i ograniczyłeś funkcjonalność" arr["GERMAN",719]="Einer Ihrer WLAN-Adapter hat einen integrierten Ländercode, der sich von dem auf Ihrem System unterscheidet. Wenn dies geschieht, erstellt der Kernel eine spezielle Regulierungsdomäne \"\${normal_color}99\${yellow_color}\", die nur Berechtigungen in BEIDEN Registrierungsdomänen enthält. Entweder stammt Ihre Hardware aus einer anderen Region oder Sie haben Ihre Reg-Domain falsch eingestellt und die Funktionalität absichtlich eingeschränkt" arr["TURKISH",719]="Wifi bağdaştırıcılarınızdan birinde, sisteminizde ayarlanandan farklı bir yerleşik ülke kodu var. Bu gerçekleştiğinde Kernel, yalnızca HER İKİ Reg etki alanındaki izinleri içeren özel bir düzenleyici etki alanı \"\${normal_color}99\${yellow_color}\" oluşturur. Ya donanımınız farklı bir bölgeye ait ya da reg alan adınızı yanlış ayarladınız ve işlevselliğinizi bilerek sınırladınız" - arr["ARABIC",719]=" والذي يحتوي فقط على الأذونات في كلا نطاقي التسجيل. إما أن جهازك ينتمي إلى منطقة مختلفة، أو أنك قمت بتعيين نطاق التسجيل الخاص بك بشكل غير صحيح وقمت بتقييد وظائفك عن قصد \"\${yellow_color}99\${normal_color}\" بانشاء مجال تنظيمي مخصص kernel علي رمز بلد غير الرمز الموجود علي نظامك. عندما يحدث هذا, يقوم ال wireless adapter يحتوي احدى ال " + arr["ARABIC",719]="والذي يحتوي فقط على الأذونات في كلا نطاقي التسجيل. إما أن جهازك ينتمي إلى منطقة مختلفة، أو أنك قمت بتعيين نطاق التسجيل الخاص بك بشكل غير صحيح وقمت بتقييد وظائفك عن قصد \"\${yellow_color}99\${normal_color}\" بانشاء مجال تنظيمي مخصص kernel علي رمز بلد غير الرمز الموجود علي نظامك. عندما يحدث هذا, يقوم ال wireless adapter يحتوي احدى ال " arr["CHINESE",719]="\${pending_of_translation} 您的其中一款 WiFi 适配器的内置国家/地区代码与您系统上设置的国家/地区代码不同。当发生这种情况时,内核会创建一个自定义监管域 \"\${normal_color}99\${yellow_color}\",其中仅包含两个监管域中的权限。您的硬件来自不同的地区,或者您不正确地设置了您的注册域并故意限制了您的功能" arr["ENGLISH",720]="It was detected more than one airgeddon instance running. Keep in mind that sharing and using the same wireless adapter in more than one instance at the same time, probably will lead to uncontrolled errors or unexpected results" @@ -11124,7 +11124,7 @@ function initialize_language_strings() { arr["POLISH",720]="Wykryto, że airgeddon został uruchomiony więcej niż raz. Należy pamiętać, że współdzielenie i używanie tej samej karty bezprzewodowej w więcej niż jednej instancji jednocześnie najprawdopodobniej doprowadzi do niekontrolowanych błędów lub nieoczekiwanych rezultatów" arr["GERMAN",720]="Es wurde festgestellt, dass mehr als eine Airgeddon-Instanz ausgeführt wird. Beachten Sie, dass die gemeinsame Nutzung und Verwendung desselben WLAN-Adapters in mehreren Instanzen gleichzeitig wahrscheinlich zu unkontrollierten Fehlern oder unerwarteten Ergebnissen führt" arr["TURKISH",720]="airgeddon'un birden fazla kere aynı anda çalıştığı tespit edildi. Aynı kablosuz bağdaştırıcıyı aynı anda paylaşmanın ve kullanmanın muhtemelen kontrol edilemeyen hatalara veya beklenmeyen sonuçlara yol açacağını unutmayın" - arr["ARABIC",720]=" في أكثر من حالة في نفس الوقت، قد يؤدي على الأرجح إلى أخطاء لا يمكن التحكم فيها أو نتائج غير متوقعة wireless adapter قيد التشغيل. يجب العلم أن مشاركة واستخدام نفس airgeddon تم اكتشاف وجود أكثر من " + arr["ARABIC",720]="في أكثر من حالة في نفس الوقت، قد يؤدي على الأرجح إلى أخطاء لا يمكن التحكم فيها أو نتائج غير متوقعة wireless adapter قيد التشغيل. يجب العلم أن مشاركة واستخدام نفس airgeddon تم اكتشاف وجود أكثر من " arr["CHINESE",720]="\${pending_of_translation} 检测到有多个 airgeddon 实例正在运行。请记住,同时在多个实例中共享和使用同一个无线适配器可能会导致无法控制的错误或意外结果" arr["ENGLISH",721]="Number of running instances: \${normal_color}\${airgeddon_running_instances_counter}" From 0f5f595d6545797ea0f1f7b19fedf0082fa8255b Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Fri, 14 Jun 2024 14:12:55 +0200 Subject: [PATCH 62/74] Update portuguese string --- language_strings.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language_strings.sh b/language_strings.sh index e04c1bd0e..9fd995e49 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -5195,7 +5195,7 @@ function initialize_language_strings() { arr["SPANISH",297]="Limpiando nftables/iptables y reglas de routing si procede" arr["FRENCH",297]="En rangeant des règles de routage nftables/iptables s'il y a lieu" arr["CATALAN",297]="\${pending_of_translation} Netejant nftables/iptables i regles de routing si escau" - arr["PORTUGUESE",297]="\${pending_of_translation} Limpando nftables/iptables e regras de roteamento se aplicável" + arr["PORTUGUESE",297]="Limpando as regras do nftables/iptables e de roteamento, se aplicável" arr["RUSSIAN",297]="\${pending_of_translation} Очистка nftables/iptables и правил маршуртизации если применимо" arr["GREEK",297]="\${pending_of_translation} Γινεται καθαρισμός των nftables/iptables και των κανόνων δρομολόγησης εάν υπάρχουν" arr["ITALIAN",297]="\${pending_of_translation} Pulendo nftables/iptables e le regole di routing se applicabile" From 975995269c6c0ee275731f7cde39cd7ba28f5643 Mon Sep 17 00:00:00 2001 From: saim1z Date: Fri, 14 Jun 2024 16:17:52 +0200 Subject: [PATCH 63/74] Update italian strings --- language_strings.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language_strings.sh b/language_strings.sh index 9fd995e49..c49095847 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -5198,7 +5198,7 @@ function initialize_language_strings() { arr["PORTUGUESE",297]="Limpando as regras do nftables/iptables e de roteamento, se aplicável" arr["RUSSIAN",297]="\${pending_of_translation} Очистка nftables/iptables и правил маршуртизации если применимо" arr["GREEK",297]="\${pending_of_translation} Γινεται καθαρισμός των nftables/iptables και των κανόνων δρομολόγησης εάν υπάρχουν" - arr["ITALIAN",297]="\${pending_of_translation} Pulendo nftables/iptables e le regole di routing se applicabile" + arr["ITALIAN",297]="Pulendo nftables/iptables e le regole di routing se necessario" arr["POLISH",297]="Usuwanie nftables/iptables i reguł routingu jeśli istnieją" arr["GERMAN",297]="Bereinigung von nftables/iptables und Routing-Regeln falls zutreffend" arr["TURKISH",297]="nftables/iptables ve routing rules varsa temizleniyor" From 8f5d7f6eb6fafb07de8e3b32abfeccefc41e1aee Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Sat, 15 Jun 2024 14:01:50 +0200 Subject: [PATCH 64/74] Update russian strings --- language_strings.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/language_strings.sh b/language_strings.sh index c49095847..6351ee0c9 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -5196,7 +5196,7 @@ function initialize_language_strings() { arr["FRENCH",297]="En rangeant des règles de routage nftables/iptables s'il y a lieu" arr["CATALAN",297]="\${pending_of_translation} Netejant nftables/iptables i regles de routing si escau" arr["PORTUGUESE",297]="Limpando as regras do nftables/iptables e de roteamento, se aplicável" - arr["RUSSIAN",297]="\${pending_of_translation} Очистка nftables/iptables и правил маршуртизации если применимо" + arr["RUSSIAN",297]="Очистка nftables/iptables и правил маршрутизации если применимо" arr["GREEK",297]="\${pending_of_translation} Γινεται καθαρισμός των nftables/iptables και των κανόνων δρομολόγησης εάν υπάρχουν" arr["ITALIAN",297]="Pulendo nftables/iptables e le regole di routing se necessario" arr["POLISH",297]="Usuwanie nftables/iptables i reguł routingu jeśli istnieją" @@ -11104,7 +11104,7 @@ function initialize_language_strings() { arr["FRENCH",719]="Une des vos adaptateurs Wi-Fi a un code de pays intégré différent de celui défini sur votre système. Quand cela se produit, le Kernel crée un domaine réglementaire personnalisé \"\${normal_color}99\${yellow_color}\" qui contient uniquement les autorisations dans les DEUX domaines inscrits. Peut votre matériel provient d'une région différente ou vous avez mal défini votre domaine d'enregistrement et limité volontairement vos fonctionnalités" arr["CATALAN",719]="\${pending_of_translation} Un dels vostres adaptadors wifi té un codi de país integrat diferent del establert al vostre sistema. Quan això succeeix, el nucli crea un domini regulador personalitzat \"\${normal_color}99\${yellow_color}\" que només conté permisos als DOS dominis reg. O el vostre maquinari és d'una regió diferent o heu configurat el vostre domini de registre incorrectament i heu limitat la vostra funcionalitat a propòsit" arr["PORTUGUESE",719]="Um dos seus adaptadores wi-fi possui um código de país integrado diferente do definido em seu sistema. Quando isso acontece, o kernel cria um domínio regulatório personalizado \"\${normal_color}99\${yellow_color}\" que contém apenas permissões em AMBOS. Ou seu hardware é de uma região diferente, ou você configurou incorretamente seu domínio de registro e limitou sua funcionalidade propositalmente" - arr["RUSSIAN",719]="\${pending_of_translation} Один из ваших адаптеров Wi-Fi имеет встроенный код страны, отличный от кода, установленного в вашей системе. Когда это происходит, ядро создает собственный нормативный домен \"\${normal_color}99\${yellow_color}\", который содержит разрешения только в ОБОИХ доменах регистрации. Либо ваше оборудование из другого региона, либо вы неправильно настроили рег-домен и намеренно ограничили функциональность" + arr["RUSSIAN",719]="Один из ваших Wi-Fi адаптеров имеет вшитый код страны, отличный от установленного в вашей системе. Когда это происходит, ядро создает кастомный регулятивный домен \"\${normal_color}99\${yellow_color}\", который содержит общие разрешения доступные в ОБОИХ доменах регистрации. Либо ваше оборудование из другого региона, либо вы неправильно настроили регулятивный домен и намеренно ограничили функциональность" arr["GREEK",719]="\${pending_of_translation} Ένας από τους προσαρμογείς wifi σας έχει ενσωματωμένο κωδικό χώρας διαφορετικό από αυτόν που έχει οριστεί στο σύστημά σας. Όταν συμβεί αυτό, ο πυρήνας δημιουργεί έναν προσαρμοσμένο ρυθμιστικό τομέα \"\${normal_color}99\${yellow_color}\" ο οποίος περιέχει μόνο δικαιώματα και στους δύο τομείς reg. Είτε το υλικό σας προέρχεται από διαφορετική περιοχή, είτε έχετε ρυθμίσει εσφαλμένα τον τομέα reg σας και έχετε περιορίσει τη λειτουργικότητά σας επίτηδες" arr["ITALIAN",719]="Uno dei tuoi adattatori Wi-Fi ha un codice paese integrato diverso da quello impostato sul tuo sistema. Quando ciò accade, il kernel crea un dominio normativo personalizzato \"\${normal_color}99\${yellow_color}\" che contiene solo le autorizzazioni in ENTRAMBI i domini di registro. O il tuo hardware proviene da una regione diversa oppure hai impostato in modo errato il tuo dominio di registro limitando quindi a proposito la sua funzionalità" arr["POLISH",719]="Jeden z Twoich adapterów Wi-Fi ma wbudowany kod kraju inny, niż ustawiony w Twoim systemie. Kiedy tak się dzieje, kernel tworzy niestandardową domenę regulacyjną \"\${normal_color}99\${yellow_color}\", która zawiera tylko uprawnienia w OBYDWU domenach regulacyjnych. Albo Twój sprzęt pochodzi z innego regionu, albo celowo nieprawidłowo ustawiłeś domenę rejestracyjną i ograniczyłeś funkcjonalność" @@ -11118,7 +11118,7 @@ function initialize_language_strings() { arr["FRENCH",720]="Il a été détecté plus d'une instance d'airgeddon en exécution. Prendre en compte que le partage et l'utilisation du même adaptateur sans fil dans plusieurs instances au même temps, peut entraîner des erreurs incontrôlées ou des résultats imprévus" arr["CATALAN",720]="\${pending_of_translation} S'ha detectat més d'una instància d'airgeddon en execució. Tingueu en compte que compartir i utilitzar el mateix adaptador sense fil en més d'una instància alhora, probablement provocarà errors incontrolats o resultats inesperats" arr["PORTUGUESE",720]="Existe mais de uma instância do airgeddon em execução. Tenha em mente que usar o mesmo adaptador wi-fi em mais de uma instância simultaneamente provavelmente levará a erros e resultados inesperados" - arr["RUSSIAN",720]="\${pending_of_translation} Было обнаружено более одного запущенного экземпляра airgeddon. Имейте в виду, что совместное использование одного и того же беспроводного адаптера более чем в одном экземпляре одновременно может привести к неконтролируемым ошибкам или неожиданным результатам" + arr["RUSSIAN",720]="Было обнаружено, что запущено несколько инстансов airgeddon. Имейте в виду, что совместное использование одного и того же беспроводного адаптера более чем в одном инстансе одновременно может привести к неконтролируемым ошибкам или неожиданным результатам" arr["GREEK",720]="\${pending_of_translation} Εντοπίστηκαν περισσότερες από μία περιπτώσεις airgeddon σε λειτουργία. Λάβετε υπόψη ότι η κοινή χρήση και η χρήση του ίδιου ασύρματου προσαρμογέα σε περισσότερες από μία περιπτώσεις ταυτόχρονα, πιθανότατα θα οδηγήσει σε μη ελεγχόμενα σφάλματα ή απροσδόκητα αποτελέσματα" arr["ITALIAN",720]="È stata rilevata più di un'istanza di airgeddon in esecuzione. Tieni presente che la condivisione e l'utilizzo dello stesso adattatore wireless in più istanze contemporaneamente porterà probabilmente a errori incontrollati o risultati imprevisti" arr["POLISH",720]="Wykryto, że airgeddon został uruchomiony więcej niż raz. Należy pamiętać, że współdzielenie i używanie tej samej karty bezprzewodowej w więcej niż jednej instancji jednocześnie najprawdopodobniej doprowadzi do niekontrolowanych błędów lub nieoczekiwanych rezultatów" @@ -11132,7 +11132,7 @@ function initialize_language_strings() { arr["FRENCH",721]="Numéro d'instances en exécution: \${normal_color}\${airgeddon_running_instances_counter}" arr["CATALAN",721]="\${pending_of_translation} Nombre d'instàncies en execució: \${normal_color}\${airgeddon_running_instances_counter}" arr["PORTUGUESE",721]="Número de instâncias em execução: \${normal_color}\${airgeddon_running_instances_counter}" - arr["RUSSIAN",721]="\${pending_of_translation} Количество запущенных экземпляров: \${normal_color}\${airgeddon_running_instances_counter}" + arr["RUSSIAN",721]="Количество запущенных инстансов: \${normal_color}\${airgeddon_running_instances_counter}" arr["GREEK",721]="\${pending_of_translation} Αριθμός εμφανίσεων που εκτελούνται: \${normal_color}\${airgeddon_running_instances_counter}" arr["ITALIAN",721]="Numero di istanze in esecuzione: \${normal_color}\${airgeddon_running_instances_counter}" arr["POLISH",721]="Liczba uruchomionych instancji: \${normal_color}\${airgeddon_running_instances_counter}" From c7549e4022fda52ac486ed35c1e8866af9b5a1fc Mon Sep 17 00:00:00 2001 From: cLn73 Date: Sat, 15 Jun 2024 17:48:46 +0200 Subject: [PATCH 65/74] Updated Catalan Translations --- language_strings.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/language_strings.sh b/language_strings.sh index 6351ee0c9..1d44d0f89 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -11102,7 +11102,7 @@ function initialize_language_strings() { arr["ENGLISH",719]="One of your wireless adapters has a built-in country code different from the one set on your system. When this happens the kernel makes a custom regulatory domain \"\${normal_color}99\${yellow_color}\" which contains only permissions in BOTH reg domains. Either your hardware is from a different region, or you have improperly set your reg domain and limited your functionality on purpose" arr["SPANISH",719]="Uno de tus adaptadores wifi tiene un código de país integrado diferente al configurado en el sistema. Cuando esto sucede, el kernel crea un dominio regulatorio personalizado \"\${normal_color}99\${yellow_color}\" que contiene solo permisos en AMBOS dominios de registro. O tu hardware es de una región diferente o configuraste incorrectamente el dominio de registro y limitando su funcionalidad a propósito" arr["FRENCH",719]="Une des vos adaptateurs Wi-Fi a un code de pays intégré différent de celui défini sur votre système. Quand cela se produit, le Kernel crée un domaine réglementaire personnalisé \"\${normal_color}99\${yellow_color}\" qui contient uniquement les autorisations dans les DEUX domaines inscrits. Peut votre matériel provient d'une région différente ou vous avez mal défini votre domaine d'enregistrement et limité volontairement vos fonctionnalités" - arr["CATALAN",719]="\${pending_of_translation} Un dels vostres adaptadors wifi té un codi de país integrat diferent del establert al vostre sistema. Quan això succeeix, el nucli crea un domini regulador personalitzat \"\${normal_color}99\${yellow_color}\" que només conté permisos als DOS dominis reg. O el vostre maquinari és d'una regió diferent o heu configurat el vostre domini de registre incorrectament i heu limitat la vostra funcionalitat a propòsit" + arr["CATALAN",719]="Un dels vostres adaptadors wifi té un codi de país integrat diferent del establert al vostre sistema. Quan això succeeix, el nucli crea un domini regulador personalitzat \"\${normal_color}99\${yellow_color}\" que només conté permisos als DOS dominis reg. O el vostre maquinari és d'una regió diferent o heu configurat el vostre domini de registre incorrectament i heu limitat la vostra funcionalitat a propòsit" arr["PORTUGUESE",719]="Um dos seus adaptadores wi-fi possui um código de país integrado diferente do definido em seu sistema. Quando isso acontece, o kernel cria um domínio regulatório personalizado \"\${normal_color}99\${yellow_color}\" que contém apenas permissões em AMBOS. Ou seu hardware é de uma região diferente, ou você configurou incorretamente seu domínio de registro e limitou sua funcionalidade propositalmente" arr["RUSSIAN",719]="Один из ваших Wi-Fi адаптеров имеет вшитый код страны, отличный от установленного в вашей системе. Когда это происходит, ядро создает кастомный регулятивный домен \"\${normal_color}99\${yellow_color}\", который содержит общие разрешения доступные в ОБОИХ доменах регистрации. Либо ваше оборудование из другого региона, либо вы неправильно настроили регулятивный домен и намеренно ограничили функциональность" arr["GREEK",719]="\${pending_of_translation} Ένας από τους προσαρμογείς wifi σας έχει ενσωματωμένο κωδικό χώρας διαφορετικό από αυτόν που έχει οριστεί στο σύστημά σας. Όταν συμβεί αυτό, ο πυρήνας δημιουργεί έναν προσαρμοσμένο ρυθμιστικό τομέα \"\${normal_color}99\${yellow_color}\" ο οποίος περιέχει μόνο δικαιώματα και στους δύο τομείς reg. Είτε το υλικό σας προέρχεται από διαφορετική περιοχή, είτε έχετε ρυθμίσει εσφαλμένα τον τομέα reg σας και έχετε περιορίσει τη λειτουργικότητά σας επίτηδες" @@ -11116,7 +11116,7 @@ function initialize_language_strings() { arr["ENGLISH",720]="It was detected more than one airgeddon instance running. Keep in mind that sharing and using the same wireless adapter in more than one instance at the same time, probably will lead to uncontrolled errors or unexpected results" arr["SPANISH",720]="Se ha detectado más de una instancia de airgeddon ejecutándose. Ten en cuenta que compartir y utilizar el mismo adaptador inalámbrico en más de una instancia al mismo tiempo probablemente provocará errores no controlados o resultados inesperados" arr["FRENCH",720]="Il a été détecté plus d'une instance d'airgeddon en exécution. Prendre en compte que le partage et l'utilisation du même adaptateur sans fil dans plusieurs instances au même temps, peut entraîner des erreurs incontrôlées ou des résultats imprévus" - arr["CATALAN",720]="\${pending_of_translation} S'ha detectat més d'una instància d'airgeddon en execució. Tingueu en compte que compartir i utilitzar el mateix adaptador sense fil en més d'una instància alhora, probablement provocarà errors incontrolats o resultats inesperats" + arr["CATALAN",720]="S'ha detectat més d'una instància d'airgeddon en execució. Tingueu en compte que compartir i utilitzar el mateix adaptador sense fil en més d'una instància alhora, probablement provocarà errors incontrolats o resultats inesperats" arr["PORTUGUESE",720]="Existe mais de uma instância do airgeddon em execução. Tenha em mente que usar o mesmo adaptador wi-fi em mais de uma instância simultaneamente provavelmente levará a erros e resultados inesperados" arr["RUSSIAN",720]="Было обнаружено, что запущено несколько инстансов airgeddon. Имейте в виду, что совместное использование одного и того же беспроводного адаптера более чем в одном инстансе одновременно может привести к неконтролируемым ошибкам или неожиданным результатам" arr["GREEK",720]="\${pending_of_translation} Εντοπίστηκαν περισσότερες από μία περιπτώσεις airgeddon σε λειτουργία. Λάβετε υπόψη ότι η κοινή χρήση και η χρήση του ίδιου ασύρματου προσαρμογέα σε περισσότερες από μία περιπτώσεις ταυτόχρονα, πιθανότατα θα οδηγήσει σε μη ελεγχόμενα σφάλματα ή απροσδόκητα αποτελέσματα" @@ -11130,7 +11130,7 @@ function initialize_language_strings() { arr["ENGLISH",721]="Number of running instances: \${normal_color}\${airgeddon_running_instances_counter}" arr["SPANISH",721]="Número de instancias en ejecución: \${normal_color}\${airgeddon_running_instances_counter}" arr["FRENCH",721]="Numéro d'instances en exécution: \${normal_color}\${airgeddon_running_instances_counter}" - arr["CATALAN",721]="\${pending_of_translation} Nombre d'instàncies en execució: \${normal_color}\${airgeddon_running_instances_counter}" + arr["CATALAN",721]="Nombre d'instàncies en execució: \${normal_color}\${airgeddon_running_instances_counter}" arr["PORTUGUESE",721]="Número de instâncias em execução: \${normal_color}\${airgeddon_running_instances_counter}" arr["RUSSIAN",721]="Количество запущенных инстансов: \${normal_color}\${airgeddon_running_instances_counter}" arr["GREEK",721]="\${pending_of_translation} Αριθμός εμφανίσεων που εκτελούνται: \${normal_color}\${airgeddon_running_instances_counter}" From eceb45e7febb41ae61633969993b01875d9cbbd3 Mon Sep 17 00:00:00 2001 From: cLn73 Date: Sat, 15 Jun 2024 18:10:56 +0200 Subject: [PATCH 66/74] Updated Catalan Translations --- language_strings.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language_strings.sh b/language_strings.sh index 1d44d0f89..2bb3e5f62 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -5194,7 +5194,7 @@ function initialize_language_strings() { arr["ENGLISH",297]="Cleaning nftables/iptables and routing rules if apply" arr["SPANISH",297]="Limpiando nftables/iptables y reglas de routing si procede" arr["FRENCH",297]="En rangeant des règles de routage nftables/iptables s'il y a lieu" - arr["CATALAN",297]="\${pending_of_translation} Netejant nftables/iptables i regles de routing si escau" + arr["CATALAN",297]="Netejant nftables/iptables i regles de routing si escau" arr["PORTUGUESE",297]="Limpando as regras do nftables/iptables e de roteamento, se aplicável" arr["RUSSIAN",297]="Очистка nftables/iptables и правил маршрутизации если применимо" arr["GREEK",297]="\${pending_of_translation} Γινεται καθαρισμός των nftables/iptables και των κανόνων δρομολόγησης εάν υπάρχουν" From 479602e6a9c9c65650cda772d32b5d6816810c87 Mon Sep 17 00:00:00 2001 From: Georgios Zoutis Date: Tue, 18 Jun 2024 21:37:05 +0300 Subject: [PATCH 67/74] update greek translations --- language_strings.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/language_strings.sh b/language_strings.sh index 2bb3e5f62..2ac45117e 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -11105,7 +11105,7 @@ function initialize_language_strings() { arr["CATALAN",719]="Un dels vostres adaptadors wifi té un codi de país integrat diferent del establert al vostre sistema. Quan això succeeix, el nucli crea un domini regulador personalitzat \"\${normal_color}99\${yellow_color}\" que només conté permisos als DOS dominis reg. O el vostre maquinari és d'una regió diferent o heu configurat el vostre domini de registre incorrectament i heu limitat la vostra funcionalitat a propòsit" arr["PORTUGUESE",719]="Um dos seus adaptadores wi-fi possui um código de país integrado diferente do definido em seu sistema. Quando isso acontece, o kernel cria um domínio regulatório personalizado \"\${normal_color}99\${yellow_color}\" que contém apenas permissões em AMBOS. Ou seu hardware é de uma região diferente, ou você configurou incorretamente seu domínio de registro e limitou sua funcionalidade propositalmente" arr["RUSSIAN",719]="Один из ваших Wi-Fi адаптеров имеет вшитый код страны, отличный от установленного в вашей системе. Когда это происходит, ядро создает кастомный регулятивный домен \"\${normal_color}99\${yellow_color}\", который содержит общие разрешения доступные в ОБОИХ доменах регистрации. Либо ваше оборудование из другого региона, либо вы неправильно настроили регулятивный домен и намеренно ограничили функциональность" - arr["GREEK",719]="\${pending_of_translation} Ένας από τους προσαρμογείς wifi σας έχει ενσωματωμένο κωδικό χώρας διαφορετικό από αυτόν που έχει οριστεί στο σύστημά σας. Όταν συμβεί αυτό, ο πυρήνας δημιουργεί έναν προσαρμοσμένο ρυθμιστικό τομέα \"\${normal_color}99\${yellow_color}\" ο οποίος περιέχει μόνο δικαιώματα και στους δύο τομείς reg. Είτε το υλικό σας προέρχεται από διαφορετική περιοχή, είτε έχετε ρυθμίσει εσφαλμένα τον τομέα reg σας και έχετε περιορίσει τη λειτουργικότητά σας επίτηδες" + arr["GREEK",719]="Ένας από τους αντάπτορες δικτύου wifi σας έχει ενσωματωμένο κωδικό χώρας διαφορετικό από αυτόν που έχει οριστεί στο σύστημά σας. Όταν συμβαίνει αυτό, ο kernel δημιουργεί ένα custom regulatory domain \"\${normal_color}99\${yellow_color}\" το οποίο περιέχει μόνο δικαιώματα και στα δύο reg domains. Είτε το hardware σας προέρχεται από διαφορετική περιοχή, είτε έχετε ρυθμίσει εσφαλμένα το domain reg σας και έχετε περιορίσει τη λειτουργικότητά σας επίτηδες" arr["ITALIAN",719]="Uno dei tuoi adattatori Wi-Fi ha un codice paese integrato diverso da quello impostato sul tuo sistema. Quando ciò accade, il kernel crea un dominio normativo personalizzato \"\${normal_color}99\${yellow_color}\" che contiene solo le autorizzazioni in ENTRAMBI i domini di registro. O il tuo hardware proviene da una regione diversa oppure hai impostato in modo errato il tuo dominio di registro limitando quindi a proposito la sua funzionalità" arr["POLISH",719]="Jeden z Twoich adapterów Wi-Fi ma wbudowany kod kraju inny, niż ustawiony w Twoim systemie. Kiedy tak się dzieje, kernel tworzy niestandardową domenę regulacyjną \"\${normal_color}99\${yellow_color}\", która zawiera tylko uprawnienia w OBYDWU domenach regulacyjnych. Albo Twój sprzęt pochodzi z innego regionu, albo celowo nieprawidłowo ustawiłeś domenę rejestracyjną i ograniczyłeś funkcjonalność" arr["GERMAN",719]="Einer Ihrer WLAN-Adapter hat einen integrierten Ländercode, der sich von dem auf Ihrem System unterscheidet. Wenn dies geschieht, erstellt der Kernel eine spezielle Regulierungsdomäne \"\${normal_color}99\${yellow_color}\", die nur Berechtigungen in BEIDEN Registrierungsdomänen enthält. Entweder stammt Ihre Hardware aus einer anderen Region oder Sie haben Ihre Reg-Domain falsch eingestellt und die Funktionalität absichtlich eingeschränkt" @@ -11119,7 +11119,7 @@ function initialize_language_strings() { arr["CATALAN",720]="S'ha detectat més d'una instància d'airgeddon en execució. Tingueu en compte que compartir i utilitzar el mateix adaptador sense fil en més d'una instància alhora, probablement provocarà errors incontrolats o resultats inesperats" arr["PORTUGUESE",720]="Existe mais de uma instância do airgeddon em execução. Tenha em mente que usar o mesmo adaptador wi-fi em mais de uma instância simultaneamente provavelmente levará a erros e resultados inesperados" arr["RUSSIAN",720]="Было обнаружено, что запущено несколько инстансов airgeddon. Имейте в виду, что совместное использование одного и того же беспроводного адаптера более чем в одном инстансе одновременно может привести к неконтролируемым ошибкам или неожиданным результатам" - arr["GREEK",720]="\${pending_of_translation} Εντοπίστηκαν περισσότερες από μία περιπτώσεις airgeddon σε λειτουργία. Λάβετε υπόψη ότι η κοινή χρήση και η χρήση του ίδιου ασύρματου προσαρμογέα σε περισσότερες από μία περιπτώσεις ταυτόχρονα, πιθανότατα θα οδηγήσει σε μη ελεγχόμενα σφάλματα ή απροσδόκητα αποτελέσματα" + arr["GREEK",720]="Εντοπίστηκαν περισσότερο από ένα instance του airgeddon σε λειτουργία. Λάβετε υπόψη ότι η κοινή χρήση του ασύρματου αντάπτορα σε περισσότερα από ένα instance ταυτόχρονα, πιθανότατα θα σας οδηγήσει σε μη ελεγχόμενα σφάλματα ή απροσδόκητα αποτελέσματα" arr["ITALIAN",720]="È stata rilevata più di un'istanza di airgeddon in esecuzione. Tieni presente che la condivisione e l'utilizzo dello stesso adattatore wireless in più istanze contemporaneamente porterà probabilmente a errori incontrollati o risultati imprevisti" arr["POLISH",720]="Wykryto, że airgeddon został uruchomiony więcej niż raz. Należy pamiętać, że współdzielenie i używanie tej samej karty bezprzewodowej w więcej niż jednej instancji jednocześnie najprawdopodobniej doprowadzi do niekontrolowanych błędów lub nieoczekiwanych rezultatów" arr["GERMAN",720]="Es wurde festgestellt, dass mehr als eine Airgeddon-Instanz ausgeführt wird. Beachten Sie, dass die gemeinsame Nutzung und Verwendung desselben WLAN-Adapters in mehreren Instanzen gleichzeitig wahrscheinlich zu unkontrollierten Fehlern oder unerwarteten Ergebnissen führt" @@ -11133,7 +11133,7 @@ function initialize_language_strings() { arr["CATALAN",721]="Nombre d'instàncies en execució: \${normal_color}\${airgeddon_running_instances_counter}" arr["PORTUGUESE",721]="Número de instâncias em execução: \${normal_color}\${airgeddon_running_instances_counter}" arr["RUSSIAN",721]="Количество запущенных инстансов: \${normal_color}\${airgeddon_running_instances_counter}" - arr["GREEK",721]="\${pending_of_translation} Αριθμός εμφανίσεων που εκτελούνται: \${normal_color}\${airgeddon_running_instances_counter}" + arr["GREEK",721]="Αριθμός instances που εκτελούνται: \${normal_color}\${airgeddon_running_instances_counter}" arr["ITALIAN",721]="Numero di istanze in esecuzione: \${normal_color}\${airgeddon_running_instances_counter}" arr["POLISH",721]="Liczba uruchomionych instancji: \${normal_color}\${airgeddon_running_instances_counter}" arr["GERMAN",721]="Anzahl der laufenden Instanzen: \${normal_color}\${airgeddon_running_instances_counter}" From 80c6f3f35672a85b23d2946360eab3c1e5e08814 Mon Sep 17 00:00:00 2001 From: Georgios Zoutis Date: Tue, 18 Jun 2024 22:47:51 +0300 Subject: [PATCH 68/74] update greek translations --- language_strings.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language_strings.sh b/language_strings.sh index 2ac45117e..cbe48568c 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -5197,7 +5197,7 @@ function initialize_language_strings() { arr["CATALAN",297]="Netejant nftables/iptables i regles de routing si escau" arr["PORTUGUESE",297]="Limpando as regras do nftables/iptables e de roteamento, se aplicável" arr["RUSSIAN",297]="Очистка nftables/iptables и правил маршрутизации если применимо" - arr["GREEK",297]="\${pending_of_translation} Γινεται καθαρισμός των nftables/iptables και των κανόνων δρομολόγησης εάν υπάρχουν" + arr["GREEK",297]="Γίνεται καθαρισμός των nftables/iptables και των routing rules εάν υπάρχουν" arr["ITALIAN",297]="Pulendo nftables/iptables e le regole di routing se necessario" arr["POLISH",297]="Usuwanie nftables/iptables i reguł routingu jeśli istnieją" arr["GERMAN",297]="Bereinigung von nftables/iptables und Routing-Regeln falls zutreffend" From 9bfb7ad4b8297179268433610eb36237df1c97bc Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Wed, 19 Jun 2024 14:07:30 +0200 Subject: [PATCH 69/74] Set iptables rules to work in the same way as nft, forward policy accept --- airgeddon.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index c9cba39cf..a0291dbb8 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -6095,7 +6095,7 @@ function prepare_iptables_nftables() { "${iptables_cmd}" add chain ip nat_"${airgeddon_instance_name}" prerouting_"${airgeddon_instance_name}" '{type nat hook prerouting priority -100;}' "${iptables_cmd}" add chain ip nat_"${airgeddon_instance_name}" postrouting_"${airgeddon_instance_name}" '{type nat hook postrouting priority 100;}' else - "${iptables_cmd}" -P FORWARD DROP + "${iptables_cmd}" -P FORWARD ACCEPT "${iptables_cmd}" -t filter -N input_"${airgeddon_instance_name}" "${iptables_cmd}" -A INPUT -j input_"${airgeddon_instance_name}" "${iptables_cmd}" -t filter -N forward_"${airgeddon_instance_name}" @@ -10204,7 +10204,7 @@ function set_std_internet_routing_rules() { if [ "${iptables_nftables}" -eq 1 ]; then "${iptables_cmd}" add rule nat_"${airgeddon_instance_name}" postrouting_"${airgeddon_instance_name}" ip saddr ${et_ip_range}/${std_c_mask_cidr} oifname "${internet_interface}" counter masquerade else - "${iptables_cmd}" -t nat -A POSTROUTING -o "${internet_interface}" -j MASQUERADE + "${iptables_cmd}" -t nat -A POSTROUTING -s ${et_ip_range}/${std_c_mask} -o ${internet_interface} -j MASQUERADE fi fi From 3a6f1c4ed76c096bb5fe8dbcda717221d2f4cc82 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Wed, 19 Jun 2024 14:56:15 +0200 Subject: [PATCH 70/74] Improve nft/iptables rules to be more granular --- airgeddon.sh | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index a0291dbb8..174d3e640 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -10167,36 +10167,36 @@ function set_std_internet_routing_rules() { if [ "${et_mode}" = "et_captive_portal" ]; then if [ "${iptables_nftables}" -eq 1 ]; then "${iptables_cmd}" add rule ip nat_"${airgeddon_instance_name}" prerouting_"${airgeddon_instance_name}" iifname "${interface}" tcp dport ${www_port} counter dnat to ${et_ip_router}:${www_port} - "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" tcp dport ${www_port} counter accept - "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" tcp dport ${https_port} counter accept - "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" udp dport ${dns_port} counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" iifname "${interface}" tcp dport ${www_port} counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" iifname "${interface}" tcp dport ${https_port} counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" iifname "${interface}" udp dport ${dns_port} counter accept else "${iptables_cmd}" -t nat -A PREROUTING -p tcp -i "${interface}" --dport ${www_port} -j DNAT --to-destination ${et_ip_router}:${www_port} - "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp --destination-port ${www_port} -j ACCEPT - "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp --destination-port ${https_port} -j ACCEPT - "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p udp --destination-port ${dns_port} -j ACCEPT + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp -i "${interface}" --destination-port ${www_port} -j ACCEPT + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp -i "${interface}" --destination-port ${https_port} -j ACCEPT + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p udp -i "${interface}" --destination-port ${dns_port} -j ACCEPT fi elif [ "${et_mode}" = "et_sniffing_sslstrip2" ]; then if [ "${iptables_nftables}" -eq 1 ]; then - "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" tcp dport ${bettercap_proxy_port} counter accept - "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" udp dport ${bettercap_dns_port} counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" iifname "${interface}" tcp dport ${bettercap_proxy_port} counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" iifname "${interface}" udp dport ${bettercap_dns_port} counter accept "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" iifname "${loopback_interface}" counter accept else - "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp --destination-port ${bettercap_proxy_port} -j ACCEPT - "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p udp --destination-port ${bettercap_dns_port} -j ACCEPT + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp -i "${interface}" --destination-port ${bettercap_proxy_port} -j ACCEPT + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p udp -i "${interface}" --destination-port ${bettercap_dns_port} -j ACCEPT "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -i "${loopback_interface}" -j ACCEPT fi elif [ "${et_mode}" = "et_sniffing_sslstrip2_beef" ]; then if [ "${iptables_nftables}" -eq 1 ]; then - "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" tcp dport ${bettercap_proxy_port} counter accept - "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" udp dport ${bettercap_dns_port} counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" iifname "${interface}" tcp dport ${bettercap_proxy_port} counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" iifname "${interface}" udp dport ${bettercap_dns_port} counter accept "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" iifname "${loopback_interface}" counter accept - "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" tcp dport ${beef_port} counter accept + "${iptables_cmd}" add rule ip filter_"${airgeddon_instance_name}" input_"${airgeddon_instance_name}" iifname "${interface}" tcp dport ${beef_port} counter accept else - "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp --destination-port ${bettercap_proxy_port} -j ACCEPT - "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p udp --destination-port ${bettercap_dns_port} -j ACCEPT + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp -i "${interface}" --destination-port ${bettercap_proxy_port} -j ACCEPT + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p udp -i "${interface}" --destination-port ${bettercap_dns_port} -j ACCEPT "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -i "${loopback_interface}" -j ACCEPT - "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp --destination-port ${beef_port} -j ACCEPT + "${iptables_cmd}" -A input_"${airgeddon_instance_name}" -p tcp -i "${interface}" --destination-port ${beef_port} -j ACCEPT fi fi From 6bd0f724afe594fbe665b37d8d3df7607f35f1fd Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Wed, 19 Jun 2024 15:02:38 +0200 Subject: [PATCH 71/74] Add the cleaning of the ips and the routes after evil twin attacks --- airgeddon.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/airgeddon.sh b/airgeddon.sh index 174d3e640..bbf763b59 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -1572,6 +1572,9 @@ function restore_et_interface() { iw dev "${iface_monitor_et_deauth}" del > /dev/null 2>&1 + ip addr del ${et_ip_router}/${std_c_mask} dev "${interface}" > /dev/null 2>&1 + ip route del ${et_ip_range}/${std_c_mask_cidr} dev "${interface}" table local proto static scope link > /dev/null 2>&1 + if [ "${et_initial_state}" = "Managed" ]; then set_mode_without_airmon "${interface}" "managed" ifacemode="Managed" From 599752fd2c7a9c8c776cffe57055fb7c05a37b85 Mon Sep 17 00:00:00 2001 From: zcbxxx1 <1393281966@qq.com> Date: Wed, 19 Jun 2024 22:14:25 +0800 Subject: [PATCH 72/74] update chinese strings update chinese strings 297, 719, 720, 721 --- language_strings.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/language_strings.sh b/language_strings.sh index cbe48568c..2fbaaf731 100644 --- a/language_strings.sh +++ b/language_strings.sh @@ -5203,7 +5203,7 @@ function initialize_language_strings() { arr["GERMAN",297]="Bereinigung von nftables/iptables und Routing-Regeln falls zutreffend" arr["TURKISH",297]="nftables/iptables ve routing rules varsa temizleniyor" arr["ARABIC",297]="وقواعد التوجيه إذا لزم nftables/iptables تنظيف" - arr["CHINESE",297]="\${pending_of_translation} 清理 nftables/iptables 和路由规则 如果适用" + arr["CHINESE",297]="清理 nftables/iptables 路由规则 (如果适用)" arr["ENGLISH",298]="Evil Twin attack has been started. Press [Enter] key on this window to stop it" arr["SPANISH",298]="El ataque Evil Twin ha comenzado. Pulse la tecla [Enter] en esta ventana para pararlo" @@ -11111,7 +11111,7 @@ function initialize_language_strings() { arr["GERMAN",719]="Einer Ihrer WLAN-Adapter hat einen integrierten Ländercode, der sich von dem auf Ihrem System unterscheidet. Wenn dies geschieht, erstellt der Kernel eine spezielle Regulierungsdomäne \"\${normal_color}99\${yellow_color}\", die nur Berechtigungen in BEIDEN Registrierungsdomänen enthält. Entweder stammt Ihre Hardware aus einer anderen Region oder Sie haben Ihre Reg-Domain falsch eingestellt und die Funktionalität absichtlich eingeschränkt" arr["TURKISH",719]="Wifi bağdaştırıcılarınızdan birinde, sisteminizde ayarlanandan farklı bir yerleşik ülke kodu var. Bu gerçekleştiğinde Kernel, yalnızca HER İKİ Reg etki alanındaki izinleri içeren özel bir düzenleyici etki alanı \"\${normal_color}99\${yellow_color}\" oluşturur. Ya donanımınız farklı bir bölgeye ait ya da reg alan adınızı yanlış ayarladınız ve işlevselliğinizi bilerek sınırladınız" arr["ARABIC",719]="والذي يحتوي فقط على الأذونات في كلا نطاقي التسجيل. إما أن جهازك ينتمي إلى منطقة مختلفة، أو أنك قمت بتعيين نطاق التسجيل الخاص بك بشكل غير صحيح وقمت بتقييد وظائفك عن قصد \"\${yellow_color}99\${normal_color}\" بانشاء مجال تنظيمي مخصص kernel علي رمز بلد غير الرمز الموجود علي نظامك. عندما يحدث هذا, يقوم ال wireless adapter يحتوي احدى ال " - arr["CHINESE",719]="\${pending_of_translation} 您的其中一款 WiFi 适配器的内置国家/地区代码与您系统上设置的国家/地区代码不同。当发生这种情况时,内核会创建一个自定义监管域 \"\${normal_color}99\${yellow_color}\",其中仅包含两个监管域中的权限。您的硬件来自不同的地区,或者您不正确地设置了您的注册域并故意限制了您的功能" + arr["CHINESE",719]="您的其中一款 WiFi 适配器的内置国家/地区代码与您系统上设置的国家/地区代码不同。当发生这种情况时,系统内核会创建一个自定义的监管域 \"\${normal_color}99\${yellow_color}\",其中仅包含两个监管域中的权限。发生这种情况可能是您的硬件来自不同的地区,或您不正确地设置了注册域并故意限制了您的功能" arr["ENGLISH",720]="It was detected more than one airgeddon instance running. Keep in mind that sharing and using the same wireless adapter in more than one instance at the same time, probably will lead to uncontrolled errors or unexpected results" arr["SPANISH",720]="Se ha detectado más de una instancia de airgeddon ejecutándose. Ten en cuenta que compartir y utilizar el mismo adaptador inalámbrico en más de una instancia al mismo tiempo probablemente provocará errores no controlados o resultados inesperados" @@ -11125,7 +11125,7 @@ function initialize_language_strings() { arr["GERMAN",720]="Es wurde festgestellt, dass mehr als eine Airgeddon-Instanz ausgeführt wird. Beachten Sie, dass die gemeinsame Nutzung und Verwendung desselben WLAN-Adapters in mehreren Instanzen gleichzeitig wahrscheinlich zu unkontrollierten Fehlern oder unerwarteten Ergebnissen führt" arr["TURKISH",720]="airgeddon'un birden fazla kere aynı anda çalıştığı tespit edildi. Aynı kablosuz bağdaştırıcıyı aynı anda paylaşmanın ve kullanmanın muhtemelen kontrol edilemeyen hatalara veya beklenmeyen sonuçlara yol açacağını unutmayın" arr["ARABIC",720]="في أكثر من حالة في نفس الوقت، قد يؤدي على الأرجح إلى أخطاء لا يمكن التحكم فيها أو نتائج غير متوقعة wireless adapter قيد التشغيل. يجب العلم أن مشاركة واستخدام نفس airgeddon تم اكتشاف وجود أكثر من " - arr["CHINESE",720]="\${pending_of_translation} 检测到有多个 airgeddon 实例正在运行。请记住,同时在多个实例中共享和使用同一个无线适配器可能会导致无法控制的错误或意外结果" + arr["CHINESE",720]="检测到有多个 airgeddon 实例正在运行。请注意,在多个实例中共享并使用同一个无线适配器可能会导致无法控制的错误或意外结果" arr["ENGLISH",721]="Number of running instances: \${normal_color}\${airgeddon_running_instances_counter}" arr["SPANISH",721]="Número de instancias en ejecución: \${normal_color}\${airgeddon_running_instances_counter}" @@ -11139,7 +11139,7 @@ function initialize_language_strings() { arr["GERMAN",721]="Anzahl der laufenden Instanzen: \${normal_color}\${airgeddon_running_instances_counter}" arr["TURKISH",721]="Çalışan airgeddon uygulamalarının sayısı: \${normal_color}\${airgeddon_running_instances_counter}" arr["ARABIC",721]="\${normal_color}\${airgeddon_running_instances_counter}\${blue_color} :عدد المثيلات قيد التشغيل" - arr["CHINESE",721]="\${pending_of_translation} 正在运行的实例数:\${normal_color}\${airgeddon_running_instances_counter}" + arr["CHINESE",721]="正在运行的实例数:\${normal_color}\${airgeddon_running_instances_counter}" } #Expand escaped variables in language strings with their actual values From 2e691d0f62f0a8cf2546ff5f3fce8620edf18067 Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Wed, 19 Jun 2024 18:38:24 +0200 Subject: [PATCH 73/74] Fix error on cleaning iptables/nftables that was happening when second evil twin was launched on the first instance --- airgeddon.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index bbf763b59..c8594bfde 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -6157,7 +6157,7 @@ function clean_initialize_iptables_nftables() { debug_print if [ "${1}" = "start" ]; then - if is_first_routing_modifier_airgeddon_instance; then + if [[ "${clean_all_iptables_nftables}" -eq 1 ]] && is_first_routing_modifier_airgeddon_instance; then clean_all_iptables_nftables fi prepare_iptables_nftables @@ -6465,6 +6465,7 @@ function is_first_routing_modifier_airgeddon_instance() { [[ "${item}" =~ ^(et)?([0-9]+)rs[0-1]$ ]] && agpid="${BASH_REMATCH[2]}" if [ "${agpid}" = "${BASHPID}" ]; then + clean_all_iptables_nftables=0 return 0 fi done @@ -10155,7 +10156,7 @@ function set_std_internet_routing_rules() { debug_print control_routing_status "start" - if is_first_routing_modifier_airgeddon_instance && [[ ! -f "${system_tmpdir}${routing_tmp_file}" ]]; then + if [ ! -f "${system_tmpdir}${routing_tmp_file}" ]; then save_iptables_nftables fi @@ -15892,6 +15893,7 @@ function initialize_script_settings() { custom_certificates_cn="" card_vif_support=0 country_code="00" + clean_all_iptables_nftables=1 } #Detect graphics system From 5d4993558ad40f7cb43df4b89d6c68db62de71fc Mon Sep 17 00:00:00 2001 From: v1s1t0r1sh3r3 Date: Thu, 20 Jun 2024 17:26:51 +0200 Subject: [PATCH 74/74] Fix error appearing on heredoc during evil twin captive portal attack caused by a bad/quick copy paste --- airgeddon.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/airgeddon.sh b/airgeddon.sh index c8594bfde..d0f10cf4d 100755 --- a/airgeddon.sh +++ b/airgeddon.sh @@ -11072,8 +11072,6 @@ function set_et_control_script() { function kill_pid_and_children_recursive() { - debug_print - local parent_pid="" local child_pids=""