Лучший способ использовать грубую силу вашей собственной парольной фразы GPG/PGP?
Я создал красивую длинную фразу-пароль, использовал ее несколько раз, затем забыл ее;) Суть в том, что я знаю общую тему и, вероятно, почти все персонажи. Перфекционист во мне не хочет отзывать ключ или что-то в этом роде (и я думаю, что мне нужна парольная фраза, чтобы отозвать его в любом случае, верно?). Я чувствую, что у меня должно получиться хорошо справиться с этим, перебрав все возможные раскладки / символы, которые я ошибся / неправильно набрал. Я написал программу на C для создания таких комбинаций. К сожалению, у меня нет кода под рукой (пока я пойду с оправданием "это не актуально";). Я также натолкнулся на некоторый код в Интернете, использующий GPGME, чтобы сделать это как доказательство концепции. У него был комментарий "это легко может быть в 100 раз быстрее". Проблема в том, что профилирование кода показывает, что узким местом является сам вызов GPGME. Ожидается ли это, или это ограничение GPGME, которое может быть решено с использованием полной библиотеки или специальной реализации?
Как бы вы поступили так? Очевидно, что этот метод неосуществим для любой приличной неизвестной парольной фразы, но я думаю, что ключ в том, что я знаю, что я набрал, не зная точного форматирования того, как я его набрал - должно быть выполнимо, нет?
3 ответа
На случай, если кому-то интересно: у меня была такая же проблема, и я решил ее через:
http://www.roguedaemon.net/rephrase/
Так здорово!!
(и я думаю, что мне нужна пароль для его отзыва в любом случае, верно?)
Нет, вам нужен ключ отзыва. Который вы должны были сгенерировать и распечатать при создании ключа. Затем храните его в безопасном месте, а не там, где кто-то может использовать его для отзыва вашего ключа, когда вы этого не хотите.
Я пытался взломать пароли, которые я почти запомнил, но безуспешно. Есть еще много перестановок, и нужно много правил, что может последовать за тем, что сузить до разумного размера проблемы. Я никогда не слишком старался, так как, к счастью, я никогда не забывал свою парольную фразу GPG. В основном, когда я забыл пароль, это логин на удаленной машине в университете, и я никогда не хотел забивать порт ssh или веб-почту своими догадками.
Может быть, функция, которую вы вызываете, выполняет много настроек, не зависящих от ключа? Таким образом, вы можете ускорить его, скопировав код из библиотеки и включив в него свой цикл перебора.
Используйте 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 .