#dmg #apple #extract #compression #macos #data #encryption

bin+lib dmgwiz

从 DMG 文件中提取文件系统数据

6 个版本

0.2.4 2023 年 7 月 31 日
0.2.3 2020 年 11 月 10 日
0.2.2 2020 年 9 月 16 日
0.2.0 2020 年 8 月 26 日
0.1.0 2020 年 7 月 26 日

#47 in macOS 和 iOS API

26 每月下载量

MIT 许可证

3MB
1K SLoC

DMgWiz

CI crates.io

DMgWiz 允许您从压缩和加密的 DMG 文件中提取原始文件系统数据。它最初是一个 dmg2img 克隆,但由于 Rust 编程语言而具有更多功能和更高的安全性。

  • 支持 adc、zlib、bzip2 和 lzfse 压缩
  • 支持加密 DMG(AES-128 和 AES-256)
  • 在 Windows、Linux、macOS 上运行

DMgWiz 既是 CLI 工具也是 Rust crate,因此它可以集成到其他项目中。

🚀   下载

CLI 使用方法

dmgwiz [OPTIONS] <INPUT> [SUBCOMMAND]

OPTIONS:
-q               Only print errors
-v               Sets the level of verbosity (multiple allowed)
-p <password>    Password for encrypted DMGs

info

dmgwiz <INPUT> info

decrypt

dmgwiz <INPUT> decrypt -o <output> -p <password>

extract

dmgwiz <INPUT> extract [-n <partition number>] -o <output>

Crate 使用方法

DMgWiz 也可以用作其他 Rust 项目的 crate。请参阅 API 文档main.rs 以获取使用示例。

可以通过禁用加密 DMG 的支持来减少编译时间和 C 代码量。为此,在您的 Cargo.toml 中添加 default-features = false 选项: 

[dependencies]
dmgwiz = {version = "0.2", default-features = false}

变更日志

0.2.4

  • 修正了 plist 1.5 的 XML 解析

0.2.3

  • 修正了 blkx_table.data_offset 中非空值 DMG 的处理

0.2.2

  • 恢复为基于缓冲区的 LZFSE 解码

0.2.1

  • 删除了解压缩的临时缓冲区

0.2.0

  • 添加了对注释块的支持
  • 在未设置 Name 属性的情况下,添加了 CFName 作为回退
  • 在功能中分离了加密支持(默认启用)

0.1.0

  • 初始版本

参考文献

待办

  • 验证 DMG 中的校验和
  • 添加对 LZMA ("ULMO") 的支持

依赖项

~7–12MB
~235K SLoC