42 lines
1.2 KiB
Python
Executable File
42 lines
1.2 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import time
|
|
|
|
class Attack(object):
|
|
'''Contains functionality common to all attacks.'''
|
|
|
|
target_wait = 60
|
|
|
|
def __init__(self, target):
|
|
self.target = target
|
|
|
|
def run(self):
|
|
raise Exception("Unimplemented method: run")
|
|
|
|
def wait_for_target(self, airodump):
|
|
'''Waits for target to appear in airodump.'''
|
|
start_time = time.time()
|
|
targets = airodump.get_targets(apply_filter=False)
|
|
while len(targets) == 0:
|
|
# Wait for target to appear in airodump.
|
|
if int(time.time() - start_time) > Attack.target_wait:
|
|
raise Exception('Target did not appear after %d seconds, stopping' % Attack.target_wait)
|
|
time.sleep(1)
|
|
targets = airodump.get_targets()
|
|
continue
|
|
|
|
# Ensure this target was seen by airodump
|
|
airodump_target = None
|
|
for t in targets:
|
|
if t.bssid == self.target.bssid:
|
|
airodump_target = t
|
|
break
|
|
|
|
if airodump_target is None:
|
|
raise Exception(
|
|
'Could not find target (%s) in airodump' % self.target.bssid)
|
|
|
|
return airodump_target
|
|
|