USBNova/USBNova.ino

93 lines
3.1 KiB
Arduino
Raw Normal View History

2022-06-30 12:19:02 -07:00
/*
* Note2: If your flash is not formatted as FAT12 previously, you could format it using
* follow sketch https://github.com/adafruit/Adafruit_SPIFlash/tree/master/examples/SdFat_format
*/
#include "config.h"
#include "debug.h"
#include "src/keyboard/keyboard.h"
#include "src/led/led.h"
#include "src/msc/msc.h"
#include "src/selector/selector.h"
2022-07-03 10:13:32 -07:00
#include "src/attack/attack.h"
#include "src/preferences/preferences.h"
2022-07-06 14:32:55 -07:00
#include "src/duckparser/duckparser.h"
enum Mode {
SETUP, ATTACK
};
Mode mode;
void setup() {
// Initialize all the things
debug_init();
msc::init();
2022-06-30 12:19:02 -07:00
selector::init();
led::init();
preferences::load();
2022-07-06 15:30:53 -07:00
2022-07-06 13:24:23 -07:00
// Read the mode from the toggle switch position
mode = selector::read() ? SETUP : ATTACK;
// Preferences
led::setEnable(preferences::ledEnabled());
2022-07-06 13:11:25 -07:00
keyboard::setLocale(locale::get(preferences::getDefaultLayout().c_str()));
2022-07-06 14:21:07 -07:00
keyboard::setID(preferences::getHidVid(), preferences::getHidPid(), preferences::getHidRev());
msc::setID(preferences::getMscVid().c_str(), preferences::getMscPid().c_str(), preferences::getMscRev().c_str());
2022-07-06 14:32:55 -07:00
duckparser::setDefaultDelay(preferences::getDefaultDelay());
2022-07-06 15:30:53 -07:00
// Start Keyboard
keyboard::init();
2022-07-06 14:21:07 -07:00
// Start USB Drive
2022-07-06 15:30:53 -07:00
if (preferences::mscEnabled() || (mode == SETUP)) msc::enableDrive();
2022-07-06 14:21:07 -07:00
// ========== Setup Mode ========== //
if (mode == SETUP) {
2022-07-06 15:56:20 -07:00
led::setColor(preferences::getSetupColor()); // Set LED to blue
while (true) {
if (selector::changed()) {
mode = selector::read() ? SETUP : ATTACK;
if (mode == ATTACK) {
2022-07-06 15:56:20 -07:00
preferences::load(); // Reload the settings (in case the main script path changed)
2022-07-06 15:56:20 -07:00
led::setColor(preferences::getAttackColor()); // Turn LED red
attack::start(); // Start keystroke injection attack
led::setColor(preferences::getSetupColor()); // Set LED to blue
mode = SETUP;
}
}
delay(100);
}
}
// ========== Setup Mode ========== //
else if (mode == ATTACK) {
2022-07-06 15:56:20 -07:00
delay(1000); // Wait 1s to give the computer time to initialize the keyboard
2022-07-03 09:41:25 -07:00
2022-07-06 15:56:20 -07:00
led::setColor(preferences::getAttackColor()); // Turn LED red
attack::start(); // Start keystroke injection attack
led::setColor(preferences::getIdleColor()); // Turn LED green
while (true) {
if (selector::changed()) {
mode = selector::read() ? SETUP : ATTACK;
if (mode == ATTACK) {
2022-07-06 15:56:20 -07:00
led::setColor(preferences::getAttackColor()); // Turn LED red
attack::start(); // Start keystroke injection attack
led::setColor(preferences::getIdleColor()); // Turn LED green
}
}
delay(100);
}
}
2022-07-03 09:41:25 -07:00
debugln("[Finished]");
}
2022-07-03 10:13:32 -07:00
void loop() {}