Zännbar USB / IP

D'Aufgab fir en USB-Gerät mat engem Remote PC iwwer e lokalen Netzwierk ze verbannen, reegelméisseg entsteet. Ënnert dem Schnëtt ass d'Geschicht vu menge Recherchen an dëser Richtung, an de Wee zu enger fäerdeger Léisung baséiert op engem Open-Source Projet USB / IP mat enger Beschreiwung vun den Hindernisser, déi suergfälteg vu verschiddene Leit op dësem Wee installéiert sinn, wéi och Weeër fir se ze ëmgoen.

Deel XNUMX, historesch

Wann d'Maschinn virtuell ass, ass dëst alles einfach. D'Funktionalitéit vum USB Forwarding vum Host op déi virtuell Maschinn erschéngt am VMWare 4.1. Awer a mengem Fall muss de Sécherheetsschlëssel, identifizéiert als WIBU-KEY, zu verschiddenen Zäiten op verschidde Maschinnen verbonne sinn, an net nëmme virtuell.
Déi éischt Ronn vun der Sich zréck an 2009 huet mech zu engem Stéck Hardware genannt TrendNet TU2-NU4
Pros:

  • heiansdo klappt et souguer

Muecht:

  • funktionnéiert net ëmmer. Loosst eis soen datt de Guardant Stealth II Schutzschlëssel net doduerch ufänkt, geschwuer mam Feeler "den Apparat kann net gestart ginn."
  • D'Software fir d'Gestioun (liesen: Montage an Unmounting USB Apparater) ass extrem schlecht. Kommandozeilschalter, Automatioun - nee, mir hunn net héieren. Alles gëtt mat Ären Hänn gemaach. Nightmare.
  • D'Kontrollsoftware sicht no der Hardware selwer am Netz duerch Sendung, sou datt et nëmmen an engem Emissiounssegment vum Netz funktionnéiert. Dir kënnt d'IP Adress vum Stéck Hardware net manuell uginn. Ass d'Stéck vun der Hardware op engem anere Subnet? Da hutt Dir e Problem.
  • D'Entwéckler hunn den Apparat opginn, Feeler Berichter schécken ass nëtzlos.

Déi zweet Ronn ass geschitt an enger Zäit net sou wäit, an huet mech zum Thema vum Artikel gefouert - USB / IP Projet. Attraktéiert mat senger Oppenheet, virun allem well d'Kärelen aus ReactOS Si hunn e Chauffer fir Windows ënnerschriwwen, also elo och op x64 funktionnéiert alles ouni Krutchen wéi Testmodus. Fir déi vill Merci un d'ReactOS Team! Alles kléngt schéin, loosst eis probéieren et ze spieren, ass et wierklech esou? Leider ass de Projet selwer och opginn, an Dir kënnt net op Ënnerstëtzung zielen - awer wou eis net verschwonnen ass, ass de Quellcode do, mir wäerten et erausfannen!

Zweeten Deel, Server-Linux

En USB / IP Server deen USB-Geräter iwwer e Netzwierk deelt kann nëmmen an engem Linux-baséierten OS installéiert ginn. Gutt, Linux ass Linux, installéiert Debian 8 op der virtueller Maschinn an enger minimaler Konfiguratioun, Standard Handbewegung:

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

Etabléiert. Da proposéiert den Internet datt Dir den Usbip Modul eroflueden musst, awer - Moien, éischt Rake. Et gëtt keen esou Modul. Dëst ass well déi meescht Handbücher um Netz op déi eeler Branche 0.1.x bezéien, an an der leschter 0.2.0 hunn d'USbip Moduler verschidden Nimm.

Dofir:

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

Gutt, loosst eis déi folgend Zeilen op /etc/modules addéieren fir se automatesch ze lueden wann de System ufänkt:

usbip-core
usbip-host
vhci-hcd

Loosst eis den Usbip Server starten:

sudo usbipd -D

Weider seet déi universal Wäisheet eis datt usbip mat Skripte kënnt, déi et eis erlaben de Server ze verwalten - weisen wéi en Apparat et iwwer d'Netz deelt, de Status gesinn, a sou weider. Hei waart en anert Gaartinstrument op eis - dës Skripte an der 0.2.x Branche sinn erëm ëmbenannt ginn. Dir kënnt eng Lëscht vun Kommandoen kréien benotzt

sudo usbip

