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:
- program odgaduje haslo skladające się z 4 znaków duże i male litery
- 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