Загрузка данных


#!/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 "Пароль не найден."