APFS(Apple文件系统)的熔丝驱动程序

2020-09-15 02:29:03

这个项目是一个新的Apple文件系统的只读保险丝驱动程序。它还支持软件加密卷和融合驱动器。尚不支持Firmlink。

请注意,并不是所有的压缩方法都受支持(只支持我到目前为止遇到的压缩方法)。因此,驱动程序可能会返回压缩文件,而不是未压缩文件。尽管大多数情况下它应该只报告错误。

请注意,驱动程序默认使用FUSE 3.0(32位系统上需要)。如果您想使用FUSE 2.6进行编译,可以使用ccmake。要将选项USE_FUSE3更改为OFF。

-l:宽松模式:当遇到意外数据时,尝试继续,即使这意味着返回可能不正确的数据。

-v n:不在容器中挂载第一个卷,而是挂载卷n(从0开始)。

-r RECOVERY_KEY:通过提供密码或个人恢复密钥(PRK)挂载加密卷。

-s n:查找设备内部偏移量n处的容器。这在使用映像文件而不是磁盘设备时非常有用,因此不会暴露分区。

如果您使用的是包含分区的映像文件,驱动程序现在将检测是否存在有效的GPT分区表。如果有,它将查找第一个APFS分区并使用该分区作为容器。如果您的驱动器包含多个APFS容器,您可以使用-p选项指定分区/容器ID。

该设备必须是包含APFS容器的设备。如果容器包含多个卷,则可以通过-v选项指定该卷。

如果卷是加密的,除非在命令行中指定了密码或PRK,否则apfs-fuse命令将提示输入密码。PRK也可以用作密码。

也可以直接挂载DMG文件。驱动程序将自动检测是否必须安装dmg并采取适当的操作。如果dmg是加密的,系统会要求您提供密码。请注意,dmg支持当前有点慢(特别是在压缩时),但它应该可以正常工作。

调试标志现在是位的组合。因此,要启用特定输出,只需将下面的数字相加,并将结果用作-d的参数。

除了FUSE支持的挂载选项外,还支持以下挂载选项:

VOL=n:与-v相同,如果您不需要卷0,请指定要装载的卷号。

要在某些较新的MAC上正确解析分区表,需要使用blksize参数。但是,当前驱动程序应该能够自动检测块大小。

如果您以root身份装载卷,并希望某些用户能够访问该卷,请使用:

如果要以用户身份装载设备,请将您自己添加到磁盘组。不过,这可能不太安全,因为它允许任何应用程序在驱动器上的任何位置进行读写。

可以读取MacOS 10.13区分大小写和不区分大小写的卷,以及iOS 11/MacOS 10.12卷。

由于驱动程序仍处于实验阶段,并且基于对一组有限的驱动器/卷的分析,因此仍可能不幸地发生崩溃。如果发生崩溃,为我提供有用的信息会非常有帮助。

最重要的信息之一是程序崩溃的位置。您可以通过调试该工具来发现这一点。要调试程序,请执行以下操作:

然后将回溯的输出发送给我。将-d1添加到选项也可能有帮助,但要注意,这将在文本控制台上生成大量输出。

如果您遇到某些文件的问题,可能是我在逆向工程过程中忽略了一些东西。在这种情况下,您可以使用APFS-DUMP-QUICK命令转储整个驱动器的管理结构。它可以按如下方式运行:

该工具会将最新版本的磁盘结构转储到日志文件中。这个文件可能会变得相当大,比如几个100MB。因此,要限制要报告的信息量,请在日志中查找文件名。尝试查找以文件开头且包含文件名的行。紧跟在文件后面的数字就是ID。查找所有具有此ID的行,并将它们包含在错误报告中。

这个工具是我最初用于逆向工程的工具。它将扫描整个卷以查找具有正确校验和的群集(因此是某些管理结构的一部分),然后尝试转储它们。这将需要很长时间才能在大卷上运行,并创建巨大的日志文件。所以使用快速版本会快得多。

这是一个新工具,它只显示容器中的一些信息。目前,它列出容器包含的卷,以及快照(如果有)。该工具将来可能会扩展。