def testBasicCommRequest(self):
        req = BotMessage("req1", ["Foo", "Bar"], True)
        comm = BotCommClient("", 424242, self.key, self.iv, "ECHO")
        comm.start()
        rcv = comm.request(req, "req_result1", 1.0)
        comm.kill()

        self.assert_(rcv.type == "req_result1")
        self.assert_(rcv.data == ["Foo", "Bar"])
Example #2
0
	def testBasicCommRequest(self):
		req = BotMessage("req1",["Foo","Bar"],True)
		comm = BotCommClient("",424242,self.key,self.iv,"ECHO")
		comm.start()
		rcv = comm.request(req,"req_result1",1.0)
		comm.kill()
		
		self.assert_(rcv.type == "req_result1")
		self.assert_(rcv.data == ["Foo","Bar"])
    def testCommRequestExtraMessage(self):
        req = BotMessage("req2", ["Foo", "Bar"], True)
        comm = BotCommClient("", 424242, self.key, self.iv, "ECHO")
        comm.start()

        for i in range(0, 50):
            msg = BotMessage("norm", ["Test_%d" % i])
            comm.send(msg)

        for i in xrange(5):
            rcv = comm.request(req, "req_result2", 1.0)
            self.assertEquals(rcv.type, "req_result2")
            self.assertEquals(rcv.data, ["Foo", "Bar"])

        for i in range(0, 50):
            rcv = comm.receive(True, 1)
            self.assert_(rcv.data == ["Test_%d" % i])

        for i in xrange(5):
            xtra = comm.receive(True, 1)
            self.assert_(xtra != None)
            self.assertEquals(xtra.data, i + 1)

        comm.kill()
Example #4
0
	def testCommRequestExtraMessage(self):
		req = BotMessage("req2",["Foo","Bar"],True)
		comm = BotCommClient("",424242,self.key,self.iv,"ECHO")
		comm.start()

		for i in range(0,50):
			msg = BotMessage("norm",["Test_%d" % i])
			comm.send(msg)
		
		for i in xrange(5):
			rcv = comm.request(req,"req_result2",1.0)
			self.assertEquals(rcv.type,"req_result2")
			self.assertEquals(rcv.data,["Foo","Bar"])

		for i in range(0,50):
			rcv = comm.receive(True,1)
			self.assert_(rcv.data == ["Test_%d" % i])

		for i in xrange(5):
			xtra = comm.receive(True,1)
			self.assert_(xtra != None)
			self.assertEquals(xtra.data,i+1)
		
		comm.kill()
Example #5
0
class WebBot(Process):
    def __init__(self, conf, init=False):
        Process.__init__(self)
        self.conf = conf
        self.comm = None
        self.init = init
        self.webserver = None
        self.logger = conf.buildLogger("WebBot")
        self.cmd_q = Queue.Queue()
        self.buffered_msgs = []

    def cmd(self, cmd, q):
        self.cmd_q.put((cmd, q))

    """
	#Only have to worry about handeling outside events
	#Buffered messages will all be handled after WebBot comms	
	def __getResponse(self, msg_type):
		result = None
	
		while(result == None):
			msg = self.comm.receive()
			if(msg.type == msg_type):
				result = msg
			else:
				self.buffered_msgs.append(msg)

		return result
	"""

    def run(self):
        server_info = self.conf.getGameStateServerInfo()
        self.comm = BotCommClient(server_info.host, server_info.port,
                                  server_info.key, server_info.iv,
                                  "ATTACK_WEB_BOT")

        self.comm.start()
        self.webserver = WebserverThread(self)

        self.webserver.start()

        while (True):
            cmd, thread_q = self.cmd_q.get()
            if (cmd == "LIST_EXPLOITS"):
                msg = self.comm.request(BotMessage("LIST_EXPLOITS", None), 5)
                assert (msg.type == "LIST_EXPLOITS_RESULT")
                thread_q.put(msg.data)

            elif (cmd == "GET_FLAG_STATS"):
                msg = self.comm.request(BotMessage("GET_FLAG_STATS", None), 5)

                if (msg != None):
                    assert (msg.type == "GET_FLAG_STATS_RESULT")
                    thread_q.put(msg.data)
                thread_q.put(None)

            elif (cmd.startswith("GET_LOG:")):
                (exploit, lines) = cmd[8:].split("|")
                msg = self.comm.request(BotMessage(cmd, (exploit, lines)), 5)
                thread_q.put(msg.data)

            elif (cmd.startswith("GET_EXPLOIT:")):
                exploit = cmd[12:]
                msg = self.comm.request(BotMessage(cmd, (exploit, )), 5)
                thread_q.put(msg.data)

            elif (cmd.startswith("TOGGLE_EXPLOIT:")):
                self.comm.send(BotMessage(cmd, None))

            msg = self.comm.getPendingMessages()
            if (msg != None):
                self.logger.error("Unexpected message: %r %r" %
                                  (msg.type, msg.data))

        self.webserver.join()
Example #6
0
class WebBot(Process):

	def __init__(self,conf,init=False):
		Process.__init__(self)
		self.conf = conf
		self.comm = None
		self.init = init
		self.webserver = None
		self.logger = conf.buildLogger("WebBot")
		self.cmd_q = Queue.Queue()
		self.buffered_msgs = []
	
	def cmd(self,cmd,q):
		self.cmd_q.put((cmd,q))

	"""
	#Only have to worry about handeling outside events
	#Buffered messages will all be handled after WebBot comms	
	def __getResponse(self, msg_type):
		result = None
	
		while(result == None):
			msg = self.comm.receive()
			if(msg.type == msg_type):
				result = msg
			else:
				self.buffered_msgs.append(msg)

		return result
	"""
		
	def run(self):
		server_info = self.conf.getGameStateServerInfo()
		self.comm = BotCommClient(
			server_info.host,
			server_info.port,
			server_info.key,
			server_info.iv,
			"ATTACK_WEB_BOT")
	
		self.comm.start()	
		self.webserver = WebserverThread(self)

		self.webserver.start()

		while(True):
			cmd,thread_q = self.cmd_q.get()
			if(cmd == "LIST_EXPLOITS"):
				msg = self.comm.request(BotMessage("LIST_EXPLOITS",None),5)
				assert(msg.type == "LIST_EXPLOITS_RESULT")
				thread_q.put(msg.data)

			elif(cmd == "GET_FLAG_STATS"):
				msg = self.comm.request(BotMessage("GET_FLAG_STATS",None),5)
	
				if(msg != None):
					assert(msg.type == "GET_FLAG_STATS_RESULT")
					thread_q.put(msg.data)
				thread_q.put(None)
				
			elif(cmd.startswith("GET_LOG:")):
				(exploit,lines) = cmd[8:].split("|")
				msg = self.comm.request(BotMessage(cmd,(exploit,lines)),5)
				thread_q.put(msg.data)
			
			elif(cmd.startswith("GET_EXPLOIT:")):
				exploit = cmd[12:]
				msg = self.comm.request(BotMessage(cmd,(exploit,)),5)
				thread_q.put(msg.data)

			elif(cmd.startswith("TOGGLE_EXPLOIT:")):
				self.comm.send(BotMessage(cmd,None))

			msg = self.comm.getPendingMessages()
			if(msg != None):
				self.logger.error("Unexpected message: %r %r" % (msg.type,msg.data))

		self.webserver.join()