0

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

4

2 回答 2

2

Wireshark将允许您检查客户端-服务器之间的通信(假设您在您的机器上运行其中一个)。当您想在自己的应用程序中执行此侦听时,请查看WinPcap。请注意,能够对协议进行逆向工程是另一回事。

于 2009-06-07T23:00:32.983 回答
1

一般来说,wireshark 是流量/协议分析的绝佳推荐——但是,您似乎正在寻找其他东西:

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

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

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

因此,您会发现大多数游戏服务器都支持非常简单的被动连接(即仅输出),这只是为了获得某些运行时状态,而这些运行时状态通常由相应的外部脚本/网页简单地轮询。

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

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

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

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

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

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

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

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

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

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

一些游戏服务器提供了专门的观众模式,这样您就可以使用实时源来观察整个游戏过程。然而,大多数游戏服务器会在一定的空闲超时后自动踢观众。

于 2009-06-07T23:55:52.323 回答