安装
# apt install binwalk
使用
$ binwalk 文件
它会检查文件中的特点并输出比如:
$ binwalk /bin/bash
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 ELF, 64-bit LSB shared object, AMD x86-64, version 1 (SYSV)
4411 0x113B mcrypt 2.2 encrypted data, algorithm: blowfish-448, mode: CBC, keymode: 8bit
852984 0xD03F8 Unix path: /usr/share/bashdb/bashdb-main.inc
864232 0xD2FE8 Unix path: /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.
869632 0xD4500 Copyright string: "Copyright (C) 2016 Free Software Foundation, Inc."
871602 0xD4CB2 Unix path: /usr/share/locale
对比两个文件的不同
$ binwalk -W 文件一 文件二
比如对比 /initrd.img 和 /initrd.img.old
$ binwalk -W /initrd.img /initrd.img.old
输出分为5栏:
当前位置
文件 1 的 十六进制输出
文件 1 的 ascii输出
文件 2 的 十六进制输出
文件 2 的 ascii输出
两个文件不同的地方以红色显示
相同的地方以绿色显示
提取分析出来的数据
$ binwalk -e 文件
:
$ binwalk -e boot.img
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 Android bootimg, kernel size: 8348496 bytes, kernel addr: 0x80008000, ramdisk size: 1658256 bytes, ramdisk addr: 0x81000000, product name: ""
2048 0x800 Linux kernel ARM boot executable zImage (little-endian)
18423 0x47F7 gzip compressed data, maximum compression, from Unix, last modified: 1970-01-01 00:00:00 (null date)
8351744 0x7F7000 gzip compressed data, maximum compression, from Unix, last modified: 1970-01-01 00:00:00 (null date)
9080338 0x8A8E12 xz compressed data
10010624 0x98C000 Qualcomm device tree container, version: 2, DTB entries: 24
$ ls _boot.img.extracted/
47F7 7F7000 8A8E12 8A8E12.xz
看起来将:
18423 0x47F7 gzip compressed data, maximum compression, from Unix, last modified: 1970-01-01 00:00:00 (null date)
9080338 0x8A8E12 xz compressed data
2段数据成功提取了出来,并进行了第二次解压:
$ file ./_boot.img.extracted/
./47F7: data
./7F7000: ASCII cpio archive (SVR4 with no CRC)
./8A8E12: Zip archive data, at least v2.0 to extract
./8A8E12.xz: XZ compressed data