Я выполняю упражнение дешифровки грубой силы, и я относительно новичок в Python. Мой код работает отлично, когда я делаю этот вызов openSSL-дешифрования в тестовый файл, когда знаю ключ. Однако упражнение, которое я выполняю, требует от меня повторения всех возможных значений ключа, отправляя вызов openSSL с каждым возможным значением.Обработка порожденных результатов процесса
for x in range(0,10):
for y in range(0,10):
key = "pass:" + str(x) + str(y)
plaintext = subprocess.check_output(['openssl', 'aes-128-cbc', '-d', '-in', 'ciphertext', '-base64', '-pass', key])
print (plaintext)
Зная, что все, но один из моих попыток не сможет расшифровать, я борюсь с обработкой возврата значения OpenSSL таким образом, что мой питон скрипт не будет врезаться. Например, если первая попытка не может дешифровать (что почти наверняка будет), openssl возвращает «плохой расшифровать» вместе с некоторым другим нежелательным файлом. Я просто хочу отбросить эту попытку и перейти к следующей итерации. Но вместо этого, моя программа выходит из строя, как это:
bad decrypt
140735254008672:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:539:
Traceback (most recent call last):
File "/Users/.../Project.py", line 20, in <module>
plaintext = subprocess.check_output(['openssl', 'aes-128-cbc', '-d', '-in', CIPHERTEXT_FILE, '-base64', '-pass', key])
File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/subprocess.py", line 589, in check_output
raise CalledProcessError(retcode, process.args, output=output)
subprocess.CalledProcessError: Command '['openssl', 'aes-128-cbc', '-d', '-in', 'proj0.enc', '-base64', '-pass', 'pass:xx']' returned non-zero exit status 1
Я даже не могу проверить строку bad decrypt
, так как программа уже разбился.
Может кто-нибудь мне помочь. Я довольно новичок в Python, поэтому я вращаю свои колеса. Благодаря!
Спасибо. Я получаю тот же результат, плюс еще одна новая ошибка: «Во время обработки вышеупомянутого исключения произошло другое исключение: Traceback (последний последний звонок): Файл«/Пользователи/randy/Development/ADT_Workspace/NetworkSecurityProject00/Project0/Project0.py ", строка 24, в print (" {key} failed ".format (key)) KeyError: 'key'' –
Alex
@ usr55410, потому что я что-то пропустил. do 'print (" {key} failed ".format (key = key))'. Клавиша «ключ = ключ» является ключом! ;) –
Он работает! Огромное спасибо. Я соглашусь, как только SO позволит мне это сделать. – Alex