Seite 2 von 3
Verfasst: 26.05.2008 19:22
von scholly
Volker Schmid hat geschrieben:G:\ ist mein USB Stick. Leider kommt absolut nix als Ergebnis. DeviceIoControl liefert immer 0 als Ergebnis und die Struktur bleibt leer.
Ich bekomme für "L:" immerhin
hVolume: 1980
res.l: 0
bytesreturned.l: 0
media SizeOf: 2064
Status: 0
? - can not get a result
Umpf.. ma gucken, ob ichs find....

Verfasst: 26.05.2008 19:25
von TomS
scholly hat geschrieben:Ich bekomme für "L:" immerhin
hVolume: 1980
res.l: 0
bytesreturned.l: 0
media SizeOf: 2064
Status: 0
? - can not get a result
Ich bekomme genau das Selbe. Auch für meinen Kartenleser unabhängig davon, ob eine Karte drin ist, oder nicht
Verfasst: 26.05.2008 20:40
von scholly
Try this
Code: Alles auswählen
;Diese Werte hab ich vorher ermittelt, solltest Du gegen Deine austauschen
Define InterfaceType.s = "USB"
Define Model.s = "TOSHIBA TransMemory USB Device"
Define PNPDeviceID.s = "USBSTOR\DISK&VEN_TOSHIBA&PROD_TRANSMEMORY&REV_6.50\0B310B6010004954&0"
Define cur_Model.s
Define cur_PNPDeviceID.s
IncludeFile "wmi.pbi" ; http://www.purebasic.fr/german/viewtopic.php?t=2925
WMI_INIT()
WMI_Call("Select * FROM Win32_DiskDrive", "InterfaceType, Model, PNPDeviceID")
ResetList(wmidata())
While NextElement(wmidata())
Debug wmidata()
If wmidata() = InterfaceType.s
NextElement(wmidata())
cur_model = wmidata()
NextElement(wmidata())
cur_PNPDeviceID = wmidata()
If ((cur_model = model) And (cur_PNPDeviceID = PNPDeviceID))
MessageRequester("", "so, Volker, damit kannste weiterarbeiten")
Else
MessageRequester("","Pappnase, dat gilt nich. Wieso haste 2 USB-Sticks drin ?")
EndIf
Else
NextElement(wmidata()):Debug wmidata()
NextElement(wmidata()):Debug wmidata()
EndIf
Wend
WMI_RELEASE("OK")
have fun

Verfasst: 27.05.2008 08:16
von Kukulkan
Hi Scholly,
Ich denke, dass WMI zu verwenden ist dann doch wohl die beste Möglichkeit. Ich hab dein Beispiel umgebaut und mit dem Include komme ich voran.
Danke, an alle!
Grüsse,
Volker
Verfasst: 27.05.2008 08:42
von Kukulkan
Ich hab Schollys Code für meine Zwecke erweitert. Eventuell kann damit jemand was anfangen...
Code: Alles auswählen
; Test für das WMI Include
; Ermittelt Laufwerke und zugehörige Informationen...
Define cur_Model.s
Define cur_PNPDeviceID.s
IncludeFile "WMI_include.pbi" ; http://www.purebasic.fr/german/viewtopic.php?t=2925
WMI_INIT() ; Wert1 Wert2 Wert3 Wert4 Wert5 Wert6 Wert7
WMI_Call("SELECT * FROM Win32_DiskDrive", "InterfaceType, Model, PNPDeviceID, MediaType, Name, Size, Status")
ResetList(wmidata())
While NextElement(wmidata()) ; Wert 1
cur_Type.s = wmidata()
NextElement(wmidata()) ; Wert 2
cur_Model.s = wmidata()
NextElement(wmidata()) ; Wert 3
cur_PNPDeviceID.s = wmidata()
NextElement(wmidata()) ; Wert 4
cur_Media.s = wmidata()
NextElement(wmidata()) ; Wert 5
cur_Name.s = wmidata()
NextElement(wmidata()) ; Wert 6
cur_Size.f = ValF(wmidata())
cur_Size.f = cur_Size.f / 1024 ; kbytes
cur_Size.f = cur_Size.f / 1024 ; mbytes
cur_Size.f = cur_Size.f / 1024 ; gbytes
NextElement(wmidata()) ; Wert 7
cur_State.s = wmidata()
Debug " "
Debug "Type: " + cur_Type.s
Debug "Model: " + cur_Model.s
Debug "D_PID: " + cur_PNPDeviceID.s
Debug "Media: " + cur_Media.s
Debug "Name: " + cur_Name.s + " (value of CIM_ManagedSystemElement)"
Debug "Size: " + Str(cur_Size.f) + " GB"
Debug "State: " + cur_State.s
Select cur_Type.s
Case "USB"
Debug "------------> USB-Gerät: " + cur_Model.s
Case "SCSI"
Case "IDE"
Default
EndSelect
Wend
WMI_RELEASE("OK")
Grüsse,
Volker
Verfasst: 27.05.2008 12:56
von Rings
danke, kann ich gut brauchen
Verfasst: 27.05.2008 16:48
von scholly
Volker Schmid hat geschrieben: Damit dieser nicht einfach dupliziert werden kann, möchte ich den Inhalt mit dem Hashcode der Stick-Seriennummer verschlüsseln (AES256).
Ich bin mal wieder zu doof zum suchen

