binwalk:开源固件分析与逆向提取工具安装与使用指南
一、项目官方信息
| 项目 | 信息 |
|---|---|
| GitHub 仓库 | https://github.com/ReFirmLabs/binwalk |
| 官方文档 | https://github.com/ReFirmLabs/binwalk/wiki |
| 开源协议 | MIT |
| 主要语言 | Rust(v3 重写版) |
| Star 数 | 约 15k |
Binwalk v3 是固件分析工具 Binwalk 的更新版本,用 Rust 重写,以追求更快的速度与更高的准确性。它的核心能力是:识别(并可选地提取)嵌入在其他文件内部的文件与数据。
它的主要用途与特点:
- 专注固件分析,支持非常多的文件与数据类型签名(见 Wiki 的 Supported-Signatures);
- 通过熵分析(entropy analysis),甚至能帮助识别未知的压缩或加密;
- 可以作为 Rust 库被集成进你自己的 Rust 项目;
- 用法简单、分析快、结果详细。

二、官方图片
上图为 Binwalk README 中展示的示例输出(对一个路由器固件镜像 DIR-890L_AxFW110b07.bin 的分析结果),可见它在指定偏移量列出识别出的文件类型。
三、环境要求
- 操作系统:Linux(推荐 Ubuntu);也支持 macOS。
- 方式一(最简单):Docker(用于构建官方镜像,自动带上全部依赖)。
- 方式二:Rust 工具链(cargo),用于从 crates.io 安装。
- 方式三:从源码编译(需 Rust 工具链)。
- 内存建议 1GB 以上;分析大固件镜像时预留足够磁盘(提取会产生解包文件)。
四、安装步骤
方式 A:用 Docker 安装(官方推荐,自动带依赖)
官方 README 明确:安装 Binwalk 及全部依赖最简单的方式是构建一个 Docker 镜像(见 Wiki「Building a Binwalk Docker Image」):
# 克隆仓库后按 Wiki 构建镜像(进入仓库目录)
git clone https://github.com/ReFirmLabs/binwalk.git
cd binwalk
# 按 Wiki 中的 Docker 构建步骤构建并运行
构建完成后,用容器跑 binwalk:
docker run --rm -v /path/to/firmwares:/firmwares binwalk /firmwares/你的固件.bin
方式 B:用 cargo 安装(Rust 包管理器)
如果已安装 Rust/cargo,可直接从 crates.io 安装:
cargo install binwalk
安装完成后即可直接在命令行使用 binwalk 命令。
方式 C:从源码编译
按 Wiki「Compile From Source」拉取源码后用 Rust 工具链编译:
git clone https://github.com/ReFirmLabs/binwalk.git
cd binwalk
cargo build --release
# 可执行文件在 target/release/binwalk
验证安装
binwalk --help
能打印帮助信息即安装成功。
五、使用方法
1. 基础固件扫描
官方示例用法非常简单——直接把固件镜像文件名传给 binwalk:
binwalk DIR-890L_AxFW110b07.bin
它会输出在各个偏移量识别出的文件类型(如 Squashfs、gzip、Cramfs、U-Boot 等)。
2. 提取内嵌文件
在扫描基础上提取识别出的文件(具体参数见 --help 或 Wiki Usage):
binwalk -e 你的固件.bin
提取出的文件会放在当前目录下,便于进一步分析根文件系统。
3. 熵分析
Binwalk 能生成熵图(entropy graph),帮助判断固件里哪一段是高熵(可能加密/压缩)数据。当你不知道某段数据是否被压缩或加密时,熵分析是重要线索。
4. 高级选项
- 用
binwalk --help查看全部可用选项; - 详细用法见 Wiki:https://github.com/ReFirmLabs/binwalk/wiki#usage;
- 支持的签名清单见 Wiki「Supported-Signatures」。
六、常见问题 FAQ
-
binwalk v3 和旧版有什么区别? v3 是用 Rust 完全重写的版本,目标是更快、更准;安装方式也变为 Docker / cargo / 源码编译,而不是旧版的 Python 脚本方式。
-
最简单的安装方式是哪种? 官方推荐用 Docker 构建镜像,自动带上全部依赖;不想装 Docker 的话,装好 Rust 工具链后
cargo install binwalk最直接。 -
扫描出来一堆文件,但怎么解包? 用提取选项(
-e)让 binwalk 自动把识别出的文件解包到目录,再对提取出的 Squashfs/Cramfs 等做进一步挂载或解压。 -
熵分析是做什么用的? 它画出固件各段的熵值曲线,高熵段通常意味着压缩或加密。当你怀疑某段数据被加密而又无法识别格式时,熵分析能给你线索。
-
binwalk 能在 Windows 上跑吗? 官方主推 Linux。Windows 用户建议用 WSL 或 Docker 运行,避免原生编译依赖问题。
-
怎么查看全部支持的文件类型? 见 Wiki 的 Supported-Signatures 页面;运行时用
binwalk --help看当前版本支持的参数。
七、跳转链接
- GitHub 仓库:https://github.com/ReFirmLabs/binwalk
- 官方 Wiki(用法/安装):https://github.com/ReFirmLabs/binwalk/wiki
- 支持的签名:https://github.com/ReFirmLabs/binwalk/wiki/Supported-Signatures
- crates.io:https://crates.io/crates/binwalk