¿Alguna vez has querido convertir tu Raspberry Pi Zero en algo más que una simple placa? ¡Pues estás de suerte! En este artículo te enseñaremos cómo convertir tu Raspberry Pi Zero en un teclado USB (HID) para que puedas realizar todo tipo de trucos y experimentos. Sigue leyendo para descubrir cómo sacar el máximo provecho de tu miniordenador.
En este proyecto aprenderás cómo convertir una placa Raspberry Pi Zero en un teclado USB o HID (Dispositivo de interfaz humana). Después de seguir unos sencillos pasos, puedes escribir un script en Python que hará que tu Pi actúe como un teclado USB.
Primero, mire el vídeo de demostración.
Requisitos:
- Usted necesita uno Placa Raspberry Pi Zero
- Deberías estar familiarizado con Raspberry Pi; lee Introducción a Raspberry Pi.
- Debe tener el sistema operativo Raspbian instalado en su Raspberry Pi; lea «Instalar, activar y conectar Raspbian Lite usando SSH».
Si estás interesado en la domótica y quieres aprender más sobre Node-RED, Raspberry Pi, ESP8266 y Arduino, te recomiendo descargar mi curso: “Construye un sistema de domótica por 0”.
Piezas requeridas
Para este proyecto necesitarás un Placa Raspberry Pi Zero. Importante: Este tutorial no funcionará con una placa Raspberry Pi 3.
1. Activar módulos y controladores
Los siguientes pasos para preparar la placa Pi Zero se basan en las instrucciones de iSticktoit. Primero debe ejecutar estos tres comandos para habilitar los módulos y controladores necesarios:
pi@raspberrypi:~ $ echo "dtoverlay=dwc2" | sudo tee -a /boot/config.txt pi@raspberrypi:~ $ echo "dwc2" | sudo tee -a /etc/modules pi@raspberrypi:~ $ sudo echo "libcomposite" | sudo tee -a /etc/modules
2. Configurando el gadget
Ahora necesitas definir tu Pi Zero (dispositivo HID) como un teclado USB. La configuración se realiza mediante ConfiguraciónFSun sistema de archivos virtual en /sistema/.
Creando el script de configuración
La configuración es volátil, por lo que debe ejecutarse en cada inicio. Crea un nuevo archivo llamado isticktoit_usb En /usr/bin/ y hacerlo ejecutable:
pi@raspberrypi:~ $ sudo touch /usr/bin/isticktoit_usb pi@raspberrypi:~ $ sudo chmod +x /usr/bin/isticktoit_usb
Luego, debe ejecutar este script automáticamente al inicio. Abierto /etc/rc.local con este comando:
pi@raspberrypi:~ $ sudo nano /etc/rc.local
Agregue lo siguiente antes de la línea con contenido Salir 0:
/usr/bin/isticktoit_usb # libcomposite configuration
Así es como debería verse su archivo (para guardar el archivo, presione Ctrl+X seguido de Y y Enter):
3. Creando el gadget
Para este proyecto, convertiremos la Raspberry Pi en un teclado USB, pero también puedes usarlo como adaptador serial, adaptador Ethernet y almacenamiento masivo. Abra el archivo con:
pi@raspberrypi:~ $ sudo nano /usr/bin/isticktoit_usb
Deje los valores predeterminados. Sin embargo, también puede cambiar el número de serie, el fabricante y el nombre del producto para adaptarlo a sus necesidades específicas.
#!/bin/bash cd /sys/kernel/config/usb_gadget/ mkdir -p isticktoit cd isticktoit echo 0x1d6b > idVendor # Linux Foundation echo 0x0104 > idProduct # Multifunction Composite Gadget echo 0x0100 > bcdDevice # v1.0.0 echo 0x0200 > bcdUSB # USB2 mkdir -p strings/0x409 echo "fedcba9876543210" > strings/0x409/serialnumber echo "Tobias Girstmair" > strings/0x409/manufacturer echo "iSticktoit.net USB Device" > strings/0x409/product mkdir -p configs/c.1/strings/0x409 echo "Config 1: ECM network" > configs/c.1/strings/0x409/configuration echo 250 > configs/c.1/MaxPower # Add functions here mkdir -p functions/hid.usb0 echo 1 > functions/hid.usb0/protocol echo 1 > functions/hid.usb0/subclass echo 8 > functions/hid.usb0/report_length echo -ne \x05\x01\x09\x06\xa1\x01\x05\x07\x19\xe0\x29\xe7\x15\x00\x25\x01\x75\x01\x95\x08\x81\x02\x95\x01\x75\x08\x81\x03\x95\x05\x75\x01\x05\x08\x19\x01\x29\x05\x91\x02\x95\x01\x75\x03\x91\x03\x95\x06\x75\x08\x15\x00\x25\x65\x05\x07\x19\x00\x29\x65\x81\x00\xc0 > functions/hid.usb0/report_desc ln -s functions/hid.usb0 configs/c.1/ # End functions ls /sys/class/udc > UDC
Así es como debería verse su archivo al final (para guardar el archivo, presione Ctrl+X seguido de Y y Enter):
4. Secuencia de comandos de Python
Después de preparar su Raspberry Pi Zero, conéctelo a una computadora portátil o de escritorio a través del puerto micro USB utilizado para datos y periféricos. Este puerto micro USB proporciona energía al Pi Zero y sirve como teclado para la computadora conectada.
Establezca una conexión SSH a su Pi y use el siguiente comando para crear un nuevo script de Python:
pi@raspberrypi:~ $ nano RPi_Keyboard_Example.py
Copie y pegue el siguiente script de Python en su Raspberry Pi.
#!/usr/bin/env python3
NULL_CHAR = chr(0)
def write_report(report):
with open('/dev/hidg0', 'rb+') as fd:
fd.write(report.encode())
# Press a
write_report(NULL_CHAR*2+chr(4)+NULL_CHAR*5)
# Release keys
write_report(NULL_CHAR*8)
# Press SHIFT + a = A
write_report(chr(32)+NULL_CHAR+chr(4)+NULL_CHAR*5)
# Press b
write_report(NULL_CHAR*2+chr(5)+NULL_CHAR*5)
# Release keys
write_report(NULL_CHAR*8)
# Press SHIFT + b = B
write_report(chr(32)+NULL_CHAR+chr(5)+NULL_CHAR*5)
# Press SPACE key
write_report(NULL_CHAR*2+chr(44)+NULL_CHAR*5)
# Press c key
write_report(NULL_CHAR*2+chr(6)+NULL_CHAR*5)
# Press d key
write_report(NULL_CHAR*2+chr(7)+NULL_CHAR*5)
# Press RETURN/ENTER key
write_report(NULL_CHAR*2+chr(40)+NULL_CHAR*5)
# Press e key
write_report(NULL_CHAR*2+chr(8)+NULL_CHAR*5)
# Press f key
write_report(NULL_CHAR*2+chr(9)+NULL_CHAR*5)
# Release all keys
write_report(NULL_CHAR*8)
demostración
Probémoslo: cuando conecte el Pi Zero a la computadora n.° 1, después de unos segundos verá un mensaje de advertencia o un sonido que indica que un teclado se ha conectado correctamente.
A veces puede aparecer un mensaje de advertencia «Dispositivo USB no reconocido». En mis pruebas, descubrí que puedes ignorar este mensaje de advertencia y tu Pi Zero funcionará como un teclado sin ninguna configuración adicional ni instalación de controladores. Así que puedes seguir adelante y funcionará sin ningún problema.
Computadora #1
Abra cualquier programa de edición de texto y deje el cursor en el nuevo archivo:
Computadora #2
Establece una conexión SSH a tu Pi Zero y ejecuta el script Python que creaste anteriormente:
pi@raspberrypi:~ $ sudo python3 RPi_Keyboard_Example.py
Resultado
El script presiona estas teclas en este orden: a – A – b – B – Espacio – c – D – Ingresar – e – f.
Puede personalizar el script de Python para que actúe como teclado y presione cualquier otra cadena.
Nota: El Pi Zero también funciona como teclado cuando se conecta a una computadora Mac o Linux sin ninguna otra modificación.
Un paso mas alla
Puede ver la Tabla 12: Página de teclado/teclado en este USB OCULTO PDF para encontrar el ID de cada clave que asignaría en el script de Python.
Aquí hay una sección de la Tabla 12. La columna ID de uso (dic) contiene el número que necesita usar en su secuencia de comandos Python para hacer referencia a una pulsación de tecla:
Por ejemplo, si cambias el número marcado en rojo, puedes simular una pulsación de tecla diferente:
write_report(NULL_CHAR*2+chr(4)+NULL_CHAR*5)
El número 4 corresponde a la tecla del teclado A. En la columna ID de uso (dic.) encontrará los números de la secuencia de teclas que desee. Si usas números, 5 corresponde bEtcétera…
Envolver
Este método le permite utilizar Raspberry Pi Zero como relleno de contraseñas o utilizarlo como herramienta de inyección de pulsaciones de teclas. Esto le permite crear fácilmente programas que realizan cientos de pulsaciones de teclas por minuto.
También te pueden gustar algunos de nuestros proyectos favoritos de Raspberry Pi:
- Sistema de alerta por correo electrónico cuando cambia de ubicación con Raspberry Pi y módulo GPS
- Node-RED con cámara Raspberry Pi (tomar fotos)
- Transmisión de vídeo con la cámara Raspberry Pi
- Construir un sistema domótico
Gracias por leer.
Convierte tu Raspberry Pi Zero en un teclado USB (HID)
Vídeo de Demostración
En este proyecto aprenderás cómo convertir una placa Raspberry Pi Zero en un teclado USB o HID (Dispositivo de Interfaz Humana). Siguiendo algunos pasos simples, puedes escribir un script en Python para hacer que tu Pi actúe como un teclado USB.
Prerrequisitos
- Necesitas una placa Raspberry Pi Zero.
- Deberías estar familiarizado con la Raspberry Pi – lee Cómo Empezar con Raspberry Pi.
- Debes tener instalado el sistema operativo Raspbian en tu Raspberry Pi – lee Instalación de Raspbian Lite, Habilitación y Conexión con SSH.
Si te gusta la domótica y quieres aprender más sobre Node-RED, Raspberry Pi, ESP8266 y Arduino, te recomiendo que descargues mi curso: Construye un Sistema de Domótica por $100.
Partes Necesarias
Para este proyecto necesitarás una placa Raspberry Pi Zero. Importante: este tutorial no funciona con una placa Raspberry Pi 3.
1. Habilitar Módulos y Controladores
Los siguientes pasos para preparar la placa Pi Zero se basan en las instrucciones de iSticktoit. Primero, necesitas ejecutar estos tres comandos para habilitar los módulos y controladores necesarios:
Comando 1
Comando 2
Comando 3
2. Configurar el Gadget
Ahora, debes definir tu Pi Zero (gadget HID) como un teclado USB. La configuración se realiza a través de ConfigFS, un sistema de archivos virtual ubicado en /sys/.
Creación del script de configuración
La configuración es volátil, por lo que debe ejecutarse en cada inicio. Crea un nuevo archivo llamado isticktoit_usb en /usr/bin/ y hazlo ejecutable:
Comando 1
Comando 2
Luego, debes ejecutar este script automáticamente al iniciar. Abre /etc/rc.local con este comando:
Comando 1
3. Crear el Gadget
Para este proyecto, convertiremos la Raspberry Pi en un teclado USB, pero también podrías hacer que funcione como un adaptador Serial, adaptador Ethernet y almacenamiento masivo. Abre el archivo con:
Comando 1
Deja los valores predeterminados, pero también podrías cambiar el número de serie, el fabricante y el nombre del producto para que se ajusten a tus necesidades específicas.
Código de ejemplo
4. Script en Python
Después de preparar tu Raspberry Pi Zero, conéctala a una computadora portátil o de escritorio a través del puerto micro USB que se utiliza para datos y periféricos. Ese micro USB alimentará la Pi Zero y actuará como un teclado para la computadora conectada.
Establece una conexión SSH con tu Pi y usa el siguiente comando para crear un nuevo script en Python:
Comando 1
Copia y pega el siguiente script de Python en tu Raspberry Pi:
Código de ejemplo
Para ver el código completo, visita la fuente original aquí.
Resultados
El script simulará la pulsación de teclas en el orden mencionado: a – A – b – B – tecla de Espacio – c – D – tecla de Enter/Retorno – e – f.
Puedes personalizar el script de Python para que actúe como un teclado y presione cualquier otra secuencia de caracteres.
Nota: la Pi Zero también actúa como un teclado cuando se conecta a una máquina Mac o Linux sin cambios adicionales.
Conclusiones
Este método te permite hacer que la Raspberry Pi Zero actúe como un rellenador de contraseñas o utilízala como una herramienta de inyección de pulsaciones de teclas. De esta forma, puedes crear fácilmente programas que escriben cientos de pulsaciones de teclas por minuto.
Si te ha gustado este proyecto, también te pueden interesar algunos de nuestros proyectos de Raspberry Pi más populares:
- Sistema de Alerta por Correo Electrónico al Cambiar de Ubicación con Raspberry Pi y Módulo GPS.
- Node-RED con Cámara Raspberry Pi (Tomar Fotos).
- Transmisión de Video con Cámara Raspberry Pi.
- Construye un Sistema de Domótica.
Agradecemos tu lectura.
¡Vaya truco genial! Nunca pensé que se pudiera convertir la Raspberry Pi Zero en un teclado USB. Definitivamente voy a probarlo, gracias por la idea.
¡Qué buena idea! Me encantaría probarlo con mi propia Raspberry Pi Zero. ¡Gracias por compartir el tutorial!
¡Wow, muy interesante! Nunca se me habría ocurrido convertir mi Raspberry Pi Zero en un teclado USB. Definitivamente voy a intentarlo, gracias por el tutorial.