#!/usr/bin/env bash
DEVICE="/dev/sdX" # Например: /dev/sdb1
KNOWN="Abc123!Qwe456@Z" # Ваш пароль длиной 16 символов
if [ ${#KNOWN} -ne 16 ]; then
echo "Ошибка: KNOWN должен быть длиной ровно 16 символов."
exit 1
fi
for pos in $(seq 0 15); do
for code in $(seq 32 126); do
char=$(printf "\\$(printf '%03o' "$code")")
# Если символ совпадает с текущим, пропускаем
[ "$char" = "${KNOWN:$pos:1}" ] && continue
pass="${KNOWN:0:$pos}${char}${KNOWN:$((pos+1))}"
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/16, символ %3d/95" "$((pos+1))" "$((code-31))"
done
done
echo
echo "Пароль не найден."