#!/usr/bin/env bash
DEVICE="/dev/sdX" # Например: /dev/sdb1
KNOWN="Ваши17ИзвестныхСимволов"
if [ ${#KNOWN} -ne 17 ]; then
echo "Ошибка: KNOWN должен содержать ровно 17 символов."
exit 1
fi
for pos in $(seq 0 17); do
for code in $(seq 32 126); do
char=$(printf "\\$(printf '%03o' "$code")")
pass="${KNOWN:0:$pos}${char}${KNOWN:$pos}"
if printf '%s' "$pass" | \
cryptsetup open "$DEVICE" luks-test --test-passphrase >/dev/null 2>&1
then
echo
echo "Пароль найден:"
printf '%s\n' "$pass"
exit 0
fi
printf "\rПозиция %2d/18, символ %3d/95" \
"$((pos+1))" "$((code-31))"
done
done
echo
echo "Пароль не найден."