Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi USB Gerät deaktivieren (https://www.delphipraxis.net/94424-usb-geraet-deaktivieren.html)

berens 21. Jun 2007 09:38


USB Gerät deaktivieren
 
Hallo!

Für einen u.U. öffentlich zugänglichen Computer soll ich ein Zusatzprogramm entwickeln, dass bestimmte USB-Geräte sperrt. Wichtig dabei ist, dass -im Gegensatz zu bereits bestehenden Lösungen- auch Tastatur und Maus gesperrt werden müssen. Der PC ist ein reines Anzeigesystem und die Steuerung erfolgt zur Wartung mit VNC über das Netzwerk.

Die USB-Ports werden zwar ansich nicht von dem PC gebraucht, so dass man sie im Bios deaktivieren könnte, aber ggf. muss man bei einem Systemfehler mal schnell an das System ran.

Ideal wäre, wenn jedes USB-Gerät eine GUID (wie MAC-Adressen bei Netzwerkkarten) hätte: also nicht eine für die komplette Klasse "Mäuse und Zeigegeräte". Dann könnte man eine bestimmte Maus und eine bestimmte Tastatur freischalten. Der Rest wird blockiert.

Zunächst würde mich auch soetwas langen wie:
Neues USB-Geräte wird angesteckt --> Mein Programm wirft es automatisch wieder aus, es sei denn ...

Mittels der Suchfunktion habe ich auch schon viele theoretisch sinnvolle Codeschnipsel gefunden. Ich kann diese aber leider nicht so kombinieren, dass sie alles das können, was ich brauche.

1) SwissDelphiCenter http://www.swissdelphicenter.ch/de/showcode.php?id=2211 : ...entdecken, ob ein USB Device angeschlossen oder abgezogen wird
--> Netter Code, aber wie kann ich die Geräte wieder auswerfen oder deaktivieren?

2) Jedi VCL JvHidControllerClass von Robert Marquardt
--> Sehr Umfangreich mit Beispielen, aber der Auswerfen-Befehl "Checkout" bewirkt keine Änderungen, ausserdem (wie der Klassenname besagt) funktioniert die Klasse nur für HIDs und nicht für alle USB Geräte.

3) http://www.yeahware.com/ , Demo-Source Enable oder Eject http://www.yeahware.com/download/eject.zip
--> Listet zwar viel Hardware (auch Nicht-USB), aber leider sind da meine USB-Drucker etc. nicht dabei. Deshalb gehe ich von aus, dass die Liste wohl nicht ganz komplett ist. Der Code ist schlecht/gar nicht dokumentiert. Die Eject/Disable Funktion ist so komisch an den TTreeview angepasst, in dem die Hardware steht, dass ich das leider nicht soweit ableiten kann , dass ich die Eject/Disable Funktion z.B. mit einer hDevInfo von 1) oder 2) aufrufen könnte.

Eigentliche Fragen:
Q1) Gibt es für jedes einzelne USB-Gerät auf der Welt eine GUID wie bei den Netzwerkkarten die MAC-Adresse?

Q2) Wie kann ich eine bestimmte Hardware auswerfen/deaktivieren, z.B. mit einer hDevInfo?
Mit dem folgenden kann ich leider nichts anfangen:
Delphi-Quellcode:
  function CM_Request_Device_Eject(dnDevInst: DWord; out pVetoType: TPNPVetoType;
  pszVetoName: PChar; ulNameLength: ULong; ulFlags: ULong): DWord; stdcall;
  external SetupApiModuleName name 'CM_Request_Device_EjectA';

Tormentor32 22. Jun 2007 08:55

Re: USB Gerät deaktivieren
 
Wenn der PC ein reines Anzeigegerät ist, wäre es dann nicht von Vorteil, den PC selber Wegzuschließen, sodass man ohne Schlüssel nur den Monitor erreichen kann? Das würde das Problem doch im Keim ersticken... also wenn das möglich ist...

berens 22. Jun 2007 08:59

Re: USB Gerät deaktivieren
 
*seufz* (<-- das gilt nicht Dir, sondern der Situation) Nun, er ist weggeschlossen. Der Kunde hat aber Angst, dass jemand das Gehäuse aufschrauben könnte und sich mit dem, als Gast eingeloggtem, Benutzer am System und sämtlichen Firmendaten vergreifen könnte.

Das Gehäuse ist nur geschraubt und nachträglich lässt sich da leider kein Schloß mehr anbringen.

Luckie 22. Jun 2007 09:04

Re: USB Gerät deaktivieren
 
Es gibt Kiosk-Software von Microsoft, mit der kannst du den Rechner dicht machen. Und warum nicht die USB-Ports im BIOS deaktivieren? Das BIOS wird mit einem Passwort gesichert und gut ist. Wenn man sie braucht, aktiviert man sie eben wieder. Desweiteren wäre zu überlegen, warum der Rechner am Firmennetzwerk hängt mit den sensiblen Firmendaten?

berens 22. Jun 2007 09:14

Re: USB Gerät deaktivieren
 
