
01.05.2008, 18:16
|
Новичок
|
|
Регистрация: 11.04.2008
Адрес: В городе-герой Минск
Сообщения: 69
Репутация: 10
|
|
Код:
function NetUserChangePassword(DomainName, UserName, OldPassword, NewPassword: LPCWSTR): DWord; stdcall;external 'netapi32.dll' name 'NetUserChangePassword';
function ServerUncName(Name: string): string;
begin
if (Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion < 5) then
Result := '\\' + Name
else
Result := Name;
end;
procedure CvtToWideChar(const S: string; var WS: TLMWideChar);
var s1:string;
begin
if ws.Value<>nil then
Freemem(ws.Value,ws.Length);
s1:=trim(s);
if length(s1)>0 then begin
ws.Length:=((length(s1)+1)*2);
getmem(ws.Value,ws.Length);
stringtowidechar(s1,ws.Value,ws.Length);
end else begin
ws.Value:=nil;
ws.Length:=0;
end;
end;
function changepass(DomainName, UserName, OldPassword,
NewPassword: string): dword;
var
D, U, O, N : TLMWideChar;
begin
Result := 0;
if NETAPI then begin
if (Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion < 5) then
DomainName:='//'+DomainName else DomainName:=DomainName;
D.Value := nil;
U.Value := nil;
O.Value := nil;
N.Value := nil;
try
CvtToWideChar(DomainName, D);
CvtToWideChar(UserName, U);
CvtToWideChar(OldPassword, O);
CvtToWideChar(NewPassword, N);
Result := NetUserChangePassword(D.Value, U.Value, O.Value, N.Value);
finally
FreeMem(D.Value, D.Length);
FreeMem(U.Value, U.Length);
FreeMem(O.Value, O.Length);
FreeMem(N.Value, N.Length);
end;
end;
end;
//user-имя учетной записи
pas-пароль для проверки(является ли pas паролем)
id:=ChangePass('',user,pas,pas);
if ID=0 then
//УРА-УРА-УРА.Пароль совпал
как видишь можно написать брутфорсер.А если просто узнать пароль то это не очень легкое дело
|