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, 二进制分析, 云安全运维, 云资产清单, 固件分析, 固件安全, 固件提取, 固件逆向, 域名枚举, 嵌入式固件, 熵分析, 签名扫描, 逆向工程, 递归提取