【发布时间】:2014-01-13 02:58:27
【问题描述】:
我正在寻找创建我称之为代理的东西,尽管这个定义可能有些不准确。
通常情况下,你有这样的东西:
Client --------- Server
我想做的是引入一个代理,没有新层,像这样:
Client ----+---- Server
|
Proxy
我不想要这个:
Client---Proxy---Server
我知道 WinPCap 做了类似的事情,但据我所知,这是一个记录不足的主题。
到目前为止,我已经尝试了一些事情,最值得注意的是在与客户端相同的端口上侦听消息。这仅导致从随机应用程序接收大量垃圾数据包(尽管在特定端口上侦听)。我找不到很多可以表明我正在阅读正确数据的信息,尽管我相信我现在已经发现了这一点,在进行了一些小的修改之后。
有人知道反对使用这种方法的任何理由吗?或者有什么更可持续的方式吗?
【问题讨论】:
-
你想对截获的消息做什么?如果只是用于诊断,请尝试 .NET Tracing。
-
@CodeCaster - 我打算将它们用作最终用户应用程序的一部分,以收集有关游戏服务器上正在发生的事情的数据。
-
在这种情况下,我想知道游戏服务器是否有一个 API 或一些插件系统可以让你收集你想要的数据,因为游戏网络流量很可能是加密、混淆或其他相对难以处理的.我了解您无法更改服务器或客户端,因此如果不与服务器直接通信,您将必须诉诸于收听和了解网络流量。您可以使用 WinPCap,但除了可能难以读取数据外,其格式可能会在服务器版本之间发生变化,需要您更改程序。
-
@CodeCaster 数据经过 XTEA 加密,我完全知道如何使用存储在游戏客户端内存中的密钥对其进行解密。我可能会更改客户端以通过我的应用程序重定向所有数据,但如果可能的话,避免重新路由会更好。
-
@XtrmJosh 你熟悉 Wireshark 吗?当我遇到类似的问题时,我使用 Wireshark 来获取实际捕获,然后在 .NET 中对其进行分析(tshark/tcpdump 在这里也可能适用)。或者,Wireshark 具有非常好的数据包过滤器可扩展性支持,因此您可以编写代码(但不是 .NET)而无需太多麻烦来拆分数据包。我知道这不符合您的要求,但希望对您有所帮助。