HFS Монтирование зашифровано программно

#macos #encryption #terminal #aes #osx-mavericks

#macos #шифрование #терминал #aes #osx-mavericks

Вопрос:

Я пишу небольшую утилиту для управления смонтированными дисками, но при монтировании зашифрованного диска я столкнулся с небольшой проблемой, программа сообщает мне, что при запуске нет монтируемых файловых систем:

 echo "password" | hdiutil attach -stdinpass /dev/disk2s2
  

Я пытался использовать mount_hfs , однако mount_hfs появляется только с запросом системного пароля. Я хочу использовать базу данных моих программ, а не связку ключей Apple для кода шифрования. Я видел много способов выполнить именно этот процесс, но в OS X Mavericks я не уверен, как исправить ошибку. Я также попытался, как предлагала одна веб-страница, удалить параметр «-stdinpass», поскольку это сработало для них.

Как мне смонтировать зашифрованный диск с помощью утилит терминала в OS X Mavericks. Если это поможет, диск, на котором я тестирую это, зашифрован AES.

Вот пример:

 set passList to words of (do shell script "cat pwd.lst")
repeat with i in passList
    do shell script "Testing password: " amp; i
    do shell script "echo " amp; quoted form of i amp; " | hdiutil attach -stdinpass     /dev/disk2s2"

end repeat
  

Комментарии:

1. Я добавил свой пример кода, он на applescript, но shell или любой другой скрипт подойдет. Я думаю, что сбой в основном заключается в этой команде: hdiutil.

Ответ №1:

hdiutil предназначен для управления образами дисков, а не собственными томами — в нем есть несколько функций, которые также работают с собственными томами, но это не одна из них. В общем, вам нужно diskutil для работы с реальными дисками. В случае зашифрованных томов они управляются CoreStorage, поэтому вам действительно нужны diskutil cs и его подкоманды. Нужная вам команда выглядит примерно так:

 echo "password" | diskutil cd UnlockVolume 3F34630B-FAD5-4210-8812-973C158C9892 -stdinpass
  

… где 3F34630B-FAD5-4210-8812- 973C158C9892 — это UUID тома, который вы хотите смонтировать. Если вы не знаете этот UUID, а знаете только запись / dev, вам предстоит проделать некоторую работу. Основное хранилище настроено так, что оно принимает один или несколько физических томов (например, /dev / disk2s2), объединяет их в группу логических томов, и они создают логические тома внутри этой группы. Вы можете получить UUID группы логических томов с помощью:

 lvguuid="$(diskutil info /dev/disk2s2 | awk '/LVG UUID:/ {print $3}')"
  

К сожалению, затем вам придется вычислить UUID логического тома, и я думаю, что для этого вам нужно запустить diskutil cs list (возможно, с -plist опцией) и проанализировать возникшую путаницу в поисках логических томов в этой группе. Крик.