Пример #1
0
	def __runPlugins(self,filename):
		# 获得模块名称
		plugins_name=os.path.splitext(filename)[0]
		# 导入模块
		plugin=__import__("plugin."+plugins_name,fromlist=[plugins_name])
		# 获得模块对象
		clazz=plugin.getPluginClass()
		o=clazz()
		# 把自身传给模块
		o.setScan_Main(self)
		## 开始处理
		# 任务列表	
		t=Db_module()
		# 每次运行先
		all_item=t.find_all("select * from w3a_Scan_Task where t_status_num=2")
		if all_item:
			print all_item
		else:
			print None
Пример #2
0
	def __mainProgram(self):
		# 加载数据库钥匙,并初始化对象
		db_key=Db_module()
		# 更新数据,将前30条未初始化的任务设置为待调度的状态
		db_key.execute_sql("update w3a_Scan_Task set t_status_num=1 where t_status_num=0 limit 30")
		# 查出10条已经待调度状态的扫描任务,并进行处理
		while True:
			## 1\将任务读取出来并存储
			temp_data=db_key.find_all("select * from w3a_Scan_Task where t_status_num=1 limit 10")
			if temp_data>0:
				## 2\将取出的任务状态更新为正在扫描状态
				db_key.execute_sql("update w3a_Scan_Task set t_status_num=2 where t_status_num=1 limit 10")
				## 3\分析T_type任务类型
				for t_data in temp_data:
					# 如果是Web扫描
					if t_data[2]==0:
						# 选择对应的扫描模板
						t_scan_temp=db_key.find_all("select tl_mode,tl_switch from w3a_Scan_Task_Template where id="+t_data[3]+" and tl_type=0")
						if t_scan_temp:
							# 判断该模板是否启用
							if t_scan_temp[1]==0:
								module_name=t_scan_temp[0].split(';')
								# 传入任务ID\任务目标\模块名称
								self.__loadPlugins(t_data[0],t_data[6],module_name)
							else:
								# 如果没有启用,则直接更新任务状态为异常停止
								db_key.execute_sql("update w3a_Scan_Task set t_status_num=4,t_status=100 where id="+temp_data[0])
								continue
						else:
							db_key.execute_sql("update w3a_Scan_Task set t_status_num=4,t_status=100 where id="+temp_data[0])
							continue

					elif t_data[2]==1:
						pass
			else:
				break