Taming USB/IP

Travay la konekte yon aparèy USB ak yon PC aleka atravè yon rezo lokal regilyèman rive. Anba koupe a se istwa rechèch mwen an nan direksyon sa a, ak chemen an nan yon solisyon pare-fè ki baze sou yon pwojè sous louvri. USB/IP ak yon deskripsyon nan obstak yo ak anpil atansyon enstale pa divès moun sou chemen sa a, osi byen ke fason yo kontourne yo.

Premye pati, istorik

Si machin nan se vityèl, tout bagay sa a se fasil. Fonksyonalite USB voye soti nan lame a nan machin vityèl la parèt nan VMWare 4.1. Men, nan ka mwen an, kle sekirite a, idantifye kòm WIBU-KEY, te dwe konekte ak machin diferan nan diferan moman, epi yo pa sèlman moun ki vityèl.
Premye tou nan rechèch tounen nan 2009 te mennen m 'nan yon moso pyès ki nan konpitè yo rele TrendNet TU2-NU4
Pou:

  • pafwa li menm travay

Kont:

  • pa toujou travay. Ann di kle pwoteksyon Guardant Stealth II la pa kòmanse atravè li, sèmante ak erè "aparèy la pa ka kòmanse."
  • Lojisyèl pou jere (li: monte ak demonte aparèy USB) trè pòv. Bouton liy kòmand, automatisation - non, nou pa tande. Tout bagay fèt ak men ou. Kochma.
  • Lojisyèl kontwòl la chèche pyès ki nan konpitè tèt li sou rezo a pa difize, kidonk li travay sèlman nan yon segman emisyon rezo a. Ou pa ka presize adrès IP pyès ki nan konpitè a manyèlman. Èske pyès pyès ki nan konpitè sou yon lòt sous-rezo? Lè sa a, ou gen yon pwoblèm.
  • Devlopè yo te bay moute sou aparèy la, voye rapò ensèk se initil.

Dezyèm tou a te rive nan yon tan ki pa tèlman lwen, epi li mennen m 'nan sijè a nan atik la - USB/IP pwojè. Atire ak ouvèti li yo, espesyalman depi mesye yo soti nan ReactOS siyen chofè a pou yo Windows, kidonk kounye a tout bagay ap mache menm sou x64 san okenn solisyon tankou mòd tès. Yon gwo mèsi a ekip ReactOS la pou sa! Tout bagay sanble bon, ann eseye li pou wè si li vrèman vre. Malerezman, pwojè a li menm te abandone, epi sipò a difisil pou jwenn—men nou toujou ap travay sou li, kòd sous la la, n ap jwenn yon solisyon!

Pati de, sèvè-Linux

Yon sèvè USB/IP ki pataje aparèy USB sou yon rezo ka sèlman konfigire nan Linuxsistèm operasyon ki baze sou . Oke, Linux se Linux, kidonk an nou enstale li sou yon machin vityèl. Debian 8 nan konfigirasyon minimòm, mouvman men estanda:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install usbip

Etabli. Lè sa a, entènèt la sijere ke ou bezwen telechaje modil la usbip, men - alo, premye rato. Pa gen okenn modil sa yo. Sa a se paske pi fò nan manyèl yo sou rezo a refere a branch ki pi gran 0.1.x, ak nan dènye 0.2.0 modil usbip yo gen non diferan.

Se poutèt sa:

sudo modprobe usbip-core
sudo modprobe usbip-host
sudo lsmod | grep usbip

Oke, ann ajoute liy sa yo nan /etc/modules pou chaje yo otomatikman lè sistèm lan kòmanse:

usbip-core
usbip-host
vhci-hcd

Ann kòmanse sèvè usbip la:

sudo usbipd -D

Anplis de sa, bon konprann inivèsèl la di nou ke usbip vini ak scripts ki pèmèt nou jere sèvè a - montre ki aparèy li pral pataje sou rezo a, wè estati a, ak sou sa. Isit la yon lòt zouti jaden ap tann nou - scripts sa yo nan branch 0.2.x la, ankò, yo te chanje non. Ou ka jwenn yon lis kòmandman lè l sèvi avèk

sudo usbip

Apre ou fin li deskripsyon kòmandman yo, li vin klè ke yo nan lòd yo pataje aparèy USB ki nesesè yo, usbip vle chèche ID otobis li yo. Chè telespektatè, rato nimewo twa nan tèren an: Didantite otobis la ki pral ban nou lsusb (li ta sanble fason ki pi evidan) - pa kostim li! Reyalite a se ke usbip inyore pyès ki nan konpitè tankou sant USB. Se poutèt sa, nou pral sèvi ak kòmandman an entegre:

user@usb-server:~$ sudo usbip list -l
 - busid 1-1 (064f:0bd7)
   WIBU-Systems AG : BOX/U (064f:0bd7)

