Tamkirina USB/IP

Karê girêdana amûrek USB-ê bi PC-ya dûr ve bi navgîniya torgilokek herêmî bi rêkûpêk derdikeve holê. Li jêr birîn dîroka lêgerînên min ên di vî alî de, û rêça çareseriyek amade ye ku li ser bingeha projeyek çavkaniya vekirî ye. USB/IP bi danasîna astengiyên ku bi baldarî ji hêla kesên cihêreng ve li ser vê rêyê hatine danîn, û her weha awayên dorpêçkirina wan.

Beşa yekem, dîrokî

Ger makîne virtual e, ev hemû hêsan e. Fonksiyona şandina USB-ê ji mêvandar ber bi makîneya virtual ve di VMWare 4.1 de xuya bû. Lê di doza min de, mifteya ewlehiyê, ku wekî WIBU-KEY tête nas kirin, diviyabû ku di demên cûda de, û ne tenê yên virtual, bi makîneyên cihêreng ve were girêdan.
Gera yekem a lêgerînê di sala 2009-an de ez birin berbi parçeyek hardware ya bi navê TrendNet TU2-NU4
Pros:

  • carinan jî dixebite

Bawer:

  • her tim naxebite. Ka em bibêjin mifteya parastinê ya Guardant Stealth II bi wê dest pê nake, bi xeletiya "amûr nayê destpêkirin" sond dixwe.
  • Nermalava ji bo birêvebirinê (bixwîne: danîn û rakirina cîhazên USB) pir xizan e. Veguheztinên rêza fermanê, otomasyon - na, me nebihîstiye. Her tişt bi destên we tê kirin. Kabûs.
  • Nermalava kontrolê ji hêla weşanê ve li hardware bixwe li ser torê digere, ji ber vê yekê ew tenê di yek beşê weşana torê de dixebite. Hûn nekarin navnîşana IP-ya perçeya hardware bi destan diyar bikin. Parçeya hardware li ser subnetek cûda ye? Hingê hûn pirsgirêkek heye.
  • Pêşdebiran dev ji cîhazê berdane, şandina raporên xeletiyê bêkêr e.

Tûra duyemîn di demek ne ewqas dûr de qewimî, û min ber bi mijara gotarê ve bir - Projeya USB / IP. Bi vebûna xwe dikşîne, nemaze ji ber ku xortên ji ReactOS Wan ajokerek ji bo Windows-ê îmze kir, ji ber vê yekê naha jî li ser x64-ê jî her tişt bêyî ti kêşan mîna moda ceribandinê dixebite. Ji bo ku gelek spas ji tîmê ReactOS re! Her tişt xweş xuya dike, em hewl bidin ku wê hîs bikin, bi rastî wusa ye? Mixabin, proje bixwe jî berdaye, û hûn nekarin piştgiriyekê bihesibînin - lê li cihê ku ya me winda nebûye, koda çavkaniyê li wir e, em ê wê fêhm bikin!

Beşa duyemîn, server-Linux

Pêşkêşkarek USB/IP ku cîhazên USB-yê li ser torê parve dike tenê dikare di OS-ya Linux-ê de were saz kirin. Welê, Linux Linux e, Debian 8 li ser makîneya virtual bi mîhengek hindiktirîn, tevgera desta standard saz bikin:

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

Ava kirin. Dûv re Înternet pêşniyar dike ku hûn hewce ne ku modula usbip dakêşin, lê - silav, yekem rakêş. Modulek weha tune. Ev e ji ber ku piraniya destanên li ser torê behsa şaxê kevn 0.1.x dikin, û di 0.2.0-ya herî paşîn de modulên usbip navên cûda hene.

Ji ber vê yekê

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

Were, em rêzikên jêrîn li /etc/modulan zêde bikin da ku gava pergalê dest pê dike wan bixweber bar bikin:

usbip-core
usbip-host
vhci-hcd

Ka em servera usbip dest pê bikin:

sudo usbipd -D

Zêdetir, şehrezayiya gerdûnî ji me re vedibêje ku usbip bi nivîsarên ku rê didin me ku serverê birêve bibin tê - nîşan bide ka ew ê kîjan cîhazê li ser torê parve bike, statûyê bibîne, û hwd. Li vir amûrek baxçê din li benda me ye - van nivîsarên di şaxê 0.2.x de, dîsa, hatine guheztin. Hûn dikarin navnîşek fermanan bi kar bînin

sudo usbip

Piştî xwendina danasîna fermanan, diyar dibe ku ji bo parvekirina cîhaza USB-ya pêwîst, usbip dixwaze nasnameya xweya Otobusê bibîne. Temaşevanên delal, di meydanê de hejmara sêyem rakin: Nasnameya Otobusê ya ku dê bide me lsusb (ew ê awayê herî eşkere xuya bike) - ne li gorî wê ye! Rastî ev e ku usbip hardware mîna hubên USB paşguh dike. Ji ber vê yekê, em ê fermana çêkirî bikar bînin:

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

