Dostępny jest USB Raw Gadget, moduł Linuksa do emulacji urządzeń USB

Andrey Konovalov z Google pracuje nad nowym modułem Gadżet USB Raw, pozwalać emulować urządzenia USB w przestrzeni użytkownika. oczekuje aplikacji w celu włączenia tego modułu do głównego jądra Linuksa. Gadżet USB Raw już stosowany w Google, aby uprościć testowanie rozmyte stosu jądra USB za pomocą narzędzi syzkaler.

Moduł dodaje do podsystemu jądra nowy interfejs programistyczny Gadżet USB i jest rozwijany jako alternatywa dla GadgetFS. Stworzenie nowego API podyktowane było koniecznością uzyskania niskopoziomowego i bezpośredniego dostępu do podsystemu USB Gadget z przestrzeni użytkownika, co umożliwiłoby mu obsługę wszystkich możliwych żądań USB (GadgetFS część żądań przetwarza samodzielnie, bez przekazywania ich do przestrzeni użytkownika) . Gadżet USB Raw jest kontrolowany przez urządzenie /dev/raw-gadget, podobne do /dev/gadget w GadgetFS, ale interakcja wykorzystuje interfejs oparty na ioctl() zamiast pseudo-FS.

Oprócz bezpośredniego przetwarzania wszystkich żądań USB przez proces w przestrzeni użytkownika, nowy interfejs oferuje także możliwość zwrócenia dowolnych danych w odpowiedzi na żądanie USB (GadgetFS sprawdza poprawność deskryptorów USB i filtruje niektóre odpowiedzi, co zapobiega wykryciu błędów podczas testów fuzz stosu USB). Raw Gadget umożliwia również wybranie konkretnego urządzenia UDC (kontrolera urządzenia USB) i sterownika, do którego chcesz się podłączyć, podczas gdy GadgetFS podłącza się do pierwszego dostępnego urządzenia UDC. Przewidywalne nazwy są przypisane do różnych UDC Punkt końcowy do oddzielenia różnych typów kanałów wymiany danych w ramach jednego urządzenia.

Źródło: opennet.ru

Dodaj komentarz