USB Raw Gadget, moduł dla jądra, który umożliwia emulację urządzeń USB

Gadżet USB Raw

Już od czasu do czasu tutaj na blogu rozmawialiśmy o pracy wykonanej przez Andrieja Konowałowa (programista Google) w Linuksie, z jego pracy nad wykrywaniem błędów w sterownikach USB jądra Linuksa, a także w urządzeniach Wi-Fi.

Obecnie pracuje nad opracowanie nowego modułu dla jądra Linuksa, który nazwał „Gadżet USB Raw” który opisuje jako narzędzie, które pozwala emulować urządzenia USB w przestrzeni użytkownika.

poza tym wspomina, że ​​rozważane jest włączenie tego modułu do głównego jądra Linuksa. Google Raw Gadget jest już używany przez Google do uproszczenia rozmytego testowania stosu jądra USB za pomocą zestawu narzędzi syzkaller.

Początkowo używałem GadgetFS (wraz z modułem Dummy HCD / UDC) do emulacji urządzeń USB do fuzzingu, ale potem został przełączony na niestandardowy napisany interfejs.

Zachętą do wdrożenia innego interfejsu było zapewnienie bezpośredniego i nieco surowego dostępu do warstwy gadżetów USB dla przestrzeni użytkownika, gdzie każde żądanie USB jest przekazywane do przestrzeni użytkownika w celu uzyskania odpowiedzi.

Informacje o gadżecie USB Raw

Moduł dba o dodanie nowego interfejsu programowanie do podsystemu jądra nazywa się „Gadżet USB” i jest rozwijany jako alternatywa dla GadgetFS.

Utworzenie nowego API wynika z potrzeby bezpośredniego i niskiego poziomu dostępu do podsystemu Gadget USB z przestrzeni użytkownika, umożliwiając przetwarzanie wszystkich możliwych żądań USB (GadgetFS przetwarza niektóre żądania samodzielnie, bez przenoszenia ich do przestrzeni użytkownika).

Gadżet USB Raw jest kontrolowany przez urządzenie / dev / raw-gadget analogicznie do / dev / gadget w GadgetFS, ale do interakcji używany jest interfejs oparty na ioctl () zamiast pseudo-FS.

Oprócz bezpośredniego przetwarzania wszystkich żądań USB przez proces w przestrzeni użytkownika, nowy interfejs ma również możliwość zwrócenia dowolnych danych w odpowiedzi na żądanie USB (GadgetFS sprawdza poprawność deskryptorów USB i odfiltrowuje określone odpowiedzi, co przeszkadza wykrycie błędów podczas testu czyszczenia stosu USB).

Gadżet USB Raw umożliwia również wybranie określonego urządzenia UDC (Sterownik urządzenia USB) i sterownik do podłączenia, podczas gdy GadgetFS łączy się z pierwszym dostępnym urządzeniem UDC.

W przypadku różnych KDPU przewidywalne nazwy punktów końcowych są mapowane na różne typy oddzielnych kanałów komunikacyjnych w ramach jednego urządzenia.

Na koniec, jeśli chcesz dowiedzieć się więcej na ten temat, możesz sprawdzić szczegóły, a także dziennik zmian wprowadzonych w gadżecie USB Raw W poniższym linku.

Jak zainstalować moduł Raw Gadget USB w systemie Linux?

Osoby zainteresowane możliwością przetestowania tego modułu w swoim systemie mogą to zrobić, postępując zgodnie z instrukcjami opisanymi tutaj.

Dla Dummy HCD / UDC (moduł konfigurujący wirtualne urządzenia USB i kontrolery hosta, które są ze sobą połączone w jądrze). Musimy otworzyć terminal iw nim wpiszemy następujące polecenie:

svn checkout https://github.com/xairy/raw-gadget/trunk/dummy_hcd

W ten sposób uzyskamy folder z modułami, które będziemy kompilować, wykonując następujące polecenie w terminalu:

cd dummy_hcd

make

I przystępujemy do ich instalacji za pomocą:

./insmod.sh

W przypadku, gdy chcemy zaktualizować moduł, robimy to za pomocą:

./update.sh

Teraz dla tych, którzy chcą zainstalować moduł jądra. W terminalu uzyskamy potrzebne do tego pliki, wykonując następujące polecenie:

svn checkout https://github.com/xairy/raw-gadget/trunk/raw_gadget

W ten sposób uzyskamy folder z modułami, które będziemy kompilować, wykonując następujące polecenie w terminalu:

cd dummy_hcd

make

I przystępujemy do ich instalacji za pomocą:

./insmod.sh

W przypadku, gdy chcemy zaktualizować moduł, robimy to za pomocą:

./update.sh

Możesz sprawdzić pracę poniższy link. 


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: AB Internet Networks 2008 SL
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.