Skip to content

Instantly share code, notes, and snippets.

@droogie
Last active January 23, 2025 04:26
Show Gist options
  • Save droogie/bc9b3b919c9f0506ddfec3de1f7a48d8 to your computer and use it in GitHub Desktop.
Save droogie/bc9b3b919c9f0506ddfec3de1f7a48d8 to your computer and use it in GitHub Desktop.
Simple Teensy Keyboard "Fuzzer"
//Simple Teensy Keyboard "Fuzzer"
#include <SoftwareSerial.h>
#define rxPin 27
#define txPin 0
#define ledPin 6
#define TIME_BETWEEN_KEYS 1000
int REGULAR_KEYS[] = {
KEY_A, KEY_B, KEY_C, KEY_D,KEY_E, KEY_F, KEY_G, KEY_H,KEY_I, KEY_J, KEY_K,
KEY_L, KEY_M, KEY_N, KEY_O, KEY_P, KEY_Q, KEY_R, KEY_S, KEY_T,KEY_U, KEY_V,
KEY_W, KEY_X, KEY_Y, KEY_Z, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6,KEY_7,
KEY_8, KEY_9, KEY_0, KEY_ENTER, KEY_ESC, KEY_BACKSPACE, KEY_TAB, KEY_SPACE,
KEY_MINUS, KEY_EQUAL, KEY_LEFT_BRACE, KEY_RIGHT_BRACE, KEY_BACKSLASH,
KEY_SEMICOLON, KEY_QUOTE, KEY_TILDE, KEY_COMMA, KEY_PERIOD, KEY_SLASH,
KEY_CAPS_LOCK, KEY_F1, KEY_F2,KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7,
KEY_F8, KEY_F9, KEY_F10, KEY_F11, KEY_F12, KEY_PRINTSCREEN, KEY_SCROLL_LOCK,
KEY_PAUSE, KEY_INSERT, KEY_HOME, KEY_PAGE_UP, KEY_DELETE, KEY_END,
KEY_PAGE_DOWN, KEY_RIGHT, KEY_LEFT, KEY_DOWN, KEY_UP, KEY_NUM_LOCK,
KEYPAD_SLASH, KEYPAD_ASTERIX, KEYPAD_MINUS, KEYPAD_PLUS, KEYPAD_ENTER,
KEYPAD_1, KEYPAD_2, KEYPAD_3, KEYPAD_4, KEYPAD_5, KEYPAD_6, KEYPAD_7,
KEYPAD_8, KEYPAD_9, KEYPAD_0, KEYPAD_PERIOD, 0
};
int MODIFIER_KEYS[] = {
MODIFIERKEY_CTRL, MODIFIERKEY_RIGHT_CTRL, MODIFIERKEY_SHIFT,
MODIFIERKEY_RIGHT_SHIFT, MODIFIERKEY_ALT,
MODIFIERKEY_RIGHT_ALT, MODIFIERKEY_GUI, MODIFIERKEY_RIGHT_GUI, 0
};
int MEDIA_KEYS[] = {
KEY_MEDIA_PLAY, KEY_MEDIA_PAUSE, KEY_MEDIA_RECORD, KEY_MEDIA_STOP,
KEY_MEDIA_REWIND, KEY_MEDIA_FAST_FORWARD, KEY_MEDIA_PREV_TRACK,
KEY_MEDIA_NEXT_TRACK, KEY_MEDIA_VOLUME_DEC, KEY_MEDIA_VOLUME_INC,
KEY_MEDIA_PLAY_PAUSE, KEY_MEDIA_PLAY_SKIP, KEY_MEDIA_MUTE,
KEY_MEDIA_EJECT, 0
};
int CONTROL_KEYS[] = {
KEY_SYSTEM_POWER_DOWN, KEY_SYSTEM_SLEEP, KEY_SYSTEM_WAKE_UP, 0
};
void setup() {
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
pinMode(ledPin, OUTPUT);
delay(5000); //delay 5 seconds just to let you unplug the damn thing
}
void loop() {
int i,e;
/* send every media key */
// for(i=0;MEDIA_KEYS[i];i++){
// Keyboard.press(MEDIA_KEYS[i]);
// Keyboard.release(MEDIA_KEYS[i]);
// delay(TIME_BETWEEN_KEYS);
// }
/* send every regular key */
// for(i=0;REGULAR_KEYS[i];i++){
// Keyboard.press(REGULAR_KEYS[i]);
// Keyboard.release(REGULAR_KEYS[i]);
// delay(TIME_BETWEEN_KEYS);
// }
/* send every regular key, with every modifier key */
for(e=0;MODIFIER_KEYS[e];e++){
Keyboard.set_modifier(MODIFIER_KEYS[e]);
for(i=0;REGULAR_KEYS[i];i++){
Keyboard.press(REGULAR_KEYS[i]);
Keyboard.release(REGULAR_KEYS[i]);
}
Keyboard.set_modifier(0);
delay(TIME_BETWEEN_KEYS);
}
/* send every regular key, with ctrl + every modifier key */
for(e=0;MODIFIER_KEYS[e];e++){
if ((MODIFIER_KEYS[e] | MODIFIERKEY_CTRL) != MODIFIERKEY_CTRL){
Keyboard.set_modifier(MODIFIER_KEYS[e] | MODIFIERKEY_CTRL);
for(i=0;REGULAR_KEYS[i];i++){
Keyboard.press(REGULAR_KEYS[i]);
Keyboard.release(REGULAR_KEYS[i]);
}
Keyboard.set_modifier(0);
}
if ((MODIFIER_KEYS[e] | MODIFIERKEY_CTRL) != MODIFIERKEY_CTRL){
Keyboard.set_modifier(MODIFIER_KEYS[e] | MODIFIERKEY_RIGHT_CTRL);
for(i=0;REGULAR_KEYS[i];i++){
Keyboard.press(REGULAR_KEYS[i]);
Keyboard.release(REGULAR_KEYS[i]);
}
Keyboard.set_modifier(0);
delay(TIME_BETWEEN_KEYS);
}
}
Keyboard.set_modifier(0);
/* ctrl + alt + every regular key */
Keyboard.set_modifier(MODIFIERKEY_ALT| MODIFIERKEY_CTRL);
for(i=0;REGULAR_KEYS[i];i++){
if (REGULAR_KEYS[i] != KEY_DELETE){ //avoid ctrl+alt+del
Keyboard.press(REGULAR_KEYS[i]);
Keyboard.release(REGULAR_KEYS[i]);
}
delay(TIME_BETWEEN_KEYS);
}
Keyboard.set_modifier(MODIFIERKEY_RIGHT_ALT | MODIFIERKEY_RIGHT_CTRL);
for(i=0;REGULAR_KEYS[i];i++){
if (REGULAR_KEYS[i] != KEY_DELETE){
Keyboard.press(REGULAR_KEYS[i]);
Keyboard.release(REGULAR_KEYS[i]);
}
}
Keyboard.set_modifier(MODIFIERKEY_ALT | MODIFIERKEY_RIGHT_CTRL);
for(i=0;REGULAR_KEYS[i];i++){
if (REGULAR_KEYS[i] != KEY_DELETE){
Keyboard.press(REGULAR_KEYS[i]);
Keyboard.release(REGULAR_KEYS[i]);
}
delay(TIME_BETWEEN_KEYS);
}
Keyboard.set_modifier(MODIFIERKEY_RIGHT_ALT | MODIFIERKEY_CTRL);
for(i=0;REGULAR_KEYS[i];i++){
if (REGULAR_KEYS[i] != KEY_DELETE){
Keyboard.press(REGULAR_KEYS[i]);
Keyboard.release(REGULAR_KEYS[i]);
}
delay(TIME_BETWEEN_KEYS);
}
Keyboard.set_modifier(0);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment