Fork me on GitHub

binwalk

  • 做misc题的时候,一般都需要从某个网址下载一个文件,然后开始分析这个文件,最终从文件中得到flag。而查看下载的文件中是否包含其他文件的时候一般都需要binwalk这个神器。

0X01 下载与安装

  • binwalk的配置环境一般是linux,Pcat大佬有篇文章是关于在windows上配置的,嗯。。。。过程有点复杂,本着省事的精神,我就在虚拟机上装了ubuntu。
  • 在ubuntu的终端上执行以下命令:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ sudo su //然后输入密码,获取root权限,避免后期执行命令时出现权限不够的情况。
    $ sudo apt-get remove binwalk //卸载原有的旧版binwalk(如果有的话),采用git的方式进行安装,以便得到更好的更新。
    $ sudo apt-get update //更新软件
    $ sudo apt-get install build-essential autoconf git //获取开发工具git
    $ git clone https://github.com/devttys0/binwalk //从git上获取binwalk的源代码
    $ cd binwalk //进入binwalk文件夹
    $ sudo python setup.py install //导入python环境
    #如果自己linux上的python是2.x版的,则紧接着还需要执行下面这步导入python-lzma模块:
    $ sudo apt-get install python-lzma

//如果执行命令的中途出现了“无法获得锁之类的情况”,执行下面命令即可,详情见链接

1
2
3
sudo rm /var/lib/dpkg/lock

sudo rm /var/lib/apt/lists/lock //把lock文件删了

0X02 binwalk相关命令

  • 直接在终端输入binwalk,命令就出来,细细看便可,不过太多了,也太繁琐了,这里简单介绍一下怎样查看一个已知的文件中是否包含的其他的文件,以及使用binwalk命令“ binwalk -e 文件路径 ”来分离其中的文件。(注意:是文件路径)
  • 这里以bugku上misc的爆照(08067CTF)一题为例,原图下载后得到如下一张图片

获取root权限后直接执行” binwalk 所要查看的文件的路径” ,得到文件中包含的其他文件的信息;然后执行“ binwalk -e 文件路径 ”,得到分离后的文件。(与原文件在同一目录下)

//这里也可以使用foremost来分离,不过foremost的速度不敢恭维,foremost的命令格式是:foremost -T 文件名(注意:是文件名).