def start(): if kb.targets and kb.targets.qsize() > 1: infoMsg = "penework got a total of %d targets" % kb.targets.qsize() logger.log(CUSTOM_LOGGING.SYSINFO, infoMsg) runThreads(conf.threads, pocThreads) resultTable = PrettyTable( ["target-url", "poc-name", "poc-id", "component", "version", "status"]) resultTable.padding_width = 1 if not kb.results: return toNum, sucNum = 0, 0 for row in kb.results: resultTable.add_row(list(row)[:-2]) toNum += 1 if row[5] == 'success': sucNum += 1 if not conf.quiet: print resultTable # infoMsg = "{} of {} success !".format(sucNum, toNum) # logger.log(CUSTOM_LOGGING.SYSINFO, infoMsg) print "success : {} / {}".format(sucNum, toNum) _createTargetDirs() _setRecordFiles() if conf.report: _setReport()
def checkSearch(args): input_path = args.script_name list_scripts = args.list_scripts search_script = args.search_script if search_script and (input_path or list_scripts): msg = 'Cannot specify or list script when you use [--search]' sys.exit(logger.error(msg)) if search_script: if re.findall(r'[^\w\d\-_ ]', search_script): msg = 'The script name you provided is incorrect' sys.exit(logger.error(msg)) scriptsheet = PrettyTable(["Script"]) scriptsheet.align["Script"] = "l" scriptsheet.padding_width = 1 length = 0 module_name_list = glob.glob(os.path.join(paths.SCRIPT_PATH, '*.py')) for each in module_name_list: _str = os.path.split(each)[1][0:-3] if _str != '__init__' and re.findall(search_script, _str): scriptsheet.add_row([_str]) length = length + 1 if length > 0: msg = 'Total:{}\n'.format(length) print scriptsheet dataToStdout(msg) else: msg = 'No results found' logger.error(msg) logger.info('System exit') sys.exit()
def start(): if kb.targets and kb.targets.qsize() > 1: infoMsg = "penework got a total of %d targets" % kb.targets.qsize() logger.log(CUSTOM_LOGGING.SYSINFO, infoMsg) runThreads(conf.threads, pocThreads) resultTable = PrettyTable(["target-url", "poc-name", "poc-id", "component", "version", "status"]) resultTable.padding_width = 1 if not kb.results: return toNum, sucNum = 0, 0 for row in kb.results: resultTable.add_row(list(row)[:-2]) toNum += 1 if row[5] == 'success': sucNum += 1 if not conf.quiet: print resultTable # infoMsg = "{} of {} success !".format(sucNum, toNum) # logger.log(CUSTOM_LOGGING.SYSINFO, infoMsg) print "success : {} / {}".format(sucNum, toNum) _createTargetDirs() _setRecordFiles() if conf.report: _setReport()
def do_run(self, line): """Run all pocs, usage: run""" if self.check_target(): logger.info('Sheep got a total of %d targets.' % self.targets.qsize()) self.import_pocs() self.mix_targets() try: runThreads(self.threadsun, self.poc_threads) except Exception, e: logger.error('Run error! %s' % e) table = PrettyTable() table.field_names = ["pocNmae", "target", "result"] table.padding_width = 1 if not self.results: return toNum, sucNum = 0, 0 for row in self.results: table.add_row(list(row)) toNum += 1 if row[2] == 'success': sucNum += 1 print logger.info("Result:") print table print "success : %d / %d " % (sucNum, toNum) self.set_record_files() self.results.clear()
def do_search(self, args): graph = PrettyTable(["pocId", "PocName"]) graph.align["PocName"] = "m" graph.padding_width = 1 for k, v in kb.unloadedList.iteritems(): if str(args) in v: graph.add_row([k, filepathParser(v)[1]]) print graph pass
def do_search(self, args): graph = PrettyTable(["pocId", "PocName"]) graph.align["PocName"] = "m" graph.padding_width = 1 for k, v in kb.unloadedList.iteritems(): if str(args) in v: graph.add_row([k, filepathParser(v)[1]]) print graph pass
def avaliable(): graph = PrettyTable(["pocId", "avaliablePocName", "Folder"]) graph.align["PocsName"] = "m" graph.padding_width = 1 for k, v in kb.unloadedList.iteritems(): path, name = filepathParser(v) graph.add_row([k, name, os.path.relpath(path, paths.POCSUITE_ROOT_PATH)]) print graph print
def avaliable(): graph = PrettyTable(["pocId", "avaliablePocName", "Folder"]) graph.align["PocsName"] = "m" graph.padding_width = 1 for k, v in kb.unloadedList.iteritems(): path, name = filepathParser(v) graph.add_row([k, name, os.path.relpath(path, paths.POCSUITE_ROOT_PATH)]) print graph print
def printResult(): targetsheet = PrettyTable(["Target", "Vulnerable"]) targetsheet.align["Target"] = "l" targetsheet.padding_width = 1 for i in targetlist: targetsheet.add_row(i) print targetsheet msg = '{} found | {} scanned in {} second'.format( th.found_count, th.scan_count, str(time.time() - th.start_time)[0:4]) out = '{}\n'.format(msg) dataToStdout(out)
def do_unload(self, args): # TODO 补全 graph = PrettyTable(["pocId", "unloadPocsName"]) graph.align["unloadPocsName"] = "m" graph.padding_width = 1 if hasattr(kb, 'unloadedList') and getattr(kb, 'unloadedList'): for no in sorted(kb.unloadedList.keys()): from ntpath import split graph.add_row([no, split(kb.unloadedList[no])[1]]) else: graph.add_row(["0", "None"]) print graph print
def do_unload(self, args): # TODO 补全 graph = PrettyTable(["pocId", "unloadPocsName"]) graph.align["unloadPocsName"] = "m" graph.padding_width = 1 if hasattr(kb, 'unloadedList') and getattr(kb, 'unloadedList'): for no in sorted(kb.unloadedList.keys()): from ntpath import split graph.add_row([no, split(kb.unloadedList[no])[1]]) else: graph.add_row(["0", "None"]) print graph print
def do_loaded(self, args): registerPocFromDict() graph = PrettyTable(["pocId", "loadedPocsName"]) graph.align["LoadedPocsName"] = "m" graph.padding_width = 1 count = 0 if hasattr(kb, 'registeredPocs') and getattr(kb, 'registeredPocs'): for poc in sorted(kb.registeredPocs.keys()): count += 1 graph.add_row([count, poc]) else: graph.add_row(["0", "None"]) print graph print
def do_loaded(self, args): registerPocFromFile() graph = PrettyTable(["pocId", "loadedPocsName"]) graph.align["LoadedPocsName"] = "m" graph.padding_width = 1 count = 0 if hasattr(kb, 'registeredPocs') and getattr(kb, 'registeredPocs'): for poc in sorted(kb.registeredPocs.keys()): count += 1 graph.add_row([count, poc]) else: graph.add_row(["0", "None"]) print graph print
def start(): if kb.targets and kb.targets.qsize() > 1: infoMsg = "pocsuite got a total of %d targets" % kb.targets.qsize() logger.log(CUSTOM_LOGGING.SYSINFO, infoMsg) runThreads(conf.threads, pocThreads) resultTable = PrettyTable(["target-url", "poc-name", "poc-id", "component", "version", "status"]) resultTable.padding_width = 1 for row in kb.results: resultTable.add_row(list(row)[:-1]) print resultTable _createTargetDirs() _setRecordFiles() if conf.report: _setReport()
def checkShow(args): input_path = args.script_name list_scripts = args.list_scripts search_script = args.search_script if list_scripts and (input_path or search_script): msg = 'Cannot specify or search script when you use [--list]' sys.exit(logger.error(msg)) scriptsheet = PrettyTable(["Script"]) scriptsheet.align["Script"] = "l" scriptsheet.padding_width = 1 if list_scripts: module_name_list = glob.glob(os.path.join( paths.SCRIPT_PATH, '*.py')) #获取script文件夹下所有.py文件列表 msg = 'Total:{}\n'.format(str(len(module_name_list) - 1)) #除去__init__.py算出total总数 for each in module_name_list: _str = os.path.split(each)[1][0:-3] if _str != '__init__': scriptsheet.add_row([_str]) print scriptsheet dataToStdout(msg) logger.info('System exit') sys.exit()