USB Raw Gadget, modul pro jádro, který umožňuje emulaci zařízení USB

USB Raw gadget

Již při některých příležitostech zde v blogu jsme hovořili o práci Andrey Konovalov (vývojář Google) v Linuxu, z jeho práce v oblasti včasné detekce poruch v USB ovladačích Linuxového jádra a také ve Wifi zařízeních.

Nyní v současné době pracuje vývoj nového modulu pro linuxové jádro, které pojmenoval jako „USB Raw gadget“ který popisuje jako nástroj, který umožňuje emulovat zařízení USB v uživatelském prostoru.

kromě toho zmiňuje, že se uvažuje o zařazení tohoto modulu do hlavního linuxového jádra. Gadget Google Raw již Google používá ke zjednodušení fuzzy testování zásobníku jádra USB pomocí sady nástrojů syzkaller.

Zpočátku jsem používal GadgetFS (spolu s Dummy HCD / UDC modulem) k emulaci USB zařízení pro fuzzing, ale pak to bylo přepnuto na vlastní psané rozhraní.

Pobídkou pro implementaci jiného rozhraní bylo poskytnout přímý a poněkud surový přístup k vrstvě USB Gadget pro uživatelský prostor, kde je každý požadavek USB předán do uživatelského prostoru pro odpověď.

O zařízení USB Raw Gadget

Modul se postará o přidání nového rozhraní programování do subsystému jádra s názvem „USB Gadget“ a který je vyvíjen jako alternativa k GadgetFS.

Vytvoření nového API je způsobeno potřebou přímého a nízkoúrovňového přístupu do USB subsystému Gadget z uživatelského prostoru, což umožňuje zpracování všech možných požadavků USB (GadgetFS zpracovává některé požadavky samostatně, aniž by je přenášel do uživatelského prostoru).

Gadget USB Raw se ovládá pomocí zařízení / dev / raw-gadget analogicky s / dev / gadget v GadgetFS, ale pro interakci je použito rozhraní založené na ioctl () místo pseudo-FS.

Kromě přímého zpracování všech požadavků USB procesem v uživatelském prostoru má nové rozhraní také schopnost vracet veškerá data v reakci na požadavek USB (GadgetFS kontroluje správnost deskriptorů USB a odfiltruje určité odpovědi, což narušuje detekce chyb během testu vymazání zásobníku USB).

USB Raw Gadget také umožňuje vybrat konkrétní zařízení UDC (Ovladač zařízení USB) a ovladač pro připojení, zatímco GadgetFS se připojuje k prvnímu dostupnému zařízení UDC.

Pro různé UDC jsou předvídatelné názvy koncových bodů mapovány na různé typy samostatných komunikačních kanálů v rámci jednoho zařízení.

Nakonec, pokud se o tom chcete dozvědět více, můžete zkontrolovat podrobnosti a protokol změn provedených v USB Raw Gadget Na následujícím odkazu.

Jak nainstalovat modul Raw Gadget USB v systému Linux?

Pro ty, kteří mají zájem o možnost otestovat tento modul na svém systému, mohou tak učinit podle pokynů zde podrobně popsaných.

Pro fiktivní HCD / UDC (modul, který konfiguruje virtuální zařízení USB a hostitelské řadiče, které jsou navzájem propojeny v jádře). Musíme otevřít terminál a v něm zadáme následující příkaz:

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

S tímto získáme složku s moduly, které budeme kompilovat provedením následujícího příkazu v terminálu:

cd dummy_hcd

make

A pokračujeme v jejich instalaci pomocí:

./insmod.sh

V případě, že chceme modul aktualizovat, uděláme to pomocí:

./update.sh

Nyní pro ty, kteří chtějí nainstalovat modul jádra. V terminálu získáme potřebné soubory provedením následujícího příkazu:

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

S tímto získáme složku s moduly, které budeme kompilovat provedením následujícího příkazu v terminálu:

cd dummy_hcd

make

A pokračujeme v jejich instalaci pomocí:

./insmod.sh

V případě, že chceme modul aktualizovat, uděláme to pomocí:

./update.sh

Můžete zkontrolovat práci následující odkaz. 


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Za data odpovídá: AB Internet Networks 2008 SL
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.