1
0
mirror of https://github.com/mjg59/python-broadlink.git synced 2024-11-22 07:00:12 +01:00

Clamp the packet count between 0x8000 and 0xFFFF (#486)

This commit is contained in:
Felipe Martins Diel 2020-11-29 13:51:09 -03:00
parent bc6719dc2a
commit bdc5432e2e

View File

@ -120,7 +120,7 @@ class device:
self.model = model self.model = model
self.manufacturer = manufacturer self.manufacturer = manufacturer
self.is_locked = is_locked self.is_locked = is_locked
self.count = random.randrange(0xFFFF) self.count = random.randint(0x8000, 0xFFFF)
self.iv = bytes.fromhex("562e17996d093d28ddb3ba695a2e6f58") self.iv = bytes.fromhex("562e17996d093d28ddb3ba695a2e6f58")
self.id = bytes(4) self.id = bytes(4)
self.type = "Unknown" self.type = "Unknown"
@ -202,7 +202,6 @@ class device:
if len(key) % 16 != 0: if len(key) % 16 != 0:
return False return False
self.count = int.from_bytes(response[0x28:0x30], "little")
self.id = payload[0x03::-1] self.id = payload[0x03::-1]
self.update_aes(key) self.update_aes(key)
return True return True
@ -264,7 +263,7 @@ class device:
def send_packet(self, command: int, payload: bytes) -> bytes: def send_packet(self, command: int, payload: bytes) -> bytes:
"""Send a packet to the device.""" """Send a packet to the device."""
self.count = (self.count + 1) & 0xFFFF self.count = ((self.count + 1) | 0x8000) & 0xFFFF
packet = bytearray(0x38) packet = bytearray(0x38)
packet[0x00] = 0x5A packet[0x00] = 0x5A
packet[0x01] = 0xA5 packet[0x01] = 0xA5