Pro*_*y0n 6 encryption password-recovery
大约一个月前,我使用磁盘工具加密了一个外部硬盘。现在好像忘记密码了。我根据一组规则形成了它,因此我生成了一个包含约 400,000 个候选词的单词列表(使用 Python 脚本)。我非常有信心我丢失的密码就在其中,但我真的不想手动尝试所有密码。
所以问题是:有没有什么工具可以让我的单词列表自动尝试?或者如果没有,我应该如何编写这样的脚本?
我之前在 GPG 上使用过一个类似的工具,它叫做nasty。
(如果有人对我极其简单的排列脚本感兴趣,可以在Pastebin上找到它。)
的返回值
echo "passphrase" | sudo cryptsetup luksOpen /dev/sda1 encrypted
Run Code Online (Sandbox Code Playgroud)
是:
编写一个 bash 脚本应该不会太难,它会遍历您的单词列表,尝试每个密码短语并检查返回值。
例子:
#!/bin/bash
DEVICE="/dev/sda1"
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root." 1>&2
exit 1
fi
while read line; do
echo "$line" | cryptsetup luksOpen "$DEVICE" encrypted 2>/dev/null
# success
if [[ $? -eq 0 ]]; then
cryptsetup luksClose encrypted
echo "Passphrase: $line"
exit 0
fi
done < "$1"
echo "Passphrase not contained in word list."
exit 1
Run Code Online (Sandbox Code Playgroud)
保存,更改设备,使可执行文件,运行sudo ./find-password /path/to/wordlist并等待。
注意:这很慢。我不知道是不是因为我在 SD 卡上尝试过这个,但是测试四个错误的密码需要 5 秒钟(400,000 个可能的密码需要近 6 天)。
更新:似乎受 CPU 限制。如果您拆分单词列表并执行类似的操作
(sudo ./find-password words.0 &) ; (sudo ./find-password words.1 &)
Run Code Online (Sandbox Code Playgroud)
每次尝试将使用两个内核和几乎一半的时间。