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.
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.
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.
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:
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?!?
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
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.
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.
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.
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: