如何从没有文档的客户端/服务器通信中提取信息?

时间:2009-06-07 22:56:53

标签: client client-server

有哪些方法可以捕获和分析未记录的客户端/服务器通信以获取您想要的信息,然后让您的程序实时查找此信息?例如,查看在线游戏客户端/服务器通信并获取信息并使用它来执行诸如在第三方地图上显示位置等的程序等。

2 个答案:

答案 0 :(得分:2)

Wireshark将允许您检查客户端 - 服务器之间的通信(假设您在计算机上运行其中一个)。如果您想在自己的应用程序中执行此监听,请查看WinPcap。能够对该协议进行逆向工程是一个完整的鱼群,心灵。

答案 1 :(得分:1)

一般来说,wireshark是交通/协议分析的绝佳建议 - 但是,您似乎在寻找其他东西:

  

例如,查看在线游戏客户端/服务器通信并获取信息并使用它来执行诸如在第三方地图上显示位置等的程序等。

我假设您指的是多人游戏和游戏服务器?

如果是这样,这些程序通常使用专用服务连接来查询相应的服务器以获取位置更新和其他端口上的其他元信息,它们实际上并不实时拦截或检查客户端/服务器通信,并且他们不会也不会真的干扰这些更新。

因此,您会发现大多数游戏服务器都支持非常简单的被动连接(即仅输出),这只是用于获取特定的运行时状态,而这通常只是通过相应的外部脚本/网页轮询

同样,通常还会在不同的端口上提供专用的管理界面,以及另一个发布服务器统计信息的管理界面,以便可以轻松查询这些界面,以便在网页中嵌入整齐的统计信息。

根据游戏服务器的类型,这些可能提供公共/匿名使用,或者他们可能需要某些凭据才能访问此类数据端口。

更复杂的系统还允许您只订阅特定的状态和更新,以便您可以动态配置您感兴趣的数据。

因此,即使您有关于底层协议的完整文档,您也无法直接检查客户端/服务器通信而不介于这些通信之间。然而,这不容易实现。理论上,这基本上需要所有客户端设置和使用SOCKS代理服务器,以便您可以实际检查正在进行的通信。

wireshark等程序通常只会为您自己的机器/网络上进行的通信提供有用的信息,并且不会提供有关您无法访问的机器之间进行通信的任何信息。

换句话说,即使你使用wireshark来a)对协议进行反向工程,b)想出一种方法来检查流量,c)创建一个位置图 - 这一切只适用于你拥有的那些通信访问,即在您自己的机器/网络上进行的访问。因此,相应的在线地图只会显示您自己的位置。

当然,还有另一种选择:您可以模拟客户端,以便为您提供来自其他客户端的服务器端更新,这通常必须处于旁观者模式。

这反过来意味着你是一个被动的客户端,只是消耗服务器端状态,但不提供任何服务器端状态。

这样您就可以反过来使用所有这些更新来填充在线地图或将其用于您想到的任何其他内容。

然而,这将要求您的观众/客户端始终连接到服务器,可能占用宝贵的游戏服务器插槽。

某些游戏服务器提供专用的旁观者模式,因此您可以使用实时Feed观察整个游戏。然而,大多数游戏服务器会在一定的空闲超时后自动启动观众。