我在Linux上忘记了我的gpg密钥的密码。有人可以帮我写一个简单的脚本来使用暴力破解密钥吗?我记得密码中可能包含的一些词语,所以希望我的计算机不会花费很长时间来强制它。
如果我无法恢复密码,一切都不会丢失,这只是意味着我将无法在接下来的10天内处理我的项目,直到我重新开始工作以获取另一个文件副本,但是这个我将记住密码的新密钥的时间。
但是,能够在这10天内完成我的项目是很好的。
答案 0 :(得分:7)
1)脚本不简单,至少你如何设想“简单”。
2)将花费很长时间 - 这就是使用密码而不是简单密码。花时间写这样一个脚本,把你可能会或可能不会在短语中的单词加上一个迭代的刺,可能需要十天。
3)你可能也会忘记下一个密码短语。
4)哎呀!
对不起老兄,是时候开始一个新项目了(至少要在接下来的十天里离开 - 我建议使用密码短语作为理想的分心。)
圣诞快乐!
-Oisin
答案 1 :(得分:7)
可能是这样的:
#!/bin/bash
#
# try all word in words.txt
for word in $(cat words.txt); do
# try to decrypt with word
echo "${word}" | gpg --passphrase-fd 0 --no-tty --decrypt somegpgfile.gpg --output somegpgfile;
# if decrypt is successfull; stop
if [ $? -eq 0 ]; then
echo "GPG passphrase is: ${word}";
exit 0;
fi
done;
exit 1;
答案 2 :(得分:2)
Tersmitten的回答可能已经过时了。
echo "${word}" | gpg --passphrase-fd 0 -q --batch --allow-multiple-messages --no-tty --output the_decrypted_file -d /some/input/file.gpg;
我使用上面的行与gpg 2.0.20和libcrypt 1.5.2来实现所需的结果。