Ejemplo n.º 1
0
    def login(self):
        login = self.send_packet(["login.hashed"])
        passwordHash = Frostbite.generatePasswordHash(login[1].decode("hex"), self.serverPassword)
        passwordHashHexString = passwordHash.encode("hex").upper()
        response = self.send_packet(["login.hashed", passwordHashHexString])

        if response[0] != "OK":
            self.log.error('[{}:{}] Wrong RCON password. Exiting.'.format(self.serverIp, self.serverPort))
            sys.exit()
        elif response[0] == "OK":
            self.log.info('[{}:{}] is now logged on'.format(self.serverIp, self.serverPort))
        else:
            self.log.warn('Something went wrong, response: {}'.format(response))

        return response
Ejemplo n.º 2
0
    def receive_packet(self, socket=None, receiveBuffer=""):
        while True:
            #Fills the buffer until it's full or complete
            while not Frostbite.containsCompletePacket(receiveBuffer):
                receiveBuffer += self.socket.recv(4096)

            packetSize = Frostbite.DecodeInt32(receiveBuffer[4:8])
            packet = receiveBuffer[0:packetSize]
            receiveBuffer = receiveBuffer[packetSize:len(receiveBuffer)]

            # This code needs to be cleared out a bit, so it's more obvious 
            # when a response is received or expected
            if socket == None:  #waiting for events
                [isFromServer, isResponse, sequence, words] = Frostbite.DecodePacket(packet)
                return words
            elif socket:    #waiting for a response
                return [packet, receiveBuffer]
            else:
                self.log.error('Unable to handle received packet!')
                return None