numbpill3d/spi_flash_auto_unlocker

GitHub: numbpill3d/spi_flash_auto_unlocker

该工具通过自动化转储、分析和修补 SPI Flash 固件中的 UEFI 变量,帮助用户一键移除笔记本及嵌入式设备的 BIOS/UEFI 密码。

Stars: 12 | Forks: 1

# SPI Flash 自动解锁工具 一款 Python 实用工具,用于自动转储、分析和修改笔记本电脑及嵌入式固件,以移除 BIOS/UEFI 密码。 ## 🚀 开发动机 现代笔记本电脑通常将管理员和用户密码存储在 UEFI 固件中,该固件位于包含 BIOS 其余部分的同一块 SPI flash 芯片上。在许多情况下,这些密码保存在 AMI 固件中一个名为 `AMITSESetup` 的非易失性变量中。研究还表明,某些供应商(如 Lenovo)会在专有的 GUID 命名空间内使用 `cE!` 等特殊变量来控制写保护。清除或删除这些变量可以有效重置密码并禁用锁定机制。无需手动转储 flash、使用十六进制编辑器编辑镜像以及重新刷写,Auto-Unlocker 只需一条命令即可自动化整个工作流程。 ## 🛠️ 工作原理 1. **硬件连接**:将 SOIC-8 测试夹连接到系统的 SPI ROM 芯片上,并将其连接到兼容的 USB 编程器(CH341A 或 FT2232H)。 2. **Flash 转储**:脚本调用外部 `flashrom` 实用程序读取 SPI flash 的全部内容,并将其写入备份文件。 3. **变量枚举**:扫描转储的镜像以查找 UEFI 变量头。解析器会搜索已知的 GUID(例如 AMI 的 `AMITSESetup` GUID),并重建变量名、属性和数据结构。 4. **密码移除**:对于每个被识别为包含密码的变量,该工具可以将其数据区域清零,或者将该变量标记为已删除。将状态的删除位(`0x3F` -> `0x3D`)进行设置,遵循 UEFI 规范中变量删除的生命周期。 5. **重新刷写**:最后,使用 `flashrom` 将修补后的镜像写回 SPI 芯片,从而恢复一个没有旧密码的系统。 ## 📋 使用说明 首先安装 `flashrom`、Python 3 以及其他所有依赖项。然后使用适当的选项运行该工具: ``` python3 spi_flash_auto_unlocker.py \ --reader ch341a_spi \ --chip W25Q128FV \ --dump backup.bin \ --patch patched.bin \ --delete ``` ### 选项 - `--reader`:Flashrom 编程器驱动名称(必填:`ch341a_spi` 或 `ft2232_spi`) - `--chip`:可选的 flash 芯片名称(例如:`W25Q128FV`) - `--dump`:保存转储的固件镜像的路径(默认:`flash_backup.bin`) - `--patch`:保存修补后的固件镜像的路径(默认:`flash_patched.bin`) - `--delete`:将密码变量标记为已删除,而不是将数据清零(或在其基础上附加此操作) - `--no-flash`:不自动重新刷写(安全的试运行) - `--list`:列出所有发现的变量并退出,不进行任何更改 ## ⚠️ 安全警告 刷写修改过的固件可能会导致设备变砖。使用本软件的风险由您自行承担,且请仅在自己拥有的硬件上使用。请务必保留原始转储文件,以防出现意外情况。 ## 📄 许可证 本项目基于 **MIT License** 发布。有关详情,请参阅 `LICENSE` 文件。
标签:Python, SPI闪存, UEFI/BIOS, 固件分析, 底层安全, 无后门, 硬件工具, 系统恢复, 逆向工具