fluxion/fluxion.sh

1026 lines
35 KiB
Bash
Raw Normal View History

2016-05-15 09:34:47 -06:00
#!/bin/bash
################################ < FLUXION Parameters > ################################
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
# NOTE: The FLUXIONPath constant will not be populated correctly if the script is called
# directly via a symlink. Symlinks in the path to the script should work completely fine.
2017-12-31 09:02:12 -07:00
declare -r FLUXIONPath="$(cd "$(dirname "$0")" ;pwd -P
)"
2017-02-05 04:59:57 -07:00
declare -r FLUXIONWorkspacePath="/tmp/fluxspace"
declare -r FLUXIONHashPath="$FLUXIONPath/attacks/Handshake Snooper/handshakes"
declare -r FLUXIONScanDB="dump"
2016-12-30 09:46:08 -07:00
declare -r FLUXIONNoiseFloor=-90
declare -r FLUXIONNoiseCeiling=-60
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
declare -r FLUXIONVersion=3
2017-12-31 09:02:12 -07:00
declare -r FLUXIONRevision=11
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
declare -r FLUXIONDebug=${FLUXIONDebug:+1}
declare -r FLUXIONWIKillProcesses=${FLUXIONWIKillProcesses:+1}
declare -r FLUXIONWIReloadDriver=${FLUXIONWIReloadDriver:+1}
declare -r FLUXIONAuto=${FLUXIONAuto:+1}
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
# FLUXIONDebug [Normal Mode "" / Developer Mode 1]
declare -r FLUXIONOutputDevice=$([ $FLUXIONDebug ] && echo "/dev/stdout" || echo "/dev/null")
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
declare -r FLUXIONHoldXterm=$([ $FLUXIONDebug ] && echo "-hold" || echo "")
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
################################# < Library Includes > #################################
source lib/installer/InstallerUtils.sh
source lib/InterfaceUtils.sh
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
source lib/SandboxUtils.sh
source lib/FormatUtils.sh
source lib/ColorUtils.sh
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
source lib/IOUtils.sh
source lib/HashUtils.sh
################################ < FLUXION Parameters > ################################
FLUXIONPrompt="$CRed[${CSBlu}fluxion$CSYel@$CSWht$HOSTNAME$CClr$CRed]-[$CSYel~$CClr$CRed]$CClr "
FLUXIONVLine="$CRed[$CSYel*$CClr$CRed]$CClr"
################################ < Library Parameters > ################################
InterfaceUtilsOutputDevice="$FLUXIONOutputDevice"
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
SandboxWorkspacePath="$FLUXIONWorkspacePath"
SandboxOutputDevice="$FLUXIONOutputDevice"
InstallerUtilsWorkspacePath="$FLUXIONWorkspacePath"
InstallerUtilsOutputDevice="$FLUXIONOutputDevice"
InstallerUtilsNoticeMark="$FLUXIONVLine"
PackageManagerLog="$InstallerUtilsWorkspacePath/package_manager.log"
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
IOUtilsHeader="fluxion_header"
IOUtilsQueryMark="$FLUXIONVLine"
IOUtilsPrompt="$FLUXIONPrompt"
HashOutputDevice="$FLUXIONOutputDevice"
################################# < Super User Check > #################################
if [ $EUID -ne 0 ]; then
2017-12-31 09:02:12 -07:00
echo -e "${CRed}You don't have admin privilegies, execute the script as root.$CClr"
exit 1
2016-05-15 09:34:47 -06:00
fi
2017-08-27 14:36:45 -06:00
################################### < XTerm Checks > ###################################
if [ ! "${DISPLAY:-}" ]; then
2018-01-10 22:20:23 -07:00
echo -e "${CRed}The script should be executed inside a X (graphical) session.$CClr"
2017-12-31 09:02:12 -07:00
exit 2
2016-10-02 14:10:35 -06:00
fi
if ! hash xdpyinfo 2>/dev/null; then
2017-12-31 09:02:12 -07:00
echo -e "${CRed}xdpyinfo not installed, please install the relevant package for your distribution.$CClr"
exit 3
2017-09-20 15:19:06 -06:00
fi
2017-12-31 09:02:12 -07:00
if ! xdpyinfo &>/dev/null; then
echo -e "${CRed}The script failed to initialize an xterm test session.$CClr"
exit 3
2017-09-02 19:34:17 -06:00
fi
2017-08-27 14:36:45 -06:00
################################# < Default Language > #################################
source language/en.sh
################################# < User Preferences > #################################
if [ -x "$FLUXIONPath/preferences.sh" ]; then source "$FLUXIONPath/preferences.sh"; fi
########################################################################################
function fluxion_exitmode() {
2017-12-31 09:02:12 -07:00
if [ $FLUXIONDebug ]; then return 1; fi
fluxion_header
echo -e "$CWht[$CRed-$CWht]$CRed $FLUXIONCleanupAndClosingNotice$CClr"
# List currently running processes which we might have to kill before exiting.
local processes
readarray processes < <(ps -A)
# Currently, fluxion is only responsible for killing airodump-ng, because
# fluxion explicitly it uses it to scan for candidate target access points.
# NOTICE: Processes started by subscripts, such as an attack script,
# MUST BE TERMINATED BY THAT SAME SCRIPT in the subscript's abort handler.
local targets=("airodump-ng")
local targetID # Program identifier/title
for targetID in "${targets[@]}"; do
# Get PIDs of all programs matching targetPID
local targetPID=$(echo "${processes[@]}" | awk '$4~/'"$targetID"'/{print $1}')
if [ ! "$targetPID" ]; then continue; fi
echo -e "$CWht[$CRed-$CWht] $(io_dynamic_output $FLUXIONKillingProcessNotice)"
killall $targetPID &>$FLUXIONOutputDevice
done
# If the installer activated the package manager, make sure to undo any changes.
if [ "$PackageManagerCLT" ]; then
echo -e "$CWht[$CRed-$CWht] "$(io_dynamic_output "$FLUXIONRestoringPackageManagerNotice")"$CClr"
unprep_package_manager
fi
if [ "$WIMonitor" ]; then
echo -e "$CWht[$CRed-$CWht] $FLUXIONDisablingMonitorNotice$CGrn $WIMonitor$CClr"
if [ "$FLUXIONAirmonNG" ]; then airmon-ng stop "$WIMonitor" &>$FLUXIONOutputDevice
else interface_set_mode "$WIMonitor" "managed"
fi
2017-12-31 09:02:12 -07:00
fi
echo -e "$CWht[$CRed-$CWht] $FLUXIONRestoringTputNotice$CClr"
tput cnorm
if [ ! $FLUXIONDebug ]; then
echo -e "$CWht[$CRed-$CWht] $FLUXIONDeletingFilesNotice$CClr"
sandbox_remove_workfile "$FLUXIONWorkspacePath/*"
fi
if [ $FLUXIONWIKillProcesses ]; then
echo -e "$CWht[$CRed-$CWht] $FLUXIONRestartingNetworkManagerNotice$CClr"
# systemctl check
systemd=$(whereis systemctl)
if [ "$systemd" = "" ]; then
service network-manager restart &>$FLUXIONOutputDevice &
service networkmanager restart &>$FLUXIONOutputDevice &
service networking restart &>$FLUXIONOutputDevice &
else
systemctl restart NetworkManager &>$FLUXIONOutputDevice &
fi
fi
2017-12-31 09:02:12 -07:00
echo -e "$CWht[$CGrn+$CWht] $CGrn$FLUXIONCleanupSuccessNotice$CClr"
echo -e "$CWht[$CGrn+$CWht] $CGry$FLUXIONThanksSupportersNotice$CClr"
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
2017-12-31 09:02:12 -07:00
sleep 3
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
2017-12-31 09:02:12 -07:00
clear
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
2017-12-31 09:02:12 -07:00
exit 0
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
}
2016-05-15 09:34:47 -06:00
# Delete log only in Normal Mode !
function fluxion_conditional_clear() {
2017-12-31 09:02:12 -07:00
# Clear iff we're not in debug mode
if [ ! $FLUXIONDebug ]; then clear; fi
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
}
2016-05-15 09:34:47 -06:00
function fluxion_conditional_bail() {
2017-12-31 09:02:12 -07:00
echo ${1:-"Something went wrong, whoops! (report this)"}
sleep 5
if [ ! $FLUXIONDebug ]; then
fluxion_handle_exit
return 1
fi
echo "Press any key to continue execution..."
read bullshit
2016-05-15 09:34:47 -06:00
}
# ERROR Report only in Developer Mode
function fluxion_error_report() {
2017-12-31 09:02:12 -07:00
echo "Error on line $1"
2016-05-15 09:34:47 -06:00
}
if [ "$FLUXIONDebug" ]; then
2017-12-31 09:02:12 -07:00
trap 'fluxion_error_report $LINENUM' ERR
2016-05-15 09:34:47 -06:00
fi
function fluxion_handle_abort_attack() {
2017-12-31 09:02:12 -07:00
if [ $(type -t stop_attack) ]; then
stop_attack &>$FLUXIONOutputDevice
unprep_attack &>$FLUXIONOutputDevice
else
echo "Attack undefined, can't stop anything..." >$FLUXIONOutputDevice
fi
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
}
2016-05-15 09:34:47 -06:00
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
# In case an abort signal is received,
# abort any attacks currently running.
trap fluxion_handle_abort_attack SIGABRT
2017-02-02 15:23:02 -07:00
function fluxion_handle_exit() {
2017-12-31 09:02:12 -07:00
fluxion_handle_abort_attack
fluxion_exitmode
exit 1
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
}
2016-05-15 09:34:47 -06:00
# In case of unexpected termination, run fluxion_exitmode
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
# to execute cleanup and reset commands.
trap fluxion_handle_exit SIGINT SIGHUP
2016-05-15 09:34:47 -06:00
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
function fluxion_header() {
2017-12-31 09:02:12 -07:00
format_apply_autosize "[%*s]\n"
local verticalBorder=$FormatApplyAutosize
2017-12-31 09:02:12 -07:00
format_apply_autosize "[%*s${CSRed}FLUXION $FLUXIONVersion${CSWht}.${CSBlu}$FLUXIONRevision$CSRed <$CIRed F${CIYel}luxion$CIRed I${CIYel}s$CIRed T${CIYel}he$CIRed F${CIYel}uture$CClr$CSYel >%*s$CSBlu]\n"
local headerTextFormat="$FormatApplyAutosize"
2017-12-31 09:02:12 -07:00
fluxion_conditional_clear
2017-12-31 09:02:12 -07:00
echo -e "$(printf "$CSRed$verticalBorder" "" | sed -r "s/ /~/g")"
printf "$CSRed$verticalBorder" ""
printf "$headerTextFormat" "" ""
printf "$CSBlu$verticalBorder" ""
echo -e "$(printf "$CSBlu$verticalBorder" "" | sed -r "s/ /~/g")$CClr"
echo
echo
2016-05-15 09:34:47 -06:00
}
# Create working directory
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
if [ ! -d "$FLUXIONWorkspacePath" ]; then
2017-12-31 09:02:12 -07:00
mkdir -p "$FLUXIONWorkspacePath" &>$FLUXIONOutputDevice
2016-05-15 09:34:47 -06:00
fi
####################################### < Start > ######################################
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
if [ ! $FLUXIONDebug ]; then
2017-12-31 09:02:12 -07:00
FLUXIONBanner=()
format_center_literals " ⌠▓▒▓▒ ⌠▓╗ ⌠█┐ ┌█ ┌▓\ /▓┐ ⌠▓╖ ⌠◙▒▓▒◙ ⌠█\ ☒┐"
FLUXIONBanner+=("$FormatCenterLiterals")
format_center_literals " ║▒_ │▒║ │▒║ ║▒ \▒\/▒/ │☢╫ │▒┌╤┐▒ ║▓▒\ ▓║"
FLUXIONBanner+=("$FormatCenterLiterals")
format_center_literals " ≡◙◙ ║◙║ ║◙║ ║◙ ◙◙ ║¤▒ ║▓║☯║▓ ♜◙\✪\◙♜"
FLUXIONBanner+=("$FormatCenterLiterals")
format_center_literals " ║▒ │▒║__ │▒└_┘▒ /▒/\▒\ │☢╫ │▒└╧┘▒ ║█ \▒█║"
FLUXIONBanner+=("$FormatCenterLiterals")
format_center_literals " ⌡▓ ⌡◘▒▓▒ ⌡◘▒▓▒◘ └▓/ \▓┘ ⌡▓╝ ⌡◙▒▓▒◙ ⌡▓ \▓┘"
FLUXIONBanner+=("$FormatCenterLiterals")
format_center_literals "¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯¯ ¯¯¯ ¯¯¯ ¯¯¯¯ ¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯"
FLUXIONBanner+=("$FormatCenterLiterals")
clear
if [ "$FLUXIONAuto" ]; then echo -e "$CBlu"
else echo -e "$CRed"
fi
for line in "${FLUXIONBanner[@]}"; do
echo "$line"
sleep 0.05
done
#echo "${FLUXIONBanner[@]}"
echo
sleep 0.1
format_center_literals "${CGrn}Site: ${CRed}https://github.com/FluxionNetwork/fluxion$CClr"
echo -e "$FormatCenterLiterals"
sleep 0.1
format_center_literals "${CSRed}FLUXION $FLUXIONVersion$CClr (rev. $CSBlu$FLUXIONRevision$CClr)$CYel by$CWht ghost"
echo -e "$FormatCenterLiterals"
sleep 0.1
if installer_utils_check_update "https://raw.githubusercontent.com/FluxionNetwork/fluxion/master/fluxion.sh" "FLUXIONVersion=" "FLUXIONRevision=" $FLUXIONVersion $FLUXIONRevision; then installer_utils_run_update "https://github.com/FluxionNetwork/fluxion/archive/master.zip" "FLUXION-V$FLUXIONVersion.$FLUXIONRevision" "$(dirname "$FLUXIONPath")"
fi
echo
FLUXIONCLIToolsRequired=("aircrack-ng" "python2:python2.7|python2" "bc" "awk:awk|gawk|mawk" "curl" "dhcpd:isc-dhcp-server|dhcp" "7zr:p7zip" "hostapd" "lighttpd" "iwconfig:wireless-tools" "macchanger" "mdk3" "nmap" "openssl" "php-cgi" "pyrit" "xterm" "rfkill" "unzip" "route:net-tools" "fuser:psmisc" "killall:psmisc")
FLUXIONCLIToolsMissing=()
while ! installer_utils_check_dependencies FLUXIONCLIToolsRequired[@]; do installer_utils_run_dependencies InstallerUtilsCheckDependencies[@]
done
fi
#################################### < Resolution > ####################################
function fluxion_set_resolution() { # Windows + Resolution
2017-12-31 09:02:12 -07:00
# Calc options
RATIO=4
2017-12-14 13:04:55 -07:00
2017-12-31 09:02:12 -07:00
# Get demensions
SCREEN_SIZE=$(xdpyinfo | grep dimension | awk '{print $4}' | tr -d "(")
SCREEN_SIZE_X=$(printf '%.*f\n' 0 $(echo $SCREEN_SIZE | sed -e s'/x/ /'g | awk '{print $1}'))
SCREEN_SIZE_Y=$(printf '%.*f\n' 0 $(echo $SCREEN_SIZE | sed -e s'/x/ /'g | awk '{print $2}'))
2017-12-14 13:04:55 -07:00
2017-12-31 09:02:12 -07:00
PROPOTION=$(echo $(awk "BEGIN {print $SCREEN_SIZE_X/$SCREEN_SIZE_Y}")/1 | bc)
NEW_SCREEN_SIZE_X=$(echo $(awk "BEGIN {print $SCREEN_SIZE_X/$RATIO}")/1 | bc)
NEW_SCREEN_SIZE_Y=$(echo $(awk "BEGIN {print $SCREEN_SIZE_Y/$RATIO}")/1 | bc)
2017-12-14 13:04:55 -07:00
2017-12-31 09:02:12 -07:00
NEW_SCREEN_SIZE_BIG_X=$(echo $(awk "BEGIN {print 1.5*$SCREEN_SIZE_X/$RATIO}")/1 | bc)
NEW_SCREEN_SIZE_BIG_Y=$(echo $(awk "BEGIN {print 1.5*$SCREEN_SIZE_Y/$RATIO}")/1 | bc)
2017-12-14 13:04:55 -07:00
2017-12-31 09:02:12 -07:00
SCREEN_SIZE_MID_X=$(echo $(($SCREEN_SIZE_X + ($SCREEN_SIZE_X - 2 * $NEW_SCREEN_SIZE_X) / 2)))
SCREEN_SIZE_MID_Y=$(echo $(($SCREEN_SIZE_Y + ($SCREEN_SIZE_Y - 2 * $NEW_SCREEN_SIZE_Y) / 2)))
2017-12-14 13:04:55 -07:00
2017-12-31 09:02:12 -07:00
# Upper
TOPLEFT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y+0+0"
TOPRIGHT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y-0+0"
TOP="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y+$SCREEN_SIZE_MID_X+0"
2017-12-14 13:04:55 -07:00
2017-12-31 09:02:12 -07:00
# Lower
BOTTOMLEFT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y+0-0"
BOTTOMRIGHT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y-0-0"
BOTTOM="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y+$SCREEN_SIZE_MID_X-0"
2017-12-14 13:04:55 -07:00
2017-12-31 09:02:12 -07:00
# Y mid
LEFT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y+0-$SCREEN_SIZE_MID_Y"
RIGHT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y-0+$SCREEN_SIZE_MID_Y"
2017-12-14 13:04:55 -07:00
2017-12-31 09:02:12 -07:00
# Big
TOPLEFTBIG="-geometry $NEW_SCREEN_SIZE_BIG_Xx$NEW_SCREEN_SIZE_BIG_Y+0+0"
TOPRIGHTBIG="-geometry $NEW_SCREEN_SIZE_BIG_Xx$NEW_SCREEN_SIZE_BIG_Y-0+0"
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
}
2016-05-15 09:34:47 -06:00
##################################### < Language > #####################################
function fluxion_set_language() {
2017-12-31 09:02:12 -07:00
if [ "$FLUXIONAuto" ]; then
FLUXIONLanguage="en"
else
# Get all languages available.
local languageCodes
readarray -t languageCodes < <(ls -1 language | sed -E 's/\.sh//')
local languages
readarray -t languages < <(head -n 3 language/*.sh | grep -E "^# native: " | sed -E 's/# \w+: //')
io_query_format_fields "$FLUXIONVLine Select your language" "\t$CRed[$CSYel%d$CClr$CRed]$CClr %s / %s\n" languageCodes[@] languages[@]
FLUXIONLanguage=${IOQueryFormatFields[0]}
echo # Leave this spacer.
# Check if all language files are present for the selected language.
find -type d -name language | while read language_dir; do
if [ ! -e "$language_dir/${FLUXIONLanguage}.sh" ]; then
echo -e "$FLUXIONVLine ${CYel}Warning${CClr}, missing language file:"
echo -e "\t$language_dir/${FLUXIONLanguage}.sh"
return 1
fi
done
# If a file is missing, fall back to english.
if [ $? -eq 1 ]; then
echo -e "\n\n$FLUXIONVLine Falling back to English..."
sleep 5
FLUXIONLanguage="en"
return 1
fi
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
source "$FLUXIONPath/language/$FLUXIONLanguage.sh"
fi
}
#################################### < Interfaces > ####################################
function fluxion_unset_interface() {
2017-12-31 09:02:12 -07:00
# Unblock interfaces to make them available.
echo -e "$FLUXIONVLine $FLUXIONUnblockingWINotice"
rfkill unblock all &>$FLUXIONOutputDevice
# Find all monitor-mode interfaces & all AP interfaces.
echo -e "$FLUXIONVLine $FLUXIONFindingExtraWINotice"
local wiMonitors=($(iwconfig 2>&1 | grep "Mode:Monitor" | awk '{print $1}'))
# Remove all monitor-mode & all AP interfaces.
echo -e "$FLUXIONVLine $FLUXIONRemovingExtraWINotice"
if [ ${#wiMonitors[@]} -gt 0 ]; then
local monitor
for monitor in ${wiMonitors[@]}; do
# Remove any previously created fluxion AP interfaces.
#iw dev "FX${monitor:2}AP" del &> $FLUXIONOutputDevice
# Remove monitoring interface after AP interface.
if [[ "$monitor" == *"mon" ]]; then airmon-ng stop "$monitor" >$FLUXIONOutputDevice
else interface_set_mode "$monitor" "managed"
fi
if [ $FLUXIONDebug ]; then
echo -e "Stopped $monitor."
fi
done
fi
WIMonitor=""
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
}
2016-05-15 09:34:47 -06:00
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
# Choose Interface
function fluxion_set_interface() {
2017-12-31 09:02:12 -07:00
if [ "$WIMonitor" ]; then return 0; fi
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
2017-12-31 09:02:12 -07:00
fluxion_unset_interface
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
2017-12-31 09:02:12 -07:00
# Gather candidate interfaces.
echo -e "$FLUXIONVLine $FLUXIONFindingWINotice"
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
2017-12-31 09:02:12 -07:00
# List of all available wireless network interfaces.
# These will be stored in our array right below.
interface_list_wireless
2017-12-31 09:02:12 -07:00
local wiAlternate=("$FLUXIONGeneralRepeatOption")
local wiAlternateInfo=("")
local wiAlternateState=("")
local wiAlternateColor=("$CClr")
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
2017-12-31 09:02:12 -07:00
interface_prompt "$FLUXIONVLine $FLUXIONInterfaceQuery" InterfaceListWireless[@] \
wiAlternate[@] wiAlternateInfo[@] wiAlternateState[@] wiAlternateColor[@]
2017-12-31 09:02:12 -07:00
local wiSelected=$InterfacePromptIfSelected
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
2017-12-31 09:02:12 -07:00
if [ "$wiSelected" = "$FLUXIONGeneralRepeatOption" ]; then
fluxion_unset_interface
return 1
fi
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
2017-12-31 09:02:12 -07:00
if [ ! "$FLUXIONWIKillProcesses" -a "$InterfacePromptIfSelectedState" = "[-]" ]; then
echo -e "$FLUXIONVLine $FLUXIONSelectedBusyWIError"
echo -e "$FLUXIONVLine $FLUXIONSelectedBusyWITip"
sleep 7
fluxion_unset_interface
return 1
fi
2017-12-31 09:02:12 -07:00
if ! fluxion_run_interface "$wiSelected"; then return 1
fi
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
2017-12-31 09:02:12 -07:00
WIMonitor="$FluxionRunInterface"
}
function fluxion_run_interface() {
2017-12-31 09:02:12 -07:00
if [ ! "$1" ]; then return 1; fi
local ifSelected="$1"
if [ "$FLUXIONWIReloadDriver" ]; then
# Get selected interface's driver details/info-descriptor.
echo -e "$FLUXIONVLine $FLUXIONGatheringWIInfoNotice"
if ! interface_driver "$ifSelected"; then
echo -e "$FLUXIONVLine$CRed $FLUXIONUnknownWIDriverError"
sleep 3
return 1
fi
local ifDriver="$InterfaceDriver"
# I'm not really sure about this conditional here.
# FLUXION 2 had the conditional so I kept it there.
if [ ! "$(echo $ifDriver | egrep 'rt2800|rt73')" ]; then
rmmod -f $ifDriver &>$FLUXIONOutputDevice 2>&1
# Wait while interface becomes unavailable.
echo -e "$FLUXIONVLine $(io_dynamic_output $FLUXIONUnloadingWIDriverNotice)"
while interface_physical "$ifSelected"; do sleep 1
done
fi
fi
if [ "$FLUXIONWIKillProcesses" ]; then
# Get list of potentially troublesome programs.
echo -e "$FLUXIONVLine $FLUXIONFindingConflictingProcessesNotice"
# This shit has to go reeeeeal soon (airmon-ng)...
local conflictPrograms=($(airmon-ng check | awk 'NR>6{print $2}'))
# Kill potentially troublesome programs.
echo -e "$FLUXIONVLine $FLUXIONKillingConflictingProcessesNotice"
for program in "${conflictPrograms[@]}"; do killall "$program" &>$FLUXIONOutputDevice
done
fi
if [ "$FLUXIONWIReloadDriver" ]; then
# I'm not really sure about this conditional here.
# FLUXION 2 had the conditional so I kept it there.
if [ ! "$(echo $ifDriver | egrep 'rt2800|rt73')" ]; then modprobe "$ifDriver" &>$FLUXIONOutputDevice 2>&1
fi
# Wait while interface becomes available.
echo -e "$FLUXIONVLine $(io_dynamic_output $FLUXIONLoadingWIDriverNotice)"
while ! interface_physical "$ifSelected"; do sleep 1
done
fi
# Activate wireless interface monitor mode and save identifier.
echo -e "$FLUXIONVLine $FLUXIONStartingWIMonitorNotice"
if [ "$FLUXIONAirmonNG" ]; then
# TODO: Need to check weather switching to monitor mode below failed.
# Notice: Line below could cause issues with different airmon versions.
FluxionRunInterface=$(airmon-ng start $ifSelected | awk -F'\[phy[0-9]+\]|\)' '$0~/monitor .* enabled/{print $3}' 2>/dev/null)
else
if interface_set_mode "$ifSelected" "monitor"; then FluxionRunInterface=$ifSelected
else FluxionRunInterface=""
fi
fi
if [ "$FluxionRunInterface" ]; then
echo -e "$FLUXIONVLine $FLUXIONMonitorModeWIEnabledNotice"
sleep 3
else
echo -e "$FLUXIONVLine $FLUXIONMonitorModeWIFailedError"
sleep 3
return 2
fi
2016-05-15 09:34:47 -06:00
}
###################################### < Scanner > #####################################
function fluxion_set_scanner() {
2017-12-31 09:02:12 -07:00
# If scanner's already been set and globals are ready, we'll skip setup.
if [ "$APTargetSSID" -a "$APTargetChannel" -a "$APTargetEncryption" -a \
"$APTargetMAC" -a "$APTargetMakerID" -a "$APRogueMAC" ]; then
return 0
fi
if [ "$FLUXIONAuto" ]; then
fluxion_run_scanner $WIMonitor
else
local choices=("$FLUXIONScannerChannelOptionAll (2.4GHz)" "$FLUXIONScannerChannelOptionAll (5GHz)" "$FLUXIONScannerChannelOptionAll (2.4GHz & 5Ghz)" "$FLUXIONScannerChannelOptionSpecific" "$FLUXIONGeneralBackOption")
io_query_choice "$FLUXIONScannerChannelQuery" choices[@]
echo
case "$IOQueryChoice" in
"$FLUXIONScannerChannelOptionAll (2.4GHz)") fluxion_run_scanner $WIMonitor "" "bg" ;;
"$FLUXIONScannerChannelOptionAll (5GHz)") fluxion_run_scanner $WIMonitor "" "a" ;;
"$FLUXIONScannerChannelOptionAll (2.4GHz & 5Ghz)") fluxion_run_scanner $WIMonitor "" "abg" ;;
"$FLUXIONScannerChannelOptionSpecific") fluxion_set_scanner_channel ;;
"$FLUXIONGeneralBackOption")
fluxion_unset_interface
return 1
;;
esac
fi
if [ $? -ne 0 ]; then return 1; fi
2016-05-15 09:34:47 -06:00
}
function fluxion_set_scanner_channel() {
2017-12-31 09:02:12 -07:00
fluxion_header
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
echo -e "$FLUXIONVLine $FLUXIONScannerChannelQuery"
echo
echo -e " $FLUXIONScannerChannelSingleTip ${CBlu}6$CClr "
echo -e " $FLUXIONScannerChannelMiltipleTip ${CBlu}1-5$CClr "
echo -e " $FLUXIONScannerChannelMiltipleTip ${CBlu}1,2,5-7,11$CClr "
echo
echo -ne "$FLUXIONPrompt"
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
local channels
read channels
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
echo
2017-12-31 09:02:12 -07:00
fluxion_run_scanner $WIMonitor $channels
if [ $? -ne 0 ]; then return 1; fi
2016-05-15 09:34:47 -06:00
}
2017-12-04 02:05:23 -07:00
# Parameters: monitor [ channel(s) [ band(s) ] ]
function fluxion_run_scanner() {
2017-12-31 09:02:12 -07:00
if [ ${#@} -lt 1 ]; then return 1; fi
2017-12-04 02:05:23 -07:00
2017-12-31 09:02:12 -07:00
echo -e "$FLUXIONVLine $FLUXIONStartingScannerNotice"
echo -e "$FLUXIONVLine $FLUXIONStartingScannerTip"
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
2017-12-31 09:02:12 -07:00
# Remove any pre-existing scanner results.
sandbox_remove_workfile "$FLUXIONWorkspacePath/dump*"
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
2017-12-31 09:02:12 -07:00
if [ "$FLUXIONAuto" ]; then
sleep 30 && killall xterm &
fi
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
2017-12-31 09:02:12 -07:00
# Begin scanner and output all results to "dump-01.csv."
if ! xterm -title "$FLUXIONScannerHeader" $TOPLEFTBIG -bg "#000000" -fg "#FFFFFF" -e "airodump-ng -Mat WPA "${2:+"--channel $2"}" "${3:+"--band $3"}" -w \"$FLUXIONWorkspacePath/dump\" $1" 2>/dev/null; then
echo -e "$FLUXIONVLine$CRed $FLUXIONGeneralXTermFailureError"
sleep 5
return 1
fi
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
2017-12-31 09:02:12 -07:00
# Fix this below, creating subshells for something like this is somewhat ridiculous.
local scannerResultsExist=$([ -f "$FLUXIONWorkspacePath/dump-01.csv" ] && echo true)
local scannerResultsReadable=$([ -s "$FLUXIONWorkspacePath/dump-01.csv" ] && echo true)
2017-12-31 09:02:12 -07:00
if [ ! "$scannerResultsReadable" ]; then
if [ "$scannerResultsExist" ]; then
sandbox_remove_workfile "$FLUXIONWorkspacePath/dump*"
fi
2017-12-31 09:02:12 -07:00
local choices=("$FLUXIONGeneralBackOption" "$FLUXIONGeneralExitOption")
io_query_choice "$FLUXIONScannerFailedNotice" choices[@]
echo
case "$IOQueryChoice" in
"$FLUXIONGeneralBackOption") return 1 ;;
"$FLUXIONGeneralExitOption")
fluxion_exitmode
return 2
;;
esac
fi
# Syntheize scan operation results from output file "dump-01.csv."
echo -e "$FLUXIONVLine $FLUXIONPreparingScannerResultsNotice"
# Unfortunately, mawk (alias awk) does not support the {n} times matching operator.
# readarray TargetAPCandidates < <(gawk -F, 'NF==15 && $1~/([A-F0-9]{2}:){5}[A-F0-9]{2}/ {print $0}' $FLUXIONWorkspacePath/dump-01.csv)
readarray TargetAPCandidates < <(awk -F, 'NF==15 && length($1)==17 && $1~/([A-F0-9][A-F0-9]:)+[A-F0-9][A-F0-9]/ {print $0}' "$FLUXIONWorkspacePath/dump-01.csv")
# readarray TargetAPCandidatesClients < <(gawk -F, 'NF==7 && $1~/([A-F0-9]{2}:){5}[A-F0-9]{2}/ {print $0}' $FLUXIONWorkspacePath/dump-01.csv)
readarray TargetAPCandidatesClients < <(awk -F, 'NF==7 && length($1)==17 && $1~/([A-F0-9][A-F0-9]:)+[A-F0-9][A-F0-9]/ {print $0}' "$FLUXIONWorkspacePath/dump-01.csv")
# Cleanup the workspace to prevent potential bugs/conflicts.
sandbox_remove_workfile "$FLUXIONWorkspacePath/dump*"
if [ ${#TargetAPCandidates[@]} -eq 0 ]; then
sandbox_remove_workfile "$FLUXIONWorkspacePath/dump*"
echo -e "$FLUXIONVLine $FLUXIONScannerDetectedNothingNotice"
sleep 3
return 1
fi
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
}
###################################### < Target > ######################################
function fluxion_unset_target_ap() {
2017-12-31 09:02:12 -07:00
APTargetSSID=""
APTargetChannel=""
APTargetEncryption=""
APTargetMAC=""
APTargetMakerID=""
APTargetMaker=""
APRogueMAC=""
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
}
function fluxion_set_target_ap() {
2017-12-31 09:02:12 -07:00
if [ "$APTargetSSID" -a "$APTargetChannel" -a "$APTargetEncryption" -a \
"$APTargetMAC" -a "$APTargetMakerID" -a "$APRogueMAC" ]; then
return 0
fi
fluxion_unset_target_ap
local TargetAPCandidatesMAC=()
local TargetAPCandidatesClientsCount=()
local TargetAPCandidatesChannel=()
local TargetAPCandidatesSecurity=()
local TargetAPCandidatesSignal=()
local TargetAPCandidatesPower=()
local TargetAPCandidatesESSID=()
local TargetAPCandidatesColor=()
for candidateAPInfo in "${TargetAPCandidates[@]}"; do
candidateAPInfo=$(echo "$candidateAPInfo" | sed -r "s/,\s*/,/g")
local i=${#TargetAPCandidatesMAC[@]}
TargetAPCandidatesMAC[i]=$(echo "$candidateAPInfo" | cut -d , -f 1)
TargetAPCandidatesClientsCount[i]=$(echo "${TargetAPCandidatesClients[@]}" | grep -c "${TargetAPCandidatesMAC[i]}")
TargetAPCandidatesChannel[i]=$(echo "$candidateAPInfo" | cut -d , -f 4)
TargetAPCandidatesSecurity[i]=$(echo "$candidateAPInfo" | cut -d , -f 6)
TargetAPCandidatesPower[i]=$(echo "$candidateAPInfo" | cut -d , -f 9)
TargetAPCandidatesColor[i]=$([ ${TargetAPCandidatesClientsCount[i]} -gt 0 ] && echo $CGrn || echo $CClr)
# Parse any non-ascii characters by letting bash handle them.
# Just escape all single quotes in ESSID and let bash's $'...' handle it.
2018-01-12 16:46:11 -07:00
local sanitizedESSID=$(echo "${candidateAPInfo//\'/\\\'}" | cut -d , -f 14 | tr -d "'" | tr -d "\"" | tr -d "<" | tr -d ">" | tr -d "&")
2017-12-31 09:02:12 -07:00
TargetAPCandidatesESSID[i]=$(eval "echo \$'$sanitizedESSID'")
local power=${TargetAPCandidatesPower[i]}
if [ $power -eq -1 ]; then
# airodump-ng's man page says -1 means unsupported value.
TargetAPCandidatesQuality[i]="??"
elif [ $power -le $FLUXIONNoiseFloor ]; then
TargetAPCandidatesQuality[i]=0
elif [ $power -gt $FLUXIONNoiseCeiling ]; then
TargetAPCandidatesQuality[i]=100
else
# Bash doesn't support floating point division, so I gotta work around it...
# The function is Q = ((P - F) / (C - F)); Q - quality, P - power, F - floor, C - Ceiling.
TargetAPCandidatesQuality[i]=$(((${TargetAPCandidatesPower[i]} * 10 - $FLUXIONNoiseFloor * 10) / (($FLUXIONNoiseCeiling - $FLUXIONNoiseFloor) / 10)))
fi
done
local headerTitle=$(
format_center_literals "WIFI LIST"
echo -n "$FormatCenterLiterals\n\n"
)
format_apply_autosize "$CRed[$CSYel ** $CClr$CRed]$CClr %-*.*s %4s %3s %3s %2s %-8.8s %18s\n"
local headerFields=$(printf "$FormatApplyAutosize" "ESSID" "QLTY" "PWR" "STA" "CH" "SECURITY" "BSSID")
format_apply_autosize "$CRed[$CSYel%03d$CClr$CRed]%b %-*.*s %3s%% %3s %3d %2s %-8.8s %18s\n"
io_query_format_fields "$headerTitle$headerFields" "$FormatApplyAutosize" \
TargetAPCandidatesColor[@] \
TargetAPCandidatesESSID[@] \
TargetAPCandidatesQuality[@] \
TargetAPCandidatesPower[@] \
TargetAPCandidatesClientsCount[@] \
TargetAPCandidatesChannel[@] \
TargetAPCandidatesSecurity[@] \
TargetAPCandidatesMAC[@]
echo
APTargetSSID=${IOQueryFormatFields[1]}
APTargetChannel=${IOQueryFormatFields[5]}
APTargetEncryption=${IOQueryFormatFields[6]}
APTargetMAC=${IOQueryFormatFields[7]}
APTargetMakerID=${APTargetMAC:0:8}
APTargetMaker=$(macchanger -l | grep ${APTargetMakerID,,} | cut -d ' ' -f 5-)
# Sanitize network ESSID to normalize it and make it safe for manipulation.
# Notice: Why remove these? Because some smartass might decide to name their
# network something like "; rm -rf / ;". If the string isn't sanitized accidentally
# shit'll hit the fan and we'll have an extremely distressed person subit an issue.
# Removing: ' ', '/', '.', '~', '\'
APTargetSSIDClean=$(echo "$APTargetSSID" | sed -r 's/( |\/|\.|\~|\\)+/_/g')
# We'll change a single hex digit from the target AP's MAC address.
# This new MAC address will be used as the rogue AP's MAC address.
local APRogueMACChange=$(printf %02X $((0x${APTargetMAC:13:1} + 1)))
APRogueMAC="${APTargetMAC::13}${APRogueMACChange:1:1}${APTargetMAC:14:4}"
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
}
function fluxion_show_ap_info() {
2017-12-31 09:02:12 -07:00
format_apply_autosize "%*s$CBlu%7s$CClr: %-32s%*s\n"
2017-12-31 09:02:12 -07:00
local colorlessFormat="$FormatApplyAutosize"
local colorfullFormat=$(echo "$colorlessFormat" | sed -r 's/%-32s/%-32b/g')
2017-12-31 09:02:12 -07:00
printf "$colorlessFormat" "" "ESSID" "\"$APTargetSSID\" / $APTargetEncryption" ""
printf "$colorlessFormat" "" "Channel" "$APTargetChannel" ""
printf "$colorfullFormat" "" "BSSID" "$APTargetMAC ($CYel${APTargetMaker:-UNKNOWN}$CClr)" ""
2017-12-31 09:02:12 -07:00
echo
2016-05-15 09:34:47 -06:00
}
#################################### < AP Service > ####################################
function fluxion_unset_ap_service() {
2017-12-31 09:02:12 -07:00
APRogueService=""
2016-05-15 09:34:47 -06:00
}
function fluxion_set_ap_service() {
2017-12-31 09:02:12 -07:00
if [ "$APRogueService" ]; then return 0; fi
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
fluxion_unset_ap_service
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
if [ "$FLUXIONAuto" ]; then
APRogueService="hostapd"
else
fluxion_header
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
echo -e "$FLUXIONVLine $FLUXIONAPServiceQuery"
echo
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
fluxion_show_ap_info "$APTargetSSID" "$APTargetEncryption" "$APTargetChannel" "$APTargetMAC" "$APTargetMaker"
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
local choices=("$FLUXIONAPServiceHostapdOption" "$FLUXIONAPServiceAirbaseOption" "$FLUXIONGeneralBackOption")
io_query_choice "" choices[@]
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
echo
2017-12-31 09:02:12 -07:00
case "$IOQueryChoice" in
"$FLUXIONAPServiceHostapdOption") APRogueService="hostapd" ;;
"$FLUXIONAPServiceAirbaseOption") APRogueService="airbase-ng" ;;
"$FLUXIONGeneralBackOption")
fluxion_unset_ap_service
return 1
;;
*)
fluxion_conditional_bail
return 1
;;
esac
fi
2017-06-28 08:56:24 -06:00
2017-12-31 09:02:12 -07:00
# AP Service: Load the service's helper routines.
source "lib/ap/$APRogueService.sh"
2016-05-15 09:34:47 -06:00
}
###################################### < Hashes > ######################################
function fluxion_check_hash() {
2017-12-31 09:02:12 -07:00
if [ ! -f "$APTargetHashPath" -o ! -s "$APTargetHashPath" ]; then
echo -e "$FLUXIONVLine $FLUXIONHashFileDoesNotExistError"
sleep 3
return 1
fi
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
local verifier
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
if [ "$FLUXIONAuto" ]; then
verifier="pyrit"
else
fluxion_header
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
echo -e "$FLUXIONVLine $FLUXIONHashVerificationMethodQuery"
echo
2016-11-20 23:00:32 -07:00
2017-12-31 09:02:12 -07:00
fluxion_show_ap_info "$APTargetSSID" "$APTargetEncryption" "$APTargetChannel" "$APTargetMAC" "$APTargetMaker"
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
local choices=("$FLUXIONHashVerificationMethodPyritOption" "$FLUXIONHashVerificationMethodAircrackOption" "$FLUXIONGeneralBackOption")
io_query_choice "" choices[@]
2017-12-31 09:02:12 -07:00
echo
2017-08-16 00:01:51 -06:00
2017-12-31 09:02:12 -07:00
case "$IOQueryChoice" in
"$FLUXIONHashVerificationMethodPyritOption") verifier="pyrit" ;;
"$FLUXIONHashVerificationMethodAircrackOption") verifier="aircrack-ng" ;;
"$FLUXIONGeneralBackOption") return 1 ;;
esac
fi
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
hash_check_handshake "$verifier" "$APTargetHashPath" "$APTargetSSID" "$APTargetMAC" >$FLUXIONOutputDevice
local hashResult=$?
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
# A value other than 0 means there's an issue with the hash.
if [ $hashResult -ne 0 ]; then echo -e "$FLUXIONVLine $FLUXIONHashInvalidError"
else echo -e "$FLUXIONVLine $FLUXIONHashValidNotice"
fi
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
sleep 3
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
if [ $hashResult -ne 0 ]; then return 1; fi
2016-05-15 09:34:47 -06:00
}
function fluxion_set_hash_path() {
2017-12-31 09:02:12 -07:00
fluxion_header
echo
echo -e "$FLUXIONVLine $FLUXIONPathToHandshakeFileQuery"
echo
echo -ne "$FLUXIONAbsolutePathInfo: "
read APTargetHashPath
2016-05-15 09:34:47 -06:00
}
function fluxion_unset_hash() {
2017-12-31 09:02:12 -07:00
APTargetHashPath=""
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
}
2016-05-15 09:34:47 -06:00
function fluxion_set_hash() {
2017-12-31 09:02:12 -07:00
if [ "$APTargetHashPath" ]; then return 0; fi
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
fluxion_unset_hash
2017-06-28 08:56:24 -06:00
2017-12-31 09:02:12 -07:00
# Scan for an existing hash for potential use, if one exists,
# ask the user if we should use it, or to skip it.
if [ -f "$FLUXIONHashPath/$APTargetSSIDClean-$APTargetMAC.cap" -a \
-s "$FLUXIONHashPath/$APTargetSSIDClean-$APTargetMAC.cap" ]; then
2017-06-28 08:56:24 -06:00
2017-12-31 09:02:12 -07:00
if [ ! "$FLUXIONAuto" ]; then
fluxion_header
2017-08-16 00:01:51 -06:00
2017-12-31 09:02:12 -07:00
echo -e "$FLUXIONVLine $FLUXIONFoundHashNotice"
echo
2017-06-28 08:56:24 -06:00
2017-12-31 09:02:12 -07:00
fluxion_show_ap_info "$APTargetSSID" "$APTargetEncryption" "$APTargetChannel" "$APTargetMAC" "$APTargetMaker"
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
printf "Path: %s\n" "$FLUXIONHashPath/$APTargetSSIDClean-$APTargetMAC.cap"
echo -ne "$FLUXIONVLine ${CRed}$FLUXIONUseFoundHashQuery$CClr [${CWht}Y$CClr/n] "
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
read APTargetHashPathConsidered
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
echo
fi
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
if [ "$APTargetHashPathConsidered" = "" -o "$APTargetHashPathConsidered" = "y" -o "$APTargetHashPathConsidered" = "Y" ]; then
APTargetHashPath="$FLUXIONHashPath/$APTargetSSIDClean-$APTargetMAC.cap"
fluxion_check_hash
# If the user decides to go back, we must unset.
if [ $? -ne 0 ]; then
fluxion_unset_hash
return 1
fi
fi
fi
# If the hash was not found, or if it was skipped,
# ask for location or for gathering one.
while [ ! -f "$APTargetHashPath" -o ! -s "$APTargetHashPath" ]; do
fluxion_header
echo -e "$FLUXIONVLine $FLUXIONHashSourceQuery"
echo
fluxion_show_ap_info "$APTargetSSID" "$APTargetEncryption" "$APTargetChannel" "$APTargetMAC" "$APTargetMaker"
local choices=("$FLUXIONHashSourcePathOption" "$FLUXIONHashSourceRescanOption" "$FLUXIONGeneralBackOption")
io_query_choice "" choices[@]
echo
case "$IOQueryChoice" in
"$FLUXIONHashSourcePathOption")
fluxion_set_hash_path
fluxion_check_hash
;;
"$FLUXIONHashSourceRescanOption") fluxion_set_hash ;; # Rescan checks hash automatically.
"$FLUXIONGeneralBackOption")
fluxion_unset_hash
return 1
;;
esac
# This conditional is required for return values
# of operation performed in the case statement.
if [ $? -ne 0 ]; then
fluxion_unset_hash
return 1
fi
done
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
# Copy to workspace for hash-required operations.
cp "$APTargetHashPath" "$FLUXIONWorkspacePath/$APTargetSSIDClean-$APTargetMAC.cap"
2016-09-12 11:51:02 -06:00
}
2016-05-15 09:34:47 -06:00
###################################### < Attack > ######################################
function fluxion_unset_attack() {
2017-12-31 09:02:12 -07:00
if [ "$FLUXIONAttack" ]; then unprep_attack
fi
FLUXIONAttack=""
2016-05-15 09:34:47 -06:00
}
2017-11-29 21:54:34 -07:00
# Select the attack strategy to be used.
function fluxion_set_attack() {
2017-12-31 09:02:12 -07:00
if [ "$FLUXIONAttack" ]; then return 0; fi
2017-07-23 07:24:56 -06:00
2017-12-31 09:02:12 -07:00
fluxion_unset_attack
2017-12-31 09:02:12 -07:00
fluxion_header
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
echo -e "$FLUXIONVLine $FLUXIONAttackQuery"
echo
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
fluxion_show_ap_info "$APTargetSSID" "$APTargetEncryption" "$APTargetChannel" "$APTargetMAC" "$APTargetMaker"
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
#local attacksMeta=$(head -n 3 attacks/*/language/$FLUXIONLanguage.sh)
2017-12-31 09:02:12 -07:00
#local attacksIdentifier
#readarray -t attacksIdentifier < <("`echo "$attacksMeta" | grep -E "^# identifier: " | sed -E 's/# \w+: //'`")
2017-12-31 09:02:12 -07:00
#local attacksDescription
#readarray -t attacksDescription < <("`echo "$attacksMeta" | grep -E "^# description: " | sed -E 's/# \w+: //'`")
2017-12-31 09:02:12 -07:00
local attacks
readarray -t attacks < <(ls -1 attacks)
2017-12-31 09:02:12 -07:00
local descriptions
readarray -t descriptions < <(head -n 3 attacks/*/language/$FLUXIONLanguage.sh | grep -E "^# description: " | sed -E 's/# \w+: //')
2017-12-31 09:02:12 -07:00
local identifiers=()
2017-12-31 09:02:12 -07:00
local attack
for attack in "${attacks[@]}"; do
local identifier="$(head -n 3 "attacks/$attack/language/$FLUXIONLanguage.sh" | grep -E "^# identifier: " | sed -E 's/# \w+: //')"
if [ "$identifier" ]; then identifiers+=("$identifier")
else identifiers+=("$attack")
fi
done
2017-12-31 09:02:12 -07:00
attacks+=("$FLUXIONGeneralBackOption")
identifiers+=("$FLUXIONGeneralBackOption")
descriptions+=("")
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
io_query_format_fields "" "\t$CRed[$CSYel%d$CClr$CRed]$CClr%0.0s $CCyn%b$CClr %b\n" attacks[@] identifiers[@] descriptions[@]
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
echo
2017-12-31 09:02:12 -07:00
if [ "${IOQueryFormatFields[1]}" = "$FLUXIONGeneralBackOption" ]; then
fluxion_unset_target_ap
fluxion_unset_attack
return 1
fi
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
FLUXIONAttack=${IOQueryFormatFields[0]}
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
# Load attack and its corresponding language file.
source "attacks/$FLUXIONAttack/language/$FLUXIONLanguage.sh"
source "attacks/$FLUXIONAttack/attack.sh"
2017-01-02 09:39:57 -07:00
2017-12-31 09:02:12 -07:00
prep_attack
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
if [ $? -ne 0 ]; then
fluxion_unset_attack
return 1
fi
2016-05-15 09:34:47 -06:00
}
# Attack
function fluxion_run_attack() {
2017-12-31 09:02:12 -07:00
start_attack
2017-12-31 09:02:12 -07:00
local choices=("$FLUXIONSelectAnotherAttackOption" "$FLUXIONGeneralExitOption")
io_query_choice "$(io_dynamic_output $FLUXIONAttackInProgressNotice)" choices[@]
2017-12-31 09:02:12 -07:00
echo
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
# IOQueryChoice is a global, meaning, its value is volatile.
# We need to make sure to save the choice before it changes.
local choice="$IOQueryChoice"
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
stop_attack
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
if [ "$choice" = "$FLUXIONGeneralExitOption" ]; then fluxion_handle_exit; fi
2016-05-15 09:34:47 -06:00
2017-12-31 09:02:12 -07:00
fluxion_unset_attack
2016-05-15 09:34:47 -06:00
}
################################### < FLUXION Loop > ###################################
fluxion_set_resolution
fluxion_set_language
2016-05-15 09:34:47 -06:00
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
while true; do
2017-12-31 09:02:12 -07:00
fluxion_set_interface
if [ $? -ne 0 ]; then continue; fi
fluxion_set_scanner
if [ $? -ne 0 ]; then continue; fi
fluxion_set_target_ap
if [ $? -ne 0 ]; then continue; fi
fluxion_set_attack
if [ $? -ne 0 ]; then continue; fi
fluxion_run_attack
if [ $? -ne 0 ]; then continue; fi
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
done
2016-05-15 09:34:47 -06:00
Rewrote fluxion for better extensibility. Most spaghetti code has be removed or replaced with better alternatives. Refactored most functionality into directory-based, load-on-demand, addon attack scripts. Changed the naming scheme of variables throughout for consistency (try to stick to one, guys). Changed color names (variable identifiers) for better consistency. Changed language file names to follow the scheme "Language.lang" Changed function naming scheme to better reflect their behavior, more under [ FLUXION V3 ] Added more comments in code, attempting to decrease the obfuscation of functionality. Minimized the usage of globals throughout the script, trying to leave absolute essentials, for safety. Multiple improvements in general to the visuals, the algorithms, and to methods used. [ FLUXION V3 ] * Custom attacks may now be developed and installed independently. * Custom portals may now be installed independently. * Globally changed functions' naming scheme to use snake-case, systematically prefixed with: * > set_: function will set/configure something. * > unset_: function will undo what set_ did. * > run_: function will execute a blocking command. * > halt_: function will abort a running command (possibly via signals [SIGABRT]) * > start_: function will start executing something in the background. * > stop_: function will stop background execution of something, undoing start_. [ Custom Attacks ] * Custom attacks must be bundled in a directory, with the name representing the attack. * Custom attacks must include a load-script "attack.sh" within the attack directory bundle. * Custom attacks' attack.sh script must implement the following boot functions: * > unprep_attack: fluxion will load attack.sh and call unprep_attack to reset attack parameters. * > prep_attack: fluxion will load attack.sh and call prep_attack to set attack parameters. * > start_attack: fluxion will load attack.sh and call start_attack to start a stopped/unstarted attack. * > stop_attack: fluxion will load attack.sh and call stop_attack to stop a started attack. * Custom attacks may signal fluxion to stop an attack when done, by sending it a SIGABRT signal. [ Custom Portals ] * Portal-containing directories must now follow the naming scheme "Some Brand_Language.portal" * Portal directories, after properly being named, must be stored at "attacks/Captive Portal/sites" Function return values are significant in the script, where anything other than 0 means go back.
2017-08-08 13:14:32 -06:00
# FLUXSCRIPT END