isomage
Browse and extract files from ISO images without mounting them.
No root. No FUSE. No mount points. Just read the bytes.
Install
Homebrew (macOS and Linux):
Cargo (any platform with Rust):
Binary — grab a prebuilt binary from releases:
# macOS (Apple Silicon)
|
# Linux (x86_64, static musl)
|
From source:
&&
Usage
List contents
d / (24.8 GB)
d BDMV (24.8 GB)
d STREAM (24.7 GB)
- 00000.m2ts (20.1 GB)
- 00001.m2ts (4.6 GB)
d CLIPINF (1.2 KB)
d PLAYLIST (408 B)
- CERTIFICATE (3.1 KB)
Cat a file to stdout
Print any file straight to stdout — no extraction, no temp files. Pipe it wherever you want:
# Inspect a file
# Pipe to other tools
|
# Page through a file
|
# Play video directly from the ISO
|
Extract files
Extract a single file, a directory tree, or the whole disc:
# One file
# A directory (recursively)
# Everything
Verbose / debug mode
See how the filesystem is being parsed — useful when a disc won't read:
File size: 26663725056 bytes (24.84 GB)
Scanning key sectors for filesystem signatures...
Sector 16 (ISO 9660 PVD / UDF VRS): 01 43 44 30 30 31 01 00 |.CD001..|
Sector 256 (UDF AVDP): 02 00 02 00 ...
Attempting ISO 9660 parsing...
Found Primary Volume Descriptor at sector 16
...
Supported formats
- ISO 9660 with Joliet (Unicode filenames) and Rock Ridge (POSIX long filenames) extensions
- UDF including metadata partitions and multi-extent files
Covers CDs, DVDs, and Blu-rays.
Why
I got tired of leaving a container just to mount an image just to read one file. isomage runs entirely in userspace — it reads the raw bytes and reconstructs the filesystem tree itself.
Cross-compile
Limitations
- Read-only (by design)
- Some exotic UDF variations might not parse correctly
If you hit a disc that doesn't work, run with -v and open an issue.