引言
最近需要查看一个bin格式的Linux系统镜像备份,所以需要使用binwalk这个工具。
官方地址
https://github.com/ReFirmLabs/binwalk
遇到问题
我所用的电脑操作系统是Windows 10,有python3.12。下面我将详细的列出我所踩的坑。
python安装不支持
我在网上查阅了很多在Windows上使用binwalk的教程,大部分都告诉我只需要在解压的binwalk目录中运行
1 | python3 setup.py install |
但是!在binwalk v3.1.0 release中,解压完的目录中并没有setup.py这个文件……
阅读官方文档后,发现最新版(v3.1.0)只能通过docker,cargo,以及Linux中自行编译…懒得弄Linux,不愿意用docker,于是乎,我用scoop(一个包管理器)下载了cargo,并附带下载了rust,rustc。可是当我以为可以通过命令
1 | cargo install binwalk |
来安装binwalk时,终端蹦出来了一系列的报错…并且要求我再安装visual studio 2017 及以上的版本…
我沉默了,一个visual studio 就得1G以上,我玩不起啊…最终我打算妥协一下,用低版本的binwalk,那些带有setup.py的版本。
可是低版本有低版本的痛。我用的python是3.12版本,在执行
1 | python3 setup.py install |
时,报错,主要原因是没有distutils这个包,pip也无法安装这个包。经过查询,是python在3.12中开始完全删除distutils的支持,但如果想用的话也可以用setuptools。可惜,经过这么长时间的折磨后我受不了了,干脆降级3.11,随之而来的是多版本python共存的问题,我参考的是这篇文章,效果不尽人意,但是也能用。之后边可以正常运行
1 | python311 setup.py install |
(这里的python311是我防止冲突改的名,根据情况自己调整)并正常在“\python\python311\scripts”中正常生成binwalk文件。但是,当我运行
1 | python311 binwalk |
时,报错没有“pwd”这个module(这条命令是在刚才的“\python\python311\scripts”文件夹中运行的)。bing上的搜索将我带到了binwalk在GitHub上的这个issue中。
问题解决
在刚才提到的issue中,我在这条评论下找到了在Windows中可以直接执行的binwalk.exe文件,具体链接。
将其添加到环境变量中,并在终端运行
1 | binwalk -V |
显示
1 | binwalk 3.1.0 |
至此,我们可以正常的在Windows中使用binwalk了!
(这里我用的是另一个开发者的binwalk.exe可能输出有所不同,我所用的链接)
P.S.
若在终端中单独键入
1 | binwalk |
则有可能会报错以下内容:
1 | thread 'main' panicked at src/main.rs:63:9: |
不过不用担心,因为这也可以证明binwalk.exe已经在我们的电脑上了。