Convierte tu Raspberry Pi Zero en un teclado USB (HID)

¿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.

Convierte tu Raspberry Pi Zero en un teclado USB (HID)

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):

Convierte tu Raspberry Pi Zero en un teclado USB (HID)

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):

Convierte tu Raspberry Pi Zero en un teclado USB (HID)

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.

Convierte tu Raspberry Pi Zero en un teclado USB (HID)

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)

Ver código sin formato

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.

Convierte tu Raspberry Pi Zero en un teclado USB (HID)

Computadora #1

Abra cualquier programa de edición de texto y deje el cursor en el nuevo archivo:

Convierte tu Raspberry Pi Zero en un teclado USB (HID)

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

Convierte tu Raspberry Pi Zero en un teclado USB (HID)

Resultado

El script presiona estas teclas en este orden: a – A – b – B – Espacio – c – D – Ingresar – e – f.

Convierte tu Raspberry Pi Zero en un teclado USB (HID)

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:

Convierte tu Raspberry Pi Zero en un teclado USB (HID)

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.

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

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

  1. Necesitas una placa Raspberry Pi Zero.
  2. Deberías estar familiarizado con la Raspberry Pi – lee Cómo Empezar con Raspberry Pi.
  3. 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.

3 comentarios en «Convierte tu Raspberry Pi Zero en un teclado USB (HID)»

Deja un comentario