VendorID und ProductID (o.ä.) auslesen

Razorblade

SNF-Inventarnr. #9356663
[GELÖST] VendorID und ProductID (o.ä.) auslesen

Hallo!


Vorgeschichte:
Vor einiger Zeit habe ich das Programm SecuLock heruntergeladen, da ich öfters mal meinen PC verlassen muss und damit ich mich nicht immer anmelden muss hab ich meinen PC per USB Stick gesperrt. (y)


Jetzt wollt' ich persönlich sowas erstellen, da ich draufgekommen bin, dass wenn ich die Datei von SecuLock (was meiner meinung nach eine Schwachstelle ist, da der Dateinamen unter anderem aus dem Passwort besteht) auf einen anderen Stick kopiere quasi einen ersatzschlüssel habe. (n)


Hauptfilm

Ich hab jetzt angefangen ein Tool zu schreiben welches Standalone funktioniert, jedoch möchte ich gerne das so allgemein gestalten, dass wenn ich einen Laufwerksbuchstaben auswähle, das Programm die VendorID (VID) und die ProductID (PID) ausliest, und in eine Datei gespeichert in eine (versteckte, verschlüsselte) Datei am Stick ablegt.


Der Langen Rede kurzer sinn: Ich suche ein (Kommandozeilen)Tool, welches nach angabe des Laufwerksbuchstabens die IDs ausliest.
Ich hab schon gegooglet, und fand vor einiger zeit die möglichkeit per C++ (?) code die IDs auszulesen, jedoch kann ich C/C++ genausogut wie ein Tischler (ich) eine Herztransplantation kann. ;) :ROFLMAO:


ich hoffe, das mir irgendwer helfen kann, möglich ist es auf jeden fall (sonst käme ja Windows nicht dazu einen Regkey abzulegen wenn ich den Stick anstecke, der die Ids enthält). ;)


ach Ja:
ich hab das auch schon mit DevCon versucht, jedoch hab ichs nicht geschafft nur die eine Zeile der IDs auszulesen, bzw. einen laufwerksbuchstaben zu übergeben.


Danke im Voraus
razorblade


PS.: Das Programm welches ich gecoded habe von dem ich sprach, wurde in AutoHotKey gecodet, und die Source sieht derzeit so aus:

Code:
;
; AutoHotkey Version: 1.0.41.02
; Language:       German
; Platform:       WinXP
; Author:         Obi-Wahn <mailor@lycos.de>
; Layout:		  SmartGUI Creator 3.5.1
;
; Script Function:
;	New Lock Script. USB-Stick req. (like a dongle) Comments after this tag in German.
;

; Einstellungen und Deffinierte Variablen
; Vid und Pid des Sticks
VidPid = "USB\\Vid_05dc&Pid_0300\\106A64040718242"
; Ende Vid und Pid
Goto, ConCheck
ConCheck:
EnumID = 10
Loop, 11
  {
	RegRead, Connect, HKEY_LOCAL_MACHINE, SYSTEM\CurrentControlSet\Services\USBSTOR\Enum, %EnumID%
	EnumID-=1
  }

If Connect = VidPid
	Goto, Next
	
Else If Connect != VidPid
	{
	Sleep, 300
	If (BlockInput, On)
	  Goto, ConCheck
	Else If (BlockInput, Off)
	  {
	  BlockInput, On
	  Goto, ConCheck
	  }
	}
	
Next:
Else IfExist, A:\lock.afs
	Stick = A:\
Else IfExist, B:\lock.afs
	Stick = B:\
Else IfExist, D:\lock.afs
	Stick = D:\
Else IfExist, E:\lock.afs
	Stick = E:\
Else IfExist, F:\lock.afs
	Stick = F:\
Else IfExist, G:\lock.afs
	Stick = G:\
Else IfExist, H:\lock.afs
	Stick = H:\
Else IfExist, I:\lock.afs
	Stick = I:\
Else IfExist, J:\lock.afs
	Stick = J:\
Else IfExist, K:\lock.afs
	Stick = K:\
Else IfExist, L:\lock.afs
	Stick = L:\
Else IfExist, M:\lock.afs
	Stick = M:\
Else IfExist, N:\lock.afs
	Stick = N:\
Else IfExist, O:\lock.afs
	Stick = O:\
Else IfExist, P:\lock.afs
	Stick = P:\
Else IfExist, Q:\lock.afs
	Stick = Q:\
Else IfExist, R:\lock.afs
	Stick = R:\
Else IfExist, S:\lock.afs
	Stick = S:\
Else IfExist, T:\lock.afs
	Stick = T:\
Else IfExist, U:\lock.afs
	Stick = U:\
Else IfExist, V:\lock.afs
	Stick = V:\
Else IfExist, W:\lock.afs
	Stick = W:\
Else IfExist, X:\lock.afs
	Stick = X:\
Else IfExist, Y:\lock.afs
	Stick = Y:\
Else IfExist, Z:\lock.afs
	Stick = Z:\

; Ende der Einstellungen

