Использование списка слов для перебора зашифрованных разделов
Я использовал Дисковую утилиту для шифрования внешнего жесткого диска около месяца назад. Теперь кажется, что я забыл пароль. Я сформировал его в соответствии с набором правил, поэтому я создал список слов (со скриптом 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 &)
Он будет использовать два ядра и почти половину времени за попытку.