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
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
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 -
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