From 633d11b7d16308362fc605b3c32c404ee1bcbd25 Mon Sep 17 00:00:00 2001 From: derv82 Date: Wed, 10 Jun 2015 00:59:04 -0700 Subject: [PATCH] Backwards compatibility attempt #1 Got a fresh copy of Kali 1.1.0, didn't upgrade aircrack or reaver. Supports: * Aircrack-ng 1.2 rc1 * Reaver 1.4 --- py/Airodump.py | 3 ++- py/AttackWPS.py | 22 ++++++++++++++++++++-- py/Target.py | 2 +- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/py/Airodump.py b/py/Airodump.py index c862040..4a8234e 100644 --- a/py/Airodump.py +++ b/py/Airodump.py @@ -151,7 +151,8 @@ class Airodump(object): targets = [] import csv with open(csv_filename, 'rb') as csvopen: - csv_reader = csv.reader(csvopen, delimiter=',') + lines = (line.replace('\0', '') for line in csvopen) + csv_reader = csv.reader(lines, delimiter=',') hit_clients = False for row in csv_reader: # Each "row" is a list of fields for a target/client diff --git a/py/AttackWPS.py b/py/AttackWPS.py index 2c3aad6..70479e5 100644 --- a/py/AttackWPS.py +++ b/py/AttackWPS.py @@ -176,7 +176,7 @@ class AttackWPS(Attack): '-b', self.target.bssid, '-c', self.target.channel, '-a', # Automatically restart session - '-v' # verbose + '-vv' # verbose ] reaver = Process(command, stdout=stdout_write, stderr=Process.devnull()) @@ -241,11 +241,19 @@ class AttackWPS(Attack): pin_current = len(pins) # Failures - failures += out.count('WPS transaction failed') + if 'WPS transaction failed' in out: + failures += out.count('WPS transaction failed') + elif 'Receive timeout occurred' in out: + # Reaver 1.4 + failures += out.count('Receive timeout occurred') # Status if 'Waiting for beacon from' in out: state = '{O}waiting for beacon{W}' if 'Starting Cracking Session' in out: state = '{C}cracking{W}' + + # Reaver 1.4 + if 'Trying pin' in out: state = '{C}cracking{W}' + if 'Detected AP rate limiting' in out: state = '{R}rate-limited{W}' if not Configuration.wps_skip_rate_limit: @@ -253,6 +261,11 @@ class AttackWPS(Attack): Color.pl('{!} {R}hit rate limit, stopping{W}\n') break + if 'WARNING: Failed to associate with' in out: + # TODO: Fail after X association failures (instead of just one) + Color.pl('\n{!} {R}failed to associate with target, {O}stopping{W}') + break + match = re.search('Estimated Remaining time: ([a-zA-Z0-9]+)', out) if match: eta = match.groups()[0] @@ -287,6 +300,11 @@ class AttackWPS(Attack): [+] WPS PIN: '12345678' [+] WPA PSK: 'abcdefgh' [+] AP SSID: 'Test Router' + + Reaver 1.4: + [+] Max time remaining at this rate: 18:19:36 (10996 pins left to try) + [!] WARNING: Receive timeout occurred + ''' reaver.interrupt() diff --git a/py/Target.py b/py/Target.py index 357130d..e8c628b 100644 --- a/py/Target.py +++ b/py/Target.py @@ -50,7 +50,7 @@ class Target(object): self.essid_known = True self.essid_len = int(fields[12].strip()) self.essid = fields[13].strip() - if self.essid == '\\x00' * self.essid_len: + if self.essid == '\\x00' * self.essid_len or self.essid.strip() == '': # Don't display "\x00..." for hidden ESSIDs self.essid = '(%s)' % self.bssid self.essid_known = False