Inicialmente estaba usando GadgetFS (junto con el módulo Dummy HCD / UDC) para realizar la emulación de dispositivos USB para fuzzing, pero luego se cambió a una nterfaz escrita personalizada.
El incentivo para implementar una interfaz diferente era proporcionar un acceso directo y algo en bruto a la capa Gadget USB para el espacio de usuario, donde cada solicitud USB se pasa al espacio de usuario para obtener una respuesta.
Sobre USB Raw Gadget
El módulo se encarga de agregar una nueva interfaz de programación al subsistema del kernel llamada “USB Gadget” y que se está desarrollando como una alternativa a GadgetFS.
La creación de una nueva API se debe a la necesidad de obtener acceso directo y de bajo nivel al subsistema Gadget USB desde el espacio del usuario, lo que permite procesar todas las solicitudes USB posibles (GadgetFS procesa algunas solicitudes por sí solo, sin transferirlo al espacio del usuario).
USB Raw Gadget se controla a través del dispositivo /dev/raw-gadget por analogía con /dev/gadget en GadgetFS, pero se utiliza una interfaz basada en ioctl(), en lugar de un pseudo-FS, para la interacción.
Además del procesamiento directo de todas las solicitudes de USB por un proceso en el espacio del usuario, la nueva interfaz también tiene la capacidad de devolver cualquier dato en respuesta a una solicitud de USB (GadgetFS verifica la exactitud de los descriptores de USB y filtra ciertas respuestas, lo que interfiere con la detección de errores durante la prueba de borrado de la pila USB).
USB Raw Gadget también permite seleccionar un dispositivo UDC específico (controlador de dispositivo USB) y un controlador para conectar, mientras que GadgetFS se conecta al primer dispositivo UDC disponible.
Para diferentes UDC, los nombres de puntos finales predecibles se asignan a diferentes tipos de canales de comunicación separados dentro de un solo dispositivo.
Fuente : linuxadictos
- Visto: 1411