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

Revert adler32 (#345)

* Revert adler32

* Fix checksum
This commit is contained in:
Felipe Martins Diel 2020-04-19 03:53:09 -03:00 committed by GitHub
parent 65a1b04666
commit 6cf9292b44
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -8,7 +8,6 @@ import struct
import threading import threading
import time import time
from datetime import datetime from datetime import datetime
from zlib import adler32
from cryptography.hazmat.backends import default_backend from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
@ -122,7 +121,10 @@ def discover(timeout=None, local_ip_address=None, discover_ip_address='255.255.2
packet[0x1d] = port >> 8 packet[0x1d] = port >> 8
packet[0x26] = 6 packet[0x26] = 6
checksum = adler32(packet, 0xbeaf) & 0xffff checksum = 0xbeaf
for b in packet:
checksum = (checksum + b) & 0xffff
packet[0x20] = checksum & 0xff packet[0x20] = checksum & 0xff
packet[0x21] = checksum >> 8 packet[0x21] = checksum >> 8
@ -268,7 +270,10 @@ class device:
if payload: if payload:
payload += bytearray((16 - len(payload)) % 16) payload += bytearray((16 - len(payload)) % 16)
checksum = adler32(payload, 0xbeaf) & 0xffff checksum = 0xbeaf
for b in payload:
checksum = (checksum + b) & 0xffff
packet[0x34] = checksum & 0xff packet[0x34] = checksum & 0xff
packet[0x35] = checksum >> 8 packet[0x35] = checksum >> 8
@ -276,7 +281,10 @@ class device:
for i in range(len(payload)): for i in range(len(payload)):
packet.append(payload[i]) packet.append(payload[i])
checksum = adler32(packet, 0xbeaf) & 0xffff checksum = 0xbeaf
for b in packet:
checksum = (checksum + b) & 0xffff
packet[0x20] = checksum & 0xff packet[0x20] = checksum & 0xff
packet[0x21] = checksum >> 8 packet[0x21] = checksum >> 8
@ -409,7 +417,10 @@ class bg1(device):
for i in range(len(js)): for i in range(len(js)):
packet.append(js[i]) packet.append(js[i])
checksum = adler32(packet[0x08:], 0xc0ad) & 0xffff checksum = 0xc0ad
for b in packet[0x08:]:
checksum = (checksum + b) & 0xffff
packet[0x06] = checksum & 0xff packet[0x06] = checksum & 0xff
packet[0x07] = checksum >> 8 packet[0x07] = checksum >> 8
@ -1034,7 +1045,9 @@ class lb1(device):
packet[0x0a] = len(command) packet[0x0a] = len(command)
packet[0x0e:] = map(ord, command) packet[0x0e:] = map(ord, command)
checksum = adler32(packet, 0xbeaf) & 0xffff checksum = 0xbeaf
for b in packet:
checksum = (checksum + b) & 0xffff
packet[0x00] = (0x0c + len(command)) & 0xff packet[0x00] = (0x0c + len(command)) & 0xff
packet[0x06] = checksum & 0xff # Checksum 1 position packet[0x06] = checksum & 0xff # Checksum 1 position
@ -1091,7 +1104,10 @@ def setup(ssid, password, security_mode):
payload[0x85] = pass_length # Character length of password payload[0x85] = pass_length # Character length of password
payload[0x86] = security_mode # Type of encryption (00 - none, 01 = WEP, 02 = WPA1, 03 = WPA2, 04 = WPA1/2) payload[0x86] = security_mode # Type of encryption (00 - none, 01 = WEP, 02 = WPA1, 03 = WPA2, 04 = WPA1/2)
checksum = adler32(payload, 0xbeaf) & 0xffff checksum = 0xbeaf
for b in payload:
checksum = (checksum + b) & 0xffff
payload[0x20] = checksum & 0xff # Checksum 1 position payload[0x20] = checksum & 0xff # Checksum 1 position
payload[0x21] = checksum >> 8 # Checksum 2 position payload[0x21] = checksum >> 8 # Checksum 2 position