Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как получить закэшированные пароли в Win9x

Delphi , Синтаксис , Пароли

Как получить закэшированные пароли в Win9x


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;

Перед тем как приступить к коду, хочу подчеркнуть, что извлечение зашифрованных паролей - это чувствительная операция и должна выполняться с осторожностью. Эти пароли хранятся в Windows для удобства, но также могут представлять угрозу безопасности, если не будут обработаны правильно.

Теперь давайте проанализируем код:

Функция WNetEnumCachedPasswords - это внешняя процедура из библиотеки Microsoft Windows Network (MRX), используемая для перебора зашифрованных паролей на локальном компьютере. Функция принимает пять параметров:

function WNetEnumCachedPasswords(... 
  lp: lpStr;   // указатель на null-terminated строку
  w: Word;     // заперсвированный, должен быть нулевым
  b: Byte;    // заперсвированный, должен быть нулевым
  PC: PChar;  // указатель на буфер для пароля
  dw: DWord);  // заперсвированный, должен быть нулевым

Функция AddPassword вызывается WNetEnumCachedPasswords, чтобы добавить каждый зашифрованный пароль в список. Она выполняет следующие действия: 1. Увеличивает счетчик (Count) для отслеживания количества найденных паролей. 2. Копирует пароль из памяти в локальный буфер (PC). 3. Конвертирует пароль из кодовой страницы OEM в кодовую страницу ANSI с помощью CharToOem. 4. Извлекает имя пользователя и пароль из записи, и комбинирует их в одиночную строку (Password). 5. Добавляет строку пароля в список.

Процедура getpasswords вызывается при клике кнопки или наступлении какого-либо события. Она вызывает WNetEnumCachedPasswords с следующими параметрами:

procedure tform1.getpasswords;
begin
  if WNetEnumCachedPasswords(nil, 0, $FF, @AddPassword, 0) <> 0 then 
     // код обработки ошибок здесь...
  end;
end;

Программа использует глобальную переменную (Count) для отслеживания количества найденных паролей.

Теперь некоторые предложения по улучшению: 1. Обработка ошибок: программаcurrently только проверяет, возвращает ли WNetEnumCachedPasswords код ошибки. Вы должны также обрабатывать любые потенциальные ошибки, которые могут возникнуть при извлечении паролей или операциях с списком. 2. Безопасность: как было упомянуто ранее, извлечение зашифрованных паролей может представлять угрозу безопасности. Убедитесь, что храните извлеченные пароли безопасно и рассмотрите использование дополнительных механизмов аутентификации для предотвращения неавторизованного доступа. 3. Организация кода: функция AddPassword является quite длинной и выполняет несколько задач. Рассмотрите разбиение ее на более маленькие функции или процедуры для лучшей читаемости и поддержки.

В целом, это программа предоставляет хороший старт для исследования механизма зашифрованных паролей в Windows 9x. Однако, пожалуйста, будьте осторожны при использовании этого кода в производственных средах.

Представлен программный код на языке Delphi, позволяющий получить закэшированные пароли в операционной системе Win9x.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Пароли ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 13:19:28/0.014509916305542/1