def __init__(self,conffile): super(Scanner, self).__init__() config = json.load(open(conffile,'r')) # 1. init globalVar.config first globalVar.config = config pprint(globalVar.config['global']) # 2. self.server = config['global']['server'] self.token = config['global']['token'] # 注意targetname直接在config的key,而不是config['global']的key self.targetname = config['targetname'] self.target = config['global']['target'] self.threads = int(config['global']['threads']) if config['global']['threads']!= '' else multiprocessing.cpu_count() print 'self.threads=',self.threads,type(self.threads) # print "config['global']['gatherdepth']=",config['global']['gatherdepth'] self.gatherdepth = int(config['global']['gatherdepth']) if config['global']['gatherdepth']!= '' else 0 # print 'self.gatherdepth=',self.gatherdepth self.loglevel = config['global']['loglevel'] if config['global']['threads'] == '' else 'INFO' self.args = {'loglevel':self.loglevel,'threads':self.threads,'gatherdepth':self.gatherdepth} self.pluginargs = config['plugins'] # web接口 self.web_interface = None if self.server and self.token: self.web_interface = WebInterface(self.server,self.token) # 任务 self.services = [] # 扫描结果 self.result = {} # pluginLoaders self.pls = [] # 3. init logging self.loghandler = [] # log 模块,确保赋值一次 if globalVar.mainlogger is None: globalVar.mainlogger = logging.getLogger('main') if self.loglevel == 'DEBUG': globalVar.mainlogger.setLevel(logging.DEBUG) else: globalVar.mainlogger.setLevel(logging.INFO) # logging handler formatter = logging.Formatter('[%(process)d] - [%(levelname)s] - %(message)s') # 创建一个handler,用于写入日志文件 filepath = BASEDIR+'/output/log/' + genFilename(self.targetname) + '.log' if os.path.isfile(filepath): os.remove(filepath) fh = logging.FileHandler(filepath,'a') # 再创建一个handler,用于输出到控制台 ch = logging.StreamHandler() fi = logging.Filter('main') fh.addFilter(fi) ch.addFilter(fi) fh.setFormatter(formatter) ch.setFormatter(formatter) self.loghandler.append(ch) self.loghandler.append(fh) self._initLogging() globalVar.mainlogger.info('[*] Start a new scan') globalVar.mainlogger.info('\tserver\t=%s' % self.server) globalVar.mainlogger.info('\ttoken\t=%s' % self.token) globalVar.mainlogger.info('\ttarget\t=%s' % self.target) globalVar.mainlogger.info('\tthreads\t=%d' % self.threads) # 注意:不能通过以下的方式进行清空 # globalVar.undone_targets = [] tmpundone = copy.deepcopy(globalVar.undone_targets) for each_target in tmpundone: globalVar.undone_targets.remove(each_target)
def __init__(self,server=None,token=None,target=None,threads=None,loglevel='INFO',gatherdepth=1): super(Scanner, self).__init__() self.server = server self.token = token self.target = target if threads and type(threads) == int: self.threads = threads else: self.threads = multiprocessing.cpu_count() self.gatherdepth = gatherdepth self.loglevel = loglevel self.args = {'loglevel':self.loglevel,'threads':self.threads,'gatherdepth':self.gatherdepth} # web接口 self.web_interface = None if server and token: self.web_interface = WebInterface(server,token) # 任务 self.services = [] # 扫描结果 self.result = {} # pluginLoaders self.pls = [] self.loghandler = [] # log 模块,确保赋值一次 if globalVar.mainlogger is None: globalVar.mainlogger = logging.getLogger('main') if loglevel == 'DEBUG': globalVar.mainlogger.setLevel(logging.DEBUG) else: globalVar.mainlogger.setLevel(logging.INFO) # logging handler formatter = logging.Formatter('[%(process)d] - [%(levelname)s] - %(message)s') # 创建一个handler,用于写入日志文件 filepath = BASEDIR+'/output/log/' + genFilename(self.target) + '.log' if os.path.isfile(filepath): os.remove(filepath) fh = logging.FileHandler(filepath,'a') # 再创建一个handler,用于输出到控制台 ch = logging.StreamHandler() fi = logging.Filter('main') fh.addFilter(fi) ch.addFilter(fi) fh.setFormatter(formatter) ch.setFormatter(formatter) self.loghandler.append(ch) self.loghandler.append(fh) self._initLogging() globalVar.mainlogger.info('[*] Start a new scan') globalVar.mainlogger.info('\tserver\t=%s' % server) globalVar.mainlogger.info('\ttoken\t=%s' % token) globalVar.mainlogger.info('\ttarget\t=%s' % target) globalVar.mainlogger.info('\tthreads\t=%d' % self.threads) # 注意:不能通过以下的方式进行清空 # globalVar.undone_targets = [] tmpundone = copy.deepcopy(globalVar.undone_targets) for each_target in tmpundone: globalVar.undone_targets.remove(each_target)
def __init__(self, server=None, token=None, target=None, threads=None, loglevel='INFO', gatherdepth=1): super(Scanner, self).__init__() self.server = server self.token = token self.target = target if threads and type(threads) == int: self.threads = threads else: self.threads = multiprocessing.cpu_count() self.gatherdepth = gatherdepth self.loglevel = loglevel self.args = { 'loglevel': self.loglevel, 'threads': self.threads, 'gatherdepth': self.gatherdepth } # web接口 self.web_interface = None if server and token: self.web_interface = WebInterface(server, token) # 任务 self.services = [] # 扫描结果 self.result = {} # pluginLoaders self.pls = [] self.loghandler = [] # log 模块,确保赋值一次 if globalVar.mainlogger is None: globalVar.mainlogger = logging.getLogger('main') if loglevel == 'DEBUG': globalVar.mainlogger.setLevel(logging.DEBUG) else: globalVar.mainlogger.setLevel(logging.INFO) # logging handler formatter = logging.Formatter( '[%(process)d] - [%(levelname)s] - %(message)s') # 创建一个handler,用于写入日志文件 filepath = BASEDIR + '/output/log/' + genFilename( self.target) + '.log' if os.path.isfile(filepath): os.remove(filepath) fh = logging.FileHandler(filepath, 'a') # 再创建一个handler,用于输出到控制台 ch = logging.StreamHandler() fi = logging.Filter('main') fh.addFilter(fi) ch.addFilter(fi) fh.setFormatter(formatter) ch.setFormatter(formatter) self.loghandler.append(ch) self.loghandler.append(fh) self._initLogging() globalVar.mainlogger.info('[*] Start a new scan') globalVar.mainlogger.info('\tserver\t=%s' % server) globalVar.mainlogger.info('\ttoken\t=%s' % token) globalVar.mainlogger.info('\ttarget\t=%s' % target) globalVar.mainlogger.info('\tthreads\t=%d' % self.threads) # 注意:不能通过以下的方式进行清空 # globalVar.undone_targets = [] tmpundone = copy.deepcopy(globalVar.undone_targets) for each_target in tmpundone: globalVar.undone_targets.remove(each_target)
def __init__(self, conffile): super(Scanner, self).__init__() config = json.load(open(conffile, 'r')) # 1. init globalVar.config first globalVar.config = config pprint(globalVar.config['global']) # 2. self.server = config['global']['server'] self.token = config['global']['token'] # 注意targetname直接在config的key,而不是config['global']的key self.targetname = config['targetname'] self.target = config['global']['target'] self.threads = int( config['global']['threads'] ) if config['global']['threads'] != '' else multiprocessing.cpu_count( ) print 'self.threads=', self.threads, type(self.threads) # print "config['global']['gatherdepth']=",config['global']['gatherdepth'] self.gatherdepth = int( config['global'] ['gatherdepth']) if config['global']['gatherdepth'] != '' else 0 # print 'self.gatherdepth=',self.gatherdepth self.loglevel = config['global']['loglevel'] if config['global'][ 'threads'] == '' else 'INFO' self.args = { 'loglevel': self.loglevel, 'threads': self.threads, 'gatherdepth': self.gatherdepth } self.pluginargs = config['plugins'] # web接口 self.web_interface = None if self.server and self.token: self.web_interface = WebInterface(self.server, self.token) # 任务 self.services = [] # 扫描结果 self.result = {} # pluginLoaders self.pls = [] # 3. init logging self.loghandler = [] # log 模块,确保赋值一次 if globalVar.mainlogger is None: globalVar.mainlogger = logging.getLogger('main') if self.loglevel == 'DEBUG': globalVar.mainlogger.setLevel(logging.DEBUG) else: globalVar.mainlogger.setLevel(logging.INFO) # logging handler formatter = logging.Formatter( '[%(process)d] - [%(levelname)s] - %(message)s') # 创建一个handler,用于写入日志文件 filepath = BASEDIR + '/output/log/' + genFilename( self.targetname) + '.log' if os.path.isfile(filepath): os.remove(filepath) fh = logging.FileHandler(filepath, 'a') # 再创建一个handler,用于输出到控制台 ch = logging.StreamHandler() fi = logging.Filter('main') fh.addFilter(fi) ch.addFilter(fi) fh.setFormatter(formatter) ch.setFormatter(formatter) self.loghandler.append(ch) self.loghandler.append(fh) self._initLogging() globalVar.mainlogger.info('[*] Start a new scan') globalVar.mainlogger.info('\tserver\t=%s' % self.server) globalVar.mainlogger.info('\ttoken\t=%s' % self.token) globalVar.mainlogger.info('\ttarget\t=%s' % self.target) globalVar.mainlogger.info('\tthreads\t=%d' % self.threads) # 注意:不能通过以下的方式进行清空 # globalVar.undone_targets = [] tmpundone = copy.deepcopy(globalVar.undone_targets) for each_target in tmpundone: globalVar.undone_targets.remove(each_target)