
Un keylogger USB basado en ESP32-S3 con wifi, fácil de hacer uno mismo (DIY) con hardware ampliamente disponible.

DuckLogger es un registrador de teclas USB basado en ESP32-S3. Registra las pulsaciones de teclas en un archivo de texto y proporciona acceso inalámbrico para descargar los registros a través de un punto de acceso Wi-Fi integrado. Recrear este proyecto no requiere ninguna PCB personalizada. El hardware utilizado aquí cuesta menos de $10 en total en lugares como Aliexpress.

Accede a la interfaz web en:
http://192.168.4.1/
(Cuando esté en modo Punto de Acceso)


| ESP32-S3 | CH9350 |
|---|---|
| 5V | 5V |
| GND | GND |
| GP1 | TX |
| GP2 | RX |
El CH9350 soporta múltiples modos de operación, los cuales se configuran mediante los interruptores DIP integrados.

Coloca S0 en la posición GND (0) y mantén todos los demás interruptores en la posición opuesta (1). Esto habilita el modo Host USB, que convierte las entradas del teclado USB en datos seriales enviados a través de UART a una velocidad de baudios predeterminada de 115200.
DuckLogger está escrito en MicroPython. Flashea tu placa con el firmware de MicroPython. Encuentra instrucciones de flasheo aquí.
Después de flashear, desconecta y vuelve a conectar la placa por USB.
git clone https://github.com/Itsmmdoha/duckLogger.git
cd duckLogger
Asegúrate de que tu placa esté conectada por USB, luego ejecuta:
python flasher.py
El flasher automáticamente:
mpremote y los paquetes de MicroPython necesarios en la placaindex.html y copiará todos los archivos a la placaConecta el teclado USB al módulo HID CH9350.
Conecta el ESP32-S3 SuperMini a la PC objetivo usando un cable USB-C a USB-A.
El dispositivo automáticamente:
Si está en modo Punto de Acceso (predeterminado), conéctate al punto de acceso Wi-Fi (Contraseña predeterminada: duckPass1234) y abre:
http://192.168.4.1/
Para acceder al centro de comando y control.
Actualmente DuckLogger soporta un conjunto básico de comandos DuckyScript para inyección de payloads:
.
├── flasher.py
├── index.html
├── lib
│ ├── access_point.py
│ ├── api.py
│ ├── duckyscript.py
│ ├── keyboard.py
│ ├── key_led.py
│ ├── logger.py
│ ├── mapper.py
│ ├── microdot
│ │ ├── helpers.py
│ │ ├── __init__.py
│ │ ├── microdot.py
│ │ └── websocket.py
│ ├── queue.py
│ ├── settings.py
│ ├── uart_buffer.py
│ ├── wifi.py
│ └── wifi_radio.py
├── LICENSE
├── main.py
├── README.md
├── resources.md
└── settings.json
Este proyecto incluye Microdot de Miguel Grinberg (Licencia MIT):
https://github.com/miguelgrinberg/microdot
| Comando | Descripción | Ejemplo |
|---|
DELAY | Pausa la ejecución por un número específico de milisegundos. | DELAY 500 |
STRING | Escribe una secuencia de caracteres exactamente como está escrita. | STRING Hello, World! |
| Key Combos | Envía pulsaciones simultáneas. | CTRL SHIFT ESC or ALT i |
| Single Keys | Envía teclas especiales individuales. | ENTER or TAB |