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
本文来自云栖社区合作伙伴“Linux中国”,原文发表于2013-04-02.
相关资源:YubiKey-Guide, 使用YubiKey作为GPG和SSH的智能卡的指南.zip