Следующая новость
Предыдущая новость

SMS-бомбер на Python. Трюк от читателя: эксплуатируем недоработки Vodafone (бывший «МТС Украина»)

20.12.2017 12:46
SMS-бомбер на Python. Трюк от читателя: эксплуатируем недоработки Vodafone (бывший «МТС Украина»)

Содержание статьи

  • Обзор онлайн SMS-сервиса Vodafone
  • Разработка SMS-бомбера
  • Заключение
  • Полный листинг скрипта

В этой статье мы исследуем ошибки реализации CAPTCHA и CSRF-токенов, в результате чего научимся рассылать SMS в любом количестве через гейт Vodafone.

WARNING

Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.

Обзор онлайн SMS-сервиса Vodafone

Наш сегодняшний подопытный, портал http://mts.ua, раньше принадлежал «МТС Украина». Эту контору выкупил Vodafone. Есть на этом сайте и форма отправки SMS.

Защищена она цифровой CAPTCHA из четырех символов. Стоит отметить, что форма позволяет отправлять SMS только клиентам Vodafone с префиксами номеров:

+38050 +38066 +38095 +38099 

Теперь посмотрим на саму CAPTCHA. Как видишь, цифры вполне различимы. Они имеют красный цвет, но их верх обрезан, и расположены они очень близко друг к другу.

А теперь приглядимся более внимательно к той части скрипта, которая отображает CAPTCHA. Если мы сформируем ссылку

http://www.mts.ua/?r=site/captcha&v=5981aff096f17&widgetId=messager&width=115&height=42&backColor=0xffffff&foreColor=0xff0000 

то увидим CAPTCHA с высотой 42 пикселя и 115 пикселей шириной. Изменив значения на 242 и 315, мы получим удивительный результат: обрезанный верх цифр уйдет и расстояние между символами увеличится.

При отправке SMS скрипту http://www.mts.ua/ru/online-services/send-sms/ через метод POST передаются следующие параметры:

  • YII_CSRF_TOKEN — это CSRF-токен, который нужно прочитать из HTML один раз при подготовке рассылки;
  • widgetId:'messager' — это стандартное значение, оно не меняется;
  • MessageForm[network]:'38050' — из значения ясно, что это мобильная сеть;
  • MessageForm[phone]:'123-45-67' — номер телефона, куда отправляем SMS;
  • MessageForm[encoding]:'cyrilic' — кодировка сообщения, можно менять;
  • MessageForm[is_translit]:'0' — транслитерация (0 — выключена, 1 — включена);
  • MessageForm[message]:'Привет 123' — сам текст сообщения;
  • MessageForm[verifyCode]:'4444' — распознанная CAPTCHA.

Также не стоит забывать, что нужно хранить cookies! В дальнейшем мы к этому вернемся.

Разработка SMS-бомбера

Попробуем разработать SMS-бомбер — скрипт, который будет рассылать через гейт множество однотипных SMS-сообщений. Разрабатывать будем на Python 2.x, также нам понадобятся модули requests, pytesseract, Image.

Скрипт мы будем разрабатывать под Windows, с чем и связаны особенности установки Tesseract и настройки путей.

SMS-бомбер на Python. Трюк от читателя: эксплуатируем недоработки Vodafone (бывший «МТС Украина»)

WWW

  • FAQ по Tesseract для Python
  • FAQ по requests для Python

В самом начале мы получаем CSRF-токен:

def get_csrf():      xhtml=get_url("http://www.mts.ua/ru/online-services/send-sms/",1)     xs=xhtml.find("var csrfToken = '")     xl=len("var csrfToken = '")     csrf_=xhtml[xs+xl:xs+xl+40]      return csrf_ 

Функция очевидная — обычный поиск текста. CSRF-токен получаем всего один раз за всю рассылку.

Теперь нужно получить CAPTCHA и распознать ее. Для этого мы будем использовать Tesseract. Вначале нужно установить саму программу и модуль Python к ней. Полный исходный код функции можно посмотреть в скрипте, который я приведу в конце статьи.

Продолжение статьи доступно только подписчикам

Cтатьи из последних выпусков журнала можно покупать отдельно только через два месяца после публикации. Чтобы читать эту статью, необходимо купить подписку.

Подпишись на журнал «Хакер» по выгодной цене!

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

1 год

5290 р.

Экономия 1400 рублей!

1 месяц

620 р.

25-30 статей в месяц

Уже подписан?

Источник

Последние новости