如何用不到10元人民币 DIY 一个 YubiKey
DigiSpark 开发板
需要用到的额外材料就是图中的 DigiSpark ,在淘宝上大约在10元人民币左右。
DigiSpark 其实是一个小型的类似 Arduino 的开发版,我们可以写代码刷到板子中的芯片里,芯片可以按照代码执行一些简单的任务。最近看到很多人都在海淘 YubiKey 这种小巧的密码保存器,因为正好 DigiSpark 本身有模拟 HID 的功能,何不自己做一个。
板子插到 USB 之后的效果
注意我的手指没有挨着板子,这个时候进入 LastPass 或者 PasswordSafe 等软件的主密码输入界面,然后手轻轻碰一下板子的背部,效果如下图。
输入密码
板子上的第二个 LED 灯亮起,这个时候会模拟键盘把预先烧到芯片中的密码输入到电脑里。
代码其实很简单,如下。
#include "DigiKeyboard.h"
void setup() {
pinMode(0, INPUT);
pinMode(1, OUTPUT);
}
void loop() {
if (digitalRead(0) == HIGH) {
digitalWrite(1, HIGH);
DigiKeyboard.sendKeyStroke(0);
DigiKeyboard.println("YouPasswordHere");
}
DigiKeyboard.delay(5000);
digitalWrite(1, LOW);
}
用 Arduino 密码下载的 IDE 就可以把代码直接烧到板子上,非常方便。比较适合的场景包括开机密码,前面说的密码管理器的主密码,TrueCrypt 等软件的加密密码等,但不适合在线密码。
几个问题:
- 密码是明文的,可以 dump 出来,注意不要直接使用它存储在线密码。
- 芯片和板子会损坏,所以一定要有备份。
- 可以存储多个密码,但需要修改代码,并且安装几个 Button,用 Button 或 Button 组合区分。
- 理论上可以实现 FIDO U2F ,但我没有具体实验,如果你有兴趣欢迎联系我。
Happy Hacking
- hj53550 [Firefox 42.0|Windows 8.1] 2015-11-18 15:51 6 赞 回复
- 高大上。
- LouisWei [Chrome 45.0|Windows 7] 2015-11-12 13:55 7 赞 回复
- 这篇文章不错,回去买个玩玩