使用单词列表来强制加密分区

Modified on: Sat, 09 Jun 2018 14:48:53 +0800

我在一个月前使用磁盘工具加密外置硬盘。现在看来我忘记了密码。我已根据一组规则形成它,因此我生成了一个约400,000候选人的单词列表(带有Python脚本)。我非常有信心,我丢失的密码就在这些之中,但我真的不想亲手试用它们。

所以问题是:是否有任何工具可以将我的单词列表自动尝试 ?或者如果没有,我该如何编写这样的脚本?

我之前在GPG上使用了类似的工具,它被称为讨厌 强>

(如果有人对我非常简单的排列脚本感兴趣,请它可以在Pastebin 。)

作者:muru,Procy0n

最佳答案

的返回值

echo "passphrase" | sudo cryptsetup luksOpen /dev/sda1 encrypted

是:

  • 0,如果有这个密码的密钥
  • 234,如果此密码没有密钥

编写一个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

保存,更改设备,制作可执行文件,像sudo ./find-password /path/to/wordlist一样运行并等待。

注意:这是。我不知道是不是因为我在SD卡上尝试了这个,但是花了五秒钟来测试四个错误的密码短语(对于400,000个可能的密码短语几乎是6天)。

更新:似乎CPU绑定。如果您拆分单词列表并执行类似

的操作

#!/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

它将使用两个核心,几乎是每次尝试的一半时间。

作者:,htorque

相关问答

添加新评论