Первичный разбор пакета необходим для написания бота для этой игры. Напишу я или вы, мне без разницы. Опишу структуру пакета используя исходный код игры. Используемые программы: Opera, Charles, Flash Decompiler Trillix Настроим браузер под использование локального прокси Charles. Зайдем в игру vkontakte.ru/rules_of_war и запишем любой пакет передаваемый на сервер игры и проанализируем его. Например пакет отправки одного юнита на окупацию чужого сектора: Code: POST /Geo/Segment02/segment.ashx HTTP/1.0 User-Agent: Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.9.168 Version/11.51 Host: 209.190.120.226 Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 Accept-Language: ru-RU,ru;q=0.9,en;q=0.8 Accept-Encoding: gzip, deflate Referer: http://vkontakte.ru/swf/api_wrapper2_0.swf?_stV=2 Content-Length: 144 Content-type: text/html sign-code: 415fe1542211bc6a3714f1568e566582 locale-name: ru-RU signin-authKey: 88749ca57e50feba2f6267c7743d75f4 signin-userId: vk8570512 server-method: SendUnit client-ver: 63 {"o":{"ti":{"t":{"t":{"2":1}},"o":3,"r":null},"t":4023659,"o":4007618,"di":null},"r":2909,"t":1319098626034,"g":366575,"u":1319098259459,"v":63} из пакета понятно что игра отправляет POST запрос на страницу 209.190.120.226/Geo/Segment02/segment.ashx который соответствует всем стандартам JSON запросов. Нас может смутить только эта часть: Code: sign-code: 415fe1542211bc6a3714f1568e566582 locale-name: ru-RU signin-authKey: 88749ca57e50feba2f6267c7743d75f4 signin-userId: vk8570512 server-method: SendUnit client-ver: 63 {"o":{"ti":{"t":{"t":{"2":1}},"o":3,"r":null},"t":4023659,"o":4007618,"di":null},"r":2909,"t":1319098626034,"g":366575,"u":1319098259459,"v":63} видим неизвестный хэш в параметре sign-code и знакомые authKey получяемые от ВК и свой userId vk8570512 также нужно узнать для чего нужен параметр server-method и собственно сама информационная нагрузка в виде структурного списка параметров. Открываем vkontakte.ru/rules_of_war, смотрим исходный код страницы и берем адрес самой игры в поле plarium_game_url, для меня это был http://cs10314.vkontakte.ru/u7878692/6261fe16e87cc8.zip. Скачиваем и переименуем в game.swf. Открываем game.swf с помощью Flash Decompiler Trillix. Поиском ищем в коде ActionScript где упоминается наша страничка на которую был запрос segment.ashx. Находим этот блок кода и начинаем подыматься от одной функции до другой складывая общую картину происходящего в игре. Имеем функцию отправляющую команды серверу JsonCallCmd("SendUnit", this._dto) Видим что как раз в первом параметре и указывается наш server-method. А во втором параметре принимает this._dto Немного полистав исходники игры видим что это и есть наш структурированный список который игра складывает из множества параметров комманды в которую попадает уникальный идентификатор юнита, сектора, вашего сектора, случайное число и номер пакета по порядку. Code: {"o":{"ti":{"t":{"t":{"2":1}},"o":3,"r":null},"t":4023659,"o":4007618,"di":null},"r":2909,"t":1319098626034,"g":366575,"u":1319098259459,"v":63} теперь попробуем узнать что такое sign-code ищем его в коде, складываем все в кучу и получаем такой алгоритм Code: sign-code = md5("The Matrix has you..." + this._dto + "POST" + userSocialId + userSocialAuthKey) this._dto нам известен, userSocialId - наш vkID и userSocialAuthKey - наш authKey все, мы знаем с чего состоит пакет, можно писать бот... [все хэшы и идентификаторы были изменены] листинг методов и комманд из исходника игры Скачать файл war.rar