Već u nekim prilikama ovdje na blogu razgovarali smo o radu Andreja Konovalova (Googleov programer) u Linuxu, iz svog rada na pravovremenom otkrivanju kvarova na USB upravljačkim programima Linux kernela, kao i na Wifi uređajima.
Sada trenutno radi na tome razvoj novog modula za Linux kernel koji je nazvao "USB sirovi uređaj" koji se opisuje kao uslužni program koji omogućuje oponašanje USB uređaja u korisničkom prostoru.
osim toga spominje da se razmatra aplikacija za uključivanje ovog modula u glavnu jezgru Linuxa. Google Raw Gadget već koristi Google za pojednostavljivanje nejasnih testova snopa USB kernela pomoću syzkaller alata.
U početku sam koristio GadgetFS (zajedno s Dummy HCD / UDC modulom) za oponašanje USB uređaja za fuzzing, ali onda je prebačeno na prilagođeno napisano sučelje.
Poticaj za implementaciju drugačijeg sučelja bio je pružiti izravan i pomalo neobrađen pristup sloju USB gadgeta za korisnički prostor, gdje se svaki USB zahtjev prosljeđuje u korisnički prostor radi odgovora.
O USB sirovom uređaju
Modul se brine za dodavanje novog sučelja programiranje na podsustav jezgre pod nazivom "USB Gadget" i koji se razvija kao alternativa GadgetFS-u.
Stvaranje novog API-a nastalo je zbog potrebe za izravnim pristupom i pristupom na niskoj razini na Gadget USB podsustav iz korisničkog prostora, omogućujući obradu svih mogućih USB zahtjeva (GadgetFS obrađuje neke zahtjeve samostalno, bez prenošenja u korisnički prostor).
USB Raw Gadgetom upravlja se putem / dev / raw-gadget uređaja analogno s / dev / gadget u GadgetFS, ali za interakciju se koristi sučelje temeljeno na ioctl (), umjesto pseudo-FS.
Uz izravnu obradu svih USB zahtjeva procesom u korisničkom prostoru, novo sučelje također ima mogućnost vraćanja svih podataka kao odgovor na USB zahtjev (GadgetFS provjerava ispravnost USB deskriptora i filtrira određene odgovore, što ometa otkrivanje pogrešaka tijekom testa brisanja USB steka).
USB Raw Gadget također vam omogućuje odabir određenog UDC uređaja (Upravljački program USB uređaja) i pokretački program za povezivanje, dok se GadgetFS povezuje s prvim dostupnim UDC uređajem.
Za različite UDC-ove, predvidivi nazivi krajnjih točaka preslikavaju se na različite tipove zasebnih komunikacijskih kanala unutar jednog uređaja.
Konačno, ako želite znati više o tome, možete provjeriti detalje, kao i zapisnik promjena napravljenih u USB Raw Gadgetu U sljedećem linku.
Kako instalirati Raw Gadget USB modul u Linux?
Oni koji su zainteresirani za mogućnost testiranja ovog modula na svom sustavu, mogu to učiniti slijedeći ovdje navedene upute.
Za glupi HCD / UDC (modul koji konfigurira virtualne USB uređaje i kontrolere domaćina koji su međusobno povezani unutar jezgre). Moramo otvoriti terminal i u njega ćemo upisati sljedeću naredbu:
svn checkout https://github.com/xairy/raw-gadget/trunk/dummy_hcd
Ovim ćemo dobiti mapu s modulima koje ćemo kompajlirati izvršavanjem sljedeće naredbe u terminalu:
cd dummy_hcd make
I nastavljamo ih instalirati sa:
./insmod.sh
U slučaju da želimo ažurirati modul, radimo to sa:
./update.sh
Sada za one koji žele instalirati modul jezgre. U terminalu ćemo dobiti potrebne datoteke za to izvršavanjem sljedeće naredbe:
svn checkout https://github.com/xairy/raw-gadget/trunk/raw_gadget
Ovim ćemo dobiti mapu s modulima koje ćemo kompajlirati izvršavanjem sljedeće naredbe u terminalu:
cd dummy_hcd make
I nastavljamo ih instalirati sa:
./insmod.sh
U slučaju da želimo ažurirati modul, radimo to sa:
./update.sh
Možete provjeriti rad sljedeći link.