Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Пишем спамер для vkontakte.ru |

23.06.2009, 17:02
|
|
Познающий
Регистрация: 23.05.2009
Сообщений: 35
Провел на форуме: 104584
Репутация:
32
|
|
Пишем спамер для vkontakte.ru
Это только пример написания
Кидаем на форму TIdHTTP и TIdCookieManager, остальное по желанию
Далее берём какой-нибудь http анализатор к примеру HTTPAnalyzer
Смотрим что отправляет браузер при входе и что нам отправляет сервер в ответ
Серверу мы отправляем пароль и мыло
Код:
Var
Res:string;
Data:TStringList;
Begin
Data:=TStringList.Create;
Data.Add('op=a_login_attempt');
Data.Add('email=admin@mail.ru'); //Логин
Data.Add('pass=123456'); //Пароль
res:=http[n].Post('http://vkontakte.ru/login.php',Data);
data.Clear;
if res='failed' then begin
memo1.lines.add('Не верный логин/пароль');
exit;
end;
Заполняем логин и пароль и отправляем пост запрос на сервер, если сервер возращает failed то пароль или логин не верный и мы выходим(либо берём другой логин и пароль)
При посылке там произошёл редирект, значит делаем так
Код:
http.HandleRedirects:=true;
http.AllowCookies:=true;
И сервер нам вернул куки, но они почему то не записались в менеджер(злые дяди поставили точку пред доменом) в сети много вариантов обхода этого, но самый простой:
Код:
cook:=http.Response.RawHeaders.CommaText;
repeat
delete(cook,1,Pos('Set-Cookie:',cook)+11);
Cookie.AddCookie(copy(cook,0,Pos(';',cook)-1),'vkontakte.ru');
until Pos('Set-Cookie:',cook)=0;
Ура мы вошли!
Теперь надо отправить сообщение, опять смотрим через анадизатор что там браузер передаёт и что принимает
Всё понятно кроме некого параметра chas(он находиться в форме), значит выдираем его от туда
Код:
Chas:=http.GET('http://vkontakte.ru/mail.php?act=write&to='+Id);
delete(Chas,1,Pos('name="chas"',Chas)+18);
Chas:=copy(Chas,0,Pos('"',Chas)-1);
Ну теперь можно отправлять
Код:
Chas:=http.GET('http://vkontakte.ru/mail.php?act=write&to='+id]);
delete(Chas,1,Pos('name="chas"',Chas)+18);
Chas:=copy(Chas,0,Pos('"',Chas)-1);
Mes.add('act=sent');
Mes.add('ajax=1');
Mes.add('misc=');
Mes.add('secure=3ae6');
Mes.add('chas='+Chas);
Mes.add('photo=0');
Mes.add('to_id='+id);
Mes.add('to_reply=0');
Mes.add('toFriends=');
Mes.add('title='+ titleText);
Mes.add('message='+messageText);
res:=RussianToUnicode(Http.Post('http://vkontakte.ru/mail.php', Mes));
if Pos('отправле',res)<>0 then //Result:='Отправленно';
Mes.Clear;
Тут ещё есть функция RussianToUnicode
Код:
function RussianToUnicode(S:string): String;
var
Wrd:Word;
pW,pR:Pword;
len:integer;
begin
pW:=@s[1];
len:=length(S);
setLength(Result,len);
pR:=@Result[1];
while Len<>0 do begin
Wrd:=pW^;
case Wrd of
$C0..$DF,$E0..$FF:pr^:=Wrd+$0350;
else pR^:=WRD;
end;
inc(pW);
inc(pR);
dec(Len);
end;
end;
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|