如何软暴力破解自己的GPG/PGP密码?

27
我创建了一个漂亮的长密码,用了几次后就忘记了 ;) 问题是,我知道大致主题和可能的大部分字符。完美主义者的我不想撤销密钥或任何类似的操作(而且我认为我需要密码才能撤销它,对吧?)。我觉得我应该能够通过暴力破解我错误/错打的可能布局/字符来尝试解决这个问题。我编写了一个C程序来生成这样的组合。不幸的是,我没有代码(现在我会使用“它不相关”这个借口;)。我还发现了一些code在网上使用GPGME来作为概念验证。它有一个注释:“这可以很容易地快100倍”。问题是,对代码进行分析显示,瓶颈是GPGME调用本身。这是否是预期的,还是GPGME的限制可以使用完整库或专用实现来解决?

你会如何做到这一点?显然,对于任何体面的未知密码,这种方法都是不可行的,但我认为关键在于我知道我输入了什么,而不知道我如何输入它的确切格式 - 这应该是可行的,不是吗?


那是一个非常有趣的问题!祝你好运! - Rimian
2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
4
(我认为我需要口令才能撤销它,是吗?) 不,你需要撤销密钥。在创建密钥时应该生成并打印出撤销密钥。然后将其存储在安全的地方,不能让别人在你不想撤销密钥时使用它。 我曾试图暴力破解我几乎记得的密码,但没有成功。仍然有很多排列组合,并且需要许多规则来缩小问题规模。我从未在这方面尝试过,因为我很幸运从未忘记我的GPG密码。大多数情况下,当我忘记密码时,它是远程登录到大学的机器,我从未想过用猜测轰击ssh端口或网络邮件。 也许你正在调用的函数进行了许多与密钥无关的设置?因此,您可以通过从库中复制代码并将您的暴力循环放在其中后面来加速它。

0
使用exrex创建正则表达式彩虹,并将其存储在文件中。
exrex -o rainbows.txt "$regEXP"

一旦生成这些彩虹,使用它们

gpg2 --quiet --no-verbose --no-symkey-cache \
         --local-user $gpg_key --sign \
         --batch --pinentry-mode loopback \
         --passphrase $passphrase >& /dev/null

循环遍历 rainbow.txt 并输入密码短语到上述命令中。

或者更好的方法是使用这个:https://github.com/Narthorn/gpg-bruteforce


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,