2009-06-07 7 views
0

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

ответ

2

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

1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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