> For the complete documentation index, see [llms.txt](https://firmianay.gitbook.io/ctf-all-in-one/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://firmianay.gitbook.io/ctf-all-in-one/2_tools/qi-ta-gong-ju/2.4.4_binwalk.md).

# 2.4.4 binwalk

* [Binwalk 介绍](#binwalk-介绍)
* [安装](#安装)
* [快速入门](#快速入门)
* [实例](#实例)
* [参考资料](#参考资料)

## Binwalk 介绍

Binwalk 是一个快速，易于使用的工具，用于分析，逆向工程和提取固件映像。 官方给出的用途是提取固件镜像，然而，我们在做一些隐写类的题目的时候，Binwalk 这个工具非常方便。

最好在 \*nix 系统下使用，如果你的 Windows 版本是 1703 及以上，那么在 [WSL](https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux) 中安装 binwalk 是个不错的选择。

## 安装

如果你是在 Ubuntu 下，那么使用下面的命令安装：

```shell
$ sudo apt install binwalk
```

## 快速入门

### 扫描固件

Binwalk 可以扫描许多嵌入式文件类型和文件系统的固件镜像，比如：

```shell
$ binwalk firmware.bin

DECIMAL     HEX         DESCRIPTION
-------------------------------------------------------------------------------------------------------------------
0           0x0         DLOB firmware header, boot partition: "dev=/dev/mtdblock/2"
112         0x70        LZMA compressed data, properties: 0x5D, dictionary size: 33554432 bytes, uncompressed size: 3797616 bytes
1310832     0x140070    PackImg section delimiter tag, little endian size: 13644032 bytes; big endian size: 3264512 bytes
1310864     0x140090    Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 3264162 bytes,  1866 inodes, blocksize: 65536 bytes, created: Tue Apr  3 04:12:22 2012
```

### 文件提取

可以使用 binwalk 的 `-e` 参数来提取固件中的文件：

```shell
$ binwalk -e firmware.bin
```

如果你还指定了 `-M` 选项，binwalk 甚至会递归扫描文件，因为它会提取它们：

```shell
$ binwalk -Me firmware.bin
```

如果指定了 `-r` 选项，则将自动删除无法提取的任何文件签名或导致大小为 0 的文件：

```shell
$ binwalk -Mre firmware.bin
```

## 参考资料
