예제 #1
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)