2.1.8: Check hashcat tools before trying PMKID attack.

Should resolve #124.

Also, capturing PMKID will skip WPA handshake capture.
This commit is contained in:
derv82
2018-08-16 11:10:03 -07:00
parent 7ed30f0973
commit 6adca64154
5 changed files with 27 additions and 10 deletions

View File

@@ -55,8 +55,8 @@ class AttackAll(object):
for attack in attacks:
try:
result = attack.run()
if result and attack.success:
break # We cracked it.
if result:
break # Attack was successful, stop other attacks.
except Exception as e:
Color.pl("\n{!} {R}Error: {O}%s" % str(e))
if Configuration.verbose > 0 or Configuration.print_stack_traces:

View File

@@ -55,7 +55,17 @@ class AttackPMKID(Attack):
def run(self):
# TODO: Check ./hs/ for previously-captured PMKID, skip to crack if found.
# TODO: Check that we have all hashcat programs
dependencies = [
Hashcat.dependency_name,
HcxDumpTool.dependency_name,
HcxPcapTool.dependency_name
]
missing_deps = [dep for dep in dependencies if not Process.exists(dep)]
if len(missing_deps) > 0:
Color.pl('{!} Skipping PMKID attack, missing required tools: {O}%s{W}' % ', '.join(missing_deps))
return False
pmkid_file = None
# Load exisitng has from filesystem
@@ -74,7 +84,8 @@ class AttackPMKID(Attack):
# Crack it.
self.success = self.crack_pmkid_file(pmkid_file)
return self.success
return True # Even if we don't crack it, capturing a PMKID is "successful"
def capture_pmkid(self):

View File

@@ -250,7 +250,10 @@ class AttackWPA(Attack):
os.mkdir(Configuration.wpa_handshake_dir)
# Generate filesystem-safe filename from bssid, essid and date
essid_safe = re.sub('[^a-zA-Z0-9]', '', handshake.essid)
if handshake.essid and type(handshake.essid) is str:
essid_safe = re.sub('[^a-zA-Z0-9]', '', handshake.essid)
else:
essid_safe = 'UnknownEssid'
bssid_safe = handshake.bssid.replace(':', '-')
date = time.strftime('%Y-%m-%dT%H-%M-%S')
cap_filename = 'handshake_%s_%s_%s.cap' % (essid_safe, bssid_safe, date)