Example #1
0
    def processPacket(self, packet_id, data):
        packet_name = packet_enum.get(packet_id, packet_id)

        print('[*] {} received from server'.format(packet_name))

        decrypted = self.crypto.decrypt_server_packet(packet_id, data[7:])

        if packet_id == 27579 and self.server.factory.args.udp:
            client_host = self.server.transport.getPeer().host

            decrypted = self.server.factory.udp_protocol.build_udp_info_packet(
                client_host, decrypted)

        if self.server.factory.args.verbose and decrypted:
            print(hexdump.hexdump(decrypted))

        if self.server.factory.args.replay:
            self.server.factory.replay.save_tcp_packet(packet_name,
                                                       data[:7] + decrypted)

        encrypted = self.crypto.encrypt_server_packet(packet_id, decrypted)
        payload = packet_id.to_bytes(2, 'big') + len(encrypted).to_bytes(
            3, 'big') + data[5:7] + encrypted

        self.server.transport.write(payload)
Example #2
0
    def processPacket(self, packet_id, data):

        if not self.client:
            reactor.callLater(0.25, self.processPacket, packet_id, data)
            return

        packet_name = packet_enum.get(
            packet_id, udp_packet_enum.get(packet_id, packet_id))

        print('[*] {} received from client'.format(packet_name))

        decrypted = self.crypto.decrypt_client_packet(packet_id, data[7:])

        if self.factory.args.verbose and decrypted:
            print(hexdump.hexdump(decrypted))

        if self.factory.args.replay:
            self.factory.replay.save_tcp_packet(packet_name,
                                                data[:7] + decrypted)

        encrypted = self.crypto.encrypt_client_packet(packet_id, decrypted)
        payload = packet_id.to_bytes(2, 'big') + len(encrypted).to_bytes(
            3, 'big') + data[5:7] + encrypted

        self.client.transport.write(payload)
Example #3
0
    def processPacket(self, packet_id, data):
        packet_name = packet_enum.get(packet_id, packet_id)

        print('[*] {} received from server'.format(packet_name))

        decrypted = self.crypto.decrypt_server_packet(packet_id, data[7:])

        if self.server.factory.args.verbose and decrypted:
            print(hexdump.hexdump(decrypted))

        if self.server.factory.args.replay:
            self.server.factory.replay.save_packet(packet_name,
                                                   data[:7] + decrypted)

        encrypted = self.crypto.encrypt_server_packet(packet_id, decrypted)
        payload = packet_id.to_bytes(2, 'big') + len(encrypted).to_bytes(
            3, 'big') + data[5:7] + encrypted

        self.server.transport.write(payload)