Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #85, ЯНВАРЬ 2006 г.

Веселый конкурс

Lexx918 (lexx918@mail.ru)

Хакер, номер #085, стр. 085-074-2


Как только последняя группа шариков была убрана, флешка начала долбиться к себе домой и сдала с потрохами своих создателей. Оказалось, что по окончании игры flash-клиент формирует POST-запрос и отправляет его серверу. Причем в недрах запроса передаются следующие переменные:

flashk=0c248caeb075b660c39726e5ec449c52&action=add&email=cool_xakep%40xakep_mail%2Eru&username=user_name&point=302

В структуре возвращаемых серверу данных разобраться очень легко. Совершенно понятно, что point=302 — это число набранных очков, username=user_name — это имя пользователя, email=cool_xakep@xakep_mail.ru – мыло, action=add – какой-то флаг команды, вроде «добавить рекорд». Единственная непонятка – что за параметр flashk=0c248..? Он состоит из 32 символов и очень напоминает значение какой-то популярной хэш-функции вроде md5. Видимо, это своеобразная «подпись запроса», гарантирующая разработчикам конкурса достоверность данных. Действительно: когда я просто поменял количество набранных очков, то обломался, сервер вернул ошибку. Значит в самом деле, flashk – это подпись запроса, строка, которая генерируется некоторым, пока неизвестным мне способом, из остальных переменных и, возможно, какой-то еще вторичной информации вроде времени, даты или пинга до сервака. Я конечно утрирую, но гадать здесь глупо — надо лезть в кишки flash-игры.

[препарирование]

Сейчас уже все более-менее представляют себе, что такое Flash. Все знают, что это очень мощный инструмент для создания умных интерфейсов и роликов, который оперирует векторными объектами. Вся анимация и интерактив описываются на специальном языке ActionScript. Это свой собственный интерпретируемый язык программирования, который неразрывно связан с технологией Flash. Он имеет очень мощную объектную структуру и получил большое распространение и популярность, несмотря на свои не самые впечатляющие скоростные показатели.

Однако могу спорить, что далеко не все знают, что управляющий flash-приложением сценарий хранится в теле самого ролика в текстовом виде и может быть легко оттуда получен. То есть если у нас есть flash-ролик, получить управляющий ActionScript-код не составляет труда. Для этого подойдет, например, программа «SWF Decompiler MX 2005c», которая, как я понял, является лидером в своей области. На ней и остановим свой выбор. Шароварная версия не будет долго работать, но нам на это наплевать: хватит и пяти минут :).

Скачав и установив программу, я открыл flash-игрушку и принялся изучать ее код. Немного пошарив, я наткнулся на функцию «SendScore», которая и занималась тем, что отправляла результат на сервер. Нас с тобой интересуют лишь две ее строки:

_loc3.flashk = _root.calcMD5(String(nScore) + _root.mykey);

_loc3.sendAndLoad("http://zoom.cnews.ru/ru/flashgames/fg.php", _loc4, "POST");

В первой строке высчитывался наш непонятный параметр flashk. Как видишь, он и впрямь считал md5 хэш от строки, образованной соединением двух строк: наших очков и какой-то неизвестной пока переменной mykey.

Назад на стр. 085-074-1  Содержание  Вперед на стр. 085-074-3