【实战】如何优雅的在Win11/10系统下运行Rust编写的binwalk v3.1.1
【实战】如何优雅的在Win11/10系统下运行Rust编写的binwalk v3.1.1
- 写在前面
-
- binwalk For Win11
- 主要改变
- 纯净构建
- 构建完成以后的文件列表
- binwalk_for_Win_v3 可能遇到的几个问题
-
- Fix 修复Win版本不能完美squashfs解压缩问题,本地需要WSL2 环境、docker环境或者qemu环境。
- Fix 修复Win系统中“lZMA解压失败”
- binwalk_for_WinGUI的问题
- 路由器固件解包以后重新打包的问题
-
- 重新LZMA压缩编辑过的固件
- 使用DD工具重新和头文件固件合并 或者和原始固件合并
- 完成打包就可以去虚拟机运行固件 通过就可以烧录了
- 如何构建 dev-Win
-
- Binwalk 构建脚本使用说明
-
- 简介
- 特性
- 工作原理
- 使用方法
-
- Windows系统
- Linux/macOS系统
- 目录结构
- 常见问题
-
- 1. 下载依赖失败
- 2. 权限不足
- 3. 构建失败
- 清理构建环境
- 注意事项
- 故障排除
-
- 查看日志文件
- 联系方式
写在前面
- 昨天海鲜市场上有个客户,咨询一个binwalk程序,希望有个使用双击exe文件就能运行的binwalk v3.1.1版本,所以就有了这个项目
binwalk For Win11
- V3 .x以后是用RUST完全重构的,基本上抛弃了win版本,主要部署在linux、docker环境中。
- 但是我们总有客户喜欢“双击exe”就能执行
- 项目源地址:https://github.com/ReFirmLabs/binwalk
- devWinGUi项目地址:https://github.com/aspnmy/binwalk.git -b devWin
- 如果没兴趣看文章就行自己构建win版本的v3.1.1可以拉这个版本的代码,我会持续更新的,因为有客户需要双击exe执行
git clone -b devWin https://github.com/aspnmy/binwalk.git
这个版本和源项目https://github.com/ReFirmLabs/binwalk代码有很多不同的地方,所以不能在源项目上构建,构建会失败,或者运行程序会各种报错。
主要改变
- 由于原作者在v3.0以后的版本中完全去除了setup.py编译脚本,所以如果需要让v3.1.1能重新构建Win的版本,就要对rust的源码部分进行Win系统的代码适配:
- 主要影响到的代码 :main.rs 、squashfs.rs
- squashfs.rs是主要受影响代码,牵涉到squashfs解包LMZA文件格式
- 为了提供代码的粗壮性,我还在项目中塞了一个unsquashfs.exe 位于.\sqfs_for_win\sqfs_for_win.7z 压缩包中,是squashfs压缩独立解包组件,命令行执行,作为备用方案。
纯净构建
- 纯净构建的意思是,运行项目下 python builder\build.py,会在此目录下自主安装构建程序用的依赖组件:Rust、mingwx64等,不需要依赖系统path环境,避免造成不必要的配置污染。
- 为了小内存的设备需要,全程是用 mingwx64作为编译组件的比较少内存,如果需要使用vs作为构建组件,需要在build.py中修改对应代码。
构建完成以后的文件列表
- readme.md 帮助文件
- binwalk.exe binwalk编译在win11的命令行工具 建议在pwsh下 输入 .\binwalk --help 获得使用方法
- binwalk_gui.exe binwalk.exe程序WinGUI文件,双击执行即可,需要和binwalk.exe在同个目录下
- unsquashfs.exe 位于.\sqfs_for_win\sqfs_for_win.7z 压缩包中,是squashfs压缩独立解包组件,命令行执行,作为备用方案
- Tests 中是测试解包的Dlink的固件例子
binwalk_for_Win_v3 可能遇到的几个问题
Fix 修复Win版本不能完美squashfs解压缩问题,本地需要WSL2 环境、docker环境或者qemu环境。
- 下载 binwalk-devWin-v3.1.1-r4版本 ,解压后,首先运行Install.exe程序,安装本地Wsl/Wsl2环境(需要bios支持),
- 然后完成安装后再运行binwalk_gui.exe文件就能用WinGUI文件正常解包squashfs文件了,原理就是再wsl环境中运行binwalk-docker版本,但是docker的虚拟宿主文件夹受binwalk_gui.exe文件夹管理,可以上传bin文件,解包后下载解包后的文件。
- 本地设备没有wsl环境如何处理:运行Install.exe程序的时候,跳出提示,安装dockerdesktop版本、还是wsl版本,能用wsl用ws
