2005. július 14., csütörtök
Get the Password of the screensaver
Problem/Question/Abstract:
How to get the Password of the screensaver?
Answer:
//this is a small function which give the password of the screensaver!!
function GetScrPass: string;
var
ScrnSvrPss: string;
reg: TRegistry;
buf: array[0..256] of char;
length: word;
a: byte;
asdec: byte;
password: string[128];
const // Decrypts the screen saver password from the registry
xorwert: array[1..128] of byte =
(72, 238, 118, 29, 103, 105, 161,
27, 122, 140, 71, 248, 84, 149, 151, 95, 120, 217, 218, 108, 89, 215, 107,
53, 197, 119, 133, 24, 42, 14, 82, 255, 0, 227, 27, 113, 141, 52, 99, 235,
145, 195, 36, 15, 183, 194, 248, 227, 182, 84, 76, 53, 84, 231, 201, 73, 40,
163, 133, 17, 11, 44, 104, 251, 238, 125, 246, 108, 227, 156, 45, 228, 114,
195, 187, 133, 26, 18, 60, 50, 227, 107, 79, 77, 244, 169, 36, 200, 250, 120
, 173, 35, 161, 228, 109, 154, 4, 206, 43, 197, 182, 197, 239, 147, 92, 168,
133, 43, 65, 55, 114, 250, 87, 69, 65, 161, 32, 79, 128, 179, 213, 35, 2, 100
, 63, 108, 241, 15);
begin
password := '';
reg := TRegistry.Create;
reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey('Control PanelDesktop', FALSE);
Reg.ReadBinaryData('ScreenSave_Data', buf, sizeof(buf));
length := (Reg.GetDataSize('ScreenSave_Data') - 1) shr 1;
if Reg.ReadBool('ScreenSaveUsePassword') then
for a := 1 to length do
begin
asdec := StrToInt('$' + buf[(a shl 1) - 2] + buf[(a shl 1) - 1]);
password := concat(password, Chr(asdec xor xorwert[a]));
end
else
password := 'There was an error getting the password.';
reg.free;
ScrnSvrPss := password;
//sleep(1000);
result := ScrnSvrPss;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.text := GetScrPass;
end;
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése