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

20.07.2005, 08:43
|
|
Постоянный
Регистрация: 02.05.2005
Сообщений: 786
Провел на форуме: 807041
Репутация:
263
|
|
--------------------------------------------------------------------------------
unisock.h остался без изменений:
--------------------------------------------------------------------------------
#ifndef _UNISOCK_H_
#ifndef _WIN32
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <netdb.h>
#include <unistd.h>
typedef int SOCKET;
typedef struct sockaddr SOCKADDR;
typedef struct sockaddr_in SOCKADDR_IN;
#define SOCKET_ERROR -1
#define INVALID_SOCKET -1
#define SD_RECEIVE 0x0
#define SD_SEND 0x1
#define SD_BOTH 0x2
#define closesocket(s) close(s)
#endif /* _WIN32 */
#define _UNISOCK_H_
#endif /* _UNISOCK_H_ */
--------------------------------------------------------------------------------
В этом примере мы устанавливаем соединение с нашим сервером, дожидаемся приветствия, посылаем ответное и закрываем соединение. Напомним, что recv(2) является блокирующим вызовом, что нас, вообще говоря, не устраивает. Тем не менее, мы снова можем перевести наш сокет в неблокирующее состояние и воспользоваться select. Мы так и поступим в дальнейшем, а этот пример просто показывает технику написания простейшего клиента, и мы с удовольствием обнаруживаем, что это не слишком сложно. В завершение обратим внимание на вызовы inet_addr(3) и htons(3). Первая функция дает IP-адрес по символьному его представлению, а вторая переводит short int в целое с порядком байтов, принятых в сети. Часто этот порядок совпадает с порядком байтов в машинном представлении, но может и не совпадать (имеется ввиду т. н. LSB и FSB представления). Впрочем, это уже тонкости, о которых можно почитать и в другом месте  . И наконец, можно на досуге взглянуть на функцию gethostbyname(3), которая выполняет т. н. разрешение (resolving) по имени хоста. Используя ее, мы могли бы обратиться к нашему серверу не по IP-адресу, а по его имени ("localhost").
Глава 3 Заключение.
Итак, в данной статье мы выяснили, как обращаться с сокетами. Те, кто уже имел с ними дело (и набрался терпения дочитать до этого места), наверное обратили внимание на то, что мы использовали "классическую" Берклиевскую реализацию. Она хороша тем, что в большинстве случаев переносима между платформами, однако нам бы не хотелось подталкивать разработчиков к использованию именно такого подхода, тем более, что, как мы в дальнейшем увидим, для работы с SMS-протоколами это совсем необязательно, ибо они абстрагированы от деталей установки соединения. Например, те, кто программирует под Windows, могут воспользоваться функциями из семейства WSA* (если, конечно, не уснут, читая их перечень  , а программисты, привыкшие работать с MFC, возможно найдут полезным класс CSocket (правда, если Вы собираетесь использовать его в мультипоточном приложении с CWinThread, не забудьте включить заклинание:
--------------------------------------------------------------------------------
#ifndef _AFXDLL
#define _AFX_SOCK_THREAD_STATE AFX_MODULE_THREAD_STATE
#define _afxSockThreadState AfxGetModuleThreadState()
_AFX_SOCK_THREAD_STATE* pState = _afxSockThreadState;
if (pState->m_pmapSocketHandle == NULL)
pState->m_pmapSocketHandle = new CMapPtrToPtr;
if (pState->m_pmapDeadSockets == NULL)
pState->m_pmapDeadSockets = new CMapPtrToPtr;
if (pState->m_plistSocketNotifications == NULL)
pState->m_plistSocketNotifications = new CPtrList;
#endif
--------------------------------------------------------------------------------
в код thread'а до самой первой сокетной операции; возможно, это сэкономит Вам выходные  . И, в конце концов, Вы можете воспользоваться компонентами (Привет, Михаил!  , которых достаточно много и которые достаточно "бросить" на форму, особенно это касается поклонников продуктов от Borland.
автор С. Кадаков sgerr@hotmail.com
|
|
|

20.07.2005, 08:49
|
|
Постоянный
Регистрация: 02.05.2005
Сообщений: 786
Провел на форуме: 807041
Репутация:
263
|
|
Основы SMS. Протоколы SMS. Транзакционный механизм установления связи с SMSC
Глава 1 От авторов.
Этой статьей мы открываем цикл, посвящённый сервису SMS, набирающему сейчас всё большую популярность. Основной причиной, побудившей нас взяться за их написание, явилась необходимость просуммировать «для себя» опыт общения с различными SMS протоколами, накопленный при разработке различных же приложений. В процессе написания небольшие заметки «на полях», стали принимать вид достаточно развернутых статей, которые хотелось бы систематизировать, для того, чтобы они пригодились и еще кому-то. Таким образом, на данные статьи предлагается смотреть, как на мини-howto, которое позволит сориентироваться изучающему данный вопрос. Основной трудностью, с которой мы столкнулись «на старте» стала, как ни странно, труднодоступность простой для понимания информации по данному вопросу. Т. е. не то чтобы её не было, а её слишком много и она разного качества: нам не попадалось документа, который внятно бы, step-by-step, показывал, как например, написать приложение с возможностью посылки и приёма SMS. Попытаемся восполнить этот пробел, не претендуя на всеохватность изложения.
Глава 2 SMS Basics
2.1 Что такое SMS?
SMS (Short Messages Service) — услуга, предоставляемая операторами цифровых стандартов мобильной связи (GSM, CDMA, DAMPS), заключающаяся в отправке коротких текстовых (и не только) сообщений на мобильный телефон, называемый также Mobile Terminal (MT) или Mobile Station (MS). В силу некоторой специфики, данный сервис не приобрёл в России такой же популярности, как на западе, однако, постепенно начинает ее завоевывать. Причина «западной» популярности сервиса проста: его дешевизна по сравнению с голосовыми переговорами, а также то, что обмен короткими сообщениями хорошо поддается автоматизации. Вообще, с точки зрения SMS, сотовый телефон можно рассматривать, как двусторонний пейджер, с одним большим преимуществом: сообщение будет обязательно доставлено (как говорят «доведено»), вне зависимости, находится ли абонент в зоне приема в момент его отправки (а точнее будут предприниматься попытки его доведения до тех пор, пока не истечет его «срок годности», validity period). А длины в 160 символов обычно достаточно, чтобы сказать что-нибудь типа «Я выезжаю» или «Свяжись со мной по телефону 02».
2.2 Причём здесь программирование?
Резонный вопрос, ведь написание софта для «мобильников» не самая распространенная область программистской деятельности. Но вся штука в том, что большинство (а скорее всего — все) операторов предоставляют возможность обмена короткими сообщениями между MT и внешними, по отношению к мобильной сети (PLMN – Private Local Mobile Network) устройствами, т. н. ESME (External Short Messages Entity), в качестве которого может выступать любое ПО, поддерживающее определенный протокол. Делается это с помощью определенных устройств, называемых SMSC (Short Messages Service Center), одним «концом» подключенных к PLMN, а другим — в сеть общего назначения, например TCP/IP (Internet). Вот как это выглядит:
Не обращайте пока внимание на аббревиатуру SMPP (к ней мы вернемся чуть позже), а вместо неё читайте «некоторый протокол для связи с SMSC». Хорошим примером ESME является последняя версия ICQ. Что? Уже кидали «мессаги» подружке на трубку? Так не пора ли теперь разобраться, как все это устроено?
2.3 Протоколы SMS.
Вот тут мы затронули достаточно скользкую тему. Дело в том, что хоть они и называются «протоколами», таковыми они на деле не являются: это отраслевые рекомендации разработчиков SMSC, которых довольно много. И если в части передачи сообщений по мобильным сетям особых разногласий не наблюдается: работает «настоящий» протокол SS7 (Signaling System Seven, тема для отдельного большого разговора), то в части доведения сообщений от ESME до SMSC каждый разработчик придумывает свой «протокол»; единственное требование к разработчику: публикация спецификаций. Упомянем самые популярные протоколы, кратко перечислив их отличительные черты.
2.3.1 SMPP
SMPP (Short Messages Peer-to-Peer) является, видимо, самым распространенным протоколом и разрабатывается SMPP Developers Forum (ничего общего с Open Source, просто организация такая). Один из, на наш взгляд, самых удобных протоколов, много возможностей, достаточно хорошо проработан. SMPP предлагает бинарную кодировку пакетов (впрочем, к этому мы еще вернемся). Используется многими операторами, в т. ч. British Telecom.
2.3.2 EMI
Протокол EMI (External Machine Interface) продвигает ETSI (кажется расшифровывается как European Telecommunication Standards Institute). Предлагает текстовую кодировку пакетов, также имеет развернутые возможности, но, на наш взгляд, неэстетичен. В различных диалектах используется многими провайдерами, точно — Swisscom'ом, и, вроде как, — NWGSM'ом.
2.3.3 SMS2000 aka SEMA
Тяжёлый протокол, разрабатывается SEMA Group. Однако, возможности большие. Предлагает на выбор бинарную, шестнадцатиричную и IA5 кодировку пакетов. Используется Vodafone. Оставляет неприятные воспоминания.
2.3.4 CIMD
Тоже протокол... Напоминает EMI...
2.4 Общий знаменатель.
Несмотря на такое изобилие, суть работы всех протоколов сводится, что очевидно, к нескольким простым функциям (смотрим со стороны ESME):
Организация соединения с SMSC
Отправка сообщений в PLMN
Прием сообщений из PLMN
Прием подтверждений доставки (delivery receipts)
|
|
|

20.07.2005, 08:53
|
|
Постоянный
Регистрация: 02.05.2005
Сообщений: 786
Провел на форуме: 807041
Репутация:
263
|
|
2.4.1 Установка связи
Фактически, порядок работы следующий: соединяемся с SMSC и, поверх сетевого протокола, начинаем слать пакеты (называемые часто «командами» или «операциями») в формате выбранного нами SMS-протокола. Для простоты, будем опираться на самый распространенный случай, связь по TCP/IP, хотя многие модели SMSC поддерживают связь через, например, X.25 или PSTNA, а SMS-протоколы абстрагированы, насколько возможно, от деталей установки соединения.
2.4.2 Транзакционный механизм
Для того, чтобы предоставить гарантию доставки, все SMS-протоколы используют транзакционный механизм, а проще говоря, подтверждения для каждой, испущенной (invoke) любой из сторон, команды. Получив команду, участник обмена (SMSC или ESME) обязан ответить на неё специальным пакетом, называемым в разных протоколах по-разному: response, result или ACK (от acknowledgement). Мы будем называть такие пакеты ACK (опять же, чтобы не путаться в терминах). Различают два типа ACK'ов: собственно ACK — положительный ответ и NACK — отрицательный (negative) ответ. NACK кроме указания на тот факт, что приключилась ошибка, передает еще и её код, прописанный в спецификации протокола. Вот как это выглядит в графике:
И в обратную сторону:
Каждая транзакция нумеруется инициирующей стороной, принимающая сторона использует переданный ей номер в ACK'е. Правила нумерации обычно свободные, указывается только диапазон допустимых номеров, для каждого протокола он, естественно, разный. Однако открытие двух транзакций с одним номером в рамках одной сессии, как правило, недопустимо. В случае неприхода ACK'а за определенное время (настраиваемое как на SMSC, так и на ESME) команда считается неуспешной и, в зависимости от логики работы, повторяется. Если противоположная сторона продолжает «молчать» в ответ на испущенные команды, соединение обычно разрывается.
Глава 3 Итоги
Теперь мы знаем о предмете достаточно, чтобы сформулировать задачи требующие решения для написания ESME клиента. Необходимо:
Иметь возможность установки соединения по TCP/IP с сервис-центром.
Уметь формировать пакеты в формате выбранного нами протокола. (В скобках заметим, что, как правило, выбор протокола определяется не пристрастиями программиста, а жестко закреплен предоставляемым сервисом.)
Уметь «разбирать» (parse) пакеты в формате выбранного протокола.
Мы здесь не упомянули одну важную «административную» задачу — подписание договора на обслуживание с поставщиком услуг сотовой связи. Однако, решение таких вопросов обычно лежит вне рамок программистской компетенции.
p.s. извеняюсь за качество картинок(( сохраните их если нужно на жд и добавте фон!!!
С Уважением Силверан
|
|
|

31.07.2005, 23:01
|
|
Участник форума
Регистрация: 29.07.2005
Сообщений: 185
Провел на форуме: 291285
Репутация:
23
|
|
Об этом я уже слышал, но сам не пробовал... Надо как нить... =)
|
|
|

29.10.2005, 22:02
|
|
Участник форума
Регистрация: 15.01.2005
Сообщений: 119
Провел на форуме: 250370
Репутация:
16
|
|
А что если просто перехватить и подделать пакет с помощью проги Inetcrack, ну например отправить 1 смс с какогог-то смс гейта,а потом как нибудь изменить количество писем в теле пакета. Возможно ли это?
|
|
|

01.11.2005, 16:19
|
|
Новичок
Регистрация: 01.11.2005
Сообщений: 8
Провел на форуме: 24349
Репутация:
0
|
|
На киевстаре это работало год назад примерно лично я флудил. У кореша смартфон и он вис после 150 смс  дело было так берешь его номер@2sms.kyivstar.net и программу флудер мыла уже не помню какую ставишь там его почту и по 5000 писем  и они 3 дня подряд приходить ему будут  но вроде сейчас Киевстар заблокировали такую услугу
|
|
|

01.11.2005, 18:56
|
|
Участник форума
Регистрация: 15.01.2005
Сообщений: 119
Провел на форуме: 250370
Репутация:
16
|
|
а юмс или джинс ты не в курсе?
постарайся вспомнить каим бомбером ты пользовался.....буду очень признателен
|
|
|

01.11.2005, 21:12
|
|
Постоянный
Регистрация: 22.08.2005
Сообщений: 540
Провел на форуме: 4372175
Репутация:
1221
|
|
а юмс или джинс ты не в курсе?
Так само как и для Киевстар, только @sms.jeans.com.ua ili @sms.umc.com.ua.
Но у них может стоять какойто "антифлудер". Попробуй отправить несколько сообщений со своего ящика и проверь.
но вроде сейчас Киевстар заблокировали такую услугу
Они не заблокировали, просто надо отправить пустое смс на номер 7021 (тариф - как обычное СМС) и тогда можеш получать смс с Инета.
|
|
|

01.11.2005, 21:32
|
|
Участник форума
Регистрация: 15.01.2005
Сообщений: 119
Провел на форуме: 250370
Репутация:
16
|
|
Сообщение от NeMiNeM
Так само как и для Киевстар, только @sms.jeans.com.ua ili @sms.umc.com.ua.
Но у них может стоять какойто "антифлудер". Попробуй отправить несколько сообщений со своего ящика и проверь
не на umc нужно так слать @sms.umc.ua.
только я пробовал мейл бомбером,но нефига не вышло,мыло бомбит аж бегом а мобильники нет 
А вот ещё вопрос какой smtp указывать при отслки писем скажем на юмс?
Последний раз редактировалось $ZLO$; 01.11.2005 в 21:34..
|
|
|

01.11.2005, 21:42
|
|
Новичок
Регистрация: 01.11.2005
Сообщений: 8
Провел на форуме: 24349
Репутация:
0
|
|
Активировал я по номеру 7021 прислали ответ мол все ок ..
сам себе шлю на моб с малы и вот что приходит в ответ на моеже мыло
Failed to deliver to '38097ХХХ@sms.kyivstar.net'
SMTP module(domain @195.138.80.34:sms.kyivstar.net) reports:
host wsweeper.i.kyivstar.net says:
550 /Kyivstar GSM/
кто знает в чем причина ?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|