#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
опцией) и проанализировать возникшую путаницу в поисках логических томов в этой группе. Крик.