准确、快速且易于使用的二进制blob提取套件。
unblob 解析未知的二进制 blob,支持 78 种以上的归档、压缩和文件系统格式,递归提取其内容,并雕刻出未知块。它是提取、分析和逆向工程固件镜像的理想伴侣。

0xFF 填充。--plugins-path 在运行时加载。pip install unblob
然后安装所需的外部提取工具。在 Ubuntu/Debian 上:
sudo apt install android-sdk-libsparse-utils e2fsprogs p7zip-full unar zlib1g-dev liblzo2-dev lzop lziprecover libhyperscan-dev zstd lz4
对于 SquashFS 支持,还需要安装 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
验证所有提取器是否可用:
unblob --show-external-dependencies
Docker 镜像捆绑了所有提取器——无需额外设置:
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
注意: 挂载目录必须由相同的
uid:gid拥有。在多用户系统上,请在命令中添加-u $UID:$GID。
sudo apt install unblob
nix profile install nixpkgs#unblob
或者将其添加到您的 NixOS/home-manager 配置中——请参阅安装文档了解 flake 和 overlay 示例。
git clone https://github.com/onekey-sec/unblob.git
cd unblob
uv sync --no-dev
uv run unblob --show-external-dependencies
需要 Python ≥ 3.10、uv 和 Rust 工具链(用于编译的扩展)。
提取文件(默认输出到 <filename>_extract/ 目录):
unblob firmware.bin
指定自定义输出目录:
unblob -e /tmp/output firmware.bin
生成 JSON 元数据报告:
unblob --report report.json firmware.bin
限制递归深度并启用熵分析:
unblob -d 5 -n 2 firmware.bin
跳过匹配特定魔数前缀的文件:
unblob --skip-magic "POSIX tar archive" firmware.bin
加载自定义处理程序插件:
unblob -P ./myplugins/ firmware.bin
Usage: unblob [OPTIONS] FILE
Options:
-e, --extract-dir DIRECTORY 将文件提取到此目录。
-f, --force 即使输出已存在也强制提取。
-d, --depth INTEGER 递归深度(默认:10)。
-n, --entropy-depth INTEGER 熵计算深度(默认:1;0 表示关闭)。
-P, --plugins-path PATH 从指定路径加载插件。
-S, --skip-magic TEXT 跳过具有给定魔数前缀的文件。
-p, --process-num INTEGER 并行工作进程数(默认:CPU 数量)。
--report PATH 将 JSON 元数据报告写入此文件。
-k, --keep-extracted-chunks 保留提取的块在磁盘上。
--delete-extracted-files TEXT 提取后删除中间文件。
-v, --verbose 增加详细程度(-v, -vv, -vvv)。
--show-external-dependencies 列出所需的外部工具及其状态。
-h, --help 显示此消息并退出。
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"))
若要同时写入 JSON 报告:
process_file(config, Path("firmware.bin"), report_file=Path("report.json"))
ExtractionConfig 接受与 CLI 相同的选项:max_depth、process_num、skip_magic、force_extract、keep_extracted_chunks 等。查看 API 参考获取完整列表。
unblob 使用 pytest。集成测试夹具存储在 Git LFS 中。
# 安装 Git LFS(一次性设置)
git lfs install
# 安装所有开发依赖
uv sync --all-extras --dev
# 运行完整测试套件
uv run pytest tests/ -v
完整文档可在 https://unblob.org 获取:
欢迎贡献!如果您想添加对新格式的支持或改进现有格式:
如果您只是需要一个格式得到支持而不想自己实现,请打开一个问题——我们会考虑添加它。
更多详情请参见 CONTRIBUTING。
unblob 采用 MIT 许可证。