Code cleanup
This commit is contained in:
@@ -16,9 +16,7 @@ class Airodump(object):
|
||||
def __init__(self, interface=None, channel=None, encryption=None,\
|
||||
wps=False, target_bssid=None, output_file_prefix='airodump',\
|
||||
ivs_only=False, skip_wps=False):
|
||||
'''
|
||||
Sets up airodump arguments, doesn't start process yet
|
||||
'''
|
||||
'''Sets up airodump arguments, doesn't start process yet.'''
|
||||
|
||||
Configuration.initialize()
|
||||
|
||||
@@ -51,9 +49,9 @@ class Airodump(object):
|
||||
|
||||
def __enter__(self):
|
||||
'''
|
||||
Setting things up for this context.
|
||||
Called at start of 'with Airodump(...) as x:'
|
||||
Actually starts the airodump process.
|
||||
Setting things up for this context.
|
||||
Called at start of 'with Airodump(...) as x:'
|
||||
Actually starts the airodump process.
|
||||
'''
|
||||
self.delete_airodump_temp_files()
|
||||
|
||||
@@ -67,22 +65,15 @@ class Airodump(object):
|
||||
'-w', self.csv_file_prefix, # Output file prefix
|
||||
'--write-interval', '1' # Write every second
|
||||
]
|
||||
if self.channel:
|
||||
command.extend(['-c', str(self.channel)])
|
||||
elif self.five_ghz:
|
||||
command.extend(['--band', 'a'])
|
||||
if self.channel: command.extend(['-c', str(self.channel)])
|
||||
elif self.five_ghz: command.extend(['--band', 'a'])
|
||||
|
||||
if self.encryption:
|
||||
command.extend(['--enc', self.encryption])
|
||||
if self.wps:
|
||||
command.extend(['--wps'])
|
||||
if self.target_bssid:
|
||||
command.extend(['--bssid', self.target_bssid])
|
||||
if self.encryption: command.extend(['--enc', self.encryption])
|
||||
if self.wps: command.extend(['--wps'])
|
||||
if self.target_bssid: command.extend(['--bssid', self.target_bssid])
|
||||
|
||||
if self.ivs_only:
|
||||
command.extend(['--output-format', 'ivs,csv'])
|
||||
else:
|
||||
command.extend(['--output-format', 'pcap,csv'])
|
||||
if self.ivs_only: command.extend(['--output-format', 'ivs,csv'])
|
||||
else: command.extend(['--output-format', 'pcap,csv'])
|
||||
|
||||
# Start the process
|
||||
self.pid = Process(command, devnull=True)
|
||||
@@ -91,8 +82,8 @@ class Airodump(object):
|
||||
|
||||
def __exit__(self, type, value, traceback):
|
||||
'''
|
||||
Tearing things down since the context is being exited.
|
||||
Called after 'with Airodump(...)' goes out of scope.
|
||||
Tearing things down since the context is being exited.
|
||||
Called after 'with Airodump(...)' goes out of scope.
|
||||
'''
|
||||
# Kill the process
|
||||
self.pid.interrupt()
|
||||
@@ -104,16 +95,20 @@ class Airodump(object):
|
||||
def find_files(self, endswith=None):
|
||||
''' Finds all files in the temp directory that start with the output_file_prefix '''
|
||||
result = []
|
||||
for fil in os.listdir(Configuration.temp()):
|
||||
if fil.startswith(self.output_file_prefix):
|
||||
if not endswith or fil.endswith(endswith):
|
||||
result.append(Configuration.temp() + fil)
|
||||
temp = Configuration.temp()
|
||||
for fil in os.listdir(temp):
|
||||
if not fil.startswith(self.output_file_prefix):
|
||||
continue
|
||||
|
||||
if not endswith or fil.endswith(endswith):
|
||||
result.append(os.path.join(temp, fil))
|
||||
|
||||
return result
|
||||
|
||||
def delete_airodump_temp_files(self):
|
||||
'''
|
||||
Deletes airodump* files in the temp directory.
|
||||
Also deletes replay_*.cap and *.xor files in pwd.
|
||||
Deletes airodump* files in the temp directory.
|
||||
Also deletes replay_*.cap and *.xor files in pwd.
|
||||
'''
|
||||
# Remove all temp files
|
||||
for fil in self.find_files():
|
||||
@@ -130,14 +125,12 @@ class Airodump(object):
|
||||
# Find the .CSV file
|
||||
csv_filename = None
|
||||
for fil in self.find_files(endswith='-01.csv'):
|
||||
# Found the file
|
||||
csv_filename = fil
|
||||
csv_filename = fil # Found the file
|
||||
break
|
||||
if csv_filename is None or not os.path.exists(csv_filename):
|
||||
# No file found
|
||||
return self.targets
|
||||
|
||||
# Parse the .CSV file
|
||||
if csv_filename is None or not os.path.exists(csv_filename):
|
||||
return self.targets # No file found
|
||||
|
||||
targets = Airodump.get_targets_from_csv(csv_filename)
|
||||
|
||||
# Check targets for WPS
|
||||
@@ -156,9 +149,12 @@ class Airodump(object):
|
||||
# Sort by power
|
||||
targets.sort(key=lambda x: x.power, reverse=True)
|
||||
|
||||
# Identify decloaked targets
|
||||
for old_target in self.targets:
|
||||
for new_target in targets:
|
||||
if old_target.bssid != new_target.bssid: continue
|
||||
if old_target.bssid != new_target.bssid:
|
||||
continue
|
||||
|
||||
if new_target.essid_known and not old_target.essid_known:
|
||||
# We decloaked a target!
|
||||
new_target.decloaked = True
|
||||
@@ -175,9 +171,7 @@ class Airodump(object):
|
||||
|
||||
@staticmethod
|
||||
def get_targets_from_csv(csv_filename):
|
||||
'''
|
||||
Returns list of Target objects parsed from CSV file
|
||||
'''
|
||||
'''Returns list of Target objects parsed from CSV file.'''
|
||||
targets = []
|
||||
import csv
|
||||
with open(csv_filename, 'rb') as csvopen:
|
||||
@@ -270,16 +264,16 @@ class Airodump(object):
|
||||
|
||||
def deauth_hidden_targets(self):
|
||||
'''
|
||||
Sends deauths (to broadcast and to each client) for all
|
||||
targets (APs) that have unknown ESSIDs (hidden router names).
|
||||
Sends deauths (to broadcast and to each client) for all
|
||||
targets (APs) that have unknown ESSIDs (hidden router names).
|
||||
'''
|
||||
self.decloaking = False
|
||||
|
||||
# Do not deauth if requested
|
||||
if Configuration.no_deauth: return
|
||||
if Configuration.no_deauth:
|
||||
return # Do not deauth if requested
|
||||
|
||||
# Do not deauth if channel is not fixed.
|
||||
if self.channel is None: return
|
||||
if self.channel is None:
|
||||
return # Do not deauth if channel is not fixed.
|
||||
|
||||
# Reusable deauth command
|
||||
deauth_cmd = [
|
||||
@@ -288,22 +282,27 @@ class Airodump(object):
|
||||
str(Configuration.num_deauths), # Number of deauth packets to send
|
||||
'--ignore-negative-one'
|
||||
]
|
||||
|
||||
for target in self.targets:
|
||||
if target.essid_known: continue
|
||||
if target.essid_known:
|
||||
continue
|
||||
|
||||
now = int(time.time())
|
||||
secs_since_decloak = now - self.decloaked_times.get(target.bssid, 0)
|
||||
# Decloak every AP once every 30 seconds
|
||||
if secs_since_decloak < 30: continue
|
||||
|
||||
if secs_since_decloak < 30:
|
||||
continue # Decloak every AP once every 30 seconds
|
||||
|
||||
self.decloaking = True
|
||||
self.decloaked_times[target.bssid] = now
|
||||
if Configuration.verbose > 1:
|
||||
from ..util.color import Color
|
||||
verbout = " [?] Deauthing %s" % target.bssid
|
||||
verbout += " (broadcast & %d clients)" % len(target.clients)
|
||||
Color.pe("\n{C}" + verbout + "{W}")
|
||||
Color.pe('{C} [?] Deauthing %s (broadcast & %d clients){W}' % (target.bssid, len(target.clients)))
|
||||
|
||||
# Deauth broadcast
|
||||
iface = Configuration.interface
|
||||
Process(deauth_cmd + ['-a', target.bssid, iface])
|
||||
|
||||
# Deauth clients
|
||||
for client in target.clients:
|
||||
Process(deauth_cmd + ['-a', target.bssid, '-c', client.bssid, iface])
|
||||
|
||||
Reference in New Issue
Block a user