Exemplo n.º 1
0
	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)		
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    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)