Andrei Konovalov de Google está desarrollando un nuevo módulo , emular dispositivos USB en espacio de usuario. Está en revisión para incluir este módulo en el núcleo principal de Linux. USB Raw Gadget ya en Google para simplificar las pruebas de fuzzing de la pila USB del núcleo mediante la herramienta .
El módulo añade una nueva interfaz de programación en la subcapacidad del núcleo y se desarrolla como una alternativa a GadgetFS. La creación de una nueva API se debió a la necesidad de obtener acceso de bajo nivel y directo a la subcapacidad USB Gadget desde el espacio de usuario, lo que permite procesar todas las solicitudes USB posibles (GadgetFS maneja algunas solicitudes por sí mismo, sin pasar al espacio de usuario). La gestión de USB Raw Gadget se realiza a través del dispositivo /dev/raw-gadget, de forma similar a /dev/gadget en GadgetFS, pero para la interacción se utiliza una interfaz basada en ioctl(), no un pseudo-sistema de archivos.
Además del manejo directo de todas las solicitudes USB por parte de un proceso en el espacio de usuario, la nueva interfaz también se distingue por la capacidad de devolver cualquier dato en respuesta a una solicitud USB (GadgetFS realiza una verificación de validez de los descriptores USB y filtra ciertas respuestas, lo que dificulta la identificación de errores durante las pruebas de fuzzing de la pila USB). Raw Gadget también permite seleccionar un dispositivo UDC (Controlador de Dispositivo USB) específico y un controlador para adjuntar, mientras que GadgetFS se adjunta al primer dispositivo UDC disponible. A diferentes UDC se les asignan nombres predecibles para diferenciar diferentes tipos de canales de comunicación de datos dentro de un mismo dispositivo.
Fuente: opennet.ru
