import ops.cmd import util.mac import dsz from scanengine2 import scan import glob import os.path def _whats_your_job(): return 'banner\\|*\\|*' def _whats_your_name(): return 'banner' def _support_ipv6(): return True class banner(scan, ): def __init__(self, job, timeout=10): scan.__init__(self, job) setattr(self, 'datasize', 0) if (len(job) > 1): self.type = job[0].split('|')[1] self.port = job[0].split('|')[2] self.scan_type = _whats_your_name() if (timeout >= 60): self.timeout = 59 else: self.timeout = timeout def execute_scan(self, verbose): bannercmd = ops.cmd.getDszCommand('banner', ip=self.target, port=self.port, wait=self.timeout, dszquiet=(not verbose)) bannercmd.optdict[self.type] = True bannerobject = bannercmd.execute() if (bannerobject is None): return False success = bannercmd.success self.respondingip = bannerobject.taskinginfo.target.location if (len(bannerobject.transfer) > 0): self.firsttextline = bannerobject.transfer[0].text self.returnip = bannerobject.transfer[0].address self.datasize = bannerobject.transfer[0].data_size try: self.firsttextline = self.firsttextline.split('\n')[0] except: pass self.moduleerror = '' self.oserror = '' banner_files = glob.glob(os.path.join(ops.LOGDIR, 'Data', ('%05d-banner*' % bannerobject.cmdid))) for datafile in banner_files: f = open(datafile, 'r') output = f.readlines() f.close() for line in output: if line.strip().startswith('= 1)))): return False return True def min_time(self): return 1 def min_range(self): return 2