Как извлечь информацию из взаимодействия клиент / сервер без документации? - PullRequest
0 голосов
/ 08 июня 2009

Какими методами можно собирать и анализировать незарегистрированное взаимодействие клиент / сервер для получения необходимой информации, и затем ваша программа ищет эту информацию в режиме реального времени? Например, программы, которые смотрят на взаимодействие клиент / сервер в онлайн-играх и получают информацию и используют ее для таких вещей, как отображение местоположения на сторонней карте и т. Д.

Ответы [ 2 ]

2 голосов
/ 08 июня 2009

Wireshark позволит вам проверить связь между клиент-сервером (если вы используете один из них на своем компьютере). Если вы хотите выполнить это отслеживание в своем собственном приложении, посмотрите на WinPcap . Умение реконструировать протокол - это совсем другой котелок с рыбой, ум.

1 голос
/ 08 июня 2009

В общем, wireshark - отличная рекомендация для анализа трафика / протокола, однако, вы, похоже, ищете что-то другое:

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

Я полагаю, вы имеете в виду многопользовательские игры и игровые серверы?

Если это так, то эти программы обычно используют выделенное служебное соединение для запроса соответствующего сервера о позиционных обновлениях и другой метаинформации на другом порту, они фактически не перехватывают и не проверяют связи клиент / сервер в реальном времени, и они не тоже не мешают этим обновлениям.

Итак, вы обнаружите, что большинство игровых серверов обеспечивают очень простое пассивное соединение (т.е. только вывод), которое просто используется для получения определенного состояния времени выполнения, которое, в свою очередь, часто просто опрашивается соответствующим внешним скриптом / веб-страницей. .

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

В зависимости от типа игрового сервера они могут предлагать публичное / анонимное использование или могут требовать определенных учетных данных для доступа к такому порту данных.

Более сложные системы также позволят вам подписываться только на определенное состояние и обновления, чтобы вы могли динамически настраивать, какие данные вас интересуют.

Таким образом, даже если бы у вас была полная документация по базовому протоколу, вы бы не смогли напрямую проверить связь между клиентом и сервером, не находясь между ними. Это, однако, не может быть легко достигнуто. Теоретически для этого требуется, чтобы прокси-сервер SOCKS был настроен и использовался всеми клиентами, чтобы вы могли на самом деле проверять происходящее взаимодействие.

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

Другими словами, даже если вы использовали wireshark для: а) обратного инжиниринга протокола, б) разработки способа проверки трафика, в) создания карты местоположения - все это будет работать только для тех коммуникаций, которые у вас есть доступ к, то есть к тем, которые происходят на вашей собственной машине / в сети. Таким образом, соответствующая онлайн-карта будет показывать только вашу собственную позицию.

Конечно, есть альтернатива: вы можете эмулировать клиента, так что вам будут предоставлены обновления на стороне сервера от других клиентов, это в основном должно быть в режиме зрителя.

Это, в свою очередь, будет означать, что вы пассивный клиент, который просто потребляет состояние на стороне сервера, но не предоставляет его.

Так что вы, в свою очередь, можете использовать все эти обновления для заполнения онлайн-карты или использовать ее для всего, что у вас на уме.

Однако для этого потребуется, чтобы ваш зритель / клиент был постоянно подключен к серверу, возможно, занимая драгоценные слоты игрового сервера.

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

...