USB Raw Gadget, isang module para sa Kernel na nagbibigay-daan sa pagtulad sa mga USB device

USB Raw Gadget

Mayroon na sa ilang mga okasyon dito sa blog napag-usapan natin ang tungkol sa gawaing ginawa ni Andrey Konovalov (isang developer ng Google) sa Linux, mula sa kanyang trabaho sa napapanahong pagtuklas ng mga pagkabigo sa mga USB driver ng Linux Kernel at pati na rin sa mga Wifi device.

Ngayon ay kasalukuyang nagtatrabaho siya ang pagbuo ng isang bagong module para sa Linux Kernel na pinangalanan niya bilang "USB Raw Gadget" na naglalarawan bilang isang utility na nagbibigay-daan sa pagtulad sa mga USB device sa puwang ng gumagamit.

Bukod doon binabanggit na ang isang aplikasyon ay isinasaalang-alang para sa pagsasama ng modyul na ito sa pangunahing Linux kernel. Ginagamit na ng Google Raw Gadget ng Google upang gawing simple ang malabo na pagsubok ng USB kernel stack gamit ang syzkaller toolkit.

Sa una ay gumagamit ako ng GadgetFS (kasama ang modyong Dummy HCD / UDC) upang tularan ang mga USB device para sa pagsunog, ngunit pagkatapos ay inilipat ito sa isang pasadyang nakasulat na interface.

Ang insentibo para sa pagpapatupad ng ibang interface ay upang magbigay ng isang direkta at medyo raw na pag-access sa layer ng USB Gadget para sa puwang ng gumagamit, kung saan ang bawat kahilingan sa USB ay ipinapasa sa puwang ng gumagamit para sa isang tugon.

Tungkol sa USB Raw Gadget

Pinangangalagaan ng module ang pagdaragdag ng isang bagong interface programming sa subsystem ng kernel tinawag na "USB Gadget" at alin ay binuo bilang isang kahalili sa GadgetFS.

Ang paglikha ng isang bagong API ay dahil sa pangangailangan para sa direkta at mababang antas ng pag-access sa Gadget USB subsystem mula sa puwang ng gumagamit, pinapayagan ang lahat ng posibleng mga kahilingan sa USB na maproseso (pinoproseso ng GadgetFS ang ilang mga kahilingan sa sarili nitong, nang hindi inililipat ito sa puwang ng gumagamit).

Ang USB Raw Gadget ay kinokontrol sa pamamagitan ng / dev / raw-gadget device sa pamamagitan ng pagkakatulad sa / dev / gadget sa GadgetFS, ngunit ang isang ioctl () batay interface, sa halip na isang pseudo-FS, ay ginagamit para sa pakikipag-ugnayan.

Bilang karagdagan sa direktang pagproseso ng lahat ng mga kahilingan sa USB ng isang proseso sa puwang ng gumagamit, ang bagong interface ay mayroon ding kakayahang ibalik ang anumang data bilang tugon sa isang kahilingan sa USB (Sinusuri ng GadgetFS ang kawastuhan ng mga tagapaglaraw ng USB at sinasala ang ilang mga tugon, na nakakasagabal pagtuklas ng error sa panahon ng pagsubok ng stack ng USB stack).

Pinapayagan ka rin ng USB Raw Gadget na pumili ng isang tukoy na UDC aparato (USB device driver) at isang driver upang kumonekta, habang ang GadgetFS ay kumokonekta sa unang magagamit na UDC device.

Para sa iba't ibang mga UDC, mahuhulaan ang mga pangalan ng endpoint ay nai-map sa iba't ibang mga uri ng magkakahiwalay na mga channel ng komunikasyon sa loob ng isang solong aparato.

Panghuli, kung nais mong malaman ang tungkol dito, maaari mong suriin ang mga detalye, pati na rin ang tala ng mga pagbabago na ginawa sa USB Raw Gadget Sa sumusunod na link.

Paano i-install ang module ng Raw Gadget USB sa Linux?

Para sa mga interesadong masubukan ang modyul na ito sa kanilang system, magagawa nila ito sa pamamagitan ng pagsunod sa mga detalyadong tagubilin dito.

Para sa Dummy HCD / UDC (isang module na nag-configure ng mga virtual USB device at host Controller na konektado sa bawat isa sa loob ng kernel). Dapat naming buksan ang isang terminal at dito ay mai-type namin ang sumusunod na utos:

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

Sa pamamagitan nito makukuha namin ang folder na may mga module na isasama namin sa pamamagitan ng pagpapatupad ng sumusunod na utos sa terminal:

cd dummy_hcd

make

At nagpatuloy kaming mai-install ang mga ito sa:

./insmod.sh

Kung sakaling nais naming i-update ang module, ginagawa namin ito sa:

./update.sh

Ngayon para sa mga nais mag-install ng kernel module. Sa isang terminal ay kukuha kami ng mga kinakailangang file para dito sa pamamagitan ng pagpapatupad ng sumusunod na utos:

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

Sa pamamagitan nito makukuha namin ang folder na may mga module na isasama namin sa pamamagitan ng pagpapatupad ng sumusunod na utos sa terminal:

cd dummy_hcd

make

At nagpatuloy kaming mai-install ang mga ito sa:

./insmod.sh

Kung sakaling nais naming i-update ang module, ginagawa namin ito sa:

./update.sh

Maaari mong suriin ang trabaho sa ang sumusunod na link. 


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: AB Internet Networks 2008 SL
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.