информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
идея + исходник !!!!!! 03.12.01 22:02  Число просмотров: 1460
Автор: BXS Статус: Незарегистрированный пользователь
<"чистая" ссылка>
вот я тебе выдрал часть исходника для подобных затей.
(практически это было реализовано в первых версиях P-SMS клиента. Правда проект я уже закрыл но прогу можно найти по сети...)
идея тут следующая:
Задача - послать мессагу на трубу МТС.
Скрипт на МТСе требует на входе: номера абонента, тело сообщения, время и дату. Замечу - что время и дата - существенные показатели... Мессага может не отсылаца если она просрочена итд... Если ты будешь сам вводить время и дату - то исходник которыя я приведу внизу можно будет упростить (выкинуть часть загрузки времени и даты). Предположим что ты хочешь чтобы прога полностью за тебя формировала запросы к МТС. Для реализации тебе нужно просто сэмитировать работу браузера:
1. Запросить страничку с формой
2. извлечь из нее дату и время
3. сформировать свой заголовок
4. скинуть ответ скрипту
*. отсылать можно как напрямую так и с халявных проксей (все это показано внизу)

Итак, приступаем:

// некоторые переменные может не нужны а некоторых может не хватать тут - просто я не особо церемонился... если нету - значит объяви недостающие глобальными... остальное очевидно...

#define MTS_SERVER "www.mts.ru"
#define MTS_URL "http:\/\/www.mts.ru/sms"
#define MTS_PATH "/sms/sent.html"
in_addr MTS_IP;
SOCKET MsgSock;
PHOSTENT phe;
char Request[3000], Temp_Request[2000],RecvBuffer[520]="\0", *Ptr, *Ptr2 *MTS_BUFFER, Proxy[255], IP[16], Temp_Path[64];
BYTE Return;
WORD PORT;
int Offset=0, Result, count, Action_Len, Session_Value_Len;


struct send_properties{
char Id[12]; // тут будет телефон
char Message[500]; // мессага
char SendAfter[20];
char Repeat[5];
char Transliterate[15];
char Hour[3];
char Minute[3];
char Day[3];
char Month[3];
char Year[5];
}Send_Properties;




// заполняем адрес
if((phe=gethostbyname(MTS_SERVER))!=0){
memcpy(&MTS_IP,phe->h_addr, phe->h_length);
MTS_IP_FOUND=TRUE;
}
// заполняем поле прокси если она вааще нужна
if(PROXY_ON ==1){
wsprintf(Proxy," http://%s",MTS_SERVER);
wsprintf(IP,"%s",RegData.Proxy_Ip);
PORT = RegData.Proxy_Port;
}
else{
wsprintf(Proxy," ");
wsprintf(IP,"%s",inet_ntoa(MTS_IP));
PORT = SERVER_PORT;
}

wsprintf(Temp_Request,"GET%s%s HTTP/1.0",Proxy,MTS_PATH); // тут уже в Temp_Request есть весь HTTP GET заголовок. Тепреь добавим разной стандартной дряни

GenerateHeader(Request, Temp_Request,MTS_URL,IP); // тело этой ф-ции находица в самом низу

if((Result=Transmit_Packet(IP, PORT, Request, TRUE, MTS_BUFFER, MTS_BUFFER_SIZE))<0){
LocalFree(MTS_BUFFER);
Return=1;
goto Exit_Thread;
} // эта функция просто по открытому сокету трансферит данные. возвращает -1 если ошибка и размер трансчеренных байтов если все зашибись.

// На этом этапе мы получили стандартную страничку с сервера (ту которую ты получаешь заходя через браузер). теперь надо оттуда выдрать время и дату (по умолчанию они присылаюца сервером в скрытых полях формы)

Ptr=MTS_BUFFER;
for(count=0;count!=5;count++){
if((Ptr=strstr(Ptr,"selected value="))==0){
LocalFree(MTS_BUFFER);
Return=1;
goto Exit_Thread;
}
Ptr+=16;
Offset=0;
UNTIL_QUOTE:
if(Offset>5){
LocalFree(MTS_BUFFER);
Return=1;
goto Exit_Thread;
}
if(Ptr[Offset]=='"')
goto GET_NEXT_FIELD;
MTS_TIME[count].Item[Offset]=Ptr[Offset];
Offset++;
goto UNTIL_QUOTE;
GET_NEXT_FIELD:
Offset=0;
}

