How lekensteyn/dmg2img works
DMG2IMG is a command-line converter: an operator supplies a compressed Apple DMG, the program validates and parses its koly metadata, selects partitions, dispatches block codecs, and writes an HFS+ image or stream. It supports plist/resource-fork layouts, ADC, zlib, bzip2, and optional LZFSE. The repository also contains the separate vfdecrypt utility for password-based encrypted images. The graph reflects sampled source and README capabilities; omitted lines limit certainty about some orchestration details.
Components 25
Conversion Orchestration
- DMG2IMG CLI
dmg2img.c - Block Dispatcher
dmg2img.c
DMG Format
- Koly Reader
dmg2img.h - Plist Parser
dmg2img.c - Resource Parser
dmg2img.c - Partition Catalog
dmg2img.c - Base64 Decoder
base64.c
Block Decoding
- ADC Decoder
adc.c - Zlib Decoder
dmg2img.c - Bzip2 Decoder
dmg2img.c - LZFSE Decoder
dmg2img.c
Image Output
- Image Writer
dmg2img.c - Mount Guidance
mntcmd.h - GPT Reader
mntcmd.h
Encrypted Images
- VFDecrypt CLI
vfdecrypt.c - Encrypted Header
vfdecrypt.c - Key Unwrapper
vfdecrypt.c - Crypto Stream
vfdecrypt.c
Other components
- Operator
- DMG Archive
- HFS+ Image
- Encrypted Image
- Decrypted Image
- OpenSSL
- HFS+ Mount
Connections 26
- Operator → DMG2IMG CLI: runs
- DMG Archive → DMG2IMG CLI: reads
- DMG2IMG CLI → Koly Reader: reads header
- DMG2IMG CLI → Plist Parser: parses XML
- DMG2IMG CLI → Resource Parser: parses resource
- DMG2IMG CLI → Base64 Decoder: decodes data
- DMG2IMG CLI → Partition Catalog: catalogs partitions
- DMG2IMG CLI → Block Dispatcher: dispatches blocks
- Block Dispatcher → ADC Decoder: decodes ADC
- Block Dispatcher → Zlib Decoder: inflates zlib
- Block Dispatcher → Bzip2 Decoder: decompresses bzip2
- Block Dispatcher → LZFSE Decoder: decompresses LZFSE
- Block Dispatcher → Image Writer: writes blocks
- Image Writer → HFS+ Image: produces image
- DMG2IMG CLI → Mount Guidance: reports mounting
- HFS+ Image → Mount Guidance: reads image
- Mount Guidance → GPT Reader: reads GPT
- Mount Guidance → HFS+ Mount: prints mount
- Operator → VFDecrypt CLI: runs
- Encrypted Image → VFDecrypt CLI: reads
- VFDecrypt CLI → Encrypted Header: detects header
- VFDecrypt CLI → Key Unwrapper: unwraps keys
- VFDecrypt CLI → Crypto Stream: decrypts chunks
- Key Unwrapper → OpenSSL: derives keys
- Crypto Stream → OpenSSL: uses crypto
- Crypto Stream → Decrypted Image: writes image