rivassec/efi-bruteforce

GitHub: rivassec/efi-bruteforce

通过 Teensy 微控制器模拟 USB HID 键盘,对旧款 MacBook 的 EFI 固件密码进行自动化暴力破解,并针对固件的多种速率限制机制进行了绕过处理。

Stars: 4 | Forks: 1

# 🧬 efi-bruteforce 针对旧款 MacBook 型号的 EFI 固件密码自动化暴力破解工具。 由模拟 USB 键盘输入的 Teensy 微控制器驱动。 ## ⚙️ 概述 部分 MacBook 型号(主要是 2018 年之前)在启动时允许进行多次 EFI 密码尝试,之后才会触发静默的速率限制。本项目使用 可编程的 HID 设备(Teensy)来模拟人工输入 PIN 猜测, 在硬件层面上实现该过程的自动化。 该 sketch 处理了固件用于应对快速输入的三种失败模式: 1. **USB 轮询率下降** —— 固件会丢弃发送速度 快于其轮询间隔的击键。通过在 `Keyboard.press()` 和 `Keyboard.release()` 之间调用 `delay()` 解决。 2. **每次尝试速率限制** —— 固件在每次 提交后进行节流。通过在按 Enter 键后增加更长的延迟解决。 3. **N 次后静默忽略** —— 连续错误尝试 达到阈值后,固件将停止处理输入,直到重新通电。通过在批次之间重新通电并在重启期间 持久化当前的 PIN 索引来解决。 ## 🔩 环境要求 - 具备基础的硬件黑客知识 - **Teensy 3.2** 或兼容的微控制器(例如 Teensy LC、带有 Keyboard 库的 Pro Micro —— 参见下方的社区移植版) - Micro USB 数据线 - 带有 EFI 密码锁的目标 MacBook(T2 之前,例如 2012-2017 年) - 已安装并 配置好的 [Teensyduino](https://www.pjrc.com/teensy/teensyduino.html) ## 🚀 设置 1. 克隆此仓库: git clone https://github.com/rivassec/efi-bruteforce cd efi-bruteforce 2. 在启用 Teensyduino 的 Arduino IDE 中打开 `.ino` 文件。 3. 将代码烧录到你的 Teensy 3.2。 4. 将 Teensy 插入被锁定的 MacBook 并开机。 5. Teensy 将开始使用 PIN 样式的 序列模拟输入 EFI 密码。 ## 📁 仓库结构 ``` efi-bruteforce/ ├── efi_bruteforce.ino # Main Arduino/Teensy script ├── README.md └── docs/ └── wiring_diagram.png # [Optional] Add your own visual guides here ``` ## ⚠️ 法律与道德声明 此工具适用于: - 安全研究 - 数字取证 - 恢复您自己拥有的个人设备 **未经授权使用是违法行为。** 仅允许对您拥有或获得明确授权的硬件 部署此工具。 ## 🌝 背景与社区 最初的 2013 年文章(由于 `orvtech.com` 失效,现通过 Wayback Machine 访问): - [Atacar EFI PIN MacBook Pro (西班牙语)](http://web.archive.org/web/20150623202648/http://orvtech.com/atacar-efi-pin-macbook-pro.html) - [iCloud 变种后续讨论](http://web.archive.org/web/20191118170802/https://orvtech.com/ataque-fuerza-bruta-pin-icloud-en.html) 外部报道与下游社区工作: - [Hackaday — Mac EFI PIN 锁暴力破解攻击(未成功)](https://hackaday.com/2013/02/26/mac-efi-pin-lock-brute-force-attack-unsuccessful/) — 82 条评论,2013 年 2 月 - [Hacker News — 针对 EFI PIN 的自动化暴力破解攻击](https://news.ycombinator.com/item?id=7993435) — 67 个点赞,2014 年 7 月 - [MacRumors — 如何解锁系统锁定 PIN 码](https://forums.macrumors.com/threads/how-to-unlock-system-lock-pin-code.1438822/page-9) — 长期运行的社区帖子 - [Arduino Forum — 重温 orvtech 的 Mac EFI 固件与 iCloud 解锁](https://forum.arduino.cc/t/revisiting-orvtechs-efi-firmware-icloud-unlock-for-macs/313576) — 2015 年 5 月 Pro Micro 移植版 - [knoy/iCloudHacker](https://github.com/knoy/iCloudHacker) — 针对 iCloud 激活锁提示的下游 fork(222+ 个 star) 包含我会采取不同做法的所有内容的 2026 年事后分析: - [公开失败的 Teensy](https://rivassec.com/teensy-efi-bruteforce-hours-late.html) ## 🧭 DevSecOps 视角 虽然这不是一个传统的软件安全项目,但此仓库展示了: - 基于硬件的攻击自动化 - 速率限制边缘分析 - 跨越固件、USB HID 和物理安全的跨领域意识 对于现代 DevSecOps 工程师而言,底层工具的见解能够支持更广泛的 事件响应和安全架构工作。同样的直觉 —— 放慢速度、进行插桩、将分层防御视为可观察对象 —— 可以完美地移植 到云和 CI/CD 安全中。 ## 🔄 路线图 本项目已针对其目标硬件(T2 之前的 MacBook)功能完备。 没有进一步开发的计划。保留该仓库以供参考和 取证用例使用。 如果您为了新的硬件目标或密码提示界面而 fork 此项目, 请添加指向此处的链接,以保持其谱系清晰可见。 ## 📜 许可证 本项目基于 [MIT 许可证](LICENSE) 发布。
标签:Arduino, DOS头擦除, Teensy, UML, USB HID, 密码破解, 嵌入式开发, 物理安全, 硬件安全