CTF-All-In-One/doc/2.10_binwalk.md

73 lines
2.3 KiB
Markdown
Raw Normal View History

2017-10-11 17:22:24 +07:00
# 2.10 binwalk
2017-11-22 13:30:24 +07:00
<!-- MarkdownTOC -->
- Binwalk介绍
- 安装
- 快速入门
- 实例
<!-- /MarkdownTOC -->
## Binwalk介绍
Binwalk是一个快速易于使用的工具用于分析逆向工程和提取固件映像。 官方给出的用途是提取固件镜像然而我们在做一些隐写类的题目的时候Binwalk这个工具非常方便。
以下是binwalk所支持的平台情况
| 操作系统 | 核心功能的支持情况 | 可选功能的支持情况 | 安装的难易程度 |
| ------- | --------- | --------- | ------- |
| Linux | 完美 | 完美 | 非常容易 |
| OSX | 完美 | 很好 | 非常容易 |
| FreeBSD | 实验性 | 未知 | 非常容易 |
| Windows | 实验性 | 很差 | 非常容易 |
从上面的支持情况来看,我们最好在*unix系统下使用如果你的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
```