Мысль о том, чтобы осуществить отправку смс через сервис "eSMS+eMMS" своими силами появилась сразу же, как попробовал "стандартную" отправку. И дело тут даже не в том, чтобы организовать спам-рассылку (причём абсолютно законную), а в том, чтобы сделать отправку просто более удобной (тут я сам себе протеворечу, т.к. давно считаю всякие GUI намного удобнее скриптов). Итак, вооружившись Wireshark, я начал своё исследование.
После первого же снифа отправки понял, что не всё так просто, как могло показаться - используется SSL. А это значит, что увидеть запрос не получится. Зато узнал, что все запросы идут на secure.esms-emms.kyivstar.net:443.
Немного помучав Гугл, начал открывать для себя дивный мир SSL и довольно быстро наткнулся на OpenSSL, который у меня уже был установлен. Команда openssl s_client -connect secure.esms-emms.kyivstar.net:443 выдала, что используется RC4-MD5 с ключём в 1024 bit. Надежда расшифровать запросы умерла окончательно...
Зато после ввода стандартного HTTP-запроса: GET / HTTP/1.0 надежда вновь посетила меня. Результат: meta content="TeleMessage... явно просился в Гугл :) Первая же ссылка приводит вас на сайт производителя, где, кроме всего прочего, есть примеры использования сервиса. Один из примеров, на php, я и решил использовать для отправки. Не знаю как вы, но я результатом остался доволен - всё работает :)
Итак, подведём итоги.
1. Имея минимальный опыт работы с SSL получилось найти "уязвимость" в коммерческой услуге.
2. После небольших экспериментов была обнаружена возможность подстановки любого адреса отправителя. Т.е. используя скрипт, вы можете отправлять смс от имени любого из абонентов любого оператора (alphanumeric тоже поддерживаются, но не успел протестировать кодировку). Платить (а в скором времени сервис будет платным), придётся вам, но это уже детали.
3. На всё про всё было потрачено 4 часа, хотя большая часть времени ушла на попытки написания скрипта на perl.
Можно ли было этого не допустить?
Да, можно! Поскольку сервис использует открытый API, то следовало как можно тщательнее скрыть название производителя. Это касается и меню помощь, в котором кое где упоминание о Telemessage присутствует, и всех интерфейсов (очистить тег META, как минимум). Не зная структуры XML-запроса, не имея возможности декодировать запросы от стандартных программ, послать собственный запрос было бы просто невозможно.
Огромный недочёт со стороны производителя это отсутствие проверки
адрес_отправителя =~ логин
Возможность подмены адреса отправителя грозит серьёзными злоупотреблениями со стороны продвинутых пользователей.
Что дальше?
1. Настроить отправку кириллицей.
2. Alphanumeric sender (пока не отключили). Неплохо бы обрадовать кого-то из знакомых смс-кой от Бога, например :)
3. Засечь время, пока возможность подмены адреса устранят.
Showing posts with label СМС на шару. Show all posts
Showing posts with label СМС на шару. Show all posts
11.13.2007
СМС на шару. Как это было
Tags: СМС на шару
11.12.2007
СМС по Украине на шару
Ну что, Вы готовы? Готовы к тому, чтобы отправить 1500 смс на любого украинского оператора и всё это абсолютно бесплатно? Если ваш ответ - да, то читайте дальше :)
Итак:
1. Надо скачать прогу или просто зарегистрироваться тут
2. Убедиться что у вас есть php c lib-curl
3. Запустить простой скрипт:
<?php
$login="67xxxxxxx";
$password="xxxxxx";
$sender="xxxxxxxxx";
$recipient="+380xxxxxxxx";
$sms_text="Test";
$xmlstring2 = '<TELEMESSAGE> <TELEMESSAGE_CONTENT> <MESSAGE> <MESSAGE_INFORMATION/> <USER_FROM> <CIML> <NAML> <LOGIN_DETAILS> <USER_NAME>'.$login.'</USER_NAME> <PASSWORD>'.$password.'</PASSWORD> </LOGIN_DETAILS> </NAML> <DEVICE_INFORMATION> <DEVICE_TYPE DEVICE_TYPE="SMS"/> <DEVICE_VALUE>'.$sender.'</DEVICE_VALUE> </DEVICE_INFORMATION> </CIML> </USER_FROM> <MESSAGE_CONTENT> <TEXT_MESSAGE> <MESSAGE_INDEX>0</MESSAGE_INDEX> <TEXT>'.$sms_text.'</TEXT> </TEXT_MESSAGE> </MESSAGE_CONTENT> <USER_TO> <CIML> <DEVICE_INFORMATION> <DEVICE_TYPE DEVICE_TYPE="SMS"/> <DEVICE_VALUE>'.$recipient.'</DEVICE_VALUE> </DEVICE_INFORMATION> </CIML> </USER_TO> </MESSAGE> </TELEMESSAGE_CONTENT> <VERSION>1.5</VERSION> </TELEMESSAGE>';
$result = sendToTeleMessage($xmlstring2);
echo $result;
function sendToTeleMessage($xmlstring){
//creating header for http post request
$myHeader = array(
"MIME-Version: 1.0",
"Content-type: text/xml; charset=utf-8"
);
//creating and initiating curl
$ch = curl_init();
//setting curl/http headers
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$xmlstring);
curl_setopt($ch, CURLOPT_URL,"https://secure.esms-emms.kyivstar.net/partners/xmlMessage.jsp ");
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $myHeader);
//executing http request and getting response. $postResult will contain response xml from TeleMessage.
$postResult = curl_exec($ch);
if (curl_errno($ch)) {
return null;
/*
* for PHP5 you can throw Exception:
* throw new Exception("Error while sending");
*/
}
curl_close($ch);
return $postResult;
}
?>
В итоге:
1. Можно подставить ЛЮБОГО отправителя!! Например, самого получателя ))))
2. переделать скрипт для спамилки не составит большого труда
3. Всё это благодаря нашему любимому оператору абсолютно бесплатно!!! Спасибо ему за это огромное )))
P.S. Примеры XML взяты отсюда Read More..
Tags: СМС на шару
Subscribe to:
Posts (Atom)