Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
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()
Ejemplo n.º 3
0
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()
Ejemplo n.º 4
0
 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()
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
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)
Ejemplo n.º 10
0
    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
Ejemplo n.º 11
0
    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
Ejemplo n.º 12
0
    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
Ejemplo n.º 13
0
    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
Ejemplo n.º 14
0
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()
Ejemplo n.º 15
0
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()