免费 Python 库,用于创建和管理大型 ZIP 存档
一个强大、开源、极快的 Python 库,使 Python 开发者能够加载、提取和解析来自超过 30 种不同归档、压缩和文件系统格式的数据
什么是 Unblob 库?
Unblob 是一个重要的 Python 库和命令行工具,旨在简化并加速二进制 blob(包含未知或专有格式数据的文件)的提取,这类文件常见于固件镜像、内存转储、网络数据包或加密归档。最初由 ONEKEY 开发并维护,用于其生产分析平台,Unblob 通过支持超过 30 种不同的归档、压缩和文件系统格式,熟练地处理这些复杂文件的解析挑战。它高效地处理诸如 ZIP、TAR、GZIP、BZIP2、XZ、LZMA、SquashFS、CramFS、JFFS2、UBI/UBIFS 和 YAFFS2 等格式,递归提取内容并剔除仍未识别的未归类块。
在 MIT 许可证下免费使用,Unblob 既高效又极具多功能性。它通过利用多进程、优化的代码、内存映射文件以及 Hyperscan 高性能匹配库,实现了闪电般的速度。该工具通过使用经受考验的规则和格式标准来识别起止偏移,从而最大限度地减少误报和重叠块。此外,Unblob 还提供易于使用的 API,允许用户快速编写自定义格式处理器和提取器,并支持动态加载插件以扩展其核心功能。这使得 Unblob 成为需要分析包含压缩、加密或嵌入式文件系统的复杂多层二进制数据的用户的不可或缺的资产。
开始使用 Unblob
推荐的 Unblob 安装方式是使用 pypi.org。请使用以下命令进行顺利安装。
通过 PyPI 安装 Unblob 库
pip3 install unblob
从 GitHub 克隆 unblob 仓库
git clone https://github.com/onekey-sec/unblob.git
也可以手动安装;直接从 GitHub 仓库下载最新的发布文件。使用 Python 库提取已识别的格式
开源的 Unblob 库已加入对在 Python 应用程序中从不同文件格式提取内容的支持。该库已支持超过 30 种归档、压缩格式和文件系统。请记住,要使用库的所有受支持格式,需要安装所有提取器。用户可以使用各种选项来自定义库的行为,例如指定输出目录、递归深度、详细程度或报告格式。开发者可以使用 extract_chunk 方法将每个块的内容提取到指定的输出目录。下面是一个示例代码片段,展示如何在 Python 应用程序中使用该库将内容提取到输出目录。
如何使用 Python 库将内容提取到输出目录?
import unblob
# Scan a file for known formats
file_path = "some_file.bin"
chunks = unblob.scan_file(file_path)
# Extract each chunk to an output directory
output_dir = "some_dir"
for chunk in chunks:
unblob.extract_chunk(chunk, output_dir)
通过 Python API 执行 ELF 文件分析
开源的 Unblob 库使软件开发者能够轻松检测并提取未知二进制块中的 ELF 文件,同时识别其功能和特性。该库支持 32 位和 64 位 ELF 文件,以及 x86、x86_64、ARM、MIPS 和 PowerPC 等不同架构。它还可以处理各种 ELF 文件类型,如可执行文件、共享库、目标文件、核心转储和内核模块。
通过 Python API 提取元数据
开源的 Unblob 库已在其 Python 应用程序中加入生成元数据文件的支持。用户在将 Unblob 作为命令行工具运行时可以使用 --report 选项。此选项会生成一个 JSON 文件,包含已提取文件的路径、大小、类型、魔数、熵以及块细节等信息。用户可以将 JSON 文件的名称和位置作为 --report 选项的参数进行指定。随后,用户可以使用任何 JSON 查看器或解析器查看或分析 metadata.json 文件。