gcarmix/hexdig
GitHub: gcarmix/hexdig
基于 C++ 的二进制文件扫描与提取工具,帮助安全研究人员从固件镜像等二进制 blob 中快速发现并提取嵌入的文件结构和数据。
Stars: 23 | Forks: 1
# HexDig
🔍 **HexDig** 是一款快速、可扩展的工具,用于扫描、检查以及从二进制文件和固件镜像中提取嵌入的数据。
受 **binwalk** 等工具启发,HexDig 专注于现代工作流、清晰的输出和可魔改的内部结构——这使其成为逆向工程师、固件分析师和安全研究人员的理想选择。
## ✨ 功能
- 🧠 扫描二进制文件以查找嵌入的文件签名
- 🧩 识别压缩数据、文件系统和常见的固件格式
- 📦 自动或有选择地提取已发现的数据
- 🧪 分析原始二进制文件和十六进制级别的结构
- ⚡ 极速扫描,依赖项极少
- 🔌 支持插件的架构 (开发中)
## 🚀 安装说明
### 预编译版本(最简单)
最新版本的预编译二进制文件附在
[GitHub 发布页面](https://github.com/gcarmix/hexdig/releases/latest):
- 🐧 **Debian / Ubuntu** — `hexdig__amd64.deb`
sudo dpkg -i hexdig_*_amd64.deb
sudo apt-get install -f # 仅在需要时运行
- 🪟 **Windows** — 解压 `hexdig__win_x64_portable.zip`,然后通过运行 `hexdig.exe` 这个独立的静态二进制文件来开始使用。
为了支持提取功能,提供了 7Zip 可执行文件和 DLL。
### 快速安装(Linux,从源码构建)
对于其他 Linux 发行版,`install.sh` 脚本会检测您的
发行版,安装构建依赖项,然后使用 CMake 构建并安装
HexDig。支持的系列:Debian/Ubuntu、Fedora/RHEL、Arch、
openSUSE、Alpine。
```
git clone https://github.com/gcarmix/hexdig.git
cd hexdig
./install.sh
```
实用参数:
- `-y`, `--yes` — 非交互模式(在安装软件包前不进行提示)
- `--no-install` — 仅构建二进制文件,不运行 `cmake --install`
- `--prefix=/path` — 设置自定义的 `CMAKE_INSTALL_PREFIX`
- `--uninstall` — 卸载之前安装的副本
- `-h`, `--help` — 显示用法
### 手动从源码构建
构建依赖项:C++17 编译器、CMake (>= 3.12)、`pkg-config`,以及 `zlib`、`liblzma` (xz) 和 `lzo2` 的开发头文件。
```
git clone https://github.com/gcarmix/hexdig.git
cd hexdig
cmake -B build
cmake --build build -j
sudo cmake --install build
```
### 其他构建途径
- 🪟 **在 Windows 上从源码构建** — 参见 [docs/building-windows.md](docs/building-windows.md)
- 📦 **自己构建 `.deb` 包** — 参见 [docs/packaging-deb.md](docs/packaging-deb.md)
## 🛠 使用方法
### 基本扫描
```
hexdig firmware.bin
```
### 扫描并提取
```
hexdig -e firmware.bin
```
### 显示详细输出
```
hexdig -v firmware.bin
```
## 📄 输出示例
```
* ../inputs/openwrt-18.06.3-mediatek-mt7623-7623n-bananapi-bpi-r2-initramfs-kernel.bin
└── [0x0000] UIMAGE (length=4259578)
Source: ../inputs/openwrt-18.06.3-mediatek-mt7623-7623n-bananapi-bpi-r2-initramfs-kernel.bin
Info: UImage: ARM OpenWrt Linux-4.14.128, timestamp=2019-06-21
12:17:25 UTC, OS=Linux, CPU=ARM, Type=Kernel,
Compression=None
├── [0x3c38] XZ (length=4220724)
│ Source: extractions/openwrt-18.06.3-mediatek-mt7623-7623n-bananapi-bpi-r2-initramfs-kernel.bin.extracted/0/ARM OpenWrt Linux-4.14.128.bin
│ Info: XZ compressed stream, total size: 4220724 bytes
└── [0x40a3ac] DTB (length=23434)
Source: extractions/openwrt-18.06.3-mediatek-mt7623-7623n-bananapi-bpi-r2-initramfs-kernel.bin.extracted/0/ARM OpenWrt Linux-4.14.128.bin
Info: Device Tree Blob
```
## 🔧 配置
HexDig 支持通过以下方式进行配置:
- 命令行参数
- 环境变量(已规划)
- 配置文件支持(已规划)
运行 `hexdig --help` 以查看所有可用选项。
## 🧩 支持的解析器
- AES
- Android Sparse
- ARJ
- BMP
- BZIP2
- CAB
- CPIO
- CRAMFS
- CRC
- DEB
- DTB
- ELF
- FAT
- GIF
- GZIP
- JPG
- Linux
- LZMA
- MBR
- PDF
- PE
- PNG
- RAR
- ROMFS
- 7Z
- SquashFS
- TAR
- UImage
- UBI
- XZ
- ZIP
## 🧪 开发状态
⚠️ **HexDig 正在积极开发中。**
API、输出格式和功能可能会发生变化。
非常欢迎贡献、反馈和测试。
## 📜 许可证
HexDig 采用 **GPL-3.0 许可证**发布。
详情请参见 [LICENSE](LICENSE) 文件。
## 🙏 致谢
- 灵感来源于 **binwalk**
- 感谢固件逆向工程和开源安全社区
## 📫 联系方式
有任何想法、发现 Bug 或有功能请求?
在 GitHub 上开启 Issue 或发起 Discussion。
祝你挖得开心 🧑💻
标签:Bash脚本, binwalk替代, C++, CMake, DAST, DNS 解析, Linux工具, Windows工具, 二进制分析, 二进制工具, 二进制解析, 云安全监控, 云安全运维, 云资产清单, 十六进制分析, 压缩数据识别, 固件分析, 嵌入式数据, 恶意软件分析, 插件架构, 数据提取, 数据擦除, 文件提取, 知识库安全, 端口探测, 签名扫描, 网络信息收集, 网络安全, 逆向工程, 隐私保护, 静态分析