![]() |
USB-Speicher identifizieren
Hallo,
Wie kann man eine ProductID (eine Art Mac Adresse) aus einem USB-Stick auslesen? Ich habe nun verschiedene Sachen ausprobiert um einen Stick eindeutig zu identifizieren aber irgendwie fahr ich da jedes mal aus neue gegen eine Wand (namens Unwissenheit). Und gibt es überhaupt Hardwareinformationen, zu den Sticks, die eindeutig sind? Die USBstor.pas von Andrej Sandorf hab ich schon benutzt (veränderter JvHidControllerClass.PAS von Robert Marquardt). Der liefert mir auch einiges an Information aber eine eindeutige Nummer hab ich nicht erkennen können. Ich dachte das ich hier über DevicePath auf etwas komme aber auch das war leider ein Griff in Klo... Vielen Dank für eure Hilfe. MfG Kasoft :wall: <--- Jetzt weiss ich wie ich auf "Gegen die Wand fahren" komme :-) |
Re: USB-Speicher identifizieren
Hallo KaSoft,
warum bleibst Du nicht bei einem Thread? Wenn Du Dich mit den Parametern von DevEject auseinadergesetzt hättest, würdest Du nicht diese Frage stellen. |
Re: USB-Speicher identifizieren
Sollte ich einen Fehler gemacht haben möchte ich mich hier entschuldigen.
Aber ich denke das 1 Frage pro Thread gelöst wird und deswegen habe ich einen neuen Thread eröffnet. Mit den Parametern von DevEject habe ich mich beschäftigt aber nichts brauchbares gefunden. Eine eindeutige ID habe ich nicht gefunden. Sollte ich da falsch liegen bitte korrigier mich. Ich nehme mal die relevante Zeile aus deveject: 'USB-Massenspeichergerõt' 'USB\VID_054C&PID_008B\6&2A6BBF53&0&1' [REMOVEABLE] Ich weiss nicht was du meinst hier eine eindeutige ID zu sein. 'USB\VID_054C&PID_008B\6&2A6BBF53&0&1' ist jedenfalls keine da diese ID sich beim Einstecken in einen anderen USB-Slot ändert. Somit kann ich meinen Stick nicht eindeutig zuordnen... Wie gesagt wenn ich falsch liege korrigier mich bitte. MfG Kasoft |
Re: USB-Speicher identifizieren
Du musst die vierstellige VID und PID extrahieren.
Achtung, das Format der vier Stellen ist nicht immer Hexziffern. Manchmal ist es auch '0' + Hexwert was z. B. '=' ergeben kann. USB-Sticks muessen einen SerialNumber-String haben. VID/PID/SerialNumber identifiziert daher eindeutig einen bestimmten Stick. Ich bin noch am Erforschen wie man die SerialNumber ausliest. |
Re: USB-Speicher identifizieren
Hallo Robert darf ich das dann so verstehen das du die PID und VID auslesen
kannst? (Über Delphi) Den einzigen String den ich herauskriege ist: \\?\usbstor#disk&ven_sony&prod_storage_media&rev_1 .00#7&1ce25073&0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b} Aus diesem kann man einiges auslesen. Jedoch sehe ich hier keine PID/VID. MfG Kasoft |
Re: USB-Speicher identifizieren
Hallo miteinander,
mit der ID ist das so ein Ding, aber eigentlich auch ganz einfach. Die Frage stammt vermutlich daher, dass der Artikel von Herrn Withopf aus der C't nicht vorliegt, dort wurde alles erklärt. Also um Dein Beispiel zu nehmen verhält es sich so: USB Ein USB-Device VID_054C Die Hersteller-ID PID_008B Die Gerätekennung / -typ 6 2A6BBF53 Die Geräteidentifizierung ID 0 1 Die Instanz, d.h wird incrementiert sobald das Gerät an einem anderen USB-Port angesteckt wurde Wo für die 6 und die 0 steht, weis ich jetzt nicht. Ich suche es mal raus... |
Re: USB-Speicher identifizieren
Aus diesem String muss man extrahieren.
'USB\VID_054C&PID_008B\6&2A6BBF53&0&1' Die Gemeinheit ist das ein USB Stick in mehreren Geraetelisten auftaucht. USB bzw USBSTOR naemlich. |
Re: USB-Speicher identifizieren
Kleiner Wiederspruch, laut Registry-Eintrag bei 'Service' kann je Geräte nur 'USBSTOR' oder etwas anderes stehen.
Oder etwa nicht? Ich kenn jedenfalls kein USB-Device welches mehrere Services bindet. |
Re: USB-Speicher identifizieren
Mit Geraetelisten meine ich die internen Listen des Systems.
Es sind mehrere Treiber uebereinandergestapelt. Wie der Geraetemanager diese Ueberschneidungen filtert weiss ich leider noch nicht. Es ist aber definitiv moeglich einen USB-Stick mit der USB GUID aufzuzaehlen. Genauso kann man ein HID-Geraet mit der HID GUID aufzaehlen und mit der USB GUID. Das liegt daran das der HID-Treiberstack oberhalb des USB-Treiberstacks fuer das Geraet liegt. |
Re: USB-Speicher identifizieren
So nun ist mir wieder alles klar, was die 6 und die 1 betrifft.
Die 6 ist Bestandteil der GeräteID, also 6&2A6BBF53. Die 1 besagt, das dass USB-Gerät ein Laufwerk bereitstellt. Mein Cardreader hat eine 2 und bietet auch zwei Laufwerke an. Kontrollieren kann man es in der Registry unter 'HKey_Local_Machine\Enum\USB\Vid_xxx&Pidxxx\Device ID + &lfd.nr', je vorhandenem Laufwerk erhöht sich die lfd.nr = Laufendenummer. |
Re: USB-Speicher identifizieren
[EDITED] [/EDITED]
|
Re: USB-Speicher identifizieren
Hallo Alter Mann,
aber diese Geräte ID ist nicht die eindeutige SerialNr hab ich das richtig verstanden? Ich hab den Artikel aus der CT nun vor mir aber ich kann da leider nichts finden. Also keine Beschreibung zu Serial. Es wird aber nicht erklärt das 1 hinten der inkrement etc ist. Hast du da was verwechselt oder bin ich jetzt zu unfähig 1 Seite CT zu lesen?? MfG Kasoft |
Re: USB-Speicher identifizieren
Es tut sich etwas.
Gerade hat mir jemand Delphi Sourcen zum Thema geschickt. Weiteres dazu am Montag (falls ich da keinen Kater habe :drunken: ) |
Re: USB-Speicher identifizieren
Hi KaSoft,
wenn Du den Artikel hast, dann hast Du doch sicherlich folgendes ausprobiert: Zitat:
Oder must Du genau einen bestimmten Stick wiedererkennen? Also so etwas, wie Seriennummer einer Festplatte, die Steht aussen auf dem Aufkleber und ist identisch mit der, die eine Abfrage über die S.M.A.R.T.- Schnittstelle zurück gegeben wird. PS Das Zitat geht nur unter WXP |
Re: USB-Speicher identifizieren
Hi Alter Mann,
genau das. Ich muss einen bestimmten Stick wiedererkennen. Sprich die ID die ich will soll auch auf anderen Rechnern die selbe sein. So eine Art MAC Adresse die auch eindeutig ist. [Edit] Auf meinem USB- Stick ist eine Nummer ja das stimmt. Ich denke mal die ist auch eindeutig. Aber wie Frage ich diese Nummer ab. Mir ist wichtig das es kein anderer Stick ist sondern genau der den ich wollte... Wie meinst du das mit S.M.A.R.T. ? [/EDIT] MfG Kasoft |
Re: USB-Speicher identifizieren
Also ich hab jetzt ein bissel nachgeforscht und es scheint man kann
die ID auslesen. Das Problem das ich nun habb ist dass ich es immer wieder nur schaffe über SMART die ID meiner Festplatte auszulesen. Die ID meines Sticks hab ich nicht hingekriegt... @ Alter Mann hast du da Erfahrung mit SMART IDs aus USB-Sticks auslesen? MfG Kasoft |
Re: USB-Speicher identifizieren
Hi Robert,
hast du den Code angeschaut den du bekommen hast MfG Kasoft |
Re: USB-Speicher identifizieren
Noch nicht fertig damit. Kann noch ein paar Tage dauern.
|
Re: USB-Speicher identifizieren
Hallo Kasoft,
das mit SMART geht wirklich nur mit echten Festplatten. :( Habe leider keinen Zugriff auf eine USB-Stick, das ich mal "nachsehen" könnte, weiß nur das es welche gibt, die sich als Wechsellaufwerk oder als Festplatte einbinden. Hängt vom Hersteller ab. Gruss |
Re: USB-Speicher identifizieren
Hallo Alter Mann,
ja genau vor diesem Problem stand ich auch. SMART spuckt mir nur Daten für lokale Datenträger aus. Das wird noch zu einem verzweifelten Unterfangen... Ich brauch unbedingt die ID des Sticks und ich scheiter Gnadenlos beim letzten Puzzlestück... MfG Kasoft |
Re: USB-Speicher identifizieren
SMART kann auch nur mit echten Festplatten funktionieren.
Der Mikrocontroller der Festplatte macht Statistiken ueber die Festplattenzuverlaessigkeit. |
Re: USB-Speicher identifizieren
Dankeschön für die Info Robert.
Eigentlich meine Dummheit. Ich les mich in das Thema ein und da steht ganz deutlich das die Festplatte SMART fähig sein muss (also ein Controller eingebaut) und ich versuch wie ein Verückter weiter über SMART darauf zuzugreifen. naja... Aber ich hätte noch eine Idee. Stichwort WMI. Eigentlich sollte man ja über WMI an alle Informationen rankommen auf die das Betriebssystem zugreifen kann. Wäre es da nicht möglich auch die ID rauszulesen? Ich werd mich mal rantun. Wenn ihr da Informationen darüber habt nur her damit. MfG Kasoft |
Re: USB-Speicher identifizieren
Sodele nach langem schweigen greife ich das Thema hier wieder auf.
Die Identifikation des Sticks macht mir bis heute noch kopfzerbrechen. Jedoch hab ich die Identifikation vorerst auf Eis gesetzt da Robert sich noch mit einer Möglichkeit beschäftigt. Trotzdem steh ich noch vor dem Problem das ich nicht herauskriege mit welchem Laufwerk der Stick gemountet ist. Habt ihr da irgendwelche Vorschläge? Dankeschön Kasoft |
Re: USB-Speicher identifizieren
Hi, wenn ich das richtig verstanden habe mit dem mounten, dann kannst Du doch
einfach alle Laufwerksbuchstaben durchscannen mit GetVolumeInformation und bei dem Stick mit der richtigen Volume Serial hast Du auch das Laufwerk. Die Identifikation, ob es der richtige Stick ist, muss dann später über die echte Herstellerserial erfolgen. Also ich habe mir für eine Software von mir 100 USB Sticks bestellt und die haben alle die gleiche VolumeSerial. Somit kann ich die USB Sticks allgemein identifizieren. Hoffe das hat ein bischen geholfen. Mit Spannung erwarte ich allerdings, ob hier noch eine Lösung wegen der echten Serial gepostet wird. Gruß Hendrik |
Re: USB-Speicher identifizieren
Ein USB-Geraet kann einen Seriennummern-String enthalten.
Fuer USB Sticks verlangt Microsoft das der String gesetzt ist. An diesen String will er ran. |
Re: USB-Speicher identifizieren
Ich will auch daran, aber er hat doch gerade gefragt wie man festellt
wo der USB Stick steckt, oder habe ich das falsch verstanden??? Gruß Hendrik |
Re: USB-Speicher identifizieren
Wo er steckt ist leider falsch. Interessant wäre gewesen auf welches
Laufwerk es gemapped ist. Aber noch viel interessanter meinserseits ist der Serial String wie Robert schon gesagt hat. Ob er im USB-Slot 1,2,3 oder 4 steckt ist egal. MfG Kasoft |
Re: USB-Speicher identifizieren
Hi,
gegeben sei mal W2K. Dann gibt es unter HKLM\CurrentControlSet\MountedDevices eine Auflistung alle gemapten Laufwerke. Intressant sind die "DosDevice\"x: -> x = Laufwerksbuchstabe. Diesen Binärwert einlesen und in einen String umwandeln, dann weis man welches Device sich hinter den Buchstaben verbirgt. Man kann es auch mit "GetVolumeNameForVolumeMountPoint" versuchen. Nur ob das alles hilft? Es gibt nähmlich keine Funktion die eine Zuordnung Laufwerksbuchstabe <-> USB-Device ermitteln kann. |
Re: USB-Speicher identifizieren
Hi Alter Mann,
Genau das hab ich auch gesehen. Aber ich glaub ich hab sogar etwas wie ich die Zuordnung trotzdem schaffe. Wird sich aber noch zeigen müssen. Ich werds hier dann melden wenns klappt. MfG Kasoft P.S.: Ich steiger mich in die USB-Geschichte zu arg rein. Jetzt hab ich heute extra Urlaub genommen damit ich mich bissle zu Hause damit beschäftigen kann :-) |
Re: USB-Speicher identifizieren
Hi Kasoft,
sicherlich bekommt man es hin. Für USBSTORE-Geräte kein Problem. Wenn im MountedDevices als erstes STORAGE steht braucht man nur unter USBSTOR schauen ob die gleiche ID vorhanden ist und anschließend den "Prefix" vergleichen. Sind beide gleich hast Du die Zuordnung Laufwerksbuchstabe <-> USB-Device. Für andere Gerätezuordnungen habe ich aber momentan keine Lösung parat. |
Re: USB-Speicher identifizieren
Hallo, habe heute ne eMAil aus China bekommen von dem Hersteller meiner USB Sticks:
Zitat:
dass dieser Code evtl. nur direkt vom Eprom gelesen werden kann. Weiter habe ich ein tool gefunden mit dem man seine USB Ports auslesen kann ohne in die REG schauen zu müssen. ![]() Ich glaube, dass mit der Hersteller ID wird nicht so einfach bis unmöglich. (Bitte belehrt mich eines besseren!!!!!) Vielleicht findet jemand ja noch eine möglichkeit einen USB Stick eindeutig zu identifizieren. Gruß Hendrik |
Re: USB-Speicher identifizieren
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
wer sucht der findet, heißt es oder? Es gibt eine Seriennummer, sogar eine unique :lol: Aber nur :( wenn das Gerät sich mit dem Logo "Designed for Windows" schmücken darf. Auf ![]() ist eine FAQ zu USB Storage zu finden, wo die Frage nach der Seriennummer so beantwortet wurde: Zitat:
|
Re: USB-Speicher identifizieren
In der Praxis heisst das das die Seriennummer IMMER vorhanden ist.
Niemand kann sich leisten das sein Stick nicht mit Windows funktioniert. Das Tripel VendorID/ProductID/Seriennummer identifiziert daher einen USB Stick eindeutig. |
Re: USB-Speicher identifizieren
Hallo!
Also die beiden vorstehenden Aussagen sind Quatsch! Zitat:
Zitat:
Es gibt z.B. genug Programme, die nicht das "Designed for Windows"-Logo haben, aber trotzdem mit Windows funktionieren. Mit Logo gehören die Einstellungen nämlich zwingend in die Registry - wer auf das Logo verzichtet, darf auch INI-Dateien verwenden. Das Logo soll (durch Überprüfung bei MS) Kompatibilität garantieren (prüfen die eigentlich alles mit allem, um Kreuzprobleme auszuschliessen?) und kostet Geld. Deshalb verzichten viele auf das Logo. Noch dürfen ja auch Treiber ohne Test verwendet werden. Kommt nur eine Warnmeldung. Gruß Dietmar Brüggendiek |
Re: USB-Speicher identifizieren
Hallo,
nachdem ich nun einige Informationen über USB-Massenspeicher gelesen habe und auch das Programm, welches alter Mann angesprochen hat ausprobiert habe hier die Schelte: Mein neuer Sony USB-Stick mit 128MB Speicher Device Descriptor: bcdUSB: 0x0200 bDeviceClass: 0x00 bDeviceSubClass: 0x00 bDeviceProtocol: 0x00 bMaxPacketSize0: 0x40 (64) idVendor: 0x054C (Sony Corporation) idProduct: 0x008B bcdDevice: 0x0001 iManufacturer: 0x01 iProduct: 0x04 iSerialNumber: 0x00 <---- Warum um Gottes Willen muss das hier leer sein *grmmml* bNumConfigurations: 0x01 Mein alter Noname Stick mit 64MB Speicher Device Descriptor: bcdUSB: 0x0110 bDeviceClass: 0x00 bDeviceSubClass: 0x00 bDeviceProtocol: 0x00 bMaxPacketSize0: 0x08 (8) idVendor: 0x090A idProduct: 0x1001 bcdDevice: 0x0100 iManufacturer: 0x00 iProduct: 0x00 iSerialNumber: 0x00 <----- Und wieder einmal leer... bNumConfigurations: 0x01 Was sehen wir? Eigentlich nur das Sony eben bekannt ist aber trotzdem unfähig seinen Sticks eine eindeutige ID zu verpassen. Ich hoffe ihr gelehrt mich des besseren und ich kann wieder weiterforschen... MfG geknickter Kasoft |
Re: USB-Speicher identifizieren
Moin!
Bei meinem USB Stick kommt folgendes raus:
Code:
Nur dabei frage ich mich, ob die Seriennummer wirklich nur ein Byte gross sein soll? Das ist doch dann keine Seriennummer sondern höchsten eine Produktfamilie. Also meiner hat dann ja eine Seriennummer von 2, super, und der 256. Stick der nach meinem hergestellt wurde hat wieder die gleiche Nummer???
Device Descriptor:
bcdUSB: 0x0110 bDeviceClass: 0x00 bDeviceSubClass: 0x00 bDeviceProtocol: 0x00 bMaxPacketSize0: 0x08 (8) idVendor: 0x05DC idProduct: 0x0080 bcdDevice: 0x0001 iManufacturer: 0x01 iProduct: 0x01 iSerialNumber: 0x02 bNumConfigurations: 0x01 ----------- So, ich habe nochmal weiter geforscht... Logitech USB Maus vom Cordless Desktop: Seriennummer = 0x00 Acer BT500 Bluetooth Stick: Seriennummer = 0x00 USB Hub in meinem EYE-Q Monitor: Seriennummer = 0x00 USB HID im EYE-Q Monitor (zum Steuern des Monitors über USB): Seriennummer = 0x30 total billiger aber sehr gut funktionierener USB 6 in 1 Cardreader: Seriennummer = 0x03 MfG Muetze1 |
Re: USB-Speicher identifizieren
Hi,
Zitat:
Zitat:
Gruß, Markus |
Re: USB-Speicher identifizieren
Hi,
und das als Unicode! Sie ist hexadezimal-codiert und muss min. 12 Zeichen lang sein. |
Re: USB-Speicher identifizieren
Hallo, und wie genau lese ich das nun mit Delphi aus???
Kann vielleicht einer von Euch einmal posten, wie ich nun unter Delphi an die Hersteller Seriennummer herankomme??? Das wäre super! Gruß Hendrik |
Re: USB-Speicher identifizieren
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz