Задачи по анализу сетевого трафика онлайн игры
Сейчас, чтобы совершить любое действие в игре, нам необходимо запустить официальный клиент, подключить к нему написанную нашей командой dll и уже через неё вызывать ту или иную функцию. Мы хотим ещё лучше автоматизировать некоторые игровые процессы, убрав оф. клиент, и «общаться» с сервером напрямую. От исполнителя требуется только анализ сетевого трафика, программу с имитацией игрового клиента мы будем писать уже сами. Под анализом трафика понимается соотнесение блоков данных в запросе/ответе с содержимым игры или параметрами устройства. Например:
данные запроса (набор байт):
01 02 03 04
результат анализа:
тип запроса и его характеристики
01 - тип запроса
02 - тип ОС
03 - мажорная версия клиента
04 - минорная версия
Игра старая, довольно простая и очень непохожа на большинство игр, рекомендую установить ее, чтобы точно понять, о чем будет идти речь дальше. Работа будет разделена на несколько этапов.
Этап 1. Анализ создания игрового аккаунта и авторизация.
Нам нужно понять структуру всех запросов-ответов к серверу в процессе создания нового аккаунта, чтобы мы могли полностью повторить их: сохранить логины и пароли (их хеш-суммы) в таблицу и авторизоваться по любому из них, отправив нужные нам данные об устройстве и прочую информацию, что отправляет оригинальный клиент. Если приложение, вместе с тем, отправляет или получает данные, не влияющие на процессы этого этапа (например, аналитика AppsFlyer), их можно особо не анализировать: мы можем отправлять их копии просто для имитации оригинальной программы или не отправлять вовсе.
Этап 2. Создание нового персонажа и выбор имеющегося для подключения к игровому серверу.
После авторизации происходит процесс выбора/создания персонажа. Необходимо проанализировать сетевой трафик этих процессов так, чтобы мы могли:
1. получить список имеющихся персонажей на аккаунте и информацию о них (id, никнейм, уровень и т.д.)
2. создавать нового персонажа с выбранными начальными характеристиками (никнейм, игровой сервер и т.д.)
3. подключиться к игровому серверу за выбранного персонажа. Необходимо только установить соединение так, чтобы персонаж появился в игровом мире. Дальшейший анализ игровых событий на сервере будет происходить в следующих этапах задачи.
Нам нужно понять, что именно отправляет и получает клиент с точностью до каждого блока байт.