; pass File am Stick anlegen
If Stick = ""
	{
	FileSelectFolder, Stick, , 3
	    FileAppend, 
( 
[Password] 
Password= 
) 
      , %Stick%lock.afs

	FileSetAttrib, +SH, %Stick%lock.afs
	Goto, Steckt
	}

; --- ENDE pass File ---
; GUI fürs Passwort ändern

Gui, Add, Edit, x96 y14 w190 h20 vpass0, 
Gui, Add, Text, x6 y16 w80 h20, Altes Passwort 
Gui, Add, Text, x6 y46 w80 h20, Neues Passwort 
Gui, Add, Edit, x96 y44 w190 h20 Password vpass1, 
Gui, Add, Edit, x96 y74 w190 h20 Password vpass2, 
Gui, Add, Text, x6 y76 w80 h20,Bestätigen 
Gui, Add, Button, x6 y104 w280 h20 gconfirm, Passwort ändern 
Gui, Show, x495 y412 h134 w292, Passwort ändern
Return

; --- ENDE GUI ---
; Erstellt Menü

Menu, Tray, Icon , %SystemRoot%\system32\SHELL32.dll, 48 
Menu, Tray, NoStandard 
Menu, Tray, add, Passwort ändern, confirm
Menu, Tray, Default, confirm
Menu, Tray, add, ;Trennlinie
Menu, Tray, Beenden

; --- ENDE Menü ---
; Wenn der Stick angesteckt ist

Steckt:
If Connect = %VidPid%
	{
	GoSub, PassCheck
	If PCheck = 0
		{
		BlockInput, Off
		}
	Else If PCheck = 1
		{
		GoSub, Abfrage
		If ACheck = 0
			{
			BlockInput, Off
			}
		Else If ACheck = 1
			{
			MsgBox, 0, Passwort, Falsches Passwort!
			Goto, ConCheck
			}
		}
	}
Return

; --- ENDE des "Steckt"-Blocks ---
; Checkt ob das Passwort korrekt ist
PassCheck:
RegRead, Underworld, HKEY_CURRENT_USER, Software\Lockdown, Lock
IniRead, Fileworld, %Stick%lock.afs, Password, Password

If Underworld = %Fileworld%
	PCheck = 0
Else
	PCheck = 1
Return

Abfrage:
If Underworld != %Fileworld%
	{
	Gui, Add, Text, x6 y4 w220 h20, Zur Verifizierung bitte das Passwort eingeben: 
	Gui, Add, Edit, x6 y34 w220 h20 Password vabfra1, 
	Gui, Add, Button, x6 y64 w220 h20 gok,OK 
	Gui, Show, x496 y405 h96 w233, Passwort?
	Return
	}
Else
	ACheck = 0
Return

ok:
If (RC4(encryptedpass,RC4Pass) = abfra1)
	{
	ACheck = 0
	MsgBox, 0, CONFIRMED, ACCESS GRANTED!!!
	}
Else
	{
	MsgBox, 0, CONFIRMED, ACCESS DENIED!!!
	Goto, ConCheck
	}
Return

; --- ENDE der Abfragen ---
; Bestätigung zum Passwort ändern

SetPassword: 

  IniRead, Password, %Stick%lock.afs, Password, Password 

  Gui, Show, x361 y359 h230 w198, Change Password 

  If Password= 
      Control, Disable, ,Edit1, Change Password 

Return 

Confirm: 
  Gui, Submit 
  IniWrite, 0, %Stick%lock.afs, SetPassword, True 
  IniRead, encryptedpass, %Stick%lock.afs, Password, Password 

  If (RC4(encryptedpass,RC4Pass) != pass0) 
    { 
      Gui, Show 
      MsgBox, Das alte Passwort ist nicht korrekt! 
      Return 
    } 

  If (pass1="" or pass2 ="") 
    { 
      Gui, Show 
      MsgBox, Das neue Passwort darf nicht leer sein! 
      Return 
    } 

  If pass1=%pass2% 
    { 
      encryptedpass:=RC4(pass1,RC4Pass) 

      IniWrite, %encryptedpass%, %Stick%lock.afs, Password, Password
	  RegWrite, REG_SZ, HKEY_CURRENT_USER, Software\Lockdown, Lock, %encryptedpass%
    } 
  Else 
    { 
      Gui, Show 
      MsgBox, Die Passwörter stimmen nicht überein! 
      Return 
    } 

Return 

; --- ENDE BESTÄTIGUNG ---
; --- RC4 Encryption by Rajat ---

