Структура дешифрования Python AES TypeError - PullRequest
0 голосов
/ 17 декабря 2018

Я работаю над этой ссылкой , пытаясь расшифровать зашифрованную строку AES.Я незнаком с AES в Python.У меня проблема в том, что в строке 3 (как показано ниже) я получаю следующую ошибку ...

Вызывается метод decrypt(file) с указанным ниже путем к текстовому файлу, который содержит зашифрованныйdata.

Я понимаю, что struct ожидает значение int, но я не уверен, как это исправить.

Я работаю на виртуальной машине Debian, размещенной наMacbook, поэтому я считаю, что использование < для littlendian является правильным на основе структурных документов Python здесь .

Как я могу это исправить?

msg = '/root/htb/boxes/chaos/mail/msg.txt'

Traceback (most recent call last): File "en.py", line 60, in <module> decrypt(msg) File "en.py", line 39, in decrypt fsz = struct.unpack('<Q', fin.read(struct)) TypeError: an integer is required

def decrypt(file):
    with open(file) as fin:
        fsz = struct.unpack('<Q', fin.read(struct))
        iv = fin.read(16)
        aes = AES.new(getKey(password), AES.MODE_CBC, iv)

    with open(verfile, 'w') as fout:
        while True:
            data = fin.read(chunksize)
            n = len(data)
            if n == 0:
                break
            decd = aes.decrypt(data)
            print(decd).hexdigest()
            n = len(decd)
            if fsz > n:
                fout.write(decd)
            else:
                fout.write(decd[:fsz])

1 Ответ

0 голосов
/ 18 декабря 2018

Итак, я понял, что случилось.В обидной строке пропало еще несколько аргументов.Правильный код должен читать ...

fsz = struct.unpack('<Q', fin.read(struct.calcsize('<Q')))[0]

В следующей строке все еще есть ошибки, но вышеуказанная модификация решает первоначально указанную проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...