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工具, 二进制分析, 二进制工具, 二进制解析, 云安全监控, 云安全运维, 云资产清单, 十六进制分析, 压缩数据识别, 固件分析, 嵌入式数据, 恶意软件分析, 插件架构, 数据提取, 数据擦除, 文件提取, 知识库安全, 端口探测, 签名扫描, 网络信息收集, 网络安全, 逆向工程, 隐私保护, 静态分析