Crack results can be saved or loaded.
Although they're not saved or loaded at this time. :( Also, BANNER!
This commit is contained in:
85
py/CrackResult.py
Normal file
85
py/CrackResult.py
Normal file
@@ -0,0 +1,85 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
from Color import Color
|
||||
|
||||
import os
|
||||
import time
|
||||
from json import loads, dumps
|
||||
|
||||
class CrackResult(object):
|
||||
''' Abstract class containing results from a crack session '''
|
||||
|
||||
# File to save cracks to, in PWD
|
||||
cracked_file = "cracked.txt"
|
||||
|
||||
def __init__(self):
|
||||
self.date = int(time.time())
|
||||
|
||||
def dump(self):
|
||||
raise Exception("Unimplemented method: dump()")
|
||||
|
||||
def to_dict(self):
|
||||
raise Exception("Unimplemented method: to_dict()")
|
||||
|
||||
def save(self):
|
||||
''' Adds this crack result to the cracked file and saves it. '''
|
||||
name = CrackResult.cracked_file
|
||||
json = []
|
||||
if os.path.exists(name):
|
||||
f = open(name, 'r')
|
||||
text = f.read()
|
||||
f.close()
|
||||
try:
|
||||
json = loads(text)
|
||||
except Exception, e:
|
||||
Color.pl('{!} error while loading %s: %s' % (name, str(e)))
|
||||
json.append(self.to_dict())
|
||||
f = open(name, 'w')
|
||||
f.write(dumps(json, indent=2))
|
||||
f.close()
|
||||
Color.pl('{+} saved crack result to {C}%s{W} ({G}%d total{W})'
|
||||
% (name, len(json)))
|
||||
|
||||
@staticmethod
|
||||
def load(json):
|
||||
''' Returns an instance of the appropriate object given a json instance '''
|
||||
if json['type'] == 'WPA':
|
||||
from CrackResultWPA import CrackResultWPA
|
||||
result = CrackResultWPA(json['bssid'],
|
||||
json['essid'],
|
||||
json['handshake_file'],
|
||||
json['key'])
|
||||
elif json['type'] == 'WEP':
|
||||
from CrackResultWEP import CrackResultWEP
|
||||
result = CrackResultWEP(json['bssid'],
|
||||
json['essid'],
|
||||
json['hex_key'],
|
||||
json['ascii_key'])
|
||||
|
||||
elif json['type'] == 'WPS':
|
||||
from CrackResultWPS import CrackResultWPS
|
||||
result = CrackResultWPS(json['bssid'],
|
||||
json['essid'],
|
||||
json['pin'],
|
||||
json['psk'])
|
||||
result.date = json['date']
|
||||
return result
|
||||
|
||||
if __name__ == '__main__':
|
||||
# Deserialize WPA object
|
||||
Color.pl('\nCracked WPA:')
|
||||
json = loads('{"bssid": "AA:BB:CC:DD:EE:FF", "essid": "Test Router", "key": "Key", "date": 1433402428, "handshake_file": "hs/capfile.cap", "type": "WPA"}')
|
||||
obj = CrackResult.load(json)
|
||||
obj.dump()
|
||||
|
||||
# Deserialize WEP object
|
||||
Color.pl('\nCracked WEP:')
|
||||
json = loads('{"bssid": "AA:BB:CC:DD:EE:FF", "hex_key": "00:01:02:03:04", "ascii_key": "abcde", "essid": "Test Router", "date": 1433402915, "type": "WEP"}')
|
||||
obj = CrackResult.load(json)
|
||||
obj.dump()
|
||||
|
||||
# Deserialize WPS object
|
||||
Color.pl('\nCracked WPS:')
|
||||
json = loads('{"psk": "the psk", "bssid": "AA:BB:CC:DD:EE:FF", "pin": "01234567", "essid": "Test Router", "date": 1433403278, "type": "WPS"}')
|
||||
obj = CrackResult.load(json)
|
||||
obj.dump()
|
||||
Reference in New Issue
Block a user