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ćava emulaciju USB uređaja u korisničkom prostoru.
pored toga spominje da se razmatra aplikacija za uključivanje ovog modula u glavni Linux kernel. Google Raw Gadget već koristi Google za pojednostavljivanje nejasnih testova snopa USB kernela pomoću syzkaller alata.
U početku sam koristio GadgetFS (zajedno sa Dummy HCD / UDC modulom) za emulaciju USB uređaja za fuzziranje, ali onda je prebačen na prilagođeni pisani interfejs.
Poticaj za implementaciju drugačijeg sučelja bio je pružanje izravnog i pomalo sirovog pristupa sloju USB gadgeta za korisnički prostor, gdje se svaki USB zahtjev prosljeđuje u korisnički prostor radi odgovora.
O USB Raw uređaju
Modul se brine za dodavanje novog sučelja programiranje na podsustav jezgra pod nazivom "USB Gadget" i koji se razvija kao alternativa GadgetFS-u.
Stvaranje novog API-a nastalo je zbog potrebe za direktnim pristupom i pristupom na niskom nivou na Gadget USB podsistem iz korisničkog prostora, omogućavajući obradu svih mogućih USB zahtjeva (GadgetFS obrađuje neke zahtjeve samostalno, bez prenošenja u korisnički prostor).
USB Raw Gadgetom se upravlja putem / dev / raw-gadget uređaja po analogiji s / dev / gadget u GadgetFS, ali za interakciju se koristi interfejs zasnovan na ioctl (), umjesto pseudo-FS.
Pored direktne obrade 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 rad otkrivanje grešaka tokom testa čišćenja USB steka).
USB Raw Gadget takođe vam omogućava da odaberete određeni UDC uređaj (Upravljački program USB uređaja) i upravljački program za povezivanje, dok se GadgetFS povezuje s prvim dostupnim UDC uređajem.
Za različite UDC-e, predvidiva imena krajnjih točaka preslikavaju se na različite tipove zasebnih komunikacijskih kanala u okviru jednog uređaja.
Konačno, ako želite znati više o tome, možete provjeriti detalje, kao i dnevnik promjena napravljenih u USB Raw Gadgetu Na sledećem linku.
Kako instalirati Raw Gadget USB modul u Linux?
Oni koji su zainteresirani za mogućnost testiranja ovog modula na svom sistemu, mogu to učiniti slijedeći ovdje opisane upute.
Za glupi HCD / UDC (modul koji konfigurira virtualne USB uređaje i kontrolere hosta 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 koju ć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 jezgra. 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 koju ć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.