wsprintf(Send_Properties.Hour,"%s",MTS_TIME[0].Item);
wsprintf(Send_Properties.Minute,"%s",MTS_TIME[1].Item);
wsprintf(Send_Properties.Day,"%s",MTS_TIME[2].Item);
wsprintf(Send_Properties.Month,"%s",MTS_TIME[3].Item);
wsprintf(Send_Properties.Year,"%s",MTS_TIME[4].Item);

LocalFree(MTS_BUFFER);

if(PROXY_ON ==1){
wsprintf(Proxy," http://%s",MTS_SERVER);
wsprintf(IP,"%s",RegData.Proxy_Ip);
PORT = RegData.Proxy_Port;
}
else{
wsprintf(Proxy," ");
wsprintf(IP,"%s",inet_ntoa(MTS_IP));
PORT = SERVER_PORT;
}

// формируем уже настоящий запрос с сообщением wsprintf(Temp_Request,"GET%s%s?Posted=1&To=%s&Msg=%s&count=%d&SMSHour=%s&SMSMinute=%s&SMSDay=%s&SMSMonth=%s&SMSYear=%s HTTP/1.0",
Proxy,MTS_PATH, Send_Properties.Id,Send_Properties.Message, lstrlen(буфер с твоей мессагой),Send_Properties.Hour,Send_Properties.Minute,Send_Properties.Day,Send_Properties.Month,Send_Properties.Year);
GenerateHeader(Request, Temp_Request,MTS_URL,IP);

if((Result=Transmit_Packet(IP, PORT, Request, FALSE, 0, 0))<0){
Return=1;
goto Exit_Thread;
}
Return=0;
goto Exit_Thread;


// отослано :))

// далее можно получить ответ от скрипта и проверить на наличие фразы "сообщение отправлено" - success и failure иначе... сам решишь стоит ли...


-------------------
int GenerateHeader(char *Output, char *Input, char *Referer, char *Ip){
//эта ф-цтя гененит заголовки для закоса под разные браузеры... извращайся тут как хочешь.. в примере токо 2 case

switch(rand()%8){
case 1:
wsprintf(Output,"%s\r\nUser-Agent: Opera/4.02 (Windows 98; U) [en]\r\n\
Host: %s\r\n\
Referer: %s\r\n\
Accept: text/html, image/png, image/jpeg, image/gif, image/x-xbitmap, image/vnd.wap.wbmp;level=0, */*\r\n\
Accept-Language: en\r\n\
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0\r\n\
Connection: Keep-Alive\r\n\r\n",Input,Ip,Referer);
break;
case 2:
wsprintf(Output,"%s\r\n\
User-Agent: Mozilla/4.0 (Windows 4.10;US) Opera 3.60 [en]\r\n\
Accept: image/gif, image/x-xbitmap, image/jpeg, image/png, */*\r\n\
Referer: %s\r\n\
Host: %s\r\n\r\n",Input,Referer,Ip);
break;
case ДО_ХРЕНА:
итд.


// Оговорюсь сразу - это старый исходник, вероятно МТС поменяла пути к нужным файлам или переименовала - поэтому может не будет работать.... но это просто техническая проблема которая решаеца за 30- минут.

Юзай на здоровье!
<programming>
[Win32] Как отправить SMS через инет? 02.12.01 19:44  
Автор: Паша Федорцов Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Как отправить SMS через инет? Каким серваком и протоколом пользоваться, может кто подскажет?
[Win32] Как отправить SMS через инет? 02.12.01 22:38  
Автор: OverKill <::.0v3rK1LL.::> Статус: Member
<"чистая" ссылка>
> Как отправить SMS через инет? Каким серваком и протоколом
> пользоваться, может кто подскажет?
Советую поискать эту тему в ранее задававшихся вопросах.
А вообще, ася умеет смс рассылать.
[Win32] Как отправить SMS через инет? 03.12.01 04:22  
Автор: lukash Статус: Незарегистрированный пользователь
<"чистая" ссылка>
меня просто это убивает все об этом говорят, но толком 0
звонишь своему оператору и спрашиваешь
например, киевстар
для тел номера xxxxxxxxxx
мэил такой xxxxxxxxxx@2sms.kyivstar.net
а для твоего позвони и узнай
[Win32] Как отправить SMS через инет? 03.12.01 04:55  
Автор: BXS Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> меня просто это убивает все об этом говорят, но толком 0
> звонишь своему оператору и спрашиваешь
> например, киевстар
> для тел номера xxxxxxxxxx
> мэил такой xxxxxxxxxx@2sms.kyivstar.net
> а для твоего позвони и узнай

Очень просто!
1. Найди сайт оператора который тебе нужен...
2. глянь внутрь формы (изучи просто html формат для отсылки. может придеца некоторые поля выкинуть а некоторые генерить самому (типа браузер, печенье итд))
3. пиши простейшего tcp клиента и спихивай на сайт форму...
4. можешь даже принимать ответ и проверь на код возврата (обычно на пагебудет написано доставлено или нет)

Недостаток такого метода - каждый раз как на сайте изменица протокол передачи вероятно придеца переписывать и клиента.

На этом простейшем принципе основаны все проги этого класса...
Я как то тоже хостил один такой проект...
BXS !!!!!! 03.12.01 21:06  
Автор: Паша Федорцов Статус: Незарегистрированный пользователь
<"чистая" ссылка>
BXS отсавь свое мыло плз.... !!!! или напиши подробнее на disappearpf@mail.ru
возног гарат !!!!! *-)) beer and "><<((@)>"
идея + исходник !!!!!! 03.12.01 22:02  
Автор: BXS Статус: Незарегистрированный пользователь
<"чистая" ссылка>
вот я тебе выдрал часть исходника для подобных затей.
(практически это было реализовано в первых версиях P-SMS клиента. Правда проект я уже закрыл но прогу можно найти по сети...)
идея тут следующая:
Задача - послать мессагу на трубу МТС.
Скрипт на МТСе требует на входе: номера абонента, тело сообщения, время и дату. Замечу - что время и дата - существенные показатели... Мессага может не отсылаца если она просрочена итд... Если ты будешь сам вводить время и дату - то исходник которыя я приведу внизу можно будет упростить (выкинуть часть загрузки времени и даты). Предположим что ты хочешь чтобы прога полностью за тебя формировала запросы к МТС. Для реализации тебе нужно просто сэмитировать работу браузера:
1. Запросить страничку с формой
2. извлечь из нее дату и время
3. сформировать свой заголовок
4. скинуть ответ скрипту
*. отсылать можно как напрямую так и с халявных проксей (все это показано внизу)

