diff --git a/README.md b/README.md
index 0335e106a..d9adcf59d 100644
--- a/README.md
+++ b/README.md
@@ -64,7 +64,7 @@ Tested on these compatible Linux distributions:
- *Gentoo 20160514 and 20160704*
- *Fedora 24*
- *Red Hat 7 (Maipo)*
-- *Arch 4.6.2-1 to 4.9.8-1*
+- *Arch 4.6.2-1 to 4.9.9-1*
- *Raspbian 7 (Wheezy) and 8 (Jessie) (Raspberry Pi)*
- *OpenMandriva LX3*
@@ -195,7 +195,8 @@ Use it only on your own networks or with the network's owner permission.
**El padrino** and [cLn] for Catalan translations,
[Luan] for Portuguese translations,
[MiAl] for Russian translations,
-[xtonousou] for Greek translations, beta testing, suggestions, the help received fixing code warnings and other stuff.
+[xtonousou] for Greek translations, beta testing, suggestions, the help received fixing code warnings and other stuff,
+[OscarAkaElvis] for allowing me to own his body when I visit the earth.
#### Hat tip to
@@ -257,3 +258,4 @@ Use it only on your own networks or with the network's owner permission.
[Luan]: https://github.com/Luan7805
[MiAl]: https://github.com/Mi-Al
[xtonousou]: https://github.com/xtonousou "xT"
+[OscarAkaElvis]: https://github.com/OscarAkaElvis
diff --git a/airgeddon.sh b/airgeddon.sh
index b1101d475..189684c26 100644
--- a/airgeddon.sh
+++ b/airgeddon.sh
@@ -2,7 +2,7 @@
#Title........: airgeddon.sh
#Description..: This is a multi-use bash script for Linux systems to audit wireless networks.
#Author.......: v1s1t0r
-#Date.........: 20170218
+#Date.........: 20170220
#Version......: 6.01
#Usage........: bash airgeddon.sh
#Bash Version.: 4.2 or later
@@ -258,7 +258,7 @@ normal_color="\e[1;0m"
#Set different language text strings
function language_strings() {
- debug_print_function_and_parameters "${@}"
+ debug_print
declare -A unknown_chipset
unknown_chipset["ENGLISH"]="Unknown"
@@ -3934,12 +3934,12 @@ function language_strings() {
esac
}
-#Print the current function's name with the parameters that have been passed for some (on which are useful) functions
-function debug_print_function_and_parameters() {
+#Print the current line of where this was called and the function's name. Applies to some (which are useful) functions
+function debug_print() {
if [ ${debug_mode} -eq 2 ]; then
- excluded_functions=(
+ declare excluded_functions=(
"ask_yesno"
"check_pending_of_translation"
"contains_element"
@@ -3971,7 +3971,7 @@ function debug_print_function_and_parameters() {
return 1
fi
- echo "${FUNCNAME[1]}" "${@}"
+ echo "Line:${BASH_LINENO[1]}" "${FUNCNAME[1]}" # "${@}" to print parameters
return 0
fi
}
@@ -3979,7 +3979,7 @@ function debug_print_function_and_parameters() {
#Set the message to show again after an interrupt ([Ctrl+C] or [Ctrl+Z]) without exiting
function interrupt_checkpoint() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ -z "${last_buffered_type1}" ]; then
last_buffered_message1=${1}
@@ -3999,7 +3999,7 @@ function interrupt_checkpoint() {
#Add the text on a menu when you miss an optional tool
function special_text_missed_optional_tool() {
- debug_print_function_and_parameters "${@}"
+ debug_print
declare -a required_tools=("${!3}")
@@ -4026,7 +4026,7 @@ function special_text_missed_optional_tool() {
#Generate the chars in front of and behind a text for titles and separators
function generate_dynamic_line() {
- debug_print_function_and_parameters "${@}"
+ debug_print
local type=${2}
if [ "${type}" = "title" ]; then
@@ -4069,7 +4069,7 @@ function generate_dynamic_line() {
#Wrapper to check managed mode on an interface
function check_to_set_managed() {
- debug_print_function_and_parameters "${@}"
+ debug_print
check_interface_mode
case "${ifacemode}" in
@@ -4092,7 +4092,7 @@ function check_to_set_managed() {
#Wrapper to check monitor mode on an interface
function check_to_set_monitor() {
- debug_print_function_and_parameters "${@}"
+ debug_print
check_interface_mode
case "${ifacemode}" in
@@ -4115,7 +4115,7 @@ function check_to_set_monitor() {
#Check for monitor mode on an interface
function check_monitor_enabled() {
- debug_print_function_and_parameters "${@}"
+ debug_print
mode=$(iwconfig "${interface}" 2> /dev/null | grep Mode: | awk '{print $4}' | cut -d ':' -f 2)
@@ -4131,7 +4131,7 @@ function check_monitor_enabled() {
#Check if an interface is a wifi card or not
function check_interface_wifi() {
- debug_print_function_and_parameters "${@}"
+ debug_print
execute_iwconfig_fix
return $?
@@ -4140,7 +4140,7 @@ function check_interface_wifi() {
#Execute the iwconfig fix to know if an interface is a wifi card or not
function execute_iwconfig_fix() {
- debug_print_function_and_parameters "${@}"
+ debug_print
iwconfig_fix
iwcmd="iwconfig ${interface} ${iwcmdfix} > /dev/null 2> /dev/null"
@@ -4152,7 +4152,7 @@ function execute_iwconfig_fix() {
#Create a list of interfaces associated to its macs
function renew_ifaces_and_macs_list() {
- debug_print_function_and_parameters "${@}"
+ debug_print
readarray -t IFACES_AND_MACS < <(ip link | egrep "^[0-9]+" | cut -d ':' -f 2 | awk '{print $1}' | grep lo -v | grep "${interface}" -v)
declare -gA ifaces_and_macs
@@ -4172,7 +4172,7 @@ function renew_ifaces_and_macs_list() {
#Check the interface coherence between interface names and macs
function check_interface_coherence() {
- debug_print_function_and_parameters "${@}"
+ debug_print
renew_ifaces_and_macs_list
interface_auto_change=0
@@ -4204,7 +4204,7 @@ function check_interface_coherence() {
#Prepare the vars to be used on wps pin database attacks
function set_wps_mac_parameters() {
- debug_print_function_and_parameters "${@}"
+ debug_print
six_wpsbssid_first_digits=${wps_bssid:0:8}
six_wpsbssid_first_digits_clean=${six_wpsbssid_first_digits//:}
@@ -4217,7 +4217,7 @@ function set_wps_mac_parameters() {
#Calculate pin based on Zhao Chunsheng algorithm (computepin), step 1
function calculate_computepin_algorithm_step1() {
- debug_print_function_and_parameters "${@}"
+ debug_print
hex_to_dec=$(printf '%d\n' 0x"${six_wpsbssid_last_digits_clean}") 2> /dev/null
computepin_pin=$((hex_to_dec % 10000000))
@@ -4226,7 +4226,7 @@ function calculate_computepin_algorithm_step1() {
#Calculate pin based on Zhao Chunsheng algorithm (computepin), step 2
function calculate_computepin_algorithm_step2() {
- debug_print_function_and_parameters "${@}"
+ debug_print
computepin_pin=$(printf '%08d\n' $((10#${computepin_pin} * 10 + checksum_digit)))
}
@@ -4234,7 +4234,7 @@ function calculate_computepin_algorithm_step2() {
#Calculate pin based on Stefan Viehböck algorithm (easybox)
function calculate_easybox_algorithm() {
- debug_print_function_and_parameters "${@}"
+ debug_print
hex_to_dec=($(printf "%04d" "0x${four_wpsbssid_last_digits_clean}" | sed 's/.*\(....\)/\1/;s/./& /g'))
[[ ${four_wpsbssid_last_digits_clean} =~ ${four_wpsbssid_last_digits_clean//?/(.)} ]] && hexi=($(printf '%s\n' "${BASH_REMATCH[*]:1}"))
@@ -4258,7 +4258,7 @@ function calculate_easybox_algorithm() {
#Calculate the last digit on pin following the checksum rule
function pin_checksum_rule() {
- debug_print_function_and_parameters "${@}"
+ debug_print
current_calculated_pin=$((10#${1} * 10))
@@ -4279,7 +4279,7 @@ function pin_checksum_rule() {
#Manage the calls to check common wps pin algorithms
function check_and_set_common_algorithms() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 388 "blue"
@@ -4305,7 +4305,7 @@ function check_and_set_common_algorithms() {
#Integrate calculated pins from algorithms into pins array
function integrate_algorithms_pins() {
- debug_print_function_and_parameters "${@}"
+ debug_print
some_calculated_pin_included=0
for pin in "${calculated_pins[@]}"; do
@@ -4333,7 +4333,7 @@ function integrate_algorithms_pins() {
#Include the code of the pin database file
function include_pin_dbfile() {
- debug_print_function_and_parameters "${@}"
+ debug_print
dbfile_to_include="source \"${scriptfolder}${known_pins_dbfile}\""
eval "${dbfile_to_include}"
@@ -4342,7 +4342,7 @@ function include_pin_dbfile() {
#Search for target wps bssid mac in pin database and set the vars to be used
function search_in_pin_database() {
- debug_print_function_and_parameters "${@}"
+ debug_print
bssid_found_in_db=0
counter_pins_found=0
@@ -4363,7 +4363,7 @@ function search_in_pin_database() {
#Prepare monitor mode avoiding the use of airmon-ng or airmon-zc generating two interfaces from one
function prepare_et_monitor() {
- debug_print_function_and_parameters "${@}"
+ debug_print
disable_rfkill
@@ -4379,7 +4379,7 @@ function prepare_et_monitor() {
#Assure the mode of the interface before the Evil Twin process
function prepare_et_interface() {
- debug_print_function_and_parameters "${@}"
+ debug_print
et_initial_state=${ifacemode}
@@ -4401,7 +4401,7 @@ function prepare_et_interface() {
#Restore the state of the interfaces after Evil Twin process
function restore_et_interface() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 299 "blue"
@@ -4428,7 +4428,7 @@ function restore_et_interface() {
#Unblock if possible the interface if blocked
function disable_rfkill() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if hash rfkill 2> /dev/null; then
rfkill unblock all > /dev/null 2>&1
@@ -4438,7 +4438,7 @@ function disable_rfkill() {
#Put the interface on managed mode and manage the possible name change
function managed_option() {
- debug_print_function_and_parameters "${@}"
+ debug_print
check_to_set_managed
@@ -4472,7 +4472,7 @@ function managed_option() {
#Put the interface on monitor mode and manage the possible name change
function monitor_option() {
- debug_print_function_and_parameters "${@}"
+ debug_print
check_to_set_monitor
@@ -4521,7 +4521,7 @@ function monitor_option() {
#Check the interface mode
function check_interface_mode() {
- debug_print_function_and_parameters "${@}"
+ debug_print
execute_iwconfig_fix
if [ "$?" != "0" ]; then
@@ -4552,7 +4552,7 @@ function check_interface_mode() {
#Language change menu
function language_menu() {
- debug_print_function_and_parameters "${@}"
+ debug_print
clear
language_strings "${language}" 87 "title"
@@ -4645,7 +4645,7 @@ function language_menu() {
#Read the chipset for an interface
function set_chipset() {
- debug_print_function_and_parameters "${@}"
+ debug_print
chipset=""
sedrule1="s/^....//"
@@ -4693,7 +4693,7 @@ function set_chipset() {
#Internet interface selection menu
function select_internet_interface() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ "${return_to_et_main_menu}" -eq 1 ]; then
return 1
@@ -4786,7 +4786,7 @@ function select_internet_interface() {
#Interface selection menu
function select_interface() {
- debug_print_function_and_parameters "${@}"
+ debug_print
clear
language_strings "${language}" 88 "title"
@@ -4833,7 +4833,7 @@ function select_interface() {
#Read the user input on yes/no questions
function read_yesno() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" "${1}" "green"
@@ -4843,7 +4843,7 @@ function read_yesno() {
#Validate the input on yes/no questions
function ask_yesno() {
- debug_print_function_and_parameters "${@}"
+ debug_print
yesno=""
while [[ ! ${yesno} =~ ^[YyNn]$ ]]; do
@@ -4861,7 +4861,7 @@ function ask_yesno() {
#Read the user input on channel questions
function read_channel() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 25 "green"
@@ -4875,7 +4875,7 @@ function read_channel() {
#Validate the input on channel questions
function ask_channel() {
- debug_print_function_and_parameters "${@}"
+ debug_print
local regexp="^([1-9]|1[0-4])$"
@@ -4897,7 +4897,7 @@ function ask_channel() {
#Read the user input on bssid questions
function read_bssid() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 27 "green"
@@ -4911,7 +4911,7 @@ function read_bssid() {
#Validate the input on bssid questions
function ask_bssid() {
- debug_print_function_and_parameters "${@}"
+ debug_print
local regexp="^([a-fA-F0-9]{2}:){5}[a-zA-Z0-9]{2}$"
@@ -4933,7 +4933,7 @@ function ask_bssid() {
#Read the user input on essid questions
function read_essid() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 29 "green"
@@ -4943,7 +4943,7 @@ function read_essid() {
#Validate the input on essid questions
function ask_essid() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ -z "${essid}" ]; then
while [[ -z "${essid}" ]]; do
@@ -4962,7 +4962,7 @@ function ask_essid() {
#Read the user input on custom pin questions
function read_custom_pin() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 363 "green"
@@ -4972,7 +4972,7 @@ function read_custom_pin() {
#Validate the input on custom pin questions
function ask_custom_pin() {
- debug_print_function_and_parameters "${@}"
+ debug_print
local regexp="^[0-9]{8}$"
custom_pin=""
@@ -4987,7 +4987,7 @@ function ask_custom_pin() {
#Read the user input on timeout questions
function read_timeout() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
case ${1} in
@@ -5004,7 +5004,7 @@ function read_timeout() {
#Validate the user input for timeouts
function ask_wps_timeout() {
- debug_print_function_and_parameters "${@}"
+ debug_print
case ${1} in
"standard")
@@ -5047,7 +5047,7 @@ function ask_wps_timeout() {
#Execute wps custom pin bully attack
function exec_wps_custom_pin_bully_attack() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 32 "green"
@@ -5065,7 +5065,7 @@ function exec_wps_custom_pin_bully_attack() {
#Execute wps custom pin reaver attack
function exec_wps_custom_pin_reaver_attack() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 32 "green"
@@ -5083,7 +5083,7 @@ function exec_wps_custom_pin_reaver_attack() {
#Execute bully pixie dust attack
function exec_bully_pixiewps_attack() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 32 "green"
@@ -5101,7 +5101,7 @@ function exec_bully_pixiewps_attack() {
#Execute reaver pixie dust attack
function exec_reaver_pixiewps_attack() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 32 "green"
@@ -5119,7 +5119,7 @@ function exec_reaver_pixiewps_attack() {
#Execute wps bruteforce pin bully attack
function exec_wps_bruteforce_pin_bully_attack() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 32 "green"
@@ -5137,7 +5137,7 @@ function exec_wps_bruteforce_pin_bully_attack() {
#Execute wps bruteforce pin reaver attack
function exec_wps_bruteforce_pin_reaver_attack() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 32 "green"
@@ -5155,7 +5155,7 @@ function exec_wps_bruteforce_pin_reaver_attack() {
#Execute wps pin database bully attack
function exec_wps_pin_database_bully_attack() {
- debug_print_function_and_parameters "${@}"
+ debug_print
wps_pin_database_prerequisites
@@ -5168,7 +5168,7 @@ function exec_wps_pin_database_bully_attack() {
#Execute wps pin database reaver attack
function exec_wps_pin_database_reaver_attack() {
- debug_print_function_and_parameters "${@}"
+ debug_print
wps_pin_database_prerequisites
@@ -5181,7 +5181,7 @@ function exec_wps_pin_database_reaver_attack() {
#Execute mdk3 deauth DoS attack
function exec_mdk3deauth() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 89 "title"
@@ -5201,7 +5201,7 @@ function exec_mdk3deauth() {
#Execute aireplay DoS attack
function exec_aireplaydeauth() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 90 "title"
@@ -5219,7 +5219,7 @@ function exec_aireplaydeauth() {
#Execute WDS confusion DoS attack
function exec_wdsconfusion() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 91 "title"
@@ -5235,7 +5235,7 @@ function exec_wdsconfusion() {
#Execute Beacon flood DoS attack
function exec_beaconflood() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 92 "title"
@@ -5251,7 +5251,7 @@ function exec_beaconflood() {
#Execute Auth DoS attack
function exec_authdos() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 93 "title"
@@ -5267,7 +5267,7 @@ function exec_authdos() {
#Execute Michael Shutdown DoS attack
function exec_michaelshutdown() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 94 "title"
@@ -5283,7 +5283,7 @@ function exec_michaelshutdown() {
#Validate Mdk3 parameters
function mdk3_deauth_option() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 95 "title"
@@ -5305,7 +5305,7 @@ function mdk3_deauth_option() {
#Validate Aireplay parameters
function aireplay_deauth_option() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 96 "title"
@@ -5327,7 +5327,7 @@ function aireplay_deauth_option() {
#Validate WDS confusion parameters
function wds_confusion_option() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 97 "title"
@@ -5349,7 +5349,7 @@ function wds_confusion_option() {
#Validate Beacon flood parameters
function beacon_flood_option() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 98 "title"
@@ -5371,7 +5371,7 @@ function beacon_flood_option() {
#Validate Auth DoS parameters
function auth_dos_option() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 99 "title"
@@ -5392,7 +5392,7 @@ function auth_dos_option() {
#Validate Michael Shutdown parameters
function michael_shutdown_option() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 100 "title"
@@ -5413,7 +5413,7 @@ function michael_shutdown_option() {
#Validate wps parameters for custom pin, pixie dust, bruteforce and pin database attacks
function wps_attacks_parameters() {
- debug_print_function_and_parameters "${@}"
+ debug_print
check_monitor_enabled
if [ "$?" != "0" ]; then
@@ -5445,7 +5445,7 @@ function wps_attacks_parameters() {
#Print selected interface
function print_iface_selected() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ -z "${interface}" ]; then
language_strings "${language}" 41 "red"
@@ -5461,7 +5461,7 @@ function print_iface_selected() {
#Print selected internet interface
function print_iface_internet_selected() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [[ "${et_mode}" != "et_captive_portal" ]] || [[ ${captive_portal_mode} = "internet" ]]; then
if [ -z "${internet_interface}" ]; then
@@ -5475,7 +5475,7 @@ function print_iface_internet_selected() {
#Print selected target parameters (bssid, channel, essid and type of encryption)
function print_all_target_vars() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ -n "${bssid}" ]; then
language_strings "${language}" 43 "blue"
@@ -5498,7 +5498,7 @@ function print_all_target_vars() {
#Print selected target parameters on evil twin menu (bssid, channel and essid)
function print_all_target_vars_et() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ -n "${bssid}" ]; then
language_strings "${language}" 43 "blue"
@@ -5526,7 +5526,7 @@ function print_all_target_vars_et() {
#Print selected target parameters on evil twin submenus (bssid, channel, essid, DoS type and Handshake file)
function print_et_target_vars() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ -n "${bssid}" ]; then
language_strings "${language}" 43 "blue"
@@ -5574,7 +5574,7 @@ function print_et_target_vars() {
#Print selected target parameters on wps attacks menu (bssid, channel and essid)
function print_all_target_vars_wps() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ -n "${wps_bssid}" ]; then
language_strings "${language}" 335 "blue"
@@ -5608,7 +5608,7 @@ function print_all_target_vars_wps() {
#Print selected target parameters on decrypt menu (bssid, Handshake file, dictionary file and rules file)
function print_decrypt_vars() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ -n "${bssid}" ]; then
language_strings "${language}" 43 "blue"
@@ -5634,7 +5634,7 @@ function print_decrypt_vars() {
#Create the dependencies arrays
function initialize_menu_options_dependencies() {
- debug_print_function_and_parameters "${@}"
+ debug_print
clean_handshake_dependencies=(${optional_tools_names[0]})
aircrack_attacks_dependencies=(${optional_tools_names[1]})
@@ -5656,7 +5656,7 @@ function initialize_menu_options_dependencies() {
#Set possible changes for some commands that can be found in different ways depending of the O.S.
function set_possible_aliases() {
- debug_print_function_and_parameters "${@}"
+ debug_print
for item in "${!possible_alias_names[@]}"; do
if ! hash "${item}" 2> /dev/null || [[ "${item}" = "beef" ]]; then
@@ -5674,7 +5674,7 @@ function set_possible_aliases() {
#Initialize optional_tools values
function initialize_optional_tools_values() {
- debug_print_function_and_parameters "${@}"
+ debug_print
declare -gA optional_tools=()
@@ -5686,7 +5686,7 @@ function initialize_optional_tools_values() {
#Set some vars depending of the menu and invoke the printing of target vars
function initialize_menu_and_print_selections() {
- debug_print_function_and_parameters "${@}"
+ debug_print
forbidden_options=()
@@ -5751,7 +5751,7 @@ function initialize_menu_and_print_selections() {
#Clean temporary files
function clean_tmpfiles() {
- debug_print_function_and_parameters "${@}"
+ debug_print
rm -rf "${tmpdir}bl.txt" > /dev/null 2>&1
rm -rf "${tmpdir}handshake"* > /dev/null 2>&1
@@ -5783,7 +5783,7 @@ function clean_tmpfiles() {
#Manage cleaning firewall rules and restore orginal routing state
function clean_routing_rules() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ -n "${original_routing_state}" ]; then
echo "${original_routing_state}" > /proc/sys/net/ipv4/ip_forward
@@ -5795,7 +5795,7 @@ function clean_routing_rules() {
#Clean iptables rules
function clean_iptables() {
- debug_print_function_and_parameters "${@}"
+ debug_print
iptables -F
iptables -t nat -F
@@ -5806,7 +5806,7 @@ function clean_iptables() {
#Create an array from parameters
function store_array() {
- debug_print_function_and_parameters "${@}"
+ debug_print
local values=("${@:3}")
for i in "${!values[@]}"; do
@@ -5817,7 +5817,7 @@ function store_array() {
#Check if something (first parameter) is inside an array (second parameter)
contains_element() {
- debug_print_function_and_parameters "${@}"
+ debug_print
local e
for e in "${@:2}"; do
@@ -5829,7 +5829,7 @@ contains_element() {
#Print hints from the different hint pools depending of the menu
function print_hint() {
- debug_print_function_and_parameters "${@}"
+ debug_print
declare -A hints
@@ -5921,7 +5921,7 @@ function print_hint() {
#airgeddon main menu
function main_menu() {
- debug_print_function_and_parameters "${@}"
+ debug_print
clear
language_strings "${language}" 101 "title"
@@ -5991,7 +5991,7 @@ function main_menu() {
#Evil Twin attacks menu
function evil_twin_attacks_menu() {
- debug_print_function_and_parameters "${@}"
+ debug_print
clear
language_strings "${language}" 253 "title"
@@ -6118,7 +6118,7 @@ function evil_twin_attacks_menu() {
#beef pre attack menu
function beef_pre_menu() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ ${return_to_et_main_menu_from_beef} -eq 1 ]; then
return
@@ -6193,7 +6193,7 @@ function beef_pre_menu() {
#WPS attacks menu
function wps_attacks_menu() {
- debug_print_function_and_parameters "${@}"
+ debug_print
clear
language_strings "${language}" 334 "title"
@@ -6420,7 +6420,7 @@ function wps_attacks_menu() {
#Offline decryption attacks menu
function decrypt_menu() {
- debug_print_function_and_parameters "${@}"
+ debug_print
clear
language_strings "${language}" 170 "title"
@@ -6501,7 +6501,7 @@ function decrypt_menu() {
#Read the user input on rules file questions
function ask_rules() {
- debug_print_function_and_parameters "${@}"
+ debug_print
validpath=1
while [[ "${validpath}" != "0" ]]; do
@@ -6513,7 +6513,7 @@ function ask_rules() {
#Read the user input on dictionary file questions
function ask_dictionary() {
- debug_print_function_and_parameters "${@}"
+ debug_print
validpath=1
while [[ "${validpath}" != "0" ]]; do
@@ -6525,7 +6525,7 @@ function ask_dictionary() {
#Read the user input on Handshake file questions
function ask_capture_file() {
- debug_print_function_and_parameters "${@}"
+ debug_print
validpath=1
while [[ "${validpath}" != "0" ]]; do
@@ -6537,7 +6537,7 @@ function ask_capture_file() {
#Manage the questions on Handshake file questions
function manage_asking_for_captured_file() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ -n "${enteredpath}" ]; then
echo
@@ -6554,7 +6554,7 @@ function manage_asking_for_captured_file() {
#Manage the questions on dictionary file questions
function manage_asking_for_dictionary_file() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ -n "${DICTIONARY}" ]; then
echo
@@ -6571,7 +6571,7 @@ function manage_asking_for_dictionary_file() {
#Manage the questions on rules file questions
function manage_asking_for_rule_file() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ -n "${RULES}" ]; then
echo
@@ -6588,7 +6588,7 @@ function manage_asking_for_rule_file() {
#Validate the file to be cleaned
function check_valid_file_to_clean() {
- debug_print_function_and_parameters "${@}"
+ debug_print
nets_from_file=$(echo "1" | aircrack-ng "${1}" 2> /dev/null | egrep "WPA|WEP" | awk '{ saved = $1; $1 = ""; print substr($0, 2) }')
@@ -6623,7 +6623,7 @@ function check_valid_file_to_clean() {
#Check if a bssid is present on a capture file to know if there is a Handshake with that bssid
function check_bssid_in_captured_file() {
- debug_print_function_and_parameters "${@}"
+ debug_print
nets_from_file=$(echo "1" | aircrack-ng "${1}" 2> /dev/null | egrep "WPA \([1-9][0-9]? handshake" | awk '{ saved = $1; $1 = ""; print substr($0, 2) }')
@@ -6663,7 +6663,7 @@ function check_bssid_in_captured_file() {
#Set the target vars to a bssid selecting them from a capture file which has a Handshake
function select_wpa_bssid_target_from_captured_file() {
- debug_print_function_and_parameters "${@}"
+ debug_print
nets_from_file=$(echo "1" | aircrack-ng "${1}" 2> /dev/null | egrep "WPA \([1-9][0-9]? handshake" | awk '{ saved = $1; $1 = ""; print substr($0, 2) }')
@@ -6743,7 +6743,7 @@ function select_wpa_bssid_target_from_captured_file() {
#Validate and ask for the different parameters used in an aircrack dictionary based attack
function aircrack_dictionary_attack_option() {
- debug_print_function_and_parameters "${@}"
+ debug_print
manage_asking_for_captured_file
@@ -6763,7 +6763,7 @@ function aircrack_dictionary_attack_option() {
#Validate and ask for the different parameters used in an aircrack bruteforce based attack
function aircrack_bruteforce_attack_option() {
- debug_print_function_and_parameters "${@}"
+ debug_print
manage_asking_for_captured_file
@@ -6790,7 +6790,7 @@ function aircrack_bruteforce_attack_option() {
#Validate and ask for the different parameters used in a hashcat dictionary based attack
function hashcat_dictionary_attack_option() {
- debug_print_function_and_parameters "${@}"
+ debug_print
manage_asking_for_captured_file
@@ -6811,7 +6811,7 @@ function hashcat_dictionary_attack_option() {
#Validate and ask for the different parameters used in a hashcat bruteforce based attack
function hashcat_bruteforce_attack_option() {
- debug_print_function_and_parameters "${@}"
+ debug_print
manage_asking_for_captured_file
@@ -6839,7 +6839,7 @@ function hashcat_bruteforce_attack_option() {
#Validate and ask for the different parameters used in a hashcat rule based attack
function hashcat_rulebased_attack_option() {
- debug_print_function_and_parameters "${@}"
+ debug_print
manage_asking_for_captured_file
@@ -6862,7 +6862,7 @@ function hashcat_rulebased_attack_option() {
#Check if the password was decrypted using hashcat and manage to save it on a file
function manage_hashcat_pot() {
- debug_print_function_and_parameters "${@}"
+ debug_print
local regexp="All hashes have been recovered"
if [ -n "${hashcat_fix}" ]; then
@@ -6900,7 +6900,7 @@ function manage_hashcat_pot() {
#Check if the passwords were captured using ettercap and manage to save them on a file
function manage_ettercap_log() {
- debug_print_function_and_parameters "${@}"
+ debug_print
ettercap_log=0
ask_yesno 302
@@ -6925,7 +6925,7 @@ function manage_ettercap_log() {
#Check if the passwords were captured using bettercap and manage to save them on a file
function manage_bettercap_log() {
- debug_print_function_and_parameters "${@}"
+ debug_print
bettercap_log=0
ask_yesno 302
@@ -6950,7 +6950,7 @@ function manage_bettercap_log() {
#Check if the passwords were captured using the captive portal Evil Twin attack and manage to save them on a file
function manage_captive_portal_log() {
- debug_print_function_and_parameters "${@}"
+ debug_print
default_et_captive_portal_logpath=$(env | grep ^HOME | awk -F = '{print $2}')
lastcharetcaptiveportallogpath=${default_et_captive_portal_logpath: -1}
@@ -6968,7 +6968,7 @@ function manage_captive_portal_log() {
#Captive portal language menu
function set_captive_portal_language() {
- debug_print_function_and_parameters "${@}"
+ debug_print
clear
language_strings "${language}" 293 "title"
@@ -7020,7 +7020,7 @@ function set_captive_portal_language() {
#Read and validate the minlength var
function set_minlength() {
- debug_print_function_and_parameters "${@}"
+ debug_print
minlength=0
while [[ ! ${minlength} =~ ^[8-9]$|^[1-5][0-9]$|^6[0-3]$ ]]; do
@@ -7033,7 +7033,7 @@ function set_minlength() {
#Read and validate the maxlength var
function set_maxlength() {
- debug_print_function_and_parameters "${@}"
+ debug_print
maxlength=0
while [[ ! ${maxlength} =~ ^[8-9]$|^[1-5][0-9]$|^6[0-3]$ ]]; do
@@ -7046,7 +7046,7 @@ function set_maxlength() {
#Manage the minlength and maxlength vars on bruteforce attacks
function set_minlength_and_maxlength() {
- debug_print_function_and_parameters "${@}"
+ debug_print
set_minlength
maxlength=0
@@ -7058,7 +7058,7 @@ function set_minlength_and_maxlength() {
#Charset selection menu
function set_charset() {
- debug_print_function_and_parameters "${@}"
+ debug_print
clear
language_strings "${language}" 238 "title"
@@ -7151,7 +7151,7 @@ function set_charset() {
#Set a var to show the chosen charset
function set_show_charset() {
- debug_print_function_and_parameters "${@}"
+ debug_print
showcharset=""
@@ -7185,7 +7185,7 @@ function set_show_charset() {
#Execute aircrack+crunch bruteforce attack
function exec_aircrack_bruteforce_attack() {
- debug_print_function_and_parameters "${@}"
+ debug_print
crunch "${minlength}" "${maxlength}" "${charset}" | aircrack-ng -a 2 -b "${bssid}" -w - "${enteredpath}"
language_strings "${language}" 115 "read"
@@ -7194,7 +7194,7 @@ function exec_aircrack_bruteforce_attack() {
#Execute aircrack dictionary attack
function exec_aircrack_dictionary_attack() {
- debug_print_function_and_parameters "${@}"
+ debug_print
aircrack-ng -a 2 -b "${bssid}" -w "${DICTIONARY}" "${enteredpath}"
language_strings "${language}" 115 "read"
@@ -7203,7 +7203,7 @@ function exec_aircrack_dictionary_attack() {
#Execute hashcat dictionary attack
function exec_hashcat_dictionary_attack() {
- debug_print_function_and_parameters "${@}"
+ debug_print
convert_cap_to_hashcat_format
hashcat_cmd="hashcat -m 2500 -a 0 \"${tmpdir}hctmp.hccap\" \"${DICTIONARY}\" --potfile-disable -o \"${tmpdir}hctmp.pot\" ${hashcat_fix} | tee /dev/fd/5"
@@ -7215,7 +7215,7 @@ function exec_hashcat_dictionary_attack() {
#Execute hashcat bruteforce attack
function exec_hashcat_bruteforce_attack() {
- debug_print_function_and_parameters "${@}"
+ debug_print
convert_cap_to_hashcat_format
hashcat_cmd="hashcat -m 2500 -a 3 \"${tmpdir}hctmp.hccap\" \"${charset}\" --potfile-disable -o \"${tmpdir}hctmp.pot\" ${hashcat_fix} | tee /dev/fd/5"
@@ -7227,7 +7227,7 @@ function exec_hashcat_bruteforce_attack() {
#Execute hashcat rule based attack
function exec_hashcat_rulebased_attack() {
- debug_print_function_and_parameters "${@}"
+ debug_print
convert_cap_to_hashcat_format
hashcat_cmd="hashcat -m 2500 -a 0 \"${tmpdir}hctmp.hccap\" \"${DICTIONARY}\" -r \"${RULES}\" --potfile-disable -o \"${tmpdir}hctmp.pot\" ${hashcat_fix} | tee /dev/fd/5"
@@ -7239,7 +7239,7 @@ function exec_hashcat_rulebased_attack() {
#Execute Evil Twin only Access Point attack
function exec_et_onlyap_attack() {
- debug_print_function_and_parameters "${@}"
+ debug_print
set_hostapd_config
launch_fake_ap
@@ -7262,7 +7262,7 @@ function exec_et_onlyap_attack() {
#Execute Evil Twin with sniffing attack
function exec_et_sniffing_attack() {
- debug_print_function_and_parameters "${@}"
+ debug_print
set_hostapd_config
launch_fake_ap
@@ -7289,7 +7289,7 @@ function exec_et_sniffing_attack() {
#Execute Evil Twin with sniffing+sslstrip attack
function exec_et_sniffing_sslstrip_attack() {
- debug_print_function_and_parameters "${@}"
+ debug_print
set_hostapd_config
launch_fake_ap
@@ -7317,7 +7317,7 @@ function exec_et_sniffing_sslstrip_attack() {
#Execute Evil Twin with sniffing+bettercap-sslstrip2/beef attack
function exec_et_sniffing_sslstrip2_attack() {
- debug_print_function_and_parameters "${@}"
+ debug_print
set_hostapd_config
launch_fake_ap
@@ -7355,7 +7355,7 @@ function exec_et_sniffing_sslstrip2_attack() {
#Execute captive portal Evil Twin attack
function exec_et_captive_portal_attack() {
- debug_print_function_and_parameters "${@}"
+ debug_print
set_hostapd_config
launch_fake_ap
@@ -7385,7 +7385,7 @@ function exec_et_captive_portal_attack() {
#Create configuration file for hostapd
function set_hostapd_config() {
- debug_print_function_and_parameters "${@}"
+ debug_print
tmpfiles_toclean=1
rm -rf "${tmpdir}${hostapd_file}" > /dev/null 2>&1
@@ -7405,7 +7405,7 @@ function set_hostapd_config() {
#Launch hostapd fake Access Point
function launch_fake_ap() {
- debug_print_function_and_parameters "${@}"
+ debug_print
killall hostapd > /dev/null 2>&1
${airmon} check kill > /dev/null 2>&1
@@ -7431,7 +7431,7 @@ function launch_fake_ap() {
#Create configuration file for dhcpd
function set_dhcp_config() {
- debug_print_function_and_parameters "${@}"
+ debug_print
route | grep ${ip_range} > /dev/null
if [ "$?" != "0" ]; then
@@ -7514,7 +7514,7 @@ function set_dhcp_config() {
#Set routing state and firewall rules for Evil Twin attacks
function set_std_internet_routing_rules() {
- debug_print_function_and_parameters "${@}"
+ debug_print
routing_toclean=1
original_routing_state=$(cat /proc/sys/net/ipv4/ip_forward)
@@ -7560,7 +7560,7 @@ function set_std_internet_routing_rules() {
#Launch dhcpd server
function launch_dhcp_server() {
- debug_print_function_and_parameters "${@}"
+ debug_print
killall dhcpd > /dev/null 2>&1
@@ -7584,7 +7584,7 @@ function launch_dhcp_server() {
#Execute DoS for Evil Twin attacks
function exec_et_deauth() {
- debug_print_function_and_parameters "${@}"
+ debug_print
prepare_et_monitor
@@ -7625,7 +7625,7 @@ function exec_et_deauth() {
#Create here-doc bash script used for wps pin attacks
function set_wps_attack_script() {
- debug_print_function_and_parameters "${@}"
+ debug_print
tmpfiles_toclean=1
rm -rf "${tmpdir}${wps_attack_script_file}" > /dev/null 2>&1
@@ -7986,7 +7986,7 @@ function set_wps_attack_script() {
#Create here-doc bash script used for control windows on Evil Twin attacks
function set_control_script() {
- debug_print_function_and_parameters "${@}"
+ debug_print
rm -rf "${tmpdir}${control_file}" > /dev/null 2>&1
@@ -8209,7 +8209,7 @@ function set_control_script() {
#Launch dnsspoof dns black hole for captive portal Evil Twin attack
function launch_dns_blackhole() {
- debug_print_function_and_parameters "${@}"
+ debug_print
recalculate_windows_sizes
xterm -hold -bg black -fg green -geometry "${g4_middleright_window}" -T "DNS" -e "${optional_tools_names[12]} -i ${interface}" > /dev/null 2>&1 &
@@ -8219,7 +8219,7 @@ function launch_dns_blackhole() {
#Launch control window for Evil Twin attacks
function launch_control_window() {
- debug_print_function_and_parameters "${@}"
+ debug_print
recalculate_windows_sizes
case ${et_mode} in
@@ -8250,7 +8250,7 @@ function launch_control_window() {
#Create configuration file for lighttpd
function set_webserver_config() {
- debug_print_function_and_parameters "${@}"
+ debug_print
rm -rf "${tmpdir}${webserver_file}" > /dev/null 2>&1
@@ -8275,7 +8275,7 @@ function set_webserver_config() {
#Create captive portal files. Cgi bash scripts, css and js file
function set_captive_portal_page() {
- debug_print_function_and_parameters "${@}"
+ debug_print
rm -rf -R "${tmpdir}${webdir}" > /dev/null 2>&1
mkdir "${tmpdir}${webdir}" > /dev/null 2>&1
@@ -8481,7 +8481,7 @@ function set_captive_portal_page() {
#Launch lighttpd webserver for captive portal Evil Twin attack
function launch_webserver() {
- debug_print_function_and_parameters "${@}"
+ debug_print
killall lighttpd > /dev/null 2>&1
recalculate_windows_sizes
@@ -8497,7 +8497,7 @@ function launch_webserver() {
#Launch sslstrip for sslstrip sniffing Evil Twin attack
function launch_sslstrip() {
- debug_print_function_and_parameters "${@}"
+ debug_print
rm -rf "${tmpdir}${sslstrip_file}" > /dev/null 2>&1
recalculate_windows_sizes
@@ -8508,7 +8508,7 @@ function launch_sslstrip() {
#Launch ettercap sniffer
function launch_ettercap_sniffing() {
- debug_print_function_and_parameters "${@}"
+ debug_print
recalculate_windows_sizes
case ${et_mode} in
@@ -8531,7 +8531,7 @@ function launch_ettercap_sniffing() {
#Create configuration file for beef
function set_beef_config() {
- debug_print_function_and_parameters "${@}"
+ debug_print
tmpfiles_toclean=1
rm -rf "${tmpdir}${beef_file}" > /dev/null 2>&1
@@ -8610,7 +8610,7 @@ function set_beef_config() {
#Kill beef process
function kill_beef() {
- debug_print_function_and_parameters "${@}"
+ debug_print
killall "${optional_tools_names[19]}" > /dev/null 2>&1
if [ "$?" != "0" ]; then
@@ -8626,7 +8626,7 @@ function kill_beef() {
#Detects if your beef is Flexible Brainfuck interpreter instead of BeEF
function detect_fake_beef() {
- debug_print_function_and_parameters "${@}"
+ debug_print
readarray -t BEEF_OUTPUT < <(timeout -s SIGTERM 0.5 beef -h 2> /dev/null)
@@ -8641,7 +8641,7 @@ function detect_fake_beef() {
#Search for beef path
function search_for_beef() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ "${beef_found}" -eq 0 ]; then
for item in "${possible_beef_known_locations[@]}"; do
@@ -8657,7 +8657,7 @@ function search_for_beef() {
#Prepare system to work with beef
function prepare_beef_start() {
- debug_print_function_and_parameters "${@}"
+ debug_print
valid_possible_beef_path=0
if [[ ${beef_found} -eq 0 ]] && [[ ${optional_tools[${optional_tools_names[19]}]} -eq 0 ]]; then
@@ -8701,7 +8701,7 @@ function prepare_beef_start() {
#Set beef path manually
function manual_beef_set() {
- debug_print_function_and_parameters "${@}"
+ debug_print
while [[ "${valid_possible_beef_path}" != "1" ]]; do
echo
@@ -8740,7 +8740,7 @@ function manual_beef_set() {
#Fix for not found beef executable
function fix_beef_executable() {
- debug_print_function_and_parameters "${@}"
+ debug_print
rm -rf "/usr/bin/beef" > /dev/null 2>&1
{
@@ -8757,7 +8757,7 @@ function fix_beef_executable() {
#Rewrite airgeddon script in a polymorphic way adding custom beef location to array to get persistence
function rewrite_script_with_custom_beef() {
- debug_print_function_and_parameters "${@}"
+ debug_print
set_script_folder_and_name
@@ -8778,7 +8778,7 @@ function rewrite_script_with_custom_beef() {
#Start beef process as a service
function start_beef_service() {
- debug_print_function_and_parameters "${@}"
+ debug_print
service "${optional_tools_names[19]}" restart > /dev/null 2>&1
if [ "$?" != "0" ]; then
@@ -8789,7 +8789,7 @@ function start_beef_service() {
#Launch beef browser exploitation framework
function launch_beef() {
- debug_print_function_and_parameters "${@}"
+ debug_print
kill_beef
@@ -8812,7 +8812,7 @@ function launch_beef() {
#Launch bettercap sniffer
function launch_bettercap_sniffing() {
- debug_print_function_and_parameters "${@}"
+ debug_print
recalculate_windows_sizes
sniffing_scr_window_position=${g4_bottomright_window}
@@ -8834,7 +8834,7 @@ function launch_bettercap_sniffing() {
#Parse ettercap log searching for captured passwords
function parse_ettercap_log() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 304 "blue"
@@ -8874,7 +8874,7 @@ function parse_ettercap_log() {
#Parse bettercap log searching for captured passwords
function parse_bettercap_log() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 304 "blue"
@@ -8932,7 +8932,7 @@ function parse_bettercap_log() {
#Write on a file the id of the captive portal Evil Twin attack processes
function write_et_processes() {
- debug_print_function_and_parameters "${@}"
+ debug_print
for item in "${et_processes[@]}"; do
echo "${item}" >> "${tmpdir}${webdir}${processesfile}"
@@ -8942,7 +8942,7 @@ function write_et_processes() {
#Kill the Evil Twin processes
function kill_et_windows() {
- debug_print_function_and_parameters "${@}"
+ debug_print
for item in "${et_processes[@]}"; do
kill "${item}" &> /dev/null
@@ -8953,7 +8953,7 @@ function kill_et_windows() {
#Convert capture file to hashcat format
function convert_cap_to_hashcat_format() {
- debug_print_function_and_parameters "${@}"
+ debug_print
tmpfiles_toclean=1
rm -rf "${tmpdir}hctmp"* > /dev/null 2>&1
@@ -8963,7 +8963,7 @@ function convert_cap_to_hashcat_format() {
#Handshake tools menu
function handshake_tools_menu() {
- debug_print_function_and_parameters "${@}"
+ debug_print
clear
language_strings "${language}" 120 "title"
@@ -9023,7 +9023,7 @@ function handshake_tools_menu() {
#Execute the cleaning of a Handshake file
function exec_clean_handshake_file() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
check_valid_file_to_clean "${filetoclean}"
@@ -9039,7 +9039,7 @@ function exec_clean_handshake_file() {
#Validate and ask for the parameters used to clean a Handshake file
function clean_handshake_file_option() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
readpath=0
@@ -9070,7 +9070,7 @@ function clean_handshake_file_option() {
#DoS attacks menu
function dos_attacks_menu() {
- debug_print_function_and_parameters "${@}"
+ debug_print
clear
language_strings "${language}" 102 "title"
@@ -9171,7 +9171,7 @@ function dos_attacks_menu() {
#Capture Handshake on Evil Twin attack
function capture_handshake_evil_twin() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [[ ${enc} != "WPA" ]] && [[ ${enc} != "WPA2" ]]; then
echo
@@ -9241,7 +9241,7 @@ function capture_handshake_evil_twin() {
#Capture Handshake on Handshake tools
function capture_handshake() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [[ -z ${bssid} ]] || [[ -z ${essid} ]] || [[ -z ${channel} ]] || [[ "${essid}" = "(Hidden Network)" ]]; then
echo
@@ -9270,7 +9270,7 @@ function capture_handshake() {
#Check if file exists
function check_file_exists() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [[ ! -f "${1}" || -z "${1}" ]]; then
language_strings "${language}" 161 "red"
@@ -9282,7 +9282,7 @@ function check_file_exists() {
#Validate path
function validate_path() {
- debug_print_function_and_parameters "${@}"
+ debug_print
dirname=${1%/*}
@@ -9341,7 +9341,7 @@ function validate_path() {
#Check for write permissions on a given path
function check_write_permissions() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ -w "${1}" ]; then
return 0
@@ -9352,7 +9352,7 @@ function check_write_permissions() {
#Create a var with the name passed to the function and reading the value from the user input
function read_and_clean_path() {
- debug_print_function_and_parameters "${@}"
+ debug_print
settings="$(shopt -p extglob)"
shopt -s extglob
@@ -9368,7 +9368,7 @@ function read_and_clean_path() {
#Read and validate a path
function read_path() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
case ${1} in
@@ -9454,7 +9454,7 @@ function read_path() {
#Launch the DoS selection menu before capture a Handshake and process the captured file
function attack_handshake_menu() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ "${1}" = "handshake" ]; then
ask_yesno 145
@@ -9561,7 +9561,7 @@ function attack_handshake_menu() {
#Launch the Handshake capture window
function capture_handshake_window() {
- debug_print_function_and_parameters "${@}"
+ debug_print
language_strings "${language}" 143 "blue"
echo
@@ -9579,7 +9579,7 @@ function capture_handshake_window() {
#Manage target exploration and parse the output files
function explore_for_targets_option() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 103 "title"
@@ -9655,7 +9655,7 @@ function explore_for_targets_option() {
#Manage target exploration only for Access Points with WPS activated. Parse output files and print menu with results
function explore_for_wps_targets_option() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 103 "title"
@@ -9671,7 +9671,7 @@ function explore_for_wps_targets_option() {
echo
if ! grep -qe "${interface}" <(echo "${!wash_ifaces_already_set[@]}"); then
language_strings "${language}" 353 "blue"
- set_wash_parametrization
+ set_wash_parameterization
language_strings "${language}" 354 "yellow"
else
language_strings "${language}" 355 "blue"
@@ -9833,7 +9833,7 @@ function explore_for_wps_targets_option() {
#Create a menu to select target from the parsed data
function select_target() {
- debug_print_function_and_parameters "${@}"
+ debug_print
clear
language_strings "${language}" 104 "title"
@@ -9921,9 +9921,9 @@ function select_target() {
}
#Perform a test to determine if fcs parameter is needed on wash scanning
-function set_wash_parametrization() {
+function set_wash_parameterization() {
- debug_print_function_and_parameters "${@}"
+ debug_print
fcs=""
declare -gA wash_ifaces_already_set
@@ -9942,7 +9942,7 @@ function set_wash_parametrization() {
#Manage and validate the prerequisites for wps pin database attacks
function wps_pin_database_prerequisites() {
- debug_print_function_and_parameters "${@}"
+ debug_print
set_wps_mac_parameters
include_pin_dbfile
@@ -9969,7 +9969,7 @@ function wps_pin_database_prerequisites() {
#Manage and validate the prerequisites for Evil Twin attacks
function et_prerequisites() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ ${retry_handshake_capture} -eq 1 ]; then
return
@@ -10104,7 +10104,7 @@ function et_prerequisites() {
#Manage the Handshake file requirement for captive portal Evil Twin attack
function ask_et_handshake_file() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
readpath=0
@@ -10145,7 +10145,7 @@ function ask_et_handshake_file() {
#DoS Evil Twin attacks menu
function et_dos_menu() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ ${return_to_et_main_menu} -eq 1 ]; then
return
@@ -10323,7 +10323,7 @@ function et_dos_menu() {
#Selected internet interface detection
function detect_internet_interface() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ ${internet_interface_selected} -eq 1 ]; then
return 0
@@ -10351,7 +10351,7 @@ function detect_internet_interface() {
#Show about and credits
function credits_option() {
- debug_print_function_and_parameters "${@}"
+ debug_print
clear
language_strings "${language}" 105 "title"
@@ -10380,7 +10380,7 @@ function credits_option() {
#Show message for invalid selected language
function invalid_language_selected() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 82 "red"
@@ -10393,7 +10393,7 @@ function invalid_language_selected() {
#Show message for captive portal invalid selected language
function invalid_captive_portal_language_selected() {
- debug_print_function_and_parameters "${@}"
+ debug_print
language_strings "${language}" 82 "red"
echo
@@ -10404,7 +10404,7 @@ function invalid_captive_portal_language_selected() {
#Show message for forbidden selected option
function forbidden_menu_option() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 220 "red"
@@ -10414,7 +10414,7 @@ function forbidden_menu_option() {
#Show message for invalid selected option
function invalid_menu_option() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 76 "red"
@@ -10424,7 +10424,7 @@ function invalid_menu_option() {
#Show message for invalid selected interface
function invalid_iface_selected() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 77 "red"
@@ -10437,7 +10437,7 @@ function invalid_iface_selected() {
#Show message for invalid selected internet interface
function invalid_internet_iface_selected() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 77 "red"
@@ -10450,7 +10450,7 @@ function invalid_internet_iface_selected() {
#Manage behavior of captured traps
function capture_traps() {
- debug_print_function_and_parameters "${@}"
+ debug_print
case "${1}" in
INT|SIGTSTP)
@@ -10484,7 +10484,7 @@ function capture_traps() {
#Exit the script managing possible pending tasks
function exit_script_option() {
- debug_print_function_and_parameters "${@}"
+ debug_print
action_on_exit_taken=0
echo
@@ -10544,7 +10544,7 @@ function exit_script_option() {
#Exit the script managing possible pending tasks but not showing anything
function hardcore_exit() {
- debug_print_function_and_parameters "${@}"
+ debug_print
exit_code=2
if [ "${ifacemode}" = "Monitor" ]; then
@@ -10573,7 +10573,7 @@ function hardcore_exit() {
#Generate a small time loop printing some dots
function time_loop() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo -ne " "
for (( j=1; j<=4; j++ )); do
@@ -10585,7 +10585,7 @@ function time_loop() {
#Determine which version of airmon to use
function airmon_fix() {
- debug_print_function_and_parameters "${@}"
+ debug_print
airmon="airmon-ng"
@@ -10597,7 +10597,7 @@ function airmon_fix() {
#Prepare the fix for iwconfig command depending of the wireless tools version
function iwconfig_fix() {
- debug_print_function_and_parameters "${@}"
+ debug_print
iwversion=$(iwconfig --version | grep version | awk '{print $4}')
iwcmdfix=""
@@ -10609,7 +10609,7 @@ function iwconfig_fix() {
#Set hashcat parameters based on version
function set_hashcat_parameters() {
- debug_print_function_and_parameters "${@}"
+ debug_print
hashcat_fix=""
hashcat_charset_fix_needed=0
@@ -10622,7 +10622,7 @@ function set_hashcat_parameters() {
#Determine hashcat version
function get_hashcat_version() {
- debug_print_function_and_parameters "${@}"
+ debug_print
hashcat_version=$(hashcat -V 2> /dev/null)
hashcat_version=${hashcat_version#"v"}
@@ -10631,7 +10631,7 @@ function get_hashcat_version() {
#Determine bettercap version
function get_bettercap_version() {
- debug_print_function_and_parameters "${@}"
+ debug_print
bettercap_version=$(bettercap -v 2> /dev/null | egrep "^bettercap [0-9]" | awk '{print $2}')
}
@@ -10639,7 +10639,7 @@ function get_bettercap_version() {
#Determine bully version
function get_bully_version() {
- debug_print_function_and_parameters "${@}"
+ debug_print
bully_version=$(bully -V 2> /dev/null)
bully_version=${bully_version#"v"}
@@ -10648,7 +10648,7 @@ function get_bully_version() {
#Determine reaver version
function get_reaver_version() {
- debug_print_function_and_parameters "${@}"
+ debug_print
reaver_version=$(reaver -h 2>&1 > /dev/null | egrep "^Reaver v[0-9]" | awk '{print $2}')
if [ -z "${reaver_version}" ]; then
@@ -10660,7 +10660,7 @@ function get_reaver_version() {
#Set verbosity for bully based on version
function set_bully_verbosity() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if compare_floats_greater_or_equal "${bully_version}" "${minimum_bully_verbosity4_version}"; then
bully_verbosity="4"
@@ -10672,7 +10672,7 @@ function set_bully_verbosity() {
#Validate if bully version is able to perform integrated pixiewps attack
function validate_bully_pixiewps_version() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if compare_floats_greater_or_equal "${bully_version}" "${minimum_bully_pixiewps_version}"; then
return 0
@@ -10683,7 +10683,7 @@ function validate_bully_pixiewps_version() {
#Validate if reaver version is able to perform integrated pixiewps attack
function validate_reaver_pixiewps_version() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if compare_floats_greater_or_equal "${reaver_version}" "${minimum_reaver_pixiewps_version}"; then
return 0
@@ -10694,7 +10694,7 @@ function validate_reaver_pixiewps_version() {
#Set the script folder var if necessary
function set_script_folder_and_name() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ -z "${scriptfolder}" ]; then
scriptfolder=${0}
@@ -10712,7 +10712,7 @@ function set_script_folder_and_name() {
#Check if pins database file exist and try to download the new one if proceed
function check_pins_database_file() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ -f "${scriptfolder}${known_pins_dbfile}" ]; then
language_strings "${language}" 376 "yellow"
@@ -10780,7 +10780,7 @@ function check_pins_database_file() {
#Download the pins database file
function download_pins_database_file() {
- debug_print_function_and_parameters "${@}"
+ debug_print
remote_pindb_file=$(timeout -s SIGTERM 15 curl -L ${urlscript_pins_dbfile} 2> /dev/null)
@@ -10795,7 +10795,7 @@ function download_pins_database_file() {
#Ask for try to download pin db file again and set the var to skip it
function ask_for_pin_dbfile_download_retry() {
- debug_print_function_and_parameters "${@}"
+ debug_print
ask_yesno 380
if [ ${yesno} = "n" ]; then
@@ -10806,7 +10806,7 @@ function ask_for_pin_dbfile_download_retry() {
#Get the checksum for local pin database file
function get_local_pin_dbfile_checksum() {
- debug_print_function_and_parameters "${@}"
+ debug_print
local_pin_dbfile_checksum=$(md5sum "${1}" | awk '{print $1}')
}
@@ -10814,7 +10814,7 @@ function get_local_pin_dbfile_checksum() {
#Get the checksum for remote pin database file
function get_remote_pin_dbfile_checksum() {
- debug_print_function_and_parameters "${@}"
+ debug_print
remote_pin_dbfile_checksum=$(timeout -s SIGTERM 15 curl -L ${urlscript_pins_dbfile_checksum} 2> /dev/null | head -n 1)
@@ -10827,7 +10827,7 @@ function get_remote_pin_dbfile_checksum() {
#Check for possible non Linux operating systems
function non_linux_os_check() {
- debug_print_function_and_parameters "${@}"
+ debug_print
case "${OSTYPE}" in
solaris*)
@@ -10845,7 +10845,7 @@ function non_linux_os_check() {
#First phase of Linux distro detection based on uname output
function detect_distro_phase1() {
- debug_print_function_and_parameters "${@}"
+ debug_print
for i in "${known_compatible_distros[@]}"; do
uname -a | grep "${i}" -i > /dev/null
@@ -10859,7 +10859,7 @@ function detect_distro_phase1() {
#Second phase of Linux distro detection based on architecture and version file
function detect_distro_phase2() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ "${distro}" = "Unknown Linux" ]; then
if [ -f ${osversionfile_dir}"centos-release" ]; then
@@ -10906,7 +10906,7 @@ function detect_distro_phase2() {
#Detect if arm architecture is present on system
function detect_arm_architecture() {
- debug_print_function_and_parameters "${@}"
+ debug_print
distro_already_known=0
uname -m | grep -i "arm" > /dev/null
@@ -10931,7 +10931,7 @@ function detect_arm_architecture() {
#Set some useful vars based on Linux distro
function special_distro_features() {
- debug_print_function_and_parameters "${@}"
+ debug_print
case ${distro} in
"Wifislax")
@@ -11052,7 +11052,7 @@ function special_distro_features() {
#Determine if NetworkManager must be killed on your system. Only needed for previous versions of 1.0.12
function check_if_kill_needed() {
- debug_print_function_and_parameters "${@}"
+ debug_print
nm_min_main_version="1"
nm_min_subversion="0"
@@ -11089,7 +11089,7 @@ function check_if_kill_needed() {
#Do some checks for some general configuration
function general_checkings() {
- debug_print_function_and_parameters "${@}"
+ debug_print
compatible=0
distro="Unknown Linux"
@@ -11121,7 +11121,7 @@ function general_checkings() {
#Check if the user is root
function check_root_permissions() {
- debug_print_function_and_parameters "${@}"
+ debug_print
user=$(whoami)
@@ -11133,7 +11133,7 @@ function check_root_permissions() {
#Print Linux known distros
function print_known_distros() {
- debug_print_function_and_parameters "${@}"
+ debug_print
all_known_compatible_distros=("${known_compatible_distros[@]}" "${known_arm_compatible_distros[@]}")
IFS=$'\n'
@@ -11149,7 +11149,7 @@ function print_known_distros() {
#Check if you have installed the tools (essential and optional) that the script uses
function check_compatibility() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 108 "blue"
@@ -11250,7 +11250,7 @@ function check_compatibility() {
#Check for the minimum bash version requirement
function check_bash_version() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
bashversion="${BASH_VERSINFO[0]}.${BASH_VERSINFO[1]}"
@@ -11266,7 +11266,7 @@ function check_bash_version() {
#Check if you have installed the tools required to update the script
function check_update_tools() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ ${auto_update} -eq 1 ]; then
if [ ${update_toolsok} -eq 1 ]; then
@@ -11282,7 +11282,7 @@ function check_update_tools() {
#Check if window size is enough for intro
function check_window_size_for_intro() {
- debug_print_function_and_parameters "${@}"
+ debug_print
window_width=$(tput cols)
window_height=$(tput lines)
@@ -11305,7 +11305,7 @@ function check_window_size_for_intro() {
#Print the script intro
function print_intro() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo -e "${yellow_color} .__ .___ .___"
sleep 0.15 && echo -e " _____ |__|______ ____ ____ __| _/__| _/____ ____"
@@ -11322,7 +11322,7 @@ function print_intro() {
#Generate the frames of the animated ascii art flying saucer
function flying_saucer() {
- debug_print_function_and_parameters "${@}"
+ debug_print
case ${1} in
1)
@@ -11364,7 +11364,7 @@ function flying_saucer() {
#Print animated ascii art flying saucer
function print_animated_flying_saucer() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo -e "\033[s"
@@ -11382,7 +11382,7 @@ function print_animated_flying_saucer() {
#Initialize script settings
function initialize_script_settings() {
- debug_print_function_and_parameters "${@}"
+ debug_print
exit_code=0
check_kill_needed=0
@@ -11406,7 +11406,7 @@ function initialize_script_settings() {
#Detect screen resolution if possible
function detect_screen_resolution() {
- debug_print_function_and_parameters "${@}"
+ debug_print
resolution_detected=0
if hash xdpyinfo 2> /dev/null; then
@@ -11427,7 +11427,7 @@ function detect_screen_resolution() {
#Set windows sizes and positions
function set_windows_sizes() {
- debug_print_function_and_parameters "${@}"
+ debug_print
set_xsizes
set_ysizes
@@ -11458,7 +11458,7 @@ function set_windows_sizes() {
#Set sizes for x axis
function set_xsizes() {
- debug_print_function_and_parameters "${@}"
+ debug_print
xtotal=$(awk -v n1="${resolution_x}" "BEGIN{print n1 / ${xratio}}")
@@ -11479,7 +11479,7 @@ function set_xsizes() {
#Set sizes for y axis
function set_ysizes() {
- debug_print_function_and_parameters "${@}"
+ debug_print
ytotal=$(awk -v n1="${resolution_y}" "BEGIN{print n1 / ${yratio}}")
ytotaltmp=$(printf "%.0f" "${ytotal}" 2> /dev/null)
@@ -11499,7 +11499,7 @@ function set_ysizes() {
#Set positions for y axis
function set_ypositions() {
- debug_print_function_and_parameters "${@}"
+ debug_print
middle_position=$((resolution_y / 3 + ywindow_edge_pixels))
}
@@ -11507,7 +11507,7 @@ function set_ypositions() {
#Recalculate windows sizes and positions
function recalculate_windows_sizes() {
- debug_print_function_and_parameters "${@}"
+ debug_print
detect_screen_resolution
set_windows_sizes
@@ -11516,7 +11516,7 @@ function recalculate_windows_sizes() {
#Script starting point
function welcome() {
- debug_print_function_and_parameters "${@}"
+ debug_print
clear
current_menu="pre_main_menu"
@@ -11587,7 +11587,7 @@ function welcome() {
#Avoid the problem of using airmon-zc without ethtool or lspci installed
function airmonzc_security_check() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [ "${airmon}" = "airmon-zc" ]; then
if ! hash ethtool 2> /dev/null; then
@@ -11611,7 +11611,7 @@ function airmonzc_security_check() {
#Compare if first float argument is greater than float second argument
function compare_floats_greater_than() {
- debug_print_function_and_parameters "${@}"
+ debug_print
awk -v n1="${1}" -v n2="${2}" 'BEGIN{if (n1>n2) exit 0; exit 1}'
}
@@ -11619,7 +11619,7 @@ function compare_floats_greater_than() {
#Compare if first float argument is greater or equal than float second argument
function compare_floats_greater_or_equal() {
- debug_print_function_and_parameters "${@}"
+ debug_print
awk -v n1="${1}" -v n2="${2}" 'BEGIN{if (n1>=n2) exit 0; exit 1}'
}
@@ -11627,7 +11627,7 @@ function compare_floats_greater_or_equal() {
#Update and relaunch the script
function download_last_version() {
- debug_print_function_and_parameters "${@}"
+ debug_print
rewrite_script_with_custom_beef "search"
timeout -s SIGTERM 15 curl -L ${urlscript_directlink} -s -o "${0}"
@@ -11649,7 +11649,7 @@ function download_last_version() {
#Validate if the selected internet interface has internet access
function validate_et_internet_interface() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 287 "blue"
@@ -11680,7 +11680,7 @@ function validate_et_internet_interface() {
#Check for active internet connection
function check_internet_access() {
- debug_print_function_and_parameters "${@}"
+ debug_print
ping -c 1 ${host_to_check_internet} -W 1 > /dev/null 2>&1
return $?
@@ -11689,7 +11689,7 @@ function check_internet_access() {
#Check for default route on an interface
function check_default_route() {
- debug_print_function_and_parameters "${@}"
+ debug_print
route | grep "${1}" | grep "default" > /dev/null
return $?
@@ -11698,7 +11698,7 @@ function check_default_route() {
#Update the script if your version is lower than the cloud version
function autoupdate_check() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo
language_strings "${language}" 210 "blue"
@@ -11734,7 +11734,7 @@ function autoupdate_check() {
#Check if you can launch captive portal Evil Twin attack
function check_et_without_internet_compatibility() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if ! hash "${optional_tools_names[12]}" 2> /dev/null; then
return 1
@@ -11745,7 +11745,7 @@ function check_et_without_internet_compatibility() {
#Change script language automatically if OS language is supported by the script and different from current language
function autodetect_language() {
- debug_print_function_and_parameters "${@}"
+ debug_print
[[ $(locale | grep LANG) =~ ^(.*)=\"?([a-zA-Z]+)_(.*)$ ]] && lang="${BASH_REMATCH[2]}"
@@ -11761,7 +11761,7 @@ function autodetect_language() {
#Clean some known and controlled warnings for shellcheck tool
function remove_warnings() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo "${clean_handshake_dependencies[@]}" > /dev/null 2>&1
echo "${aircrack_attacks_dependencies[@]}" > /dev/null 2>&1
@@ -11784,7 +11784,7 @@ function remove_warnings() {
#Print a simple separator
function print_simple_separator() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo_blue "---------"
}
@@ -11792,7 +11792,7 @@ function print_simple_separator() {
#Print a large separator
function print_large_separator() {
- debug_print_function_and_parameters "${@}"
+ debug_print
echo_blue "-------------------------------------------------------"
}
@@ -11800,7 +11800,7 @@ function print_large_separator() {
#Add the PoT prefix on printed strings if PoT mark is found
function check_pending_of_translation() {
- debug_print_function_and_parameters "${@}"
+ debug_print
if [[ "${1}" =~ ^${escaped_pending_of_translation}([[:space:]])(.*)$ ]]; then
text="${cyan_color}${pending_of_translation} ${2}${BASH_REMATCH[2]}"
@@ -11822,7 +11822,7 @@ function check_pending_of_translation() {
#Print under construction message used on some menu entries
function under_construction_message() {
- debug_print_function_and_parameters "${@}"
+ debug_print
local var_uc="${under_constructionvar^}"
echo
@@ -11833,7 +11833,7 @@ function under_construction_message() {
#Canalize the echo functions
function last_echo() {
- debug_print_function_and_parameters "${@}"
+ debug_print
check_pending_of_translation "${1}" "${2}"
if [ "$?" != "0" ]; then
@@ -11846,7 +11846,7 @@ function last_echo() {
#Print green messages
function echo_green() {
- debug_print_function_and_parameters "${@}"
+ debug_print
last_echo "${1}" "${green_color}"
}
@@ -11854,7 +11854,7 @@ function echo_green() {
#Print blue messages
function echo_blue() {
- debug_print_function_and_parameters "${@}"
+ debug_print
last_echo "${1}" "${blue_color}"
}
@@ -11862,7 +11862,7 @@ function echo_blue() {
#Print yellow messages
function echo_yellow() {
- debug_print_function_and_parameters "${@}"
+ debug_print
last_echo "${1}" "${yellow_color}"
}
@@ -11870,7 +11870,7 @@ function echo_yellow() {
#Print red messages
function echo_red() {
- debug_print_function_and_parameters "${@}"
+ debug_print
last_echo "${1}" "${red_color}"
}
@@ -11878,7 +11878,7 @@ function echo_red() {
#Print red messages using a slimmer thickness
function echo_red_slim() {
- debug_print_function_and_parameters "${@}"
+ debug_print
last_echo "${1}" "${red_color_slim}"
}
@@ -11886,7 +11886,7 @@ function echo_red_slim() {
#Print black messages with background for titles
function echo_green_title() {
- debug_print_function_and_parameters "${@}"
+ debug_print
last_echo "${1}" "${green_color_title}"
}
@@ -11894,7 +11894,7 @@ function echo_green_title() {
#Print pink messages
function echo_pink() {
- debug_print_function_and_parameters "${@}"
+ debug_print
last_echo "${1}" "${pink_color}"
}
@@ -11902,7 +11902,7 @@ function echo_pink() {
#Print cyan messages
function echo_cyan() {
- debug_print_function_and_parameters "${@}"
+ debug_print
last_echo "${1}" "${cyan_color}"
}
@@ -11910,7 +11910,7 @@ function echo_cyan() {
#Print brown messages
function echo_brown() {
- debug_print_function_and_parameters "${@}"
+ debug_print
last_echo "${1}" "${brown_color}"
}
@@ -11918,7 +11918,7 @@ function echo_brown() {
#Print white messages
function echo_white() {
- debug_print_function_and_parameters "${@}"
+ debug_print
last_echo "${1}" "${white_color}"
}