![]() |
Стремясь к Халяве?!
Пытаюсь написать прогу для рассылки смс по всем операторам. Так как шлюзы рабочие не у всех есть (разные страны - разные операторы) использую ICQclient, конкретней функцию SendSms компонент юзаю 1.35 от царя... К сожалению компонент именно в плане рассылки смс не доработанный. Царь не расположен работать с платными сервисами (его слова). А мне с моими знаниями разобраться отчего не работает отправка не светит. Подскажите что можно сделать. И еще... www.sms-send.org.ua на данном сайте смотрел доступные шлюзы, у меня так сформировалось мнение что те шлюзы которые "несуществующие" просто неизвестны, но смс на некоторые операторы с "отсутствующим" шлюзом с аси приходят... т.е передача все таки идет, значит как то ее можно отловить? что скажете? :confused:
P.s не бейте слишком я вродь как еще новичек)))) :) |
В icqclient функция SendSMS,не работает. Об этом обсуждалось уже давно .
А ещё точнее это платная возможность :) |
Если что то понимаешь ICQ протоколе, то могу скинуть свой код на Java, когда то давно со сниффером расшифровывал трафик от офиц. клиента. Привяжешь к TIcqClient
|
Цитата:
Цитата:
Цитата:
|
Цитата:
|
эмм... ну как там с исходниками?
|
Извиняюсь что позабыл, короче нашёл, вот код на яве :
Код:
public void _sendSMS(String phoneNumber, String content)Создаётся новый пакет канала 2(обычного). В него добавляется SNAC 21, 2. Теперь про этот пакет забываем. Создаём пакет-буфер, в него запихиваем : 1. WORD, значение - 0 2. INT, значение - наш UIN(LE) 3. WORD, значение 2000(LE) 4. WORD, значение - счётчик пакетов(LE) 5. WORD, значение - 5250(LE) 6. 22 неизвестных байта(они не меняются ни когда и не расшифрованы) - 0, 1, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 7. Создаём строку - "<icq_sms_message><destination>" + phoneNumber + "</destination><text>" + текст смски + "</text><encoding>utf8</encoding><senders_UIN>" + свой UIN + "</senders_UIN><senders_name>" + свой ник + "</senders_name><delivery_receipt>Yes</delivery_receipt><time>" + процедура возвращающяя текущее время для СМС +"</time><ICQVersion>prili</ICQVersion><ICQBuildID>2321</ICQBuildID><ICQPartner></ICQPartner></icq_sms_message>" 8. WORD, значение - длинна предыдущецй строки(BE) 9. Сама строка из 7-ого пункта.(NullTerminated) Теперь в буфер-пакете в нулевой позиции пишем WORD со значением длинны самого буфер-пакета - 2(LE) И самое последнее - возвращаемся к нашему главному пакету, в него пишем TLV с типом - 1, длинной - длинна буфер пакета, и данными - данные буфер пакета. Если не знаешь что такое TLV - TypeLengthValue, то есть в пакет пишется Type - WORD(BE), Length - WORD(BE), Value - data длинный Length. Если не знаешь что такое LE, BE - обычные данные и перевёрнутые. К примеру у перевёрнутого WORD байты будут подменены местами. Как полчить текущее время для СМС - читай как создаётся текущаяя дата в HTTP заголовках, к примеру expires в куках. В Indy Есть такая функция(посмотри IdCookieManager). Теперь пакет отправляем. Принцип описал:) |
спасибо Огромное. Принцып понял буду реализовать на делфях))
|
| Время: 18:58 |