LUKS暗号化ディスクがあります。 3つのキーホームがあり、そのうちの2つの転送ステップを知っています。
どのキーウェイのパスワードを知っているかどうかを確認するには?
答え1
簡単な方法は、--debug
デバイスのロックを解除するときに使用したいキーウェイを印刷することです。したがって、2つのパスワードを使用して、luksOpen
どのパスワードがどのキーウェイに「属しているか」を確認するために2回だけ実行します。
3番目のキーホームのパスワードを提供する例:
$ sudo cryptsetup open /dev/sde a --debug
...
# Trying to open LUKS2 keyslot 0.
...
# Verifying key from keyslot 0, digest 0.
# Digest 0 (pbkdf2) verify failed with -1.
# Trying to open LUKS2 keyslot 1.
...
# Digest 0 (pbkdf2) verify failed with -1.
# Trying to open LUKS2 keyslot 2.
...
Key slot 2 unlocked.
スクリプトでこれを確認するには、知っている各パスワードフレーズの各キースロットに対してwithとループを使用できます。無効な--key-slot <num>
パスワードluksOpen
フレーズで無効なキースロットをロック解除すると失敗します。--test-passphrase
正確または実際にデバイスのロックを解除せずに)。これは、同じパスワードを持つ2つのキースロットがある場合にも役立ちますが、--debug
上記の例ではこれはわかりません。
したがって、次のようなトリックを実行する必要があります。
for i in {0..2}; do
for pass in "a" "b" "c"; do
echo $pass | cryptsetup open /dev/sde a -q --test-passphrase --key-slot $i >/dev/null 2>&1
ret=$?
[ $ret -eq 0 ] && echo "$pass is passphrase for keyslot $i" && break
done
done
a is passphrase for keyslot 0
b is passphrase for keyslot 1
c is passphrase for keyslot 2