Digispark制作BadUSB
目录
开发环境
Digispark开发板
Arduino
Digistump.Drivers
**
Digispark开发板
首先我们需要一块Digispark板,我这次是上天猫买的

![Image [1]](https://img2020.cnblogs.com/blog/2263438/202101/2263438-20210131200015748-673592560.png)
Digistump.Drivers环境安装
然后安装开发环境: Arduino IDE和Digistump.Drivers
百度链接(提取码:qg3u )
首先来安装 Digistump.Drivers,解压完后打开DPinst64.exe(32位系统请安装DPinst.exe),默认安装就行
![Image [2]](https://img2020.cnblogs.com/blog/2263438/202101/2263438-20210131200015980-226805932.png)
安装完后会提示可以使用了
![Image [3]](https://img2020.cnblogs.com/blog/2263438/202101/2263438-20210131200016214-431324306.png)
Arduino IDE安装
然后接着是Arduino IDE,打开后点击文件->首选项->添加开发板管理器网址
加入:http://digistump.com/package_digistump_index.json
![Image [4]](https://img2020.cnblogs.com/blog/2263438/202101/2263438-20210131200016399-434118670.png)
添加完后,我们去安装Digistump AVR Boards(需要**),工具->开发板->开发板管理器
![Image [5]](https://img2020.cnblogs.com/blog/2263438/202101/2263438-20210131200016683-460273921.png)
没用**就会出现下载时出错
如果有**还是显示error可以去官网安装其他版本的Arduino IDE
![Image [6]](https://img2020.cnblogs.com/blog/2263438/202101/2263438-20210131200016915-1194842414.png)
搜索Digistump,安装Digistump AVR Boards(安装位置在红框处,此处为已安装)
![Image [7]](https://img2020.cnblogs.com/blog/2263438/202101/2263438-20210131200017113-1811287731.png)
点击工具->开发板->Digistump VAR Boards->Digispark(Default 16.5mhz)
![Image [8]](https://img2020.cnblogs.com/blog/2263438/202101/2263438-20210131200017325-948026365.png)
编写代码
到了此处,我们可以来编写代码了,我这边实现的是shutdown的功能
可以参考一下官方
![Image [9]](https://img2020.cnblogs.com/blog/2263438/202101/2263438-20210131200017509-1434828436.png)
#include "DigiKeyboard.h"
void setup() {
// put your setup code here, to run once:
DigiKeyboard.delay(300);
DigiKeyboard.sendKeyStroke(KEY_R,MOD_GUI_LEFT);
DigiKeyboard.delay(600);
DigiKeyboard.sendKeyStroke(KEY_SPACE,MOD_CONTROL_LEFT);
DigiKeyboard.delay(600);
DigiKeyboard.println("shutdown -s -t 10");
}
void loop() {
// put your main code here, to run repeatedly:
}
按键参考:
#define MOD_CONTROL_LEFT (1<<0)
#define MOD_SHIFT_LEFT (1<<1)
#define MOD_ALT_LEFT (1<<2)
#define MOD_GUI_LEFT (1<<3)
#define MOD_CONTROL_RIGHT (1<<4)
#define MOD_SHIFT_RIGHT (1<<5)
#define MOD_ALT_RIGHT (1<<6)
#define MOD_GUI_RIGHT (1<<7)
#define KEY_A 4
#define KEY_B 5
#define KEY_C 6
#define KEY_D 7
#define KEY_E 8
#define KEY_F 9
#define KEY_G 10
#define KEY_H 11
#define KEY_I 12
#define KEY_J 13
#define KEY_K 14
#define KEY_L 15
#define KEY_M 16
#define KEY_N 17
#define KEY_O 18
#define KEY_P 19
#define KEY_Q 20
#define KEY_R 21
#define KEY_S 22
#define KEY_T 23
#define KEY_U 24
#define KEY_V 25
#define KEY_W 26
#define KEY_X 27
#define KEY_Y 28
#define KEY_Z 29
#define KEY_1 30
#define KEY_2 31
#define KEY_3 32
#define KEY_4 33
#define KEY_5 34
#define KEY_6 35
#define KEY_7 36
#define KEY_8 37
#define KEY_9 38
#define KEY_0 39
#define KEY_ENTER 40
#define KEY_SPACE 44
#define KEY_F1 58
#define KEY_F2 59
#define KEY_F3 60
#define KEY_F4 61
#define KEY_F5 62
#define KEY_F6 63
#define KEY_F7 64
#define KEY_F8 65
#define KEY_F9 66
#define KEY_F10 67
#define KEY_F11 68
#define KEY_F12 69
#define KEY_ARROW_UP 82
#define KEY_ARROW_DOWN 81
#define KEY_ARROW_LEFT 80
#define KEY_ARROW_RIGHT 79
编译成功
![Image [14]](https://img2020.cnblogs.com/blog/2263438/202101/2263438-20210131200017681-1425247543.png)
上传成功,Arduino提示我们需要在60秒内插入开发板(如果之前就插着就再拔一次)
![Image [14]](https://img2020.cnblogs.com/blog/2263438/202101/2263438-20210131200017860-37642825.png)
写入成功会提示running:100% complete
![Image [15]](https://img2020.cnblogs.com/blog/2263438/202101/2263438-20210131200018027-1975382848.png)
测试:

(效果很强劲,刚把自己打关机了
下次打算结合CS做看看
参考:
https://blog.csdn.net/qq_36374896/article/details/107108016
https://github.com/digistump/DigistumpArduino

浙公网安备 33010602011771号