Nodeems Dir d'Beschreiwung vun de Kommandoen gelies hutt, gëtt et kloer datt fir den erfuerderlechen USB-Gerät ze deelen, usbip wëll seng Bus ID erausfannen. Léif Zuschauer, Rake Nummer dräi an der Arena: de Bus ID deen eis gëtt lsusb (et schéngt am meeschte offensichtlech Manéier) - passt hir net! De Fakt ass datt usbip Hardware wéi USB Hubs ignoréiert. Dofir benotze mir den agebaute Kommando:

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

Notiz: hei a weider an den Oplëschtungen beschreiwen ech alles mam Beispill vu mengem spezifesche USB-Schlëssel. Ären Hardwarenumm a VID:PID Paar kënnen a wäerten anescht sinn. Mine heescht Wibu-Systems AG: BOX/U, VID 064F, PID 0BD7.

Elo kënne mir eisen Apparat deelen:

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

Hurra, Komeroden!

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)

Dräi Prost, Komeroden! De Server huet d'Hardware iwwer de Reseau gedeelt, a mir kënnen et verbannen! Alles wat bleift ass den Autostart vum usbip Daemon an /etc/rc.local ze addéieren

usbipd -D

Deel dräi, Client-Säit a konfus

Ech hunn direkt probéiert de gemeinsame Gerät iwwer dem Netz mat enger Maschinn ze verbannen déi Debian um selwechte Server leeft, an alles perfekt verbonnen:

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

Loosst eis op Windows weidergoen. A mengem Fall war et Windows Server 2008R2 Standard Edition. Déi offiziell Handbuch freet Iech de Chauffer als éischt z'installéieren. D'Prozedur ass perfekt an der Readme beschriwwen, déi mam Windows Client abegraff ass, mir maachen alles wéi geschriwwen, alles funktionnéiert. Et funktionnéiert och op XP ouni Schwieregkeeten.

Nodeems mir de Client ausgepackt hunn, probéieren mir eise Schlëssel ze montéieren:

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. Eppes ass falsch gaangen. Loosst eis d'Google Fäegkeet benotzen. Et gi fragmentaresch Ernimmungen datt eppes falsch ass mat de Konstanten; am Server Deel hunn d'Entwéckler d'Protokollversioun geännert wann se op d'Versioun 0.2.0 geplënnert sinn, awer am Win Client hu se dëst vergiess. Déi proposéiert Léisung ass d'Konstante am Quellcode z'änneren an de Client opzebauen.

Awer ech wëll wierklech net Visual Studio fir dës Prozedur eroflueden. Mee ech hunn déi gutt al Hiew. Am Quellcode gëtt d'Konstante als duebel Wuert deklaréiert. Loosst eis no 0x00000106 an der Datei kucken, ersetzen se mat 0x00000111. Vergiesst net, d'Byte Uerdnung ass ëmgedréint. D'Resultat ass zwee Matcher, mir patchen:

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

Aaah... jo!

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

Dëst kéint d'Enn vun der Geschicht gewiescht sinn, awer d'Musek huet net laang gespillt. Nodeems ech de Server nei gestart hunn, hunn ech entdeckt datt den Apparat um Client net montéiert ass!

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

Dat ass alles. Och den allbewosste Google konnt dëst net fir mech beäntweren. A gläichzäiteg weist de Kommando fir d'Apparater, déi um Server verfügbar sinn, ganz korrekt ze weisen - hei ass et, de Schlëssel, Dir kënnt et montéieren. Ech probéieren aus Linux ze montéieren - et funktionnéiert! Wat wa mir elo vu Windows probéieren? Oh Horror - et funktionnéiert!

Déi lescht Rake: eppes gouf net am Servercode geschriwwen. Wann Dir en Apparat deelt, liest et net d'Zuel vun den USB Descriptoren dovun. A wann Dir en Apparat vu Linux montéiert, gëtt dëst Feld ausgefëllt. Leider sinn ech vertraut mat Linux Entwécklung um Niveau "Make && Make Install". Dofir gouf de Problem mat engem zimlech dreckeg Hack geléist - addéieren op /etc/rc.local

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

Finale Deel

No e puer Uergel funktionnéiert et. De Wënsch ass erreecht ginn, elo kann de Schlëssel op all PC montéiert ginn (an natierlech och net montéiert), och ausserhalb vum Sendungssegment vum Netz. Wann Dir wëllt, kënnt Dir dëst mat engem Kommando Shell Skript maachen. Wat gutt ass, ass datt de Genoss absolut gratis ass.
Ech hoffen, datt meng Erfahrung den Hacker hëllefe wäert ronderëm de Rake kommen, deen op meng Stir gedréckt ass. Merci fir är Opmierksamkeet!

Source: will.com

Setzt e Commentaire