HFS + Mount以编程方式加密

时间:2014-07-06 20:00:11

标签: macos encryption terminal 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: " & i
    do shell script "echo " & quoted form of i & " | hdiutil attach -stdinpass     /dev/disk2s2"

end repeat

1 个答案:

答案 0 :(得分: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条目,你还有一些工作要做。 Core Storage设置为采用一个或多个物理卷(例如/ dev / disk2s2),将它们合并到逻辑卷组中,然后在该组中创建逻辑卷。您可以使用以下命令获取逻辑卷组的UUID:

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

不幸的是,你必须找出逻辑卷UUID,我想这样做你必须运行diskutil cs list(可能带有-plist选项),并解析结果的混乱,寻找该组中的逻辑卷。 ICK。