奇技妙用之Digispark
在人脸模糊测试中的应用
前言
在联想庞大的产品线中,相当一部分设备具有人脸识别功能,其中就有移动端的设备配备了人脸解锁功能,因此,联想全球安全实验室为了保障联想及其客户的信息和数据安全,预防和应对各种网络安全威胁和风险,需要对人脸生物识别安全进行深入全面的研究,发现产品生物识别中存在的潜在风险。
在日常人脸生物识别研究工作中,设备的人脸解锁失败几次之后,经常需要手动输入设备锁屏密码,从而影响效率和测试自动化的效果。因此,需要一种能自动输入设备锁屏密码的解决方案。
安全论坛上,有人使用Digispark板子来爆破一些移动应用安全设置中的锁定密码,因此,这个廉价的板子可以用于解决人脸解锁失败后需要手动输入密码的问题。只要思想不滑坡,方法总比困难多。
关于Digispark
Digispark是一种基于ATtiny85微控制器的微型开发板,通常用于创建小型嵌入式项目和原型设计。它由Digistump公司推出,是一个低成本、小巧的开发工具,适用于简单的电子项目、物联网设备、小型自动化等应用。
Digispark开发板的特点包括:
1. 微型尺寸:Digispark非常小巧,形状大小类似于一个USB插头,可以方便地连接到计算机或其他设备。
2. 基于ATtiny85:Digispark使用了ATtiny85微控制器,具有8KB的闪存和512字节的SRAM,适合一些小规模项目。
3. USB接口:Digispark通过USB接口进行供电和通信,可以作为USB设备与计算机通信,也可以通过USB进行编程。
4. 支持Arduino IDE:Digispark可以使用Arduino IDE进行编程,这使得开发者可以使用熟悉的Arduino编程语言和库来开发项目。
5. 开源:Digispark的设计是开源的,用户可以访问其GitHub仓库获取相关资料和资源。
6. 适用于简单项目:由于资源有限,Digispark适用于一些较为简单的嵌入式项目,例如小型传感器应用、自动化控制等。
Digispark开发板在淘宝只需要几十块钱就可以拥有,如下图所示:
环境搭建
系统:windows10
软件:Arduino 18.05
1.下载Digispark兼容板的描述文件
http://digistump.com/package_digistump_index.json 直接在“首选项” --> "开发板管理器网址"的输入框中填入上面的URL。
2.下载开发板需要的包
在上方的菜单中找到工具-->开发板-->开发板管理器,在“类型”下选择“贡献”一栏,下载并安装Digistump AVR Boards。
注意:下载时请科学上网,否则速度可能会很慢。
3.下载驱动并安装
https://link.zhihu.com/?target=https%3A//github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip
然后插上板子,在设备管理器中可以看到开发板。
Digispark 库使用
API 函数原型
主要应用的API函数原型只有以下几个:
·delay()函数
void delay(long milli)延迟,以毫秒为单位。
·sendKeyStroke()函数
void sendKeyStroke(byte KeyStroke) 发送按键并释放;
void sendKeyStroke(byte KeyStroke, byte modifiers) 发送带有关联按键和释放,第一个参数是主键,第二个按键是组合键。
·sendKeyPress() 函数
void sendKeyPress(byte KeyPress) 发送按键但不释放,若要释放再次调用此函数并令参数KeyPress =0;
void sendKeyPress(byte KeyPress, byte modifiers) 发送带有关联按键,但不释放,若要释放需再次调用此函数并令参数KeyPress = 0。
键盘键码
由于我们需要模拟键盘的按键输入,因此要知道键盘每个键的对应键码。
键 键码
A 65 B 66 C 67 D 68 E 69 F 70 G 71 H 72 I 73 J 74 K 75 L 76 M 77 N 78 O 79 P 80
Q 81 R 82 S 83 T 84 U 85 V 86 W 87 X 88 Y 89 Z 90 0 48 1 49 2 50 3 51 4 52 5 53
6 54 7 55 8 56 9 57 回车键 13 制表键 9 空格键 32 退格键 8 删除键 46 逗号键 44 句点键 46
上箭头键 38 下箭头键 40 左箭头键 37 右箭头键 39 功能键 F1 112 功能键 F2 113 功能键 F3
114 功能键 F4 115 功能键 F5 116 功能键 F6 117 功能键 F7 118 功能键 F8 119 功能键 F9
120 功能键 F10 121 功能键 F11 122 功能键 F12 123
-----------------------------------------
- `KEY_ENTER`: 回车键
- `KEY_TAB`: 制表键
- `KEY_ESC`: Esc键
- `KEY_SPACE`: 空格键
- `KEY_BACKSPACE`: 退格键
- `KEY_DELETE`: 删除键
- `KEY_ARROW_UP`: 上箭头键
- `KEY_ARROW_DOWN`: 下箭头键
- `KEY_ARROW_LEFT`: 左箭头键
- `KEY_ARROW_RIGHT`: 右箭头键
- `KEY_F1` 到 `KEY_F12`: 功能键 F1 到 F12
编写流程
对于手机来说,真实键盘按键输入密码的顺序是:space -- space --- 密码 --- enter ---密码 --- enter
根据这个顺序来编写简易代码:
void setup() {
// put your setup code here, to run once:
DigiKeyboard.delay(2000);
DigiKeyboard.sendKeyStroke(KEY_SPACE);
DigiKeyboard.delay(300);
DigiKeyboard.sendKeyStroke(KEY_SPACE);
DigiKeyboard.delay(300);
DigiKeyboard.println("1234");
DigiKeyboard.delay(300);
DigiKeyboard.println("2345");
DigiKeyboard.delay(300);
DigiKeyboard.println("9876");
DigiKeyboard.sendKeyStroke(KEY_ENTER);
}
void loop() {
// put your main code here, to run repeatedly:
}
编写完成后烧录到板子中,记得需要热插拔一次。
END
往期精彩合集
长
按
关
注
联想GIC全球安全实验室(中国)
原文始发于微信公众号(联想全球安全实验室):奇技妙用之Digispark在人脸模糊测试中的应用
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论