Remak: isit la ak pi lwen nan lis yo mwen pral dekri tout bagay lè l sèvi avèk egzanp lan nan kle USB espesifik mwen an. Non pyès ki nan konpitè ou ak pè VID:PID ka diferan epi yo pral diferan. Mwen rele Wibu-Systems AG: BOX/U, VID 064F, PID 0BD7.

Koulye a, nou ka pataje aparèy nou an:

user@usb-server:~$ sudo usbip bind --busid=1-1
usbip: info: bind device on busid 1-1: complete

Hurray, kanmarad!

user@usb-server:~$ sudo usbip list -r localhost
Exportable USB devices
======================
 - localhost
        1-1: WIBU-Systems AG : BOX/U (064f:0bd7)
           : /sys/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb1/1-1
           : Vendor Specific Class / unknown subclass / unknown protocol (ff/00/ff)

Twa bravo, kanmarad! Sèvè a pataje pyès ki nan konpitè sou rezo a, epi nou ka konekte li! Tout sa ki rete se ajoute autostart nan demon usbip la nan /etc/rc.local

usbipd -D

Pati twa, kliyan-bò ak konfizyon

Konekte aparèy pataje a ak machin k ap fonksyone sou rezo a Debian Mwen te eseye li touswit sou menm sèvè a, epi tout bagay te konekte parfe:

sudo usbip attach --remote=localhost --busid=1-1

Deplase sou WindowsNan ka pa m nan, se te Windows Server Edisyon Estanda 2008R2. Manyèl ofisyèl la mande pou enstale chofè a an premye. Pwosedi a byen dekri nan dosye readme ki vini ak kliyan Windows la; nou te swiv enstriksyon yo epi tout bagay te mache byen. Li fonksyone san pwoblèm tou sou XP.

Lè nou fin depake kliyan an, nou eseye monte kle nou an:

C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
usbip err: usbip_network.c: 121 (usbip_recv_op_common) recv op_common, -1
usbip err: usbip_windows.c: 756 (query_interface0) recv op_common
usbip err: usbip_windows.c: 829 (attach_device) cannot find device

O oh. Yon bagay ale mal. Ann sèvi ak konpetans Google la. Gen mansyone fragman ke yon bagay ki mal ak konstan yo nan pati nan sèvè, devlopè yo chanje vèsyon an pwotokòl lè yo deplase nan vèsyon 0.2.0, men nan kliyan an Win yo bliye fè sa. Solisyon yo pwopoze a se chanje konstan nan kòd sous la ak rebati kliyan an.

Men, mwen reyèlman pa vle telechaje Visual Studio pou pwosedi sa a. Men, mwen gen bon ansyen Hiew la. Nan kòd sous la, konstan an deklare kòm yon mo doub. Ann chèche 0x00000106 nan dosye a, ranplase li ak 0x00000111. Pa bliye, lòd la byte se ranvèse. Rezilta a se de match, nou patch:

[usbip.exe]
00000CBC: 06 11
00000E0A: 06 11

Aaaand... wi!

C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
new usb device attached to usbvbus port 1

Sa a te kapab nan fen istwa a, men mizik la pa t jwe pou lontan. Apre rdemare sèvè a, mwen dekouvri ke aparèy la sou kliyan an pa te monte!

C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
usbip err: usbip_windows.c: 829 (attach_device) cannot find device

E se sa. Menm Google ki konnen tout bagay la pa t ka reponn sa. Pandanstan, kòmandman pou montre aparèy ki disponib sou sèvè a montre l byen kòrèkteman—men li la, kle a, ou ka monte l. M ap eseye monte l anba. Linux - Li mache! Epi si nou eseye li anba Windows? O, laterè – li fonksyone!

Dènye pwoblèm nan: gen yon bagay ki manke nan kòd sèvè a. Lè w ap pataje yon aparèy, li pa li kantite deskriptè USB ki ladan l. Epi lè w ap monte yon aparèy anba... Linux, chan sa a ranpli. Malerezman, ak devlopman anba a Linux Mwen abitye avèk "make && make install." Kidonk pwoblèm nan te rezoud ak yon ti teknik sal—ajoute li nan /etc/rc.local.

usbip attach --remote=localhost --busid=1-1
usbip port
usbip detach --port=00

Pati final la

Apre kèk eprèv, li travay. Te vle a te reyalize, kounye a kle a ka monte nan nenpòt PC (ak demonte, nan kou, tou), ki gen ladan deyò segman nan emisyon nan rezo a. Si ou vle, ou ka fè sa lè l sèvi avèk yon script shell lòd. Ki sa ki bèl se ke plezi a se absoliman gratis.
Mwen espere ke eksperyans mwen pral ede entru yo jwenn alantou rato a ki anprint sou fwon mwen an. Mèsi pou atansyon ou!

Sous: www.habr.com

Achte hosting serye pou sit ki gen pwoteksyon DDoS, sèvè VPS VDS 🔥 Achte yon hébergement sit entènèt serye ak pwoteksyon DDoS, sèvè VPS VDS | ProHoster