Я использовал Дисковую утилиту для шифрования внешнего жесткого диска приблизительно месяц назад. Теперь кажется, что я забыл пароль. Я сформировал его согласно ряду правил, таким образом, я генерировал список слов (со сценарием Python) ~400 000 кандидатов. Я довольно уверен, что мой потерянный пароль где-нибудь среди них, но я действительно не испытываю желание пробовать их всех вручную.
Таким образом, вопрос идет: есть ли какой-либо инструмент, который честное слово перечислил бы попробовать их автоматически? Или в противном случае как я должен пойти о записи сценария как этот?
Я использовал подобный инструмент на GPG ранее, он назвал противным.
(Если кто-то интересуется моим чрезвычайно простым сценарием перестановки, это может быть найдено на Pastebin.)
Возвращаемое значение
echo "passphrase" | sudo cryptsetup luksOpen /dev/sda1 encrypted
:
Не должно быть слишком трудно записать сценарий удара, что циклы по Вашему списку слов, пробуя каждый пароль и проверяя возвращаемое значение.
Пример:
#!/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 дней для 400 000 возможных паролей).
Обновление: Кажется зависящим от ЦП. Если Вы разделяете свой список слов и делаете что-то как
(sudo ./find-password words.0 &) ; (sudo ./find-password words.1 &)
Это будет использовать два ядра и почти половину времени на попытку.