:
Gibts irgendwo ein Beispiel, wie man sowas macht und hinterher checkt ?
Verfasst: 27.05.2008 17:12
von Kukulkan
Hi Scholly,
Gibts irgendwo ein Beispiel, wie man sowas macht und hinterher checkt ?
Beispiel:
Du kannst natürlich jeden anderen Hash- und symetrischen Verschlüsselungs-Algorithmus verwenden. Ich denke, mit SHA-2 und AES256 bist Du aber auf dem Stand der Zeit. MD5 und RC4 sind sicher veraltet.
Generieren:
1. Du liest die Seriennummer des USB-Stick aus
2. Du lässt den Hashcode daraus berechnen (zB SHA-2 mit 256 Bit)
3. Du veschlüsselst deine Daten mit dem Hashcode als Schlüssel (zB AES 256)
4. Diese Daten schreibst Du auf den Stick oder auf die Platte.
5. Fertig.
Prüfen:
1. Du liest die Seriennummer des USB-Stick aus
2. Du lässt den Hashcode daraus berechnen (zB SHA-2 mit 256 Bit)
3. Du entschlüsselst deine Daten mit dem Hashcode als Schlüssel (zB AES 256)
4. Daten prüfen: Ist es nur Mist -> Falscher USB Stick. Daten lesbar -> Es war der selbe!
5. Fertig.
Du kannst nun frei entscheiden, ob Du den USB-Stick nur als Dongle (verschlüsselte Daten sind auf dem Desktop) oder als nicht so einfach kopierbaren Datenspeicher (verschlüsselte Daten auf dem Stick) verwenden möchtest.
Das schöne ist: Die Daten sind nur wieder lesbar, wenn Du den selben Stick zur Verfügung hast. Das kann für viele Hacker ein echtes Problem werden wenn der USB-Stick nach Feierabend am Schlüsselbund hängt...
Grüsse,
Volker
Verfasst: 27.05.2008 17:27
von scholly
Danke für die Beschreibung.
Da ich aber noch nie was mit Hash- und symetrischen Verschlüsselungs-Algorithmen zu tun gehabt hab,habbich keine Idee, wie das berechnen, verschlüsseln und entschlüsseln unter PB gehen könnte und eigentlich auf den Hinweis auf einen Code-Schnipsel oder was anderes zum (er)lernen gehofft

Verfasst: 27.05.2008 17:44
von Kukulkan
Hi Scholly,
Ich nehm für Hashcodes und AES Verschlüsselung die diCryptoSys APi (
http://www.cryptosys.net/#api). Das kostet was, ist es aber allemal Wert und steht auch auch Linux zur Verfügung (Autor anschreiben).
Wenn Du mit Kryptografie noch nie Berührung hattest, dann suche mal den Einstieg über zB Google mit "kryptologie einführung" als Suchbegriff. Auch die Wikipedia kann hilfreich sein...
Grüsse,
Volker