> warum der Rechner am Firmennetzwerk hängt mit den sensiblen Firmendaten?
Die Daten die angezeigt werden, werdem vom Firmennetzwerk aus eingespeist.

Bios-Passwort wäre natürlich auch eine gute Idee, aber für uns nicht das Traumziel, weil

1) Aber, wie oben erwähnt, sollte der PC zu Wartungszwecken (wenn's geht ohne Neustart) schon direkt ansprechbar sein.

2) Wie noch nicht erwähnt gibt es eine Variante von dem Anzeige System, dass sich mit nem USB-Stick füttern lässt. Die Kunden spielen im ihrem Firmennetzwerk also die Anzeigedaten auf einen Stick und stecken den dann in das Anzeige System (welches nicht am Netzwerk hängt). Hier sind die USB-Anschlüsse natürlich frei zugänglich, da der Benutzer nicht jedes Mal das Gehäuse aufschrauben soll. Spätestens hier brauche ich eine Lösung um selektiv USB-Geräte zu blockiern.

(Sorry für die verspätete Zusatzinfo)

Robert Marquardt 22. Jun 2007 09:29

Re: USB Gerät deaktivieren
 
zu 2) Da besteht ein grundlegendes Missverstaendnis. Die Checkout-Methoden haben nichts mit Geraet an- bzw. abmelden zu tun. Es gibt eine Controller-Komponente und die erstellt fuer jedes vorhandene HID-Geraet ein Objekt. Diese Objekte kann man analog einem CVS zur Benutzung auschecken.

Ich halte die ganze Idee fuer Unsinn. Wer physischen Zugang zum Computer erlangt, der kann auch gleich die Festplatte klauen.

Q1 Nein. Nur USB-Geraete die Seriennummernstrings haben sind individuell erkennbar, aber ein Geraet muss keine Seriennummer haben und bei Maeusen und Tastaturen ist es ungewoehnlich.

Q2 CM_Request_Device_Eject ist schon der richtige Ansatz, aber es gibt da ein paar wirklich unfeine Probleme. Von einem Service aus wird es schwierig.
Die Funktion ist fuer das Safe Removal zustaendig (einschliesslich des Dialogs). Dummerweise hat die Funktion ein teilweise merkwuerdiges Benehmen. Ohne Dialog kann es zu Verzoegerungen beim Auswerfen kommen. Ca. 30 Sekunden bei einem USB-Stick sind nicht ungewoehnlich. Indiesem Zeitfenster kann man schon einiges kopieren.
Man kann mit dieser Funktion USB-Maeuse und (wahrscheinlich) USB-Tastaturen auswerfen, aber das ist ein offensichtlicher Bug der Funktion.

Mach dem Kunden klar was Sicherheit ist. Sicherheit ist nicht den Rechner wegschliessen, sondern auf den Schluessel aufzupassen.
Warum hat ein reines anzeigesystem ueberhaupt unternehmenskritische Daten gespeichert?

mschaefer 22. Jun 2007 09:46

Re: USB Gerät deaktivieren
 
Moin, moin

(leider kaum Zeit) Hint: plug&play Dienst abschalten !

Luckie hat sich doch schon einige Stunden investiert.
(wahrscheinlich wieder keine Zeit für die Dokumenta...)

Edit: Sorry Michael hat seine Webseiten aufgeräumt,
deshalt kommen hier die Linkalternativen

Tutorial for making Service Applications using Delphi
by Finn Tolderlund.
http://www.tolderlund.eu/delphi/service/service.htm

oder bei Torry
http://www.swissdelphicenter.ch/torr...de.php?id=1322


Grüße // Martin

berens 22. Jun 2007 09:47

Re: USB Gerät deaktivieren
 
> Warum hat ein reines anzeigesystem ueberhaupt unternehmenskritische Daten gespeichert?
Nein, hat es nicht, kein Sorge!

1) Der Kunde hat Angst dass jemand sich über den PC in die Domäne "hacken" oder einloggen könnte. Wie das genau klappen soll mit Domänen-Gast-Rechten sei mal dahingestellt.

2) Angst von "Defaceing". Das Anzeigesystem steht im öffentlich zugänglichem Bereich des Kunden. Wenn jetzt wie oben beschrieben die USB-Steckplätze zugänglich sein müssen, könnte es natürlich zu einem "Defaceing" kommen. Stell euch mal vor auf eurem Beamer für Firmenpräsentationen läuft auf einmal ein Pr0n, das wäre nicht so schön.

Ich tendiere mittlerweile zu diese Lösung (Sperren des PCs beim anstecken eines neuen USB-Gerätes) http://www.delphipraxis.net/internal...t.php?t=112726 , allerdings habe ich auch da keine Idee wie es weitergehen soll.

berens 22. Jun 2007 09:49

Re: USB Gerät deaktivieren
 
mschaefer: Error 404

Edit: http://www.michael-puff.de/Developer...s/TNetSend.zip

Edit2: Was hat NetSend mit dem aktuellen Problem zu tun?

SirThornberry 22. Jun 2007 09:49

Re: USB Gerät deaktivieren
 
man sollte dabei beachten das vom Plug&Play-Dienst einige andere Dienste abhängig sind!


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz