我正在做一个暴力解密练习,而且我对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)
知道,我尝试所有,但一个将无法解密,我在我的Python脚本不会崩溃的方式处理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很新,所以我正在旋转我的轮子。谢谢!
谢谢。我得到完全相同的结果,再加上另一个新错误:'在处理上述异常期间,发生了另一个异常: 回溯(最近调用最后一次): 文件“/ Users/randy/Development/ADT_Workspace/NetworkSecurityProject00/Project0/Project0.py“,第24行,在 print(”{key} failed“.format(key)) KeyError:'key'' –
Alex
@ usr55410哎呀,这是因为我错过了什么。做'print(“{key}失败”.format(key = key))'。 'key = key'是关键! ;) –
它正在运行!非常感谢。只要SO允许,我会尽快接受。 – Alex