Итак, приступаем:

// некоторые переменные может не нужны а некоторых может не хватать тут - просто я не особо церемонился... если нету - значит объяви недостающие глобальными... остальное очевидно...

#define MTS_SERVER "www.mts.ru"
#define MTS_URL "http:\/\/www.mts.ru/sms"
#define MTS_PATH "/sms/sent.html"
in_addr MTS_IP;
SOCKET MsgSock;
PHOSTENT phe;
char Request[3000], Temp_Request[2000],RecvBuffer[520]="\0", *Ptr, *Ptr2 *MTS_BUFFER, Proxy[255], IP[16], Temp_Path[64];
BYTE Return;
WORD PORT;
int Offset=0, Result, count, Action_Len, Session_Value_Len;


struct send_properties{
char Id[12]; // тут будет телефон
char Message[500]; // мессага
char SendAfter[20];
char Repeat[5];
char Transliterate[15];
char Hour[3];
char Minute[3];
char Day[3];
char Month[3];
char Year[5];
}Send_Properties;




// заполняем адрес
if((phe=gethostbyname(MTS_SERVER))!=0){
memcpy(&MTS_IP,phe->h_addr, phe->h_length);
MTS_IP_FOUND=TRUE;
}
// заполняем поле прокси если она вааще нужна
if(PROXY_ON ==1){
wsprintf(Proxy," http://%s",MTS_SERVER);
wsprintf(IP,"%s",RegData.Proxy_Ip);
PORT = RegData.Proxy_Port;
}
else{
wsprintf(Proxy," ");
wsprintf(IP,"%s",inet_ntoa(MTS_IP));
PORT = SERVER_PORT;
}

wsprintf(Temp_Request,"GET%s%s HTTP/1.0",Proxy,MTS_PATH); // тут уже в Temp_Request есть весь HTTP GET заголовок. Тепреь добавим разной стандартной дряни

GenerateHeader(Request, Temp_Request,MTS_URL,IP); // тело этой ф-ции находица в самом низу

if((Result=Transmit_Packet(IP, PORT, Request, TRUE, MTS_BUFFER, MTS_BUFFER_SIZE))<0){
LocalFree(MTS_BUFFER);
Return=1;
goto Exit_Thread;
} // эта функция просто по открытому сокету трансферит данные. возвращает -1 если ошибка и размер трансчеренных байтов если все зашибись.

// На этом этапе мы получили стандартную страничку с сервера (ту которую ты получаешь заходя через браузер). теперь надо оттуда выдрать время и дату (по умолчанию они присылаюца сервером в скрытых полях формы)

