Néhány alkalommal már itt a blogban beszéltünk Andrey Konovalov munkájáról (Google-fejlesztő) Linux alatt, a Linux Kernel USB-illesztőprogramok és a Wifi-eszközök hibáinak időben történő észleléséből származó munkájából.
Most éppen azon dolgozik egy új modul kifejlesztése a Linux kernel számára, amelyet megnevezett "USB Raw Gadget" amely olyan segédprogramot ír le, amely lehetővé teszi az USB-eszközök emulálását a felhasználói térben.
Amellett, hogy megemlíti, hogy egy alkalmazást fontolgatnak ennek a modulnak a fő Linux kernelbe történő felvételére. A Google Raw Gadget-et már használja a Google, hogy leegyszerűsítse az USB kernel verem fuzzy tesztelését a syzkaller eszköztárral.
Kezdetben a GadgetFS-t használtam (a Dummy HCD / UDC modullal együtt) az USB-eszközök emulálásához a fuzzinghez, de aztán átállítottam egy egyedi írott felületre.
Egy másik interfész megvalósításának ösztönzése az volt, hogy parancsikont és kissé nyers hozzáférést biztosítson az USB Gadget réteghez a felhasználói tér számára, ahol minden egyes USB-kérést továbbítanak a felhasználói helyre válaszként.
Az USB Raw Gadgetről
A modul gondoskodik egy új felület hozzáadásáról programozás a kernel alrendszerhez "USB Gadget" néven, és amelyet a GadgetFS alternatívájaként fejlesztenek.
Az új API létrehozása a közvetlen és alacsony szintű hozzáférés szükségességének köszönhető a Gadget USB alrendszerbe a felhasználói térből, lehetővé téve az összes lehetséges USB-kérés feldolgozását (a GadgetFS néhány kérést önállóan dolgoz fel, anélkül, hogy a felhasználói térbe továbbítaná).
Az USB Raw Gadget vezérlése a / dev / raw-gadget eszközön keresztül történik a / dev / gadget analógiájával a GadgetFS-ben, de az interakcióhoz pszeudo-FS helyett ioctl () alapú felületet használnak.
Amellett, hogy az összes USB-kérelmet közvetlenül feldolgozza egy folyamat a felhasználói térben, az új felület képes bármilyen adatot visszaküldeni egy USB-kérelemre adott válaszként (a GadgetFS ellenőrzi az USB-leírók helyességét és kiszűr bizonyos válaszokat, ami zavarja a hiba észlelése az USB-verem törlési tesztje során).
Az USB Raw Gadget lehetővé teszi egy adott UDC eszköz kiválasztását is (USB eszközillesztő) és egy illesztőprogram a csatlakozáshoz, míg a GadgetFS az első elérhető UDC eszközhöz csatlakozik.
Különböző UDC-k esetén a kiszámítható végpontok nevei különféle típusú külön kommunikációs csatornákhoz vannak leképezve egyetlen eszközön belül.
Végül, ha többet szeretne tudni róla, ellenőrizheti a részleteket, valamint az USB Raw Gadget-ben végrehajtott módosítások naplóját A következő linken.
Hogyan kell telepíteni a Raw Gadget USB modult a Linux-ba?
Azok számára, akik szeretnék kipróbálni ezt a modult a rendszerükön, megtehetik az itt részletezett utasítások követésével.
Dummy HCD / UDC esetén (egy modul, amely konfigurálja a kernelen egymással összekapcsolt virtuális USB-eszközöket és gazdagép-vezérlőket). Meg kell nyitnunk egy terminált, és beírjuk a következő parancsot:
svn checkout https://github.com/xairy/raw-gadget/trunk/dummy_hcd
Ezzel megkapjuk a mappát a modulokkal, amelyeket lefordítunk, a következő parancs végrehajtásával a terminálban:
cd dummy_hcd make
És tovább telepítjük őket:
./insmod.sh
Ha frissíteni akarjuk a modult, akkor ezt tesszük:
./update.sh
Most azok számára, akik telepíteni akarják a kernelmodult. Egy terminálban a következő parancs végrehajtásával megszerezzük az ehhez szükséges fájlokat:
svn checkout https://github.com/xairy/raw-gadget/trunk/raw_gadget
Ezzel megkapjuk a mappát a modulokkal, amelyeket lefordítunk, a következő parancs végrehajtásával a terminálban:
cd dummy_hcd make
És tovább telepítjük őket:
./insmod.sh
Ha frissíteni akarjuk a modult, akkor ezt tesszük:
./update.sh
Be tudja ellenőrizni a munkát a következő link.