This project is an attempt to add USB HID to the default example provided with @AprilBrother's WUD (*), however it also supports any ESP32-S2 equipped with a SD Card.
The default platformio POC coming with the WUD has been extended to support HID Composite (Keyboard+Mouse) and implements a payload parser. The payload syntax is heavily inspired by whid-injector and wifi_ducky.
- Dongle is detected as composite HID (Mouse and Keyboard) + USB Pendrive
- Mounted MicroSD card allows editing files from the OS (**)
- Starts WiFi in AP Mode
- Runs a Webserver with the following endpoints:
/key
send string sequence to the keyboard/list
list available files on the SD Card/runpayload
run ducky script from the SD Card/delete
delete a file on the SD Card (**)/upload
upload a file to the SD Card (**)/*
serves the file (e.g. index.html) from SPIFFS if it exists
(**) Changes on the SD Card made from the USB Pendrive aren't immediately accessible by the ESP32-S2's SD.read()
, and vice-versa, so it is recommended to make a full power cycle after either changes are applied.
This is due to the fact that USB Pendrive accesses the SD Partition using SD.rawRead
and SD.rawWrite
, and the lack of callable flushing methods with SD
once the raw changes affect the file allocation table.
Hopefully this will be fixed in the future, but it still wasn't at the time this readme file was written (2021:09:27).
WUD is the recursive acronym for WiFi USB Disk: it is an ESP32-S2 dongle made by @AprilBrother with a Micro SDCard slot hidden in the USB port.
See the wiki page for more info.
- ESP32-S2 with SD Card
- Arduino IDE
- arduino-esp32 Core 2.0.0
- EspTinyUSB 1.3.4
- Because platformio POC only works with older packages e.g. EspTinyUSB 1.2.0 / idf 4.2
- Because I'm lazy
- Improved payload parser
- Improved web UI
- Add RNDIS/CDC-ECM (network interface)
Special thanks to @chegewara for helping me with this project and maintaining the awesome ESPTinyUSB library.