El Pico Ducky es una implementación del famoso USB Rubber Ducky utilizando el microcontrolador Raspberry Pi Pico. Este proyecto open source fue desarrollado por @dbisu y está disponible en GitHub, permitiendo que cualquier Raspberry Pi Pico se convierta en un dispositivo de inyección de teclas.
Enlaces del proyecto Pico Ducky:
Este dispositivo se presenta ante el sistema operativo como un teclado USB convencional, pero ejecuta scripts predefinidos que pueden automatizar tareas, realizar ataques de ingeniería social o facilitar la recopilación de información durante auditorías de seguridad autorizadas.
⚠️ Disclaimer Ético: Este tutorial tiene fines educativos y de investigación en ciberseguridad. Solo debe utilizarse en sistemas propios o con autorización explícita. El uso no autorizado constituye un delito, por lo cual, ni el autor o la comunidad de Xsec se hace responsable del mal uso de la información brindada.
El USB Rubber Ducky es un dispositivo comercial creado por Hak5 (fundada por Darren Kitchen) que simula ser un teclado USB para ejecutar payloads automáticamente. Fue desarrollado como herramienta de pentesting y se ha convertido en un estándar de la industria.
Enlaces oficiales del USB Rubber Ducky:
El Raspberry Pi Pico es un microcontrolador desarrollado por la Raspberry Pi Foundation, lanzado en 2021. Utiliza el chip RP2040 diseñado internamente por Raspberry Pi.
Enlaces oficiales del Raspberry Pi Pico:
Distribuidores oficiales internacionales:
En España y Latinoamérica:
Pico básico: $4 USD - Básico, perfecto para este proyecto Pico W: $6 USD - Con WiFi y Bluetooth
Pico 2: $5 USD - Procesador más potente (RP2350) Pico 2W: $7 USD - Pico 2 + WiFi/Bluetooth
~$6-8 USD - Significativamente más económico que el USB Rubber Ducky original ($100.00 USD)
Ve al repositorio oficial: https://github.com/dbisu/pico-ducky/releases
Descarga la versión correspondiente a tu región/idioma:
Desconecta el Pico si está conectado
Mantén presionado el botón BOOTSEL en el Pico
Conecta el cable USB mientras mantienes presionado BOOTSEL
Suelta el botón - aparecerá como unidad RPI-RP2
Extrae el ZIP descargado y según tu modelo de Pico:
1Para Raspberry Pi Pico (modelo básico):23Copia: adafruit-circuitpython-raspberry_pi_pico-en_US-9.2.1.uf24Destino: RPI-RP2 (raíz del dispositivo)567Para Raspberry Pi Pico W (con WiFi):89Copia: adafruit-circuitpython-raspberry_pi_pico_w-en_US-9.2.1.uf210Destino: RPI-RP2 (raíz del dispositivo)111213Para Raspberry Pi Pico 2:1415Copia: adafruit-circuitpython-raspberry_pi_pico2-en_US-9.2.1.uf216Destino: RPI-RP2 (raíz del dispositivo)171819Para Raspberry Pi Pico 2W:2021Copia: adafruit-circuitpython-raspberry_pi_pico2_w-en_US-9.2.1.uf222Destino: RPI-RP2 (raíz del dispositivo)23
Una vez que el Pico se reinicie como CIRCUITPY:
Copia la carpeta lib completa a la raíz de CIRCUITPY
Copia todos los archivos *.py a la raíz de CIRCUITPY
Para configurar tu Pico Ducky por primera vez, necesitas entrar al modo setup:
El modo setup te permite:
Usando cable jumper (método oficial):
Si necesitas que el Pico Ducky NO aparezca como unidad USB para mayor sigilo:
Nota importante:
1REM Mi primer Pico Ducky - Payload de prueba2DELAY 30003GUI r4DELAY 5005STRING notepad6ENTER7DELAY 10008STRING Hola! Soy tu Pico Ducky funcionando9ENTER10STRING Payload cargado correctamente
Para más información detallada: Consulta el README oficial en https://github.com/dbisu/pico-ducky/blob/main/README.md
Una vez completada la instalación, tu Pico tendrá esta estructura:
1CIRCUITPY/2├── code.py # Script principal (ya incluido)3├── payload.dd # Tu payload personalizado4├── lib/ # Librerías necesarias (ya incluidas)5└── boot.py # Configuración de arranque
Nota: No necesitas programar nada desde cero. Todos los archivos Python necesarios ya vienen incluidos en el ZIP descargado.
1REM Esto es un comentario2DELAY 1000 # Esperar 1 segundo3STRING Hola Mundo # Escribir texto4ENTER # Presionar Enter5GUI r # Windows + R6CTRL c # Ctrl + C7ALT F4 # Alt + F48TAB # Presionar Tab9ESC # Presionar Escape
1REM Payload básico - Abrir Notepad y escribir mensaje2DELAY 20003GUI r4DELAY 5005STRING notepad6ENTER7DELAY 10008STRING Este es un mensaje del Pico Ducky!9ENTER10STRING Dispositivo creado para fines educativos.
El Pico Ducky utiliza DuckyScript, el mismo lenguaje de scripting del USB Rubber Ducky original, por lo que es 100% compatible con payloads existentes.
Los payloads deben guardarse como:
1REM Payload básico - Hola Mundo2DELAY 20003GUI r4DELAY 5005STRING notepad6ENTER7DELAY 10008STRING Hola Mundo desde mi Pico Ducky!9ENTER10STRING Este dispositivo funciona correctamente
1REM El clásico rickroll - broma inofensiva2DELAY 20003GUI r4DELAY 5005STRING https://www.youtube.com/watch?v=dQw4w9WgXcQ6ENTER
Compatibilidad: Todos los payloads de Hak5 Payloads funcionan directamente.
✅ HACER:
❌ NO HACER:
Síntomas: El Pico no es reconocido
Soluciones:
Error común: KeyError en process_ducky_command
Solución: Validar comandos antes de ejecutar
1def process_ducky_command(command):2 # Agregar validación3 if not command or len(command.strip()) == 0:4 return5 # Resto del código...
Para teclados españoles: