Exemplo n.º 1
0
    def listen_task(self):
        '''
		持续监听,访问server,监听是否存在未完成的task
		若server有返回task信息,则将task信息写入task pool
		'''
        while self.flag:
            try:
                serverurl = 'http://' + self.server + '/dist_hi.php'
                postdata = {
                    'token': self.token,
                    'os': self.os,
                    'mac': self.mac,
                    'type': 'start'
                }

                r = requests.post(serverurl, data=postdata)
                # print r.status_code
                if r.status_code == 200:
                    # print r.text
                    ret = json.loads(r.text)
                    code = ret['code']
                    info = ret['info']
                    data = ret['data']
                    globalTaskVar.logger.debug(
                        'worker: hello server, any task?')
                    globalTaskVar.logger.debug('server: %s' % info)
                    # 添加一个任务
                    if code and 'no task' not in info:
                        # data = base64.decodestring(data)
                        pprint(data)
                        data['global']['server'] = self.server
                        data['global']['token'] = self.token
                        target = data['targetname']

                        conffile = BASEDIR + '/cache/conf/' + genFileName_v2(
                            target) + '.json'
                        json.dump(data, open(conffile, 'w'))

                        globalTaskVar.logger.info('[*] new task %s' % target)
                        globalTaskVar.logger.info('%s' % pformat(data))
                        if type(data) == dict:
                            self.lock.acquire()
                            self.tasks.append(data)
                            self.lock.release()

                    # 终止一个任务

                else:
                    globalTaskVar.logger.error(
                        'return error, please check token and server')
                pass
            except requests.HTTPError, e:
                globalTaskVar.logger.error('requests.HTTPError %s' % e)

            time.sleep(10)
Exemplo n.º 2
0
	def listen_task(self):
		'''
		持续监听,访问server,监听是否存在未完成的task
		若server有返回task信息,则将task信息写入task pool
		'''
		while self.flag:
			try:
				serverurl = 'http://' + self.server +'/dist_hi.php'
				postdata = {'token':self.token,'os':self.os,'mac':self.mac,'type':'start'}

				r = requests.post(serverurl,data=postdata)
				# print r.status_code
				if r.status_code == 200:
					# print r.text
					ret = json.loads(r.text)
					code = ret['code']
					info = ret['info']
					data = ret['data']
					globalTaskVar.logger.debug('worker: hello server, any task?')
					globalTaskVar.logger.debug('server: %s' % info)
					# 添加一个任务
					if code and 'no task' not in info:
						# data = base64.decodestring(data)
						pprint(data)
						data['global']['server'] = self.server
						data['global']['token']	= self.token
						target = data['targetname']
						
						conffile = BASEDIR + '/cache/conf/' + genFileName_v2(target) + '.json'
						json.dump(data,open(conffile,'w'))

						globalTaskVar.logger.info('[*] new task %s' % target)
						globalTaskVar.logger.info('%s' % pformat(data))
						if type(data)==dict:
							self.lock.acquire()
							self.tasks.append(data)
							self.lock.release()

					# 终止一个任务

				else:
					globalTaskVar.logger.error('return error, please check token and server')
				pass
			except requests.HTTPError,e:
				globalTaskVar.logger.error('requests.HTTPError %s' %e)

			time.sleep(10)
Exemplo n.º 3
0
	def deal_task(self):
		'''
		持续执行task
		'''
		while self.flag:
			try:
				if len(self.tasks):
					self.lock.acquire()
					arg = self.tasks[0]
					del(self.tasks[0])
					self.lock.release()
					target = arg['targetname']		
					conffile = BASEDIR + '/cache/conf/' + genFileName_v2(target) + '.json'
					
					p = multiprocessing.Process(target=self.deal_onetask,args=(conffile,))
					p.start()

			except Exception,e:
				globalTaskVar.logger.error('Exception: %s' % e)

			time.sleep(20)
Exemplo n.º 4
0
    def deal_task(self):
        '''
		持续执行task
		'''
        while self.flag:
            try:
                if len(self.tasks):
                    self.lock.acquire()
                    arg = self.tasks[0]
                    del (self.tasks[0])
                    self.lock.release()
                    target = arg['targetname']
                    conffile = BASEDIR + '/cache/conf/' + genFileName_v2(
                        target) + '.json'

                    p = multiprocessing.Process(target=self.deal_onetask,
                                                args=(conffile, ))
                    p.start()

            except Exception, e:
                globalTaskVar.logger.error('Exception: %s' % e)

            time.sleep(20)
Exemplo n.º 5
0
				_target = config['global']['target']
			if _threads:
				config['global']['threads'] = _threads
			else:
				 _threads = config['global']['threads']
			if _vv:
				config['global']['loglevel'] = _vv
			else:
				_vv = config['global']['loglevel']
			if _gather_depth:
				config['global']['gatherdepth'] = _gather_depth
			else:
				_gather_depth = config['global']['gatherdepth']

			globalVar.config = dict(config)	
			conffile = 'cache/conf/' + genFileName_v2(_target) + '.json'
			json.dump(globalVar.config,open(conffile,'w'))
		

			if '_plugin' in dir() and _plugin:
				# 单插件模式
				# plugin type scan
				sn = PluginMultiRunner(server=_server,token=_token,target=_target,loglevel=_vv,threads=_threads,pluginfilepath=_plugin,pluginargs=_plugin_arg)
				sn.initInfo()
				sn.scan()
			else:
				# 自收集模式
				sn = Scanner(conffile=conffile)
				sn.safeRun()
				#  sn.initInfo()
				# sn.infoGather()
Exemplo n.º 6
0
                _target = config['global']['target']
            if _threads:
                config['global']['threads'] = _threads
            else:
                _threads = config['global']['threads']
            if _vv:
                config['global']['loglevel'] = _vv
            else:
                _vv = config['global']['loglevel']
            if _gather_depth:
                config['global']['gatherdepth'] = _gather_depth
            else:
                _gather_depth = config['global']['gatherdepth']

            globalVar.config = dict(config)
            conffile = 'cache/conf/' + genFileName_v2(_target) + '.json'
            json.dump(globalVar.config, open(conffile, 'w'))

            if '_plugin' in dir() and _plugin:
                # 单插件模式
                # plugin type scan
                sn = PluginMultiRunner(server=_server,
                                       token=_token,
                                       target=_target,
                                       loglevel=_vv,
                                       threads=_threads,
                                       pluginfilepath=_plugin,
                                       pluginargs=_plugin_arg)
                sn.initInfo()
                sn.scan()
            else: