2025年了,我们该如何在Windows中优雅的安装binwalk

引言

最近需要查看一个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
2
3
thread 'main' panicked at src/main.rs:63:9:
No target file name specified! Try --help.
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

不过不用担心,因为这也可以证明binwalk.exe已经在我们的电脑上了。