项目简介
本项目是基于Arduino平台的一次性密码(OTP)生成设备固件,可用于双因素认证。固件由两个Arduino草图构成,一个用于设备初始化,另一个用于实际应用。项目集成了USB通信、加密、OTP生成和调试功能,利用V - USB库实现USB通信,支持键盘和鼠标设备的HID标准。
项目的主要特性和功能
- 可生成一次性密码,应用于双因素认证等安全场景。
- 支持对配置的加密信息(公共ID、秘密ID和对称AES密钥)进行存储和使用。
- 具备多平台兼容性,既能使用自定义的“ArduKey”电路,也能在普通的Arduino Leonardo上使用。
- 包含调试模块,方便开发者进行调试和测试。
安装使用步骤
安装与配置
- 准备所需硬件设备和工具,如AVR单片机开发板、编程器、编译器等。
- 下载并解压项目源码文件,将其导入AVR单片机开发环境。
- 根据项目需求配置相关头文件和设置,如定义设备描述符、配置描述符等。
- 确保使用正确的编译选项和配置,生成适用于目标硬件的二进制文件。
编译与烧录
- 用AVR编译器(如AVR GCC)编译项目,生成可执行文件。
- 使用编程器将生成的二进制文件烧录到AVR单片机开发板。
设备初始化
- 运行Setup草图,将配置的加密信息写入设备的EEPROM。此草图仅用于初始化,烧录后必须运行一次以写入值,可使用
avrdude程序验证EEPROM中更改的值。
生产环境使用
- 若使用“ArduKey”自定义电路,可直接使用Production草图。
- 若使用普通的Arduino Leonardo,需修改
./src/libraries/ArduKey/ArduKey.h文件中的两行代码:- 禁用默认键盘库:将
#define ARDUKEY_ENABLE_DEFAULT_KEYBOARD_LIBRARY 1改为#define ARDUKEY_ENABLE_DEFAULT_KEYBOARD_LIBRARY 0。 - 启用Arduino Leonardo的库:将
#define ARDUKEY_ENABLE_ARDUINO_KEYBOARD_LIBRARY 0改为#define ARDUKEY_ENABLE_ARDUINO_KEYBOARD_LIBRARY 1。
- 禁用默认键盘库:将
- 修改完成后,将Production草图烧录到Arduino Leonardo。
- 连接一个按钮到数字引脚12和地之间,按下按钮可自动在连接的计算机上输入生成的OTP(可在文本编辑器中测试)。
设备连接与配置
- 通过USB线将AVR单片机开发板连接到计算机。
- 确保计算机正确识别并安装相应的驱动程序(如V - USB驱动程序)。
- 在计算机上打开设备管理器或相关软件,确认设备已成功连接并正常工作。
调试与测试
- 使用项目中的调试模块进行调试,查看输出信息了解设备工作状态。
- 根据需求测试设备各项功能,如生成OTP、存储密钥等。
- 根据测试结果调整代码或配置,确保设备正常工作。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】