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, 密码破解, 嵌入式开发, 物理安全, 硬件安全