support resuming

pull/4/merge
lanjelot 10 years ago
parent bc432a96c8
commit 3076b2e216

@ -613,13 +613,13 @@ class TXTFormatter(logging.Formatter):
logging.Formatter.__init__(self, datefmt='%H:%M:%S')
def format(self, record):
if record.msg:
if not record.msg or record.msg == 'headers':
self._fmt = self.resultfmt
else:
if record.levelno == 10: # DEBUG
self._fmt = '%(asctime)s %(name)-7s %(levelname)7s [%(threadName)s] %(message)s'
else:
self._fmt = '%(asctime)s %(name)-7s %(levelname)7s - %(message)s'
else:
self._fmt = self.resultfmt
return logging.Formatter.format(self, record)
@ -652,15 +652,13 @@ class Output:
def __init__(self, indicatorsfmt, argv, log_dir, auto_log):
self.log_dir = None
self.indicatorsfmt = indicatorsfmt
self.cmdline = ' '.join(argv)
if auto_log:
self.log_dir = create_time_dir(log_dir or '/tmp/patator', auto_log)
elif log_dir:
self.log_dir = create_dir(log_dir)
else:
self.log_dir = None
handler_out = logging.StreamHandler()
handler_out.setFormatter(TXTFormatter(self.indicatorsfmt))
@ -668,10 +666,31 @@ class Output:
logger.addHandler(handler_out)
if self.log_dir:
runtime_log = os.path.join(self.log_dir, 'RUNTIME.log')
results_csv = os.path.join(self.log_dir, 'RESULTS.csv')
results_xml = os.path.join(self.log_dir, 'RESULTS.xml')
with open(runtime_log, 'a') as f:
f.write('$ %s\n' % ' '.join(argv))
names = [name for name, _ in self.indicatorsfmt] + ['candidate', 'num', 'mesg']
handler_log = logging.FileHandler(os.path.join(self.log_dir, 'RUNTIME.log'))
handler_csv = logging.FileHandler(os.path.join(self.log_dir, 'RESULTS.csv'))
handler_xml = logging.FileHandler(os.path.join(self.log_dir, 'RESULTS.xml'))
if not os.path.exists(results_csv):
with open(results_csv, 'w') as f:
f.write('time,level,%s\n' % ','.join(names))
if not os.path.exists(results_xml):
with open(results_xml, 'w') as f:
f.write('<?xml version="1.0" ?>\n<results>\n')
else: # remove "</results>\n"
with open(results_xml, 'r+') as f:
f.seek(-11, 2)
f.truncate(f.tell())
handler_log = logging.FileHandler(runtime_log)
handler_csv = logging.FileHandler(results_csv)
handler_xml = logging.FileHandler(results_xml)
handler_csv.addFilter(MsgFilter())
handler_xml.addFilter(MsgFilter())
@ -686,23 +705,12 @@ class Output:
def headers(self):
if self.log_dir:
with open(os.path.join(self.log_dir, 'RUNTIME.log'), 'a') as f:
f.write('$ %s\n' % self.cmdline)
names = [name for name, _ in self.indicatorsfmt] + ['candidate', 'num', 'mesg']
logger.info(' '*77)
logger.info(None, extra=dict((n, n) for n in names))
logger.info('headers', extra=dict((n, n) for n in names))
logger.info('-'*77)
if self.log_dir:
with open(os.path.join(self.log_dir, 'RESULTS.xml'), 'w') as f:
f.write('<?xml version="1.0" ?>\n<results>\n')
with open(os.path.join(self.log_dir, 'RESULTS.csv'), 'w') as f:
f.write('time,level,%s\n' % ','.join(names))
def log_result(self, typ, resp, candidate, num):
results = [(name, value) for (name, _), value in zip(self.indicatorsfmt, resp.indicators())]
@ -716,7 +724,7 @@ class Output:
def save(self, resp, num):
if self.log_dir:
filename = '%d_%s' % (num, ':'.join(map(str, resp.indicators())))
with open('%s/%s.txt' % (self.log_dir, filename), 'w') as f:
with open('%s.txt' % os.path.join(self.log_dir, filename), 'w') as f:
f.write(resp.dump())
def __del__(self):
@ -2331,7 +2339,7 @@ class SMB_login(TCP_Cache):
available_options += TCP_Cache.available_options
class Response(Response_Base):
logformat = '%-8s %-4s %6s | %-34s | %5s | %s'
indicatorsfmt = [('code', -8), ('size', -4), ('time', 6)]
# ripped from medusa smbnt.c
error_map = {
@ -2898,7 +2906,7 @@ class Oracle_login:
available_actions = ()
class Response(Response_Base):
logformat = '%-9s %-4s %6s | %-34s | %5s | %s'
indicatorsfmt = [('code', -9), ('size', -4), ('time', 6)]
def execute(self, host, port='1521', user='', password='', sid=''):
dsn = cx_Oracle.makedsn(host, port, sid)

Loading…
Cancel
Save