Ngilangi USB/IP

Tugas nyambungake piranti USB menyang PC remot liwat jaringan lokal ajeg muncul. Ing ngisor potongan kasebut yaiku riwayat telusuranku ing arah iki, lan dalan menyang solusi sing wis siap adhedhasar proyek sumber terbuka. USB/IP kanthi katrangan babagan alangan sing dipasang kanthi teliti dening macem-macem wong ing dalan iki, uga cara kanggo ngubengi.

Bagian siji, sajarah

Yen mesin virtual, kabeh iki gampang. Fungsi USB forwarding saka host menyang mesin virtual katon ing VMWare 4.1. Nanging ing kasusku, kunci keamanan, sing diidentifikasi minangka WIBU-KEY, kudu disambungake menyang mesin sing beda-beda ing wektu sing beda-beda, lan ora mung virtual.
Babak pisanan panelusuran bali ing 2009 mimpin kula menyang Piece saka hardware disebut TrendNet TU2-NU4
Pros:

  • kadhangkala uga bisa

Cons:

  • ora tansah bisa. Ayo ujar manawa kunci perlindungan Guardant Stealth II ora diwiwiti, sumpah kanthi kesalahan "piranti ora bisa diwiwiti."
  • Piranti lunak kanggo ngatur (waca: masang lan unmounting piranti USB) banget miskin. Ngalih baris perintah, otomatisasi - ora, kita durung krungu. Kabeh wis rampung karo tangan. Ngimpi elek.
  • Piranti lunak kontrol nggoleki hardware dhewe ing jaringan kanthi siaran, saengga mung bisa digunakake ing siji segmen siaran jaringan. Sampeyan ora bisa nemtokake alamat IP piranti kanthi manual. Apa hardware ing subnet sing beda? Banjur sampeyan duwe masalah.
  • Pangembang wis nyerah ing piranti kasebut, ngirim laporan bug ora ana gunane.

Babak kapindho kedadeyan ing wektu sing ora adoh, lan nuntun aku menyang topik artikel - Proyek USB/IP. Narik kawigaten karo openness sawijining, utamanΓ© wiwit wong lanang saka ReactOS Dheweke mlebu driver kanggo Windows, dadi saiki malah ing x64 kabeh bisa digunakake tanpa crutches kaya mode test. Kanggo sing akeh matur nuwun kanggo tim ReactOS! Kabeh muni ayu, ayo padha nyoba kanggo aran iku, apa tenan? Sayange, proyek kasebut uga ditinggalake, lan sampeyan ora bisa ngandelake dhukungan - nanging ing ngendi kita ora ilang, kode sumber ana, kita bakal ngerti!

Bagian loro, server-Linux

Server USB/IP sing nuduhake piranti USB liwat jaringan mung bisa diinstal ing OS basis Linux. Ya, Linux yaiku Linux, instal Debian 8 ing mesin virtual kanthi konfigurasi minimal, gerakan tangan standar:

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

Madeg. Banjur Internet nyaranake sampeyan kudu ngundhuh modul usbip, nanging - hello, rake pisanan. Ora ana modul kasebut. Iki amarga paling saka manual ing jaringan nuduhake cabang lawas 0.1.x, lan ing paling anyar 0.2.0 modul usbip duwe jeneng beda.

Mulane:

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

Ayo, tambahake baris ing ngisor iki menyang / etc / modul kanggo mbukak kanthi otomatis nalika sistem diwiwiti:

usbip-core
usbip-host
vhci-hcd

Ayo miwiti server usbip:

sudo usbipd -D

Luwih, kawicaksanan universal ngandhani yen usbip dilengkapi skrip sing ngidini kita ngatur server - nuduhake piranti apa sing bakal dituduhake ing jaringan, ndeleng status, lan liya-liyane. Ing kene alat kebon liyane nunggu kita - skrip iki ing cabang 0.2.x, maneh, wis diganti jeneng. Sampeyan bisa njaluk dhaptar printah nggunakake

sudo usbip

