Extract files from any kind of container formats
2,553
stars
3,128
commits
Sep 8, 2026
updated
Accurate, fast, and easy-to-use extraction suite for binary blobs.
unblob parses unknown binary blobs for 78+ archive, compression, and file-system formats, extracts their content recursively, and carves out unknown chunks. It is the perfect companion for extracting, analyzing, and reverse engineering firmware images.

0xFF padding.--plugins-path.pip install unblob
Then install the required external extractor tools. On Ubuntu/Debian:
sudo apt install android-sdk-libsparse-utils e2fsprogs p7zip-full unar zlib1g-dev liblzo2-dev lzop lziprecover libhyperscan-dev zstd lz4
For SquashFS support, also install sasquatch:
curl -L -o sasquatch_1.0.deb "https://github.com/onekey-sec/sasquatch/releases/download/sasquatch-v4.5.1-6/sasquatch_1.0_$(dpkg --print-architecture).deb"
sudo dpkg -i sasquatch_1.0.deb && rm sasquatch_1.0.deb
Verify that all extractors are available:
unblob --show-external-dependencies
The Docker image bundles all extractors — no extra setup needed:
docker run \
--rm \
--pull always \
-v /path/to/extract-dir:/data/output \
-v /path/to/files:/data/input \
ghcr.io/onekey-sec/unblob:latest /data/input/firmware.bin
Note: Mount directories must be owned by the same
uid:gid. On multi-user systems, add-u $UID:$GIDto the command.
sudo apt install unblob
nix profile install nixpkgs#unblob
Or add it to your NixOS/home-manager configuration — see the installation docs for flake and overlay examples.
git clone https://github.com/onekey-sec/unblob.git
cd unblob
uv sync --no-dev
uv run unblob --show-external-dependencies
Requires Python ≥ 3.10, uv, and a Rust toolchain (for the compiled extensions).
Extract a file (output goes to <filename>_extract/ by default):
unblob firmware.bin
Specify a custom output directory:
unblob -e /tmp/output firmware.bin
Generate a JSON metadata report:
unblob --report report.json firmware.bin
Limit recursion depth and enable entropy analysis:
unblob -d 5 -n 2 firmware.bin
Skip files matching a magic string prefix:
unblob --skip-magic "POSIX tar archive" firmware.bin
Load a custom handler plugin:
unblob -P ./myplugins/ firmware.bin
Usage: unblob [OPTIONS] FILE
Options:
-e, --extract-dir DIRECTORY Extract the files to this directory.
-f, --force Force extraction even if outputs already exist.
-d, --depth INTEGER Recursion depth (default: 10).
-n, --entropy-depth INTEGER Entropy calculation depth (default: 1; 0 = off).
-P, --plugins-path PATH Load plugins from the provided path.
-S, --skip-magic TEXT Skip files with a given magic prefix.
-p, --process-num INTEGER Number of parallel worker processes (default: CPU count).
--report PATH Write a JSON metadata report to this file.
-k, --keep-extracted-chunks Keep extracted chunks on disk.
--delete-extracted-files TEXT Delete intermediate files after extraction.
-v, --verbose Increase verbosity (-v, -vv, -vvv).
--show-external-dependencies List required external tools and their status.
-h, --help Show this message and exit.
from pathlib import Path
from unblob.processing import ExtractionConfig, process_file
config = ExtractionConfig(
extract_root=Path("/tmp/output"),
randomness_depth=1,
)
result = process_file(config, Path("firmware.bin"))
To also write a JSON report:
process_file(config, Path("firmware.bin"), report_file=Path("report.json"))
ExtractionConfig accepts the same options as the CLI: max_depth, process_num, skip_magic, force_extract, keep_extracted_chunks, and more. See the API reference for the full list.
unblob uses pytest. Integration test fixtures are stored in Git LFS.
# Install Git LFS (one-time setup)
git lfs install
# Install all development dependencies
uv sync --all-extras --dev
# Run the full test suite
uv run pytest tests/ -v
Full documentation is available at https://unblob.org:
Contributions are welcome! If you would like to add support for a new format or improve an existing one:
If you just need a format supported and don't want to implement it yourself, open an issue — we'll consider adding it.
See CONTRIBUTING for more details.
unblob is licensed under the MIT License.
(top 30 of 37)
Extract files from any kind of container formats
2,553
stars
3,128
commits
Sep 8, 2026
updated
Accurate, fast, and easy-to-use extraction suite for binary blobs.
unblob parses unknown binary blobs for 78+ archive, compression, and file-system formats, extracts their content recursively, and carves out unknown chunks. It is the perfect companion for extracting, analyzing, and reverse engineering firmware images.

