Как получить закэшированные пароли в Win9x? |
Previous Top Next |
Code: |
program getpass; ........ type ... ListBox: TListBox; procedure getpasswords; ....... end;
const Count: Integer = 0;
function WNetEnumCachedPasswords(lp: lpStr; w: Word; b: Byte; PC: PChar; dw: DWord): Word; stdcall;
implementation
{$R *.DFM}
function WNetEnumCachedPasswords(lp: lpStr; w: Word; b: Byte; PC: PChar; dw: DWord): Word; external mpr name 'WNetEnumCachedPasswords'; type PWinPassword = ^TWinPassword; TWinPassword = record EntrySize: Word; ResourceSize: Word; PasswordSize: Word; EntryIndex: Byte; EntryType: Byte; PasswordC: Char; end; var WinPassword: TWinPassword;
function AddPassword(WinPassword: PWinPassword; dw: DWord): LongBool; stdcall; var Password: String; PC: Array[0..$FF] of Char; begin inc(Count);
Move(WinPassword.PasswordC, PC, WinPassword.ResourceSize); PC[WinPassword.ResourceSize] := #0; CharToOem(PC, PC); Password := StrPas(PC);
Move(WinPassword.PasswordC, PC, WinPassword.PasswordSize + WinPassword.ResourceSize); Move(PC[WinPassword.ResourceSize], PC, WinPassword.PasswordSize); PC[WinPassword.PasswordSize] := #0; CharToOem(PC, PC); Password := Password + ': ' + StrPas(PC);
Form1.ListBox.Items.Add(Password); Result := True; end;
procedure tform1.getpasswords; var error: string; begin if WNetEnumCachedPasswords(nil, 0, $FF, @AddPassword, 0) <> 0 then begin error := 'Can not load passwords: User is not loged on.'; end else if Count = 0 then error := 'No passwords found...' end; |
©Drkb::01717
Взято из http://forum.sources.ru