Loading...

文章背景图

binwalk:开源固件分析与逆向提取工具安装与使用指南

2026-10-27
0
- 字
- 分钟
|

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 示例输出

二、官方图片

上图为 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. 高级选项

六、常见问题 FAQ

  1. binwalk v3 和旧版有什么区别? v3 是用 Rust 完全重写的版本,目标是更快、更准;安装方式也变为 Docker / cargo / 源码编译,而不是旧版的 Python 脚本方式。

  2. 最简单的安装方式是哪种? 官方推荐用 Docker 构建镜像,自动带上全部依赖;不想装 Docker 的话,装好 Rust 工具链后 cargo install binwalk 最直接。

  3. 扫描出来一堆文件,但怎么解包? 用提取选项(-e)让 binwalk 自动把识别出的文件解包到目录,再对提取出的 Squashfs/Cramfs 等做进一步挂载或解压。

  4. 熵分析是做什么用的? 它画出固件各段的熵值曲线,高熵段通常意味着压缩或加密。当你怀疑某段数据被加密而又无法识别格式时,熵分析能给你线索。

  5. binwalk 能在 Windows 上跑吗? 官方主推 Linux。Windows 用户建议用 WSL 或 Docker 运行,避免原生编译依赖问题。

  6. 怎么查看全部支持的文件类型? 见 Wiki 的 Supported-Signatures 页面;运行时用 binwalk --help 看当前版本支持的参数。

七、跳转链接

评论交流

文章目录