mirror of
https://github.com/ct-Open-Source/tuya-convert.git
synced 2026-02-20 01:41:30 +01:00
Fix encoding issues
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user