diff --git a/scripts/fake-registration-server.py b/scripts/fake-registration-server.py index 9023b98..74417a1 100755 --- a/scripts/fake-registration-server.py +++ b/scripts/fake-registration-server.py @@ -27,8 +27,8 @@ signal.signal(signal.SIGINT, exit_cleanly) from Cryptodome.Cipher import AES pad = lambda s: s + (16 - len(s) % 16) * chr(16 - len(s) % 16) unpad = lambda s: s[:-ord(s[len(s) - 1:])] -encrypt = lambda msg, key: AES.new(key.encode(), AES.MODE_ECB).encrypt(pad(msg).encode()) -decrypt = lambda msg, key: unpad(AES.new(key.encode(), AES.MODE_ECB).decrypt(msg.encode())) +encrypt = lambda msg, key: AES.new(key, AES.MODE_ECB).encrypt(pad(msg).encode()) +decrypt = lambda msg, key: unpad(AES.new(key, AES.MODE_ECB).decrypt(msg)).decode() from base64 import b64encode import hashlib @@ -84,7 +84,7 @@ class JSONHandler(tornado.web.RequestHandler): 't': ts, 'success': True } answer = jsonstr(answer) - payload = b64encode(encrypt(answer, options.secKey)).decode() + payload = b64encode(encrypt(answer, options.secKey.encode())).decode() signature = "result=%s||t=%d||%s" % (payload, ts, options.secKey) signature = hashlib.md5(signature.encode()).hexdigest()[8:24] answer = { @@ -115,7 +115,7 @@ class JSONHandler(tornado.web.RequestHandler): print(self.request.headers) if payload: try: - decrypted_payload = decrypt(binascii.unhexlify(payload), options.secKey).decode() + decrypted_payload = decrypt(binascii.unhexlify(payload), options.secKey.encode()) if decrypted_payload[0] != "{": raise ValueError("payload is not JSON") print("payload", decrypted_payload) diff --git a/scripts/mq_pub_15.py b/scripts/mq_pub_15.py index 3617169..ccb4311 100755 --- a/scripts/mq_pub_15.py +++ b/scripts/mq_pub_15.py @@ -21,15 +21,15 @@ iot: from Cryptodome.Cipher import AES pad = lambda s: s + (16 - len(s) % 16) * chr(16 - len(s) % 16) unpad = lambda s: s[:-ord(s[len(s) - 1:])] -encrypt = lambda msg, key: AES.new(key.encode(), AES.MODE_ECB).encrypt(pad(msg).encode()) -decrypt = lambda msg, key: unpad(AES.new(key.encode(), AES.MODE_ECB).decrypt(msg.encode())) +encrypt = lambda msg, key: AES.new(key, AES.MODE_ECB).encrypt(pad(msg).encode()) +decrypt = lambda msg, key: unpad(AES.new(key, AES.MODE_ECB).decrypt(msg)).decode() def iot_dec(message, local_key): - message_clear = decrypt(base64.b64decode(message[19:]), local_key) + message_clear = decrypt(base64.b64decode(message[19:]), local_key.encode()) print (message_clear) return message_clear def iot_enc(message, local_key, protocol): - messge_enc = encrypt(message, local_key) + messge_enc = encrypt(message, local_key.encode()) if protocol == "2.1": messge_enc = base64.b64encode(messge_enc) signature = b'data=' + messge_enc + b'||pv=' + protocol.encode() + b'||' + local_key.encode() diff --git a/scripts/tuya-discovery.py b/scripts/tuya-discovery.py index 9d0981c..b196020 100755 --- a/scripts/tuya-discovery.py +++ b/scripts/tuya-discovery.py @@ -12,8 +12,8 @@ import json from Cryptodome.Cipher import AES pad = lambda s: s + (16 - len(s) % 16) * chr(16 - len(s) % 16) unpad = lambda s: s[:-ord(s[len(s) - 1:])] -encrypt = lambda msg, key: AES.new(key.encode(), AES.MODE_ECB).encrypt(pad(msg).encode()) -decrypt = lambda msg, key: unpad(AES.new(key.encode(), AES.MODE_ECB).decrypt(msg.encode())) +encrypt = lambda msg, key: AES.new(key, AES.MODE_ECB).encrypt(pad(msg).encode()) +decrypt = lambda msg, key: unpad(AES.new(key, AES.MODE_ECB).decrypt(msg)).decode() from hashlib import md5 udpkey = md5(b"yGAdlopoPVldABfn").digest()