Использование списка слов для перебора зашифрованных разделов

Я использовал Дисковую утилиту для шифрования внешнего жесткого диска около месяца назад. Теперь кажется, что я забыл пароль. Я сформировал его в соответствии с набором правил, поэтому я создал список слов (со скриптом Python) из ~400000 кандидатов. Я довольно уверен, что мой потерянный пароль находится где-то среди них, но я действительно не испытываю желание попробовать их все вручную.

Таким образом, возникает вопрос: есть ли инструмент, который бы взял мой список слов, чтобы попробовать их автоматически? Или, если нет, как мне написать такой сценарий?

Ранее я использовал похожий инструмент на GPG, он называется противным.

(Если кого-то интересует мой чрезвычайно простой сценарий перестановки, его можно найти на Pastebin.)

1 ответ

Решение

Возвращаемое значение

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-карте, но потребовалось пять секунд, чтобы проверить четыре неправильных парольных фразы (почти 6 дней для 400000 возможных парольных фраз).

Обновление: похоже на процессор. Если вы разделите свой список слов и сделаете что-то вроде

(sudo ./find-password words.0 &) ; (sudo ./find-password words.1 &)

Он будет использовать два ядра и почти половину времени за попытку.

Другие вопросы по тегам