Nîşe: Li vir û bêtir di navnîşan de ez ê her tiştî bi mînaka mifteya USB-ya xweya taybetî diyar bikim. Navê cîhaza we û cotê VID:PID dikare û dê cûda be. Ji min re tê gotin Wibu-Systems AG: BOX/U, VID 064F, PID 0BD7.

Naha em dikarin amûrê xwe parve bikin:

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

Hurray hevalno!

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)

Sê silav hevalno! Pêşkêşkar hardware li ser torê parve kiriye, û em dikarin wê girêbidin! Tiştê ku dimîne ev e ku meriv destpêkirina otomatîkî ya daemonê usbip li /etc/rc.local zêde bike

usbipd -D

Beşa sêyem, alîgirê xerîdar û tevlihev

Min tavilê hewl da ku amûra hevpar li ser torê bi makîneyek ku Debian li ser heman serverê dixebitînim ve girêbidim, û her tişt bêkêmasî ve girêdayî ye:

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

Ka em biçin Windows-ê. Di doza min de ew Windows Server 2008R2 Standard Edition bû. Destûra fermî ji we dipirse ku hûn pêşî ajokar saz bikin. Pêvajo bi bêkêmasî di readme-ya ku bi muwekîlê Windows-ê re tê de tête diyar kirin, em her tiştî wekî ku hatî nivîsandin dikin, her tişt bi rê ve diçe. Di heman demê de ew bêyî dijwarî li ser XP-ê jî dixebite.

Piştî ku xerîdar vekir, em hewl didin ku mifteya xwe siwar bikin:

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

Oh oh. Tiştek xelet derket. Werin em jêhatiya Google bikar bînin. Behsên perçekirî hene ku di beşa serverê de tiştek bi berdewaman re xelet e, pêşdebiran gava ku diçin guhertoya 0.2.0 guhertoya protokolê guheztin, lê di muwekîlê Win de wan ji bîr kir ku vê yekê bikin. Çareseriya pêşniyarkirî ev e ku meriv di koda çavkaniyê de domdar biguhezîne û xerîdar ji nû ve ava bike.

Lê ez bi rastî naxwazim ji bo vê pêvajoyê Visual Studio dakêşim. Lê min Hiewê kevn yê baş heye. Di koda çavkaniyê de, domdar wekî peyva ducar tê ragihandin. Ka em di pelê de li 0x00000106 bigerin, wê bi 0x00000111 veguherînin. Ji bîr nekin, rêza byte berevajî ye. Encam du pêşbirk e, em paç dikin:

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

Aaaand... belê!

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

Ev dikaribû dawiya çîrokê bûya, lê muzîk ji bo demek dirêj nelîst. Piştî ku serverê ji nû ve dest pê kir, min kifş kir ku cîhaza li ser xerîdar nehatiye danîn!

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

Navê pêger. Tewra Google-a her tiştî jî nikarîbû ji bo min bersiva vê yekê bide. Di heman demê de, fermana nîşankirina amûrên ku li ser serverê hene bi rengek rast destnîşan dike - li vir ew e, mifteya, hûn dikarin wê siwar bikin. Ez hewl didim ku ji Linux-ê vekim - ew dixebite! Ger em niha ji Windows-ê biceribînin? Oh tirsonek - ew dixebite!

Rafa dawî: tiştek di koda serverê de nehatiye nivîsandin. Dema ku amûrek parve dike, ew jimara ravekerên USB ji wê naxwîne. Û dema ku amûrek ji Linux-ê tê danîn, ev qad tê dagirtin. Mixabin, ez bi pêşveçûna Linux-ê di asta "çêkirin && sazkirinê" de nas dikim. Ji ber vê yekê, pirsgirêk bi karanîna hackek pir qirêj hate çareser kirin - lê zêdekirina /etc/rc.local

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

Beşa dawî

Piştî hin ceribandinan, ew dixebite. Daxwaz hate bidestxistin, naha mift dikare li her PC-yê were siwar kirin (û bê guman, her weha jî), di nav de li derveyî beşa weşana torê. Ger hûn bixwazin, hûn dikarin vê yekê bi karanîna skrîptek şêlê fermanê bikin. Tiştê xweş ev e ku kêf bi tevahî belaş e.
Ez hêvî dikim ku ezmûna min dê ji hackeran re bibe alîkar ku li dora rakêşa ku li ser eniya min hatiye nixumandin. Spas ji bo baldariya we!

Source: www.habr.com

Add a comment