aayes89/jBinWalk

GitHub: aayes89/jBinWalk

jBinWalk是一款纯Java实现的递归固件分析工具,可自动检测并提取固件镜像中的多种嵌入式文件系统和压缩数据。

Stars: 0 | Forks: 0

# jBinWalk(固件递归提取器) jBinWalk 是一款基于 Java 的递归固件分析和提取引擎,受 **binwalk** 等工具启发。 它旨在检测、提取并递归分析固件镜像内的嵌入结构。 ## 🚀 功能特性 - 多签名检测引擎(魔术字节扫描) - 递归提取(套娃式解包) - 支持常见固件组件: - U-Boot uImage - SquashFS - LZMA / LZMA raw - GZIP / ZIP - JFFS2 - 图像提取支持: - PNG - JPG / JPEG - GIF - BMP - TIFF - 基于熵的过滤以减少噪声 - 访问跟踪系统以避免递归循环 - 基于磁盘的提取管道(不进行完整的内存递归) - 每个格式的启发式验证 - 可扩展的策略模式架构 ## 🧠 架构设计 项目围绕模块化组件构建: * SignatureScanner → 检测固件中的魔术字节 * ExtractorStrategy → 格式特定的提取逻辑 * RecursiveExtractor → 递归分析引擎 * ExtractionContext → 循环预防 + 深度控制 * EntropyAnalyzer → 噪声过滤 * DetectedEntry → 检测到的签名元数据 * ExtractionNode → 递归树结构 ## 🔄 工作流程 1. 将固件加载为字节数组 2. 扫描已知签名 3. 验证每个检测结果 4. 使用策略模式提取内容 5. 将提取的文件保存到磁盘 6. 递归重新扫描提取的文件 7. 应用熵 + 大小过滤以避免噪声爆炸 ## 📦 示例输出 ``` Firmware loaded: 8388608 bytes === FIRMWARE DATA === Offset Description Size Type ========================================================================================== 0x0000A2BC LZMA compressed data 0 bytes LZMA 0x00016999 PNG file 425 bytes PNG 0x00050000 uImage header (U-Boot) 5389996 bytes UIMAGE Initiating Recursive extraction (depth=5)... Initiating recursive extraction (max depth = 5)... ? PNG extracted: 0x00016999_image.png (425 bytes) OK extract: UIMAGE size=5389932 (comp=lzma) Recursive extraction success. === SUCCESS === [0] 0x00000000 | ROOT_FIRMWARE | 8388608 bytes | null [1] 0x0000A2BC | LZMA compressed data | 0 bytes | LZMA [1] 0x00016999 | PNG file | 425 bytes | PNG [1] 0x00050000 | uImage header (U-Boot) | 5389996 bytes | UIMAGE Files saves on: C:\jBinWalk\extracted ``` ## 熵过滤阈值 - 低熵(< 3.5)→ 忽略(填充/文本) - 高熵(> 7.9)→ 可能是压缩/加密数据 ## 🧪 使用的设计模式 策略模式 → 提取器实现 树结构 → 递归提取图 扫描器引擎 → 签名检测层 ## ⚠️ 注意事项 LZMA raw 检测使用启发式参数猜测 固件 blob 中预期会出现一些误报 提取有意保持保守以避免 OOM 和无限递归循环 ## 🛠 未来改进 检测的置信度评分系统 并行提取管道 基于 YARA 的签名集成 提取树的可视化 GUI 增量流式扫描器(内存优化) ## 🧩 许可证 MIT 许可证
标签:binwalk, BMP, GIF, GZIP, IoT安全, JFFS2, JPEG, JPG, JS文件枚举, LZMA, magic byte, Matryoshka, PNG, SquashFS, TIFF, U-Boot, 二进制分析, 云安全运维, 云资产清单, 固件分析, 固件安全, 固件提取, 固件逆向, 域名枚举, 嵌入式固件, 熵分析, 签名扫描, 逆向工程, 递归提取