Ptr=MTS_BUFFER;
for(count=0;count!=5;count++){
if((Ptr=strstr(Ptr,"selected value="))==0){
LocalFree(MTS_BUFFER);
Return=1;
goto Exit_Thread;
}
Ptr+=16;
Offset=0;
UNTIL_QUOTE:
if(Offset>5){
LocalFree(MTS_BUFFER);
Return=1;
goto Exit_Thread;
}
if(Ptr[Offset]=='"')
goto GET_NEXT_FIELD;
MTS_TIME[count].Item[Offset]=Ptr[Offset];
Offset++;
goto UNTIL_QUOTE;
GET_NEXT_FIELD:
Offset=0;
}

wsprintf(Send_Properties.Hour,"%s",MTS_TIME[0].Item);
wsprintf(Send_Properties.Minute,"%s",MTS_TIME[1].Item);
wsprintf(Send_Properties.Day,"%s",MTS_TIME[2].Item);
wsprintf(Send_Properties.Month,"%s",MTS_TIME[3].Item);
wsprintf(Send_Properties.Year,"%s",MTS_TIME[4].Item);

LocalFree(MTS_BUFFER);

if(PROXY_ON ==1){
wsprintf(Proxy," http://%s",MTS_SERVER);
wsprintf(IP,"%s",RegData.Proxy_Ip);
PORT = RegData.Proxy_Port;
}
else{
wsprintf(Proxy," ");
wsprintf(IP,"%s",inet_ntoa(MTS_IP));
PORT = SERVER_PORT;
}

// формируем уже настоящий запрос с сообщением wsprintf(Temp_Request,"GET%s%s?Posted=1&To=%s&Msg=%s&count=%d&SMSHour=%s&SMSMinute=%s&SMSDay=%s&SMSMonth=%s&SMSYear=%s HTTP/1.0",
Proxy,MTS_PATH, Send_Properties.Id,Send_Properties.Message, lstrlen(буфер с твоей мессагой),Send_Properties.Hour,Send_Properties.Minute,Send_Properties.Day,Send_Properties.Month,Send_Properties.Year);
GenerateHeader(Request, Temp_Request,MTS_URL,IP);

if((Result=Transmit_Packet(IP, PORT, Request, FALSE, 0, 0))<0){
Return=1;
goto Exit_Thread;
}
Return=0;
goto Exit_Thread;


// отослано :))

// далее можно получить ответ от скрипта и проверить на наличие фразы "сообщение отправлено" - success и failure иначе... сам решишь стоит ли...


-------------------
int GenerateHeader(char *Output, char *Input, char *Referer, char *Ip){
//эта ф-цтя гененит заголовки для закоса под разные браузеры... извращайся тут как хочешь.. в примере токо 2 case

switch(rand()%8){
case 1:
wsprintf(Output,"%s\r\nUser-Agent: Opera/4.02 (Windows 98; U) [en]\r\n\
Host: %s\r\n\
Referer: %s\r\n\
Accept: text/html, image/png, image/jpeg, image/gif, image/x-xbitmap, image/vnd.wap.wbmp;level=0, */*\r\n\
Accept-Language: en\r\n\
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0\r\n\
Connection: Keep-Alive\r\n\r\n",Input,Ip,Referer);
break;
case 2:
wsprintf(Output,"%s\r\n\
User-Agent: Mozilla/4.0 (Windows 4.10;US) Opera 3.60 [en]\r\n\
Accept: image/gif, image/x-xbitmap, image/jpeg, image/png, */*\r\n\
Referer: %s\r\n\
Host: %s\r\n\r\n",Input,Referer,Ip);
break;
case ДО_ХРЕНА:
итд.


// Оговорюсь сразу - это старый исходник, вероятно МТС поменяла пути к нужным файлам или переименовала - поэтому может не будет работать.... но это просто техническая проблема которая решаеца за 30- минут.

Юзай на здоровье!
Но а если мелодии или логотипы? 04.12.01 07:06  
Автор: Паша Федорцов Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Спасибо большое! Но так я смогу послать текстовую SMS а мне нужно послать на трубу мелодию. Я так понимаю, что сервак MTC формирует SMS как текстовую и таким образом ничего не выйдет, или я ошибаюсь?
Но а если мелодии или логотипы? 04.12.01 08:56  
Автор: BXS Статус: Незарегистрированный пользователь
<"чистая" ссылка>
А с сервака по ходу и незя сливать картинки (( (по крайней мере у МТС). К тому же я описал кустарный способ для мессаг...
ася похоже совершенно иначе коннектица....
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach