LUKS:确定哪些键槽与哪个密码短语匹配

LUKS:确定哪些键槽与哪个密码短语匹配

我有一个 LUKS 加密磁盘。它有 3 个键槽,我知道其中两个的传递阶段。

如何确定我知道哪些键槽的密码?

答案1

简单的方法是--debug在解锁设备时使用,它会打印它尝试使用的键槽,因此使用两个密码短语,您只需运行两次luksOpen即可查看哪个密码短语“属于”哪个键槽。

我为第三个键槽提供密码的示例:

$ 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.

如果您想从脚本中进行检查,您可以对您知道的每个密码短语的每个密钥槽使用--key-slot <num>withluksOpen和循环,使用错误的密码短语解锁错误的密钥槽将会失败(您也可以将其与 一起使用来--test-passphrase检查密码短语是否正确或者没有实际解锁设备)。如果您有两个具有相同密码的密钥槽,这也会有所帮助,--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

相关内容