USB Raw Gadget, en modul för kärnan som tillåter emulering av USB-enheter

USB Raw Gadget

Redan vid vissa tillfällen här i bloggen har vi pratat om det arbete som utförts av Andrey Konovalov (en Google-utvecklare) i Linux, från sitt arbete med att upptäcka fel i USB-drivrutinerna i Linux-kärnan och även i Wifi-enheter.

Nu arbetar han för närvarande med utvecklingen av en ny modul för Linux-kärnan som han har utsett till "USB Raw Gadget" som beskrivs som ett verktyg som gör det möjligt att emulera USB-enheter i användarutrymmet.

Förutom det nämner att en applikation övervägs för att inkludera denna modul i huvud Linux-kärnan. Google Raw Gadget används redan av Google för att förenkla suddig testning av USB-kärnstacken med syzkaller-verktygssatsen.

Inledningsvis använde jag GadgetFS (tillsammans med Dummy HCD / UDC-modulen) för att emulera USB-enheter för fuzzing, men sedan byttes det till ett specialskrivet gränssnitt.

Incitamentet för att implementera ett annat gränssnitt var att ge en genväg och något rå åtkomst till USB Gadget-skiktet för användarutrymme, där varje USB-begäran skickas till användarutrymmet för ett svar.

Om USB Raw Gadget

Modulen tar hand om att lägga till ett nytt gränssnitt programmering till kärnsystemet kallas "USB Gadget" och som utvecklas som ett alternativ till GadgetFS.

Skapandet av ett nytt API beror på behovet av direkt och lågnivååtkomst till Gadget USB-delsystemet från användarutrymmet, så att alla möjliga USB-förfrågningar kan behandlas (GadgetFS behandlar vissa förfrågningar på egen hand utan att överföra det till användarutrymme).

USB Raw Gadget styrs via / dev / raw-gadget-enheten analogt med / dev / gadget i GadgetFS, men ett ioctl () -baserat gränssnitt istället för en pseudo-FS används för interaktionen.

Förutom direkt behandling av alla USB-förfrågningar av en process i användarutrymmet har det nya gränssnittet också möjlighet att returnera alla data som svar på en USB-begäran (GadgetFS kontrollerar riktigheten hos USB-deskriptorer och filtrerar bort vissa svar, vilket stör felavkänning under USB-stackens rensningstest).

USB Raw Gadget låter dig också välja en specifik UDC-enhet (USB-enhetsdrivrutin) och en drivrutin för anslutning, medan GadgetFS ansluter till den första tillgängliga UDC-enheten.

För olika UDC: er mappas slutpunktsnamn till olika typer av separata kommunikationskanaler inom en enda enhet.

Slutligen, om du vill veta mer om det, kan du kontrollera detaljerna samt loggen för de ändringar som gjorts i USB Raw Gadget I följande länk.

Hur installerar jag Raw Gadget USB-modulen i Linux?

För dem som är intresserade av att kunna testa den här modulen på sitt system kan de göra det genom att följa instruktionerna som beskrivs här.

För Dummy HCD / UDC (en modul som konfigurerar virtuella USB-enheter och värdkontroller som är anslutna till varandra i kärnan). Vi måste öppna en terminal och i den ska vi skriva följande kommando:

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

Med detta ska vi hämta mappen med modulerna som vi ska kompilera genom att utföra följande kommando i terminalen:

cd dummy_hcd

make

Och vi fortsätter att installera dem med:

./insmod.sh

Om vi ​​vill uppdatera modulen gör vi det med:

./update.sh

Nu för dem som vill installera kärnmodulen. I en terminal kommer vi att erhålla nödvändiga filer för detta genom att utföra följande kommando:

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

Med detta ska vi hämta mappen med modulerna som vi ska kompilera genom att utföra följande kommando i terminalen:

cd dummy_hcd

make

Och vi fortsätter att installera dem med:

./insmod.sh

Om vi ​​vill uppdatera modulen gör vi det med:

./update.sh

Du kan kolla in arbetet följande länk. 


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för data: AB Internet Networks 2008 SL
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.