Python расшифровывает байты с помощью специальных символов - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь расшифровать 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

...