![]() |
Re: Herausfinden ob PW zu dem Benutzerkonto passt
Um zu Testen ob des Pass richtig ist habe ich mir einen Service geschrieben. Mit dem ging es dann problemlos weil dieser mit erhöten Rechten läuft. Mit normalen Programmen wirds nicht gehen.
Übrigens: Was wollt ihr den noch Brute Forcen? Die Zeiten sind vorbei :lol: Ich bastel grad was da schmeiß ich den Hash rein und des Pass kommt in ca 30-60 Sek raus bei grösseren Sachen dauerts halt einige sekunden länger. Aber wie geht habe ich grad vergessen :lol: |
Re: Herausfinden ob PW zu dem Benutzerkonto passt
Dann zeig mal etwas Code, das würde bestimmt hier jeden interessieren. Und wie sieht der Service aus? Wozu braucht er die erhöhten Rechte? Mit SSPI geht es eben auch ohne.
Und wie sieht deine Hash Methode aus? Benutzt du dort einen Rainbowtable oder wie machst du es? Und zum Knacken von Hashes mittels deren Hashwerte solltets du dir mal dies angucken: ![]() Wie schafst du also diese 30 bis 60 Sekunden? :gruebel: |
Re: Herausfinden ob PW zu dem Benutzerkonto passt
Nicht mekern is sicher noch verbesserungswürdig (etwa TIniFile -> TMemInifile pp.) is halt noch in der Entwicklungphase.
Delphi-Quellcode:
unit Main;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs, ScktComp, IniFiles; type TLoginSrv = class(TService) ServerSocket1: TServerSocket; procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure ServiceStart(Sender: TService; var Started: Boolean); procedure ServiceStop(Sender: TService; var Stopped: Boolean); private { Private-Deklarationen } public AppName: String; AppVers: String; function GetServiceController: TServiceController; override; { Public-Deklarationen } end; var LoginSrv: TLoginSrv; implementation {$R *.DFM} //////////////////////////////////////////////////////////////////////////////// procedure ServiceController(CtrlCode: DWord); stdcall; begin LoginSrv.Controller(CtrlCode); end; //////////////////////////////////////////////////////////////////////////////// function TLoginSrv.GetServiceController: TServiceController; begin Result := ServiceController; end; //////////////////////////////////////////////////////////////////////////////// function GetComputerName: String; var Buffer: Array[0..MAX_COMPUTERNAME_LENGTH+1] of Char; Size: DWORD; begin size:=256; Windows.GetComputerName(Buffer, Size); Result:=StrPas(Buffer); end; //////////////////////////////////////////////////////////////////////////////// procedure TLoginSrv.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var IniDat: TIniFile; StrList: TStringList; ErrCode: Cardinal; FileName, Username, Password: String; begin FileName := ExtractFilePath(ParamStr(0))+AppName+'.tmp'; StrList := TStringList.Create; StrList.Text := Socket.ReceiveText; StrList.SaveToFile(FileName); IniDat := TIniFile.Create(FileName); Username := IniDat.ReadString('Authentification', 'Username',''); Password := IniDat.ReadString('Authentification', 'Password',''); LogonUser(PChar(Username), PChar(GetComputerName), PChar(Password), LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ErrCode); IniDat.WriteInteger('Authentification', 'ErrCode', ErrCode); IniDat.WriteString('Authentification', 'ErrCodeStr', SysErrorMessage(ErrCode)); IniDat.WriteInteger('Authentification', 'GetLastError', GetLastError); IniDat.WriteString('Authentification', 'GetLastErrorStr', SysErrorMessage(GetLastError)); StrList.Clear; StrList.LoadFromFile(FileName); LoginSrv.ServerSocket1.Socket.Connections[0].SendText(StrList.Text); LoginSrv.ServerSocket1.Socket.Disconnect(0); IniDat.Free; StrList.Free; if FileExists(FileName) then DeleteFile(FileName); end; //////////////////////////////////////////////////////////////////////////////// procedure TLoginSrv.ServiceStart(Sender: TService; var Started: Boolean); begin ServerSocket1.Open; end; //////////////////////////////////////////////////////////////////////////////// procedure TLoginSrv.ServiceStop(Sender: TService; var Stopped: Boolean); begin ServerSocket1.Close; end; //////////////////////////////////////////////////////////////////////////////// end. |
Re: Herausfinden ob PW zu dem Benutzerkonto passt
LogonUser versucht jedesmal den Benutzer einzuloggen. Und das dauert gegenüber der SSPI Methode ewig.
Edit: Ich habe meinem vorherigen Post noch etwas hinzugefügt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz