예제 #1
0
 def send_data(self, buf):
     print "[+] Sending data (%s) to %s : %d" % (
         self.name, self.client_address[0], self.client_address[1])
     print "[+] len(buf) = %d (0x%08X)" % (len(buf), len(buf))
     print WAR_Utils.hexdump(buf)
     self.request.send(buf)
     return
예제 #2
0
 def recv_data(self, size = 1000):
     buf = self.request.recv(size)
     print "[+] Receiving data (%s) from %s : %d" % (self.name, self.client_address[0], self.client_address[1])
     buf_len = len(buf)
     print "[+] len(buf) = %d (0x%08X)" % (buf_len, buf_len)
     if buf_len == 0:
         return ""
     print WAR_Utils.hexdump(buf)
     return buf
예제 #3
0
 def recv_data(self, size=1000):
     buf = self.request.recv(size)
     print "[+] Receiving data (%s) from %s : %d" % (
         self.name, self.client_address[0], self.client_address[1])
     buf_len = len(buf)
     print "[+] len(buf) = %d (0x%08X)" % (buf_len, buf_len)
     if buf_len == 0:
         return ""
     print WAR_Utils.hexdump(buf)
     return buf
예제 #4
0
    def handle(self):
        self.OpcodesTableRecv = [
            (0x00, "UNKNOWN", self.handle_unknown),
            (0x01, "VerifyProtocolReq", self.handle_VerifyProtocolReq),
            (0x02, "UNKNOWN", self.handle_unknown),
            (0x03, "UNKNOWN", self.handle_unknown),
            (0x04, "UNKNOWN", self.handle_unknown),
            (0x05, "AuthSessionTokenReq", self.handle_AuthSessionTokenReq),
            (0x06, "UNKNOWN", self.handle_unknown),
            (0x07, "GetCharSummaryListReq", self.handle_GetCharSummaryListReq),
            (0x08, "UNKNOWN", self.handle_unknown),
            (0x09, "GetClusterList", self.handle_GetClusterList),
            (0x0A, "UNKNOWN", self.handle_unknown),
            (0x0B, "MetricEventNotify", self.handle_MetricEventNotify),
            (0x0C, "UNKNOWN", self.handle_unknown),
            (0x0D, "GetAccountProperties", self.handle_GetAccountProperties),
            (0x0E, "UNKNOWN", self.handle_unknown),
            (0x0F, "UNKNOWN", self.handle_unknown),
        ]
        self.encrypted = False
        self.name = "LoginTCPHandler"
        print "LoginTCPHandler : New connection from %s : %d" % (
            self.client_address[0], self.client_address[1])

        while True:
            buf = self.recv_data()
            if buf == "":
                break
            size_packet, buf = WAR_Utils.GetByte(buf)
            opcode_packet, buf = WAR_Utils.GetByte(buf)
            print "[+] Size packet : %08X" % (size_packet)
            print "[+] Opcode packet : %08X" % (opcode_packet)
            if size_packet != 0:
                buf = self.recv_data(size_packet)
            else:
                buf = ""
            self.handle_opcode(opcode_packet, buf)
예제 #5
0
 def send_data(self, buf):
     print "[+] Sending data (%s) to %s : %d" % (self.name, self.client_address[0], self.client_address[1])
     print "[+] len(buf) = %d (0x%08X)" % (len(buf), len(buf))
     print WAR_Utils.hexdump(buf)
     self.request.send(buf)
     return