LUKS :Определить, какие слоты ключей соответствуют фразе-паролю

Несколько недель я возился с заменой Qt 5.9.5 на системном уровне на Ubuntu Bionic, и это казалось невозможным без резервного копирования. Файл qtxxx.run будет установлен в /opt, что является правильным, но вспомогательным и потребует переопределения некоторой переменной среды и/или пути. Я создал несколько программ для qt в /opt, но они плохо работали только потому, что все хотят использовать системные значения по умолчанию.

System Qt распространяется в большом количестве папок, которые существуют параллельно, где /opt находится в дереве. Это волшебство, кажется, происходит ближе к концу процесса типа debuild/backportpackage, когда правила вносят изменения в некоторые пути, хранящиеся в файлах, чтобы соответствовать структуре Ubuntu. Мне не удалось выполнить резервное копирование исходных версий из-за ситуаций с курицей и яйцом, когда кросс-зависимости пакетов -терпят неудачу даже с загруженным qmake.

Короче говоря, по крайней мере для меня, лучше придерживаться версии Qt, которая является частью дистрибутива. Это основной элемент, который нельзя заменять или иметь несколько версий без очень тщательного тестирования.

Это был мой опыт, но это не значит, что это факт.Я был бы рад услышать, если бы кто-то добился большего успеха.

0
18.04.2021, 16:05
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>с luksOpenи циклически для каждого слота ключей для каждой известной фразы-пароля, разблокировать неправильный слот ключей с неправильной фразой-паролем просто не удастся (вы также можете использовать это вместе с --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
1
28.04.2021, 22:52

Теги

Похожие вопросы