Sawise maca katrangan prentah kasebut, dadi jelas yen kanggo nuduhake piranti USB sing dibutuhake, usbip pengin ngerteni ID Bus. Dear pamirso, rake nomer telu ing arene: ID Bus sing bakal menehi kita lsusb (iku bakal katon cara sing paling jelas) - ora cocog karo dheweke! Kasunyatan iku usbip nglirwakake hardware kaya hub USB. Mulane, kita bakal nggunakake printah sing dibangun:

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

Cathetan: ing kene lan luwih akeh ing dhaptar, aku bakal njlèntrèhaké kabeh nganggo conto tombol USB tartamtu. Jeneng hardware lan pasangan VID:PID sampeyan bisa lan bakal beda. Tambang diarani Wibu-Systems AG: BOX/U, VID 064F, PID 0BD7.

Saiki kita bisa nuduhake piranti kita:

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

Hore, kanca!

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)

Telu surak, kanca! Server wis nuduhake hardware liwat jaringan, lan kita bisa nyambung! Kabeh sing isih ana yaiku nambah autostart daemon usbip ing /etc/rc.local

usbipd -D

Bagian telu, sisih klien lan mbingungake

Aku langsung nyoba nyambungake piranti sing dienggo bareng liwat jaringan menyang mesin sing nganggo Debian ing server sing padha, lan kabeh wis nyambung kanthi sampurna:

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

Ayo pindhah menyang Windows. Ing kasusku yaiku Windows Server 2008R2 Standard Edition. Manual resmi njaluk sampeyan nginstal driver dhisik. Prosedur kasebut kanthi sampurna diterangake ing readme sing kalebu karo klien Windows, kita nindakake kabeh kaya sing ditulis, kabeh bisa ditindakake. Uga dianggo ing XP tanpa kangelan.

Sawise mbongkar klien, kita nyoba masang kunci:

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. Ana sing salah. Ayo nggunakake katrampilan Google. Ana fragmentary nyebutake manawa ana sing salah karo konstanta; ing bagean server, pangembang ngganti versi protokol nalika pindhah menyang versi 0.2.0, nanging ing klien Win dheweke kelalen nindakake iki. Solusi sing diusulake yaiku ngganti konstanta ing kode sumber lan mbangun maneh klien.

Nanging aku pancene ora pengin ndownload Visual Studio kanggo prosedur iki. Nanging aku duwe Hiew lawas sing apik. Ing kode sumber, konstanta kasebut diumumake minangka tembung dobel. Ayo goleki 0x00000106 ing file kasebut, ganti nganggo 0x00000111. Aja lali, urutan byte mbalikke. Asil ana rong pertandhingan, kita tambal:

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

Aaaa... iya!

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

Iki bisa uga wis pungkasan crita, nanging musik ora muter kanggo dangu. Sawise rebooting server, aku nemokake manawa piranti ing klien ora dipasang!

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

Mekaten. Malah Google sing ngerti kabeh ora bisa njawab iki kanggo aku. Lan ing wektu sing padha, printah kanggo nampilake piranti sing kasedhiya ing server cukup bener - ing kene, tombol, sampeyan bisa masang. Aku nyoba kanggo Gunung saka Linux - iku bisa! Apa yen kita nyoba saiki saka Windows? Oh medeni - kerjane!

The rake pungkasan: soko iki ora ditulis ing kode server. Nalika nuduhake piranti, iku ora maca nomer deskriptor USB saka iku. Lan nalika masang piranti saka Linux, kolom iki diisi. Sayange, aku kenal karo pangembangan Linux ing level "make && make install". Mulane, masalah iki ditanggulangi nggunakake hack rada reged - nambah kanggo /etc/rc.local

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

bagean pungkasan

Sawise sawetara cobaan, kerjane. Sing dikarepake wis digayuh, saiki kunci kasebut bisa dipasang ing PC apa wae (lan ora dipasang, mesthi uga), kalebu ing njaba segmen siaran jaringan. Yen sampeyan pengin, sampeyan bisa nindakake iki nggunakake script shell printah. Sing apik yaiku kesenengan pancen gratis.
Muga-muga pengalamanku bisa mbantu para peretas ngubengi garu sing dicithak ing bathukku. Matur nuwun kanggo perhatian sampeyan!

Source: www.habr.com

Add a comment