Proyecto educativo y de laboratorio: demostrador de captura y reenvio de eventos de teclado usando 2 ESP32-S3 y un bot de Telegram.
Diseño pensado para aprendizaje, pruebas controladas y auditoría interna en entornos autorizados.
El sistema captura los eventos HID del teclado real mediante un ESP32-S3 receptor, los reenvía por serial cruzado al ESP32-S3 emisor, y este finalmente envía las pulsaciones a un bot de Telegram, sin necesidad de servidor propio.
Componentes del sistema:
- ESP32-S3 Receptor → Captura HID por USB-OTG.
- ESP32-S3 Emisor → Recibe los datos por UART y los envía a Telegram.
- Bot de Telegram → Recibe los logs en tiempo real.
Para la comunicación entre el receptor y el emisor, se usa una conexión serial cruzada entre los GPIO:
| Receptor (ESP32-S3) | Emisor (ESP32-S3) |
|---|---|
| GPIO17 (TX) | GPIO18 (RX) |
| GPIO18 (RX) | GPIO17 (TX) |
| GND | GND |
- Abre Telegram y busca @BotFather.
- Ejecuta
/newboty sigue los pasos. - Copia el token del bot.
- En el ESP32-S3 emisor, configura:
- Token del bot
- ID de chat (obténlo hablando con
@userinfobot)
El emisor enviará cada tecla capturada al chat configurado.
- Instala ESP-IDF y sigue la guia oficial para configurar el entorno.
- Copia la carpeta
receptor/a tu workspace IDF. - Agrega la dependencia HID (desde la raiz del proyecto receptor):
cd receptor idf.py add-dependency "espressif/usb_host_hid"
- Conecta tu ESP32-S3 (modelo con soporte USB OTG) y compila/fluye el firmware:
idf.py build idf.py flash
- Abre la carpeta
emisor/en Arduino IDE. - Selecciona la placa “ESP32-S3 Dev Module” o el modelo exacto que uses.
- Configura el puerto correcto y sube el sketch directamente al dispositivo.
- SSID y password de tu red WiFi
- Token del bot de Telegram
- Chat ID donde recibirás los mensajes
- Sube el sketch al dispositivo.
---
Este proyecto es exclusivamente para fines educativos, pruebas en laboratorio y auditoría interna. No debe usarse para espiar, monitorizar o capturar datos en equipos o redes sin consentimiento expreso del propietario. El autor no se responsabiliza por el uso indebido. Antes de ejecutar cualquier código, asegúrate de tener permiso y de cumplir la ley local y las políticas de tu organización.

