"Zgadywanie" hasel

0

Witam!

Potrzebuje wsparcia technicznego otóż w TP7 coś już kiedyś pisalem natomiast w Delphi troszkę mi ciemnawo a potrzebuje program do odgadnięcia hasla TP w tym momencie mi nie pomoże jako że program do którego chce się dostać jest pod WIN.
Otóż jak wspomnialem Delphi znam dopiero 2 dni i ze sklejek różnych poradników gównie z 4programmers.net uklecilem coś takiego:
kod:

unit MainFrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TMainForm = class(TForm)
    btnReset: TButton;
    memFile: TMemo;
    btnSave: TButton;
    haslo: TMemo;
    procedure btnResetClick(Sender: TObject);
    procedure btnSaveClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;

implementation

{$R *.dfm}

procedure TMainForm.btnResetClick(Sender: TObject);
var
    Proces: Integer;
  i: Integer;
  ss: string;
  TF : TextFile;
  S : String; // zmienna tymczasowa
    wnd: HWND;
SI:TStartupInfo;
PI:TProcessInformation;
begin

  AssignFile(TF, 'C:\1.txt');
  try
    Reset(TF);
    { pętla odczytuje kolejne linie pliku tekstowego }
    while not Eof(TF) do
    begin
      Readln(TF, S); // odczytanie linii i przypisanie zawartosci do zmiennej S
      memFile.Lines.Add(S);

begin
FillChar(SI,sizeof(SI),0);
with SI do
begin
dwFlags:=STARTF_USESHOWWINDOW;
wShowWindow:=SW_SHOW;
cb:=sizeof(TStartupInfo);
end;
CreateProcess(nil,PChar('ścieżka i nazwa programu "UID=login;PWD='+S+';"'),
nil,nil,FALSE,NORMAL_PRIORITY_CLASS,nil,nil,SI,PI);

sleep(900);

wnd := FindWindow('Nazwa okna', nil);

if wnd <> 0 then
begin
keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), 0, 0);
keybd_event(Ord('R'), MapVirtualKey(Ord('R'), 0), 0, 0);
keybd_event(Ord('R'), MapVirtualKey(Ord('R'), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), KEYEVENTF_KEYUP, 0);

end;
sleep(900);
  wnd := FindWindow('Nazwa okna', nil);
   if wnd <> 0 then
begin

 sendMessage(wnd, WM_QUIT,0,0);
  CreateProcess(nil,PChar('ścieżka i nazwa programu "UID=login;PWD='+S+'"),
nil,nil,FALSE,NORMAL_PRIORITY_CLASS,nil,nil,SI,PI);

sleep(5000);
keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), 0, 0);
keybd_event(Ord('R'), MapVirtualKey(Ord('R'), 0), 0, 0);
keybd_event(Ord('R'), MapVirtualKey(Ord('R'), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), KEYEVENTF_KEYUP, 0);
sleep(5000);

wnd := FindWindow('Nazwa okna', nil);

if wnd <> 0 then
begin
     haslo.Lines.Add(S);
    haslo.Lines.Add('ok');
  while not Eof(TF) do
     begin
   Readln(TF, S);
   end;
 end;

  SendMessage(wnd, WM_QUIT,0,0);
 end;

end;


   end;


  finally
    CloseFile(TF);
  end;
end;



end. 

Powiem tak i to dziala tylko bardzo wolno dopasowywuje haslo - zalożenie jest takie:

  1. program odgaduje haslo skladające się z 4 znaków duże i male litery
  2. login jest znany i kwestia dopasowania hasla do danego loginu

Program do którego "pisze ten soft" dziala w oparciuo baze czyli ja odpalam baze danych wielkosci 1 GB na zasadzie serwera. I jest wlasnie ten program (z wiadomych przyczyn nie moge podać jego nazwy) ale po odpaleniu go z pewnymi parametrami "UID=login;PWD=haslo" on się uruchamia ale sęk w tym że do penego uruchomienia potrzebuje chwilke u mnie aż sleep (900); w miedzy czasie odczytany ciag znaków jest podstawiany pod PWD (haslo). Nastepnie soft przejmuje uchwyt i sporawdza czy się już otworzyl jeżeli tak to próbuje kombinacje atl+R jeżeli zamknie program to znaczy że haslo jest bledne odczeka znowu swoje 900 ponownie przejmie uchwyt jeżeli bark to leci dalej jeżeli nie to dla bezpieczeństwa wykonuje jeszcze te same procedury z większym opóźnieniem.
Przy haslach od aaaa do aeDE zajelo to 11h moje pytanie czy moje rozumowanie przy pisaniu czegoś takiego jest zle może jest jakiś szybszy sopsób operowania na tych uchwytach i wysylania danych ?
Proszę o informacje

0

Sam to przeczytałem i może jest troche nie czytelne spróbuje może jeszcze inaczej zadać pytanie:
Potrzebuje polecenie np Seend lub Post Message które wyśle mi do "uchwytu" ciąg znaków "UID=login;PWD=xxx" xxx- to podstawione hasło bez ponownego zamykania i otwierania programu gdyż tu czasu trace najwięcej.
Oczywiście chodziło by mi teraz o opceje sprawdzenia czy było ono poprawne i tu nie wiem z jakiej opcji skorzystać gdyż gdy program się zaloguje poprawnie to i tak jest już w procesachjako uruchomiony bez względu czy z prawidłowymi paramertami więc nie mam możliwości sprawdzenia czy hasło było ok. Jedyne co się zmienia przy prawidłowym haśle to Tlabel nie podaje już tylko nazwy programu a pojawia się nazwa programu i pare jeszcze ważnych informacji.
Więc moje pytanie jak stworzyć taką funkcję która wysyła do programu ciąg char z czymś takim "UID=login;PWD=xxx" i sprawdza czy Tlabel nie został zmieniony.
p.s. Powyższa wersja z postu 1 działa ale ogromnie dużo czasu traci na otwieranie programu i próby zamknięcia jeżeli użyje bez parametrów sleep to zdązy mi się otworzyć 100 programów zmulić kompa i bez rezultatu odgadnięcia hasła. Aczkolwiek pośród tych 100 uruchomionych programów jest ten jeden z odgadniętym hasłem niesety komp się wiesza brak pamięci podręcznej itd. A ja nie jestem wstanie odczytać które hasło było prawidłowe gdzyż hasła ze słownika lecą po kolei a przy funkcji zamykania większość okien zostanie zamknięta z tych 100 tylko nie wiem z jakim one były parametrem
jak by ktoś już coś takiego przerabiał proszę o info [email protected]

1 użytkowników online, w tym zalogowanych: 0, gości: 1