2018-04-29 21:21:55 +07:00
|
|
|
|
# 2.4.4 binwalk
|
2017-12-02 22:38:19 +07:00
|
|
|
|
|
|
|
|
|
- [Binwalk 介绍](#binwalk-介绍)
|
|
|
|
|
- [安装](#安装)
|
|
|
|
|
- [快速入门](#快速入门)
|
|
|
|
|
- [实例](#实例)
|
|
|
|
|
- [参考资料](#参考资料)
|
|
|
|
|
|
|
|
|
|
## Binwalk 介绍
|
2018-08-05 16:43:10 +07:00
|
|
|
|
|
2017-12-02 22:38:19 +07:00
|
|
|
|
Binwalk 是一个快速,易于使用的工具,用于分析,逆向工程和提取固件映像。 官方给出的用途是提取固件镜像,然而,我们在做一些隐写类的题目的时候,Binwalk 这个工具非常方便。
|
|
|
|
|
|
|
|
|
|
最好在 *nix 系统下使用,如果你的 Windows 版本是 1703 及以上,那么在 [WSL](https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux) 中安装 binwalk 是个不错的选择。
|
|
|
|
|
|
|
|
|
|
## 安装
|
2018-08-05 16:43:10 +07:00
|
|
|
|
|
2017-12-02 22:38:19 +07:00
|
|
|
|
如果你是在 Ubuntu 下,那么使用下面的命令安装:
|
2018-08-05 16:43:10 +07:00
|
|
|
|
|
2017-12-02 22:38:19 +07:00
|
|
|
|
```shell
|
|
|
|
|
$ sudo apt install binwalk
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 快速入门
|
2018-08-05 16:43:10 +07:00
|
|
|
|
|
|
|
|
|
### 扫描固件
|
|
|
|
|
|
2017-12-02 22:38:19 +07:00
|
|
|
|
Binwalk 可以扫描许多嵌入式文件类型和文件系统的固件镜像,比如:
|
2018-08-05 16:43:10 +07:00
|
|
|
|
|
2017-12-02 22:38:19 +07:00
|
|
|
|
```shell
|
|
|
|
|
$ binwalk firmware.bin
|
|
|
|
|
|
2018-08-05 16:43:10 +07:00
|
|
|
|
DECIMAL HEX DESCRIPTION
|
2017-12-02 22:38:19 +07:00
|
|
|
|
-------------------------------------------------------------------------------------------------------------------
|
2018-08-05 16:43:10 +07:00
|
|
|
|
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
|
2017-12-02 22:38:19 +07:00
|
|
|
|
```
|
|
|
|
|
|
2018-08-05 16:43:10 +07:00
|
|
|
|
### 文件提取
|
|
|
|
|
|
2017-12-02 22:38:19 +07:00
|
|
|
|
可以使用 binwalk 的 `-e` 参数来提取固件中的文件:
|
2018-08-05 16:43:10 +07:00
|
|
|
|
|
2017-12-02 22:38:19 +07:00
|
|
|
|
```shell
|
|
|
|
|
$ binwalk -e firmware.bin
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
如果你还指定了 `-M` 选项,binwalk 甚至会递归扫描文件,因为它会提取它们:
|
2018-08-05 16:43:10 +07:00
|
|
|
|
|
2017-12-02 22:38:19 +07:00
|
|
|
|
```shell
|
|
|
|
|
$ binwalk -Me firmware.bin
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
如果指定了 `-r` 选项,则将自动删除无法提取的任何文件签名或导致大小为 0 的文件:
|
2018-08-05 16:43:10 +07:00
|
|
|
|
|
2017-12-02 22:38:19 +07:00
|
|
|
|
```shell
|
|
|
|
|
$ binwalk -Mre firmware.bin
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 参考资料
|