0xFF padding.--plugins-path.pip install unblob
Then install the required external extractor tools. On Ubuntu/Debian:
sudo apt install android-sdk-libsparse-utils e2fsprogs p7zip-full unar zlib1g-dev liblzo2-dev lzop lziprecover libhyperscan-dev zstd lz4
For SquashFS support, also install sasquatch:
curl -L -o sasquatch_1.0.deb "https://github.com/onekey-sec/sasquatch/releases/download/sasquatch-v4.5.1-6/sasquatch_1.0_$(dpkg --print-architecture).deb"
sudo dpkg -i sasquatch_1.0.deb && rm sasquatch_1.0.deb
Verify that all extractors are available:
unblob --show-external-dependencies
The Docker image bundles all extractors — no extra setup needed:
docker run \
--rm \
--pull always \
-v /path/to/extract-dir:/data/output \
-v /path/to/files:/data/input \
ghcr.io/onekey-sec/unblob:latest /data/input/firmware.bin
Note: Mount directories must be owned by the same
uid:gid. On multi-user systems, add-u $UID:$GIDto the command.
sudo apt install unblob
nix profile install nixpkgs#unblob
Or add it to your NixOS/home-manager configuration — see the installation docs for flake and overlay examples.
git clone https://github.com/onekey-sec/unblob.git
cd unblob
uv sync --no-dev
uv run unblob --show-external-dependencies
Requires Python ≥ 3.10, uv, and a Rust toolchain (for the compiled extensions).
Extract a file (output goes to <filename>_extract/ by default):
unblob firmware.bin
Specify a custom output directory:
unblob -e /tmp/output firmware.bin
Generate a JSON metadata report:
unblob --report report.json firmware.bin
Limit recursion depth and enable entropy analysis:
unblob -d 5 -n 2 firmware.bin
Skip files matching a magic string prefix:
unblob --skip-magic "POSIX tar archive" firmware.bin
Load a custom handler plugin:
unblob -P ./myplugins/ firmware.bin
Usage: unblob [OPTIONS] FILE
Options:
-e, --extract-dir DIRECTORY Extract the files to this directory.
-f, --force Force extraction even if outputs already exist.
-d, --depth INTEGER Recursion depth (default: 10).
-n, --entropy-depth INTEGER Entropy calculation depth (default: 1; 0 = off).
-P, --plugins-path PATH Load plugins from the provided path.
-S, --skip-magic TEXT Skip files with a given magic prefix.
-p, --process-num INTEGER Number of parallel worker processes (default: CPU count).
--report PATH Write a JSON metadata report to this file.
-k, --keep-extracted-chunks Keep extracted chunks on disk.
--delete-extracted-files TEXT Delete intermediate files after extraction.
-v, --verbose Increase verbosity (-v, -vv, -vvv).
--show-external-dependencies List required external tools and their status.
-h, --help Show this message and exit.
from pathlib import Path
from unblob.processing import ExtractionConfig, process_file
config = ExtractionConfig(
extract_root=Path("/tmp/output"),
randomness_depth=1,
)
result = process_file(config, Path("firmware.bin"))
To also write a JSON report:
process_file(config, Path("firmware.bin"), report_file=Path("report.json"))
ExtractionConfig accepts the same options as the CLI: max_depth, process_num, skip_magic, force_extract, keep_extracted_chunks, and more. See the API reference for the full list.
unblob uses pytest. Integration test fixtures are stored in Git LFS.
# Install Git LFS (one-time setup)
git lfs install
# Install all development dependencies
uv sync --all-extras --dev
# Run the full test suite
uv run pytest tests/ -v
Full documentation is available at https://unblob.org:
Contributions are welcome! If you would like to add support for a new format or improve an existing one:
If you just need a format supported and don't want to implement it yourself, open an issue — we'll consider adding it.
See CONTRIBUTING for more details.
unblob is licensed under the MIT License.
(top 30 of 37)