Я пытаюсь расшифровать UDP-пакеты, отправленные между моим телефоном и умным штекером. Пакеты зашифрованы с помощью шифрования AES 256, но у меня есть ключ. Каждый интеллектуальный плагин генерирует случайный набор символов, чтобы действовать в качестве пароля для этого устройства. При расшифровке пакета дешифрование завершается с помощью специальных символов.
Я довольно плохо знаком с шифрованием / дешифрованием, однако я пытался отформатировать пакеты перед расшифровкой, но мне не повезло.
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
def decrypt(encrypted_hex):
enc_bytes = binascii.unhexlify(bytes(encrypted_hex,"utf-8")
key = 'fdsl;mewrjope456fds4fbvfnjwaugfo'.encode()
decryptor = Cipher(algorithm=algorithms.AES(key), mode=modes.ECB(),
backend=default_backend()).decryptor()
decrypted = decryptor.update(enc_bytes) + decryptor.finalize()
print(decrypted)
return decrypted
В качестве примера, вывод, который я получаю:
device%28-d9-8a-8d-a4-ef\x00\xe9\x8f\x00pj*?
Большая часть пакета, включая последние 4 символа пароля, отображается успешно, но не все символы. Я должен также упомянуть, что ключ - общедоступные знания для этих умных плагинов, и этот сценарий Python для расшифровки был размещен онлайн.
Необработанный пакет UDP, который я пытаюсь расшифровать: c0405f7ac949afc673380ca145ee83746543a6368ec9f6fab08d714a2bb528c2