PDA

Просмотр полной версии : ПОМОГИТЕ! IDC СМС Спамер...


slesher
16.04.2010, 17:47
Извените, может я не по адресу но всеже:

Всем привет! У меня такой вопрос...
Есть оператор мобильной связи IDC. Так же у них на серваке есть сайт для отправления СМС-Сообщений на телефоны подключенные к их компании... Вот ссылка: http://sms.idknet.com... Отсюда я и собираюсь отправлять СМС спам...
Немного подумав как это проще сделать я нашел самый оптимальный вариант, и перешел к действиям...
1) Снифером HTTP Analyzer 5.0 отсканировал post запрос, который отправляется на файлик отбработчика: http://sms.idknet.com/sms.php
Оказалось, что при отправке в обработчик поступают следующие параметры:
prefix - Код оператора
txtAddr - Номер телефона
sum - Оставшееся колличество символов
txtSM - Текст СМС Сообщения
code - Код Капчи
Submit2.x - Абсцысса кнопки "Отправить" (Оставить по умолчанию 35)
Submit2.y - Ордината кнопки "Отправить" (Оставить по умолчанию 15)
Submit2 - Надпись на кнопке (Оставить по умолчанию Отправить)

Если все это дело отправлять Get запросом, то выходит что то вроде такова: http://sms.idknet.com/sms.php?prefix=777&txtAddr=12345&sum=160&txtSM=%C2%E2%E5%E4%E8%F2%E5+%F1%EE%EE%E1%F9%E5%ED% E8%E5.+%C4%EB%E8%ED%E0+%F1%EE%EE%E1%F9%E5%ED%E8%FF +%ED%E5+%E4%EE%EB%E6%ED%E0+%EF%F0%E5%E2%FB%F8%E0%F 2%FC+160+%F1%E8%EC%E2%EE%EB%EE%E2.&code=&Submit2.x=35&Submit2.y=15&Submit2=%CE%F2%EF%F0%E0%E2%E8%F2%FC

Но после нескольких эксперементов, убедился, что Get запросом тут не обойтись, пишет, что незаполнены поля...

Я стал юзать Post...
КОД:
procedure TForm1.Button2Click(Sender: TObject);
var data: tstringlist;
ssylka,STR: string;
begin
idhttp1.HandleRedirects:=true;
STR:=idhttp1.Get('http://sms.idknet.com');
ssylka:='http://sms.idknet.com/sms.php';
data:=tstringlist.Create;
data.Add('code='+edit3.text);
data.Add('prefix='+st);
data.Add('Submit2=Отправить');
data.Add('Submit2.x=27');
data.Add('Submit2.y=6');
data.Add('sum=160');
data.Add('txtAddr='+edit1.text);
data.Add('txtSM='+edit2.text);
str:=idhttp1.Post(ssylka, data);
showmessage(idhttp1.URL.URI);
if pos('class="bad"', STR) <> 0 then
label5.Caption:='Сообщение неотправленно!'
else
label5.Caption:='Сообщение отправленно!';
end;

И функция парса:
function tform1.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);
if b > 0 then
result:=copy(ForS,1,b-1);
end;

Все вродебы не плохо, но осталась одна нерешенная проблема!...(( Что делать с капчей...
Подумав, я не стал заморачиваться, и решил просто сделать так, чтобы капча выводилась в программу, и я сам ее каждый раз вводил...
Код примерно такой:

procedure TForm1.Label3Click(Sender: TObject);
var _Captcha : TJPEGImage;
F_body : TMemoryStream;
id, a:string;
MyIdHTTP : TIdHTTP;
begin
MyIdHTTP:=TIdHTTP.Create(Self);
F_body := TMemoryStream.Create;
_Captcha:=TJPEGImage.Create;
try
MyIdHTTP.Get('http://sms.idknet.com/code.php', F_body);
F_body.Seek(0, soFromBeginning);
_Captcha.LoadFromStream(F_body);
Image1.Picture.Assign(_Captcha);
Image1.Width:=_Captcha.Width;
Image1.Height:=_Captcha.Height;
finally
F_body.Free;
_Captcha.Free;
end;
end;

Сама капча находится на главной страничке http://sms.idknet.com, но вытаскивается туда она со странички http://sms.idknet.com/code.php

Все вроде бы замечательно, капчу программа в себя вытаскивает нормально, но когда я ее ввожу (и ввожу правильно) всеравно отправка не идет, и пишет что капча введена неверно!

Сначала не мог понять в чем прикол, потом догнал... Капча та каждый раз при обновление меняется...
Я получается вытаскиваю капчу одну, ввожу ее, а отом при Post запросе вытаскивается страница целиком вместе с капчей, следовательно и капча меняется...

Что мне делать в таком случае? Подскажите пожалуйста!!!