Skip to content

Commit

Permalink
2.1.8: Check hashcat tools before trying PMKID attack.
Browse files Browse the repository at this point in the history
Should resolve #124.

Also, capturing PMKID will skip WPA handshake capture.
  • Loading branch information
derv82 committed Aug 16, 2018
1 parent 7ed30f0 commit 6adca64
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 10 deletions.
4 changes: 2 additions & 2 deletions wifite/attack/all.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ def attack_single(cls, target, targets_remaining):
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:
Expand Down
15 changes: 13 additions & 2 deletions wifite/attack/pmkid.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,17 @@ def get_existing_pmkid_file(self, bssid):


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
Expand All @@ -74,7 +84,8 @@ def run(self):

# 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):
Expand Down
5 changes: 4 additions & 1 deletion wifite/attack/wpa.py
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,10 @@ def save_handshake(self, handshake):
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)
Expand Down
2 changes: 1 addition & 1 deletion wifite/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

class Configuration(object):
''' Stores configuration variables and functions for Wifite. '''
version = '2.1.7'
version = '2.1.8'

initialized = False # Flag indicating config has been initialized
temp_dir = None # Temporary directory
Expand Down
11 changes: 7 additions & 4 deletions wifite/tools/dependency.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ def run_dependency_check(cls):
from .pyrit import Pyrit
from .tshark import Tshark
from .macchanger import Macchanger
from .hashcat import Hashcat, HcxDumpTool, HcxPcapTool

apps = [
# Aircrack
Expand All @@ -40,6 +41,8 @@ def run_dependency_check(cls):
Reaver, Bully,
# Cracking/handshakes
Pyrit, Tshark,
# Hashcat
Hashcat, HcxDumpTool, HcxPcapTool,
# Misc
Macchanger
]
Expand All @@ -61,11 +64,11 @@ def fails_dependency_check(cls):
return False

if cls.dependency_required:
Color.pl('{!} {R}error: required app {O}%s{R} was not found' % cls.dependency_name)
Color.pl(' {W}install @ {C}%s{W}' % cls.dependency_url)
Color.pp('{!} {R}error: required app {O}%s{R} was not found' % cls.dependency_name)
Color.pl(' {W}install @ {C}%s{W}' % cls.dependency_url)
return True

else:
Color.pl('{!} {O}warning: recommended app {R}%s{O} was not found' % cls.dependency_name)
Color.pl(' {W}install @ {C}%s{W}' % cls.dependency_url)
Color.p('{!} {O}warning: recommended app {R}%s{O} was not found' % cls.dependency_name)
Color.pl(' {W}install @ {C}%s{W}' % cls.dependency_url)
return False

0 comments on commit 6adca64

Please sign in to comment.