RC4(RC4Data,RC4Pass) 
  { 
    global RC4Result 
    ATrim = %A_AutoTrim% 
    AutoTrim, Off 
    BLines = %A_BatchLines% 
    SetBatchLines, -1 
    StringLen, RC4PassLen, RC4Pass 
    Loop, 256 
      { 
        a := A_Index - 1 
        Transform, ModVal, Mod, %a%, %RC4PassLen% 
        ModVal ++ 
        StringMid, C, RC4Pass, %ModVal%, 1 
        Transform, AscVar, Asc, %C% 
        Key%a% = %AscVar% 
        sBox%a% = %a% 
      } 
    b = 0 
    Loop, 256 
      { 
        a := A_Index - 1 
        TempVar := b + sBox%a% + Key%a% 
        Transform, b, Mod, %TempVar%, 256 
        T := sBox%a% 
        sBox%a% := sBox%b% 
        sBox%b% = %T% 
      } 
    StringLen, DataLen, RC4Data 
    RC4Result = 
    i = 0 
    j = 0 
    Loop, %DataLen% 
      { 
        TmpVar := i + 1 
        Transform, i, Mod, %TmpVar%, 256 
        TmpVar := sBox%i% + j 
        Transform, j, Mod, %TmpVar%, 256 
        TmpVar := sBox%i% + sBox%j% 
        Transform, TmpVar2, Mod, %TmpVar%, 256 
        k := sBox%TmpVar2% 
        StringMid, TmpVar, RC4Data, %A_Index%, 1 
        Transform, AscVar, Asc, %TmpVar% 
        Transform, C, BitXOr, %AscVar%, %k% 
        IfEqual, C, 0 
            C = %k% 
        Transform, ChrVar, Chr, %C% 
        RC4Result = %RC4Result%%ChrVar% 
      } 
    AutoTrim, %ATrim% 
    SetBatchLines, %BLines% 
    Return RC4Result 
  } 
  
; --- RC4 Encryption by Rajat ---
; /******** ENDE SOURCECODE ********/


man sieht, dass in dem Sourcecode noch die VID und PID fix integriert ist, damit ich das Programm allerdings einer Breiteren Masse (z.B.:Hier) zur verfügug stellen kann, muss die Benutzerfreundlichkeit noch steigen.

Ebenfalls sieht man, das noch per Loop-Schleife die Registry abgefragt wird (die ersten 10 Angesteckten USB geräte), was ist jedoch wenn mehr als 10 geräte stecken?!?

Code:
; Einstellungen und Deffinierte Variablen
; Vid und Pid des Sticks
VidPid = "USB\\Vid_05dc&Pid_0300\\106A64040718242"
; Ende Vid und Pid
Goto, ConCheck
ConCheck:
EnumID = 10
Loop, 11
  {
	RegRead, Connect, HKEY_LOCAL_MACHINE, SYSTEM\CurrentControlSet\Services\USBSTOR\Enum, %EnumID%
	EnumID-=1
  }

Nochmals Danke im Voraus


###################################################
###################################################

EDIT:

Aus dem Windows-Unattended Forum hat der User Raffi (auf meine Anregung hin) ein Tool programmiert, welches ähnliches vollbringt.

HIER IST DER DOWNLOAD ZU FINDEN...


Trotzdem danke an alle die Sich die Zeit genommen haben, den thread durchzulesen und vll. versucht haben zu helfen.


MfG
RB
 
Zuletzt bearbeitet:

kddh

Herzlich willkommen!
Kann mir jemand sagen wo das tool jetzt zu finden ist?

Wenn ich den Link anklicke:

HIER IST DER DOWNLOAD ZU FINDEN...

bekomme ich im Windows-Unattended Forum nur:

Forbidden

You don't have permission to access /forum/index.php on this server.
Apache/2.2.10 Server at www.windows-unattended.de Port 80
 

Hidden Evil

Moderator
Teammitglied
Dir ist aber klar, dass der Beitrag oben bereits mehr als 3 Jahre alt ist und das verlinkte Tool höchstwahrscheinlich auf der verlinkten Homepage gar nicht mehr zu finden ist bzw. in diesem Fall der Zugang zur Homepage komplett gesperrt wurde? ;)

In diesem Fall heißt es wohl leider nur "weitersuchen" :).
 

kddh

Herzlich willkommen!
Na Logo,
meine innerste Intension war eigentlich die hoffnung nach jemandem der das Tool mitlerweile zur ultimativen eierlegenden Wollmilchsau erweitert hat, welche plattformunabhängig auch auf meinem Linksys Router läuft und womit ich jeden USB Stick nur durch ändern der vendor id mit jedem Treiber zum laufen bekomme der dann auch exakt das macht was ich will.:)
 

Hidden Evil

Moderator
Teammitglied
Nunja, jetzt wo der Thread ausgebudelt wurde ist die wahrscheinlichkeit höher, dass der Threadersteller Razorblade darauf aufmerksam wird und Dir ggf. sogar noch dabei helfen kann. Man weiß ja nie :).

Übrigens: Herzlich Willkommen hier :)
 

Razorblade

SNF-Inventarnr. #9356663
Hi there!

Das Tool is afaik schon noch auf der Homepage, aber windows-unattended.de is schon länger nicht mehr online. Ich hoffe es kommt wieder.

Was deinen Wunsch angeht @ kddh, so kann ich dir zwar das Tool (.exe bzw. .dll) hochladen, aber es ist nicht plattformunabhängig, es wurde nicht weiterentwickelt und afaik kann man die vendor-id nicht so einfach ändern.
Das Tool liest praktisch die Geräteinstanzkennung aus, und das war's dann.
 
Oben