Python improvements, messaging improvements.
Small code changed as proposed in #128. This should close #128. Slowly moving towards Camel-case in script output.
This commit is contained in:
@@ -22,7 +22,7 @@ class AttackAll(object):
|
|||||||
essid = target.essid if target.essid_known else '{O}ESSID unknown{W}'
|
essid = target.essid if target.essid_known else '{O}ESSID unknown{W}'
|
||||||
|
|
||||||
Color.pl('\n{+} ({G}%d{W}/{G}%d{W})' % (index, len(targets)) +
|
Color.pl('\n{+} ({G}%d{W}/{G}%d{W})' % (index, len(targets)) +
|
||||||
' starting attacks against {C}%s{W} ({C}%s{W})' % (bssid, essid))
|
' Starting attacks against {C}%s{W} ({C}%s{W})' % (bssid, essid))
|
||||||
|
|
||||||
should_continue = cls.attack_single(target, targets_remaining)
|
should_continue = cls.attack_single(target, targets_remaining)
|
||||||
if not should_continue:
|
if not should_continue:
|
||||||
@@ -67,7 +67,7 @@ class AttackAll(object):
|
|||||||
attacks.append(AttackWPA(target))
|
attacks.append(AttackWPA(target))
|
||||||
|
|
||||||
if len(attacks) == 0:
|
if len(attacks) == 0:
|
||||||
Color.pl('{!} {R}Error: {O}unable to attack: encryption not WEP or WPA')
|
Color.pl('{!} {R}Error: {O}Unable to attack: encryption not WEP or WPA')
|
||||||
return
|
return
|
||||||
|
|
||||||
while len(attacks) > 0:
|
while len(attacks) > 0:
|
||||||
@@ -80,7 +80,7 @@ class AttackAll(object):
|
|||||||
Color.pexception(e)
|
Color.pexception(e)
|
||||||
continue
|
continue
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
Color.pl('\n{!} {O}interrupted{W}\n')
|
Color.pl('\n{!} {O}Interrupted{W}\n')
|
||||||
if not cls.user_wants_to_continue(targets_remaining, len(attacks)):
|
if not cls.user_wants_to_continue(targets_remaining, len(attacks)):
|
||||||
return False # Stop attacking other targets
|
return False # Stop attacking other targets
|
||||||
|
|
||||||
@@ -106,9 +106,9 @@ class AttackAll(object):
|
|||||||
if targets_remaining > 0:
|
if targets_remaining > 0:
|
||||||
prompt_list.append(Color.s('{C}%d{W} target(s)' % targets_remaining))
|
prompt_list.append(Color.s('{C}%d{W} target(s)' % targets_remaining))
|
||||||
prompt = ' and '.join(prompt_list)
|
prompt = ' and '.join(prompt_list)
|
||||||
Color.pl('{+} %s remain, do you want to continue?' % prompt)
|
Color.pl('{+} %s remain, Do you want to continue?' % prompt)
|
||||||
|
|
||||||
prompt = Color.s('{+} type {G}c{W} to {G}continue{W}' +
|
prompt = Color.s('{+} Type {G}c{W} to {G}continue{W}' +
|
||||||
' or {R}s{W} to {R}stop{W}: ')
|
' or {R}s{W} to {R}stop{W}: ')
|
||||||
|
|
||||||
from ..util.input import raw_input
|
from ..util.input import raw_input
|
||||||
|
|||||||
@@ -192,7 +192,7 @@ class AttackPMKID(Attack):
|
|||||||
dumptool = HcxDumpTool(self.target, self.pcapng_file)
|
dumptool = HcxDumpTool(self.target, self.pcapng_file)
|
||||||
|
|
||||||
# Let the dump tool run until we have the hash.
|
# Let the dump tool run until we have the hash.
|
||||||
while self.keep_capturing and dumptool.poll() == None:
|
while self.keep_capturing and dumptool.poll() is None:
|
||||||
time.sleep(0.5)
|
time.sleep(0.5)
|
||||||
|
|
||||||
dumptool.interrupt()
|
dumptool.interrupt()
|
||||||
@@ -202,7 +202,7 @@ class AttackPMKID(Attack):
|
|||||||
'''Saves a copy of the pmkid (handshake) to hs/ directory.'''
|
'''Saves a copy of the pmkid (handshake) to hs/ directory.'''
|
||||||
# Create handshake dir
|
# Create handshake dir
|
||||||
if not os.path.exists(Configuration.wpa_handshake_dir):
|
if not os.path.exists(Configuration.wpa_handshake_dir):
|
||||||
os.mkdir(Configuration.wpa_handshake_dir)
|
os.makedirs(Configuration.wpa_handshake_dir)
|
||||||
|
|
||||||
# Generate filesystem-safe filename from bssid, essid and date
|
# Generate filesystem-safe filename from bssid, essid and date
|
||||||
essid_safe = re.sub('[^a-zA-Z0-9]', '', self.target.essid)
|
essid_safe = re.sub('[^a-zA-Z0-9]', '', self.target.essid)
|
||||||
|
|||||||
@@ -205,7 +205,7 @@ class AttackWPA(Attack):
|
|||||||
'''
|
'''
|
||||||
# Create handshake dir
|
# Create handshake dir
|
||||||
if not os.path.exists(Configuration.wpa_handshake_dir):
|
if not os.path.exists(Configuration.wpa_handshake_dir):
|
||||||
os.mkdir(Configuration.wpa_handshake_dir)
|
os.makedirs(Configuration.wpa_handshake_dir)
|
||||||
|
|
||||||
# Generate filesystem-safe filename from bssid, essid and date
|
# Generate filesystem-safe filename from bssid, essid and date
|
||||||
if handshake.essid and type(handshake.essid) is str:
|
if handshake.essid and type(handshake.essid) is str:
|
||||||
|
|||||||
@@ -17,26 +17,22 @@ class AttackWPS(Attack):
|
|||||||
|
|
||||||
# Drop out if user specified to not use Reaver/Bully
|
# Drop out if user specified to not use Reaver/Bully
|
||||||
if Configuration.use_pmkid_only:
|
if Configuration.use_pmkid_only:
|
||||||
Color.pl('\r{!} {O}--pmkid{R} set, ignoring WPS attack on ' +
|
|
||||||
'{O}%s{W}' % self.target.essid)
|
|
||||||
self.success = False
|
self.success = False
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if Configuration.no_wps:
|
if Configuration.no_wps:
|
||||||
Color.pl('\r{!} {O}--no-wps{R} set, ignoring WPS attack on ' +
|
|
||||||
'{O}%s{W}' % self.target.essid)
|
|
||||||
self.success = False
|
self.success = False
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if not Configuration.wps_pixie and self.pixie_dust:
|
if not Configuration.wps_pixie and self.pixie_dust:
|
||||||
Color.pl('\r{!} {O}--no-pixie{R} set, ignoring WPS attack on ' +
|
Color.pl('\r{!} {O}--no-pixie{R} was given, ignoring WPS PIN Attack on ' +
|
||||||
'{O}%s{W}' % self.target.essid)
|
'{O}%s{W}' % self.target.essid)
|
||||||
self.success = False
|
self.success = False
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if not Configuration.wps_pin and not self.pixie_dust:
|
if not Configuration.wps_pin and not self.pixie_dust:
|
||||||
Color.pl('\r{!} {O}--no-pin{R} set, ignoring WPS attack on ' +
|
Color.pl('\r{!} {O}--no-pin{R} was given, ignoring WPS Pixie-Dust Attack ' +
|
||||||
'{O}%s{W}' % self.target.essid)
|
'on {O}%s{W}' % self.target.essid)
|
||||||
self.success = False
|
self.success = False
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|||||||
@@ -316,7 +316,8 @@ class Configuration(object):
|
|||||||
|
|
||||||
if args.wps_only:
|
if args.wps_only:
|
||||||
cls.wps_only = True
|
cls.wps_only = True
|
||||||
Color.pl('{+} {C}option:{W} will *only* attack non-WEP networks with ' +
|
cls.wps_filter = True # Also only show WPS networks
|
||||||
|
Color.pl('{+} {C}option:{W} will *only* attack WPS networks with ' +
|
||||||
'{G}WPS attacks{W} (avoids handshake and PMKID)')
|
'{G}WPS attacks{W} (avoids handshake and PMKID)')
|
||||||
|
|
||||||
if args.no_wps:
|
if args.no_wps:
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ class Hashcat(Dependency):
|
|||||||
|
|
||||||
key = None
|
key = None
|
||||||
# Crack hccapx
|
# Crack hccapx
|
||||||
for additional_arg in [ [], ['--show']]:
|
for additional_arg in ([], ['--show']):
|
||||||
command = [
|
command = [
|
||||||
'hashcat',
|
'hashcat',
|
||||||
'--quiet',
|
'--quiet',
|
||||||
@@ -65,7 +65,7 @@ class Hashcat(Dependency):
|
|||||||
|
|
||||||
# Run hashcat once normally, then with --show if it failed
|
# Run hashcat once normally, then with --show if it failed
|
||||||
# To catch cases where the password is already in the pot file.
|
# To catch cases where the password is already in the pot file.
|
||||||
for additional_arg in [ [], ['--show']]:
|
for additional_arg in ([], ['--show']):
|
||||||
command = [
|
command = [
|
||||||
'hashcat',
|
'hashcat',
|
||||||
'--quiet', # Only output the password if found.
|
'--quiet', # Only output the password if found.
|
||||||
|
|||||||
@@ -443,7 +443,7 @@ executing pixiewps -e d0141b15656e96b85fcead2e8e76330d2b1ac1576bb026e7a328c0e1ba
|
|||||||
|
|
||||||
(pin, psk, ssid) = Reaver.get_pin_psk_ssid(new_stdout)
|
(pin, psk, ssid) = Reaver.get_pin_psk_ssid(new_stdout)
|
||||||
assert pin == '11867722', 'pin was "%s", should have been "11867722"' % pin
|
assert pin == '11867722', 'pin was "%s", should have been "11867722"' % pin
|
||||||
assert psk == None, 'psk was "%s", should have been "None"' % psk
|
assert psk is None, 'psk was "%s", should have been "None"' % psk
|
||||||
assert ssid == 'belkin.00e', 'ssid was "%s", should have been "belkin.00e"' % repr(ssid)
|
assert ssid == 'belkin.00e', 'ssid was "%s", should have been "belkin.00e"' % repr(ssid)
|
||||||
result = CrackResultWPS('AA:BB:CC:DD:EE:FF', ssid, pin, psk)
|
result = CrackResultWPS('AA:BB:CC:DD:EE:FF', ssid, pin, psk)
|
||||||
result.dump()
|
result.dump()
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ class Scanner(object):
|
|||||||
self.print_targets()
|
self.print_targets()
|
||||||
|
|
||||||
target_count = len(self.targets)
|
target_count = len(self.targets)
|
||||||
client_count = sum([len(t.clients) for t in self.targets])
|
client_count = sum(len(t.clients) for t in self.targets)
|
||||||
|
|
||||||
outline = '\r{+} Scanning'
|
outline = '\r{+} Scanning'
|
||||||
if airodump.decloaking:
|
if airodump.decloaking:
|
||||||
|
|||||||
Reference in New Issue
Block a user