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 menehi tandha tangan marang supire Windows, dadi saiki kabeh bisa digunakake sanajan ing x64 tanpa solusi kaya mode uji coba. Matur nuwun sanget kanggo tim ReactOS kanggo kuwi! Kabeh muni apik banget, ayo dicoba kanggo ndeleng apa pancen bener. Sayange, proyek kasebut dhewe wis ditinggal, lan dhukungan angel digoleki—nanging kita isih nggarap, kode sumber wis ana, kita bakal ngerteni!

Bagian loro, server-Linux

Server USB/IP sing nuduhake piranti USB liwat jaringan mung bisa disetel ing LinuxOS berbasis Linux. Nah, Linux iku Linux, mula ayo instal ing mesin virtual. Debian 8 ing 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

Sambungake piranti sing dienggo bareng menyang mesin sing mbukak jaringan Debian Aku langsung nyoba ing server sing padha, lan kabeh nyambung kanthi sampurna:

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

Ayo padha nerusake menyang WindowsIng kasusku iku Windows Server Edisi Standar 2008R2. Pandhuan resmi njaluk supaya driver diinstal dhisik. Prosedure wis diterangake kanthi apik ing readme sing kalebu ing klien Windows; kita wis nuruti pandhuane lan kabeh bisa digunakake kanthi becik. Uga bisa digunakake tanpa masalah ing XP.

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

Lan mung kuwi wae. Malah Google sing ngerti kabeh ora bisa njawab iki. Sauntara kuwi, prentah kanggo nampilake piranti sing kasedhiya ing server nuduhake kanthi bener—iki kuncine, sampeyan bisa masang. Aku nyoba masang saka ngisor Linux - Iku berhasil! Lan yen kita nyoba saka ngisor Windows?Wah, ngeri banget – pancen berhasil!

Masalah pungkasan: ana sing ilang ing kode server. Nalika nuduhake piranti, piranti kasebut ora maca jumlah deskriptor USB saka piranti kasebut. Lan nalika masang piranti saka ngisor Linux, kolom iki wis diisi. Sayange, karo pangembangan sing lagi ditindakake Linux Aku wis kenal karo "make && make install." Dadi masalah iki dirampungake nganggo hack sing rada reged—ditambahake menyang /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

Tuku hosting sing dipercaya kanggo situs kanthi proteksi DDoS, server VPS VDS 🔥 Tuku hosting situs web sing bisa dipercaya nganggo proteksi DDoS, server VPS VDS | ProHoster