理解/逆向工程顶层网络协议的好工具

时间:2009-09-17 10:06:19

标签: networking tcp protocols

手头有一个有趣的问题。我有一个角色扮演游戏MMOG通过客户端应用程序(不是浏览器)运行,它将我的播放器的动作发送到服务器,通过发送数据包使所有玩家保持同步。

现在,游戏使用TCP / IP上的顶层协议发送数据。但是,wireshark不知道正在使用什么协议,并将TCP头之外的所有内容显示为转储。

此外,此转储没有任何纯文本字符串。虽然游戏具有聊天功能,但是在此转储中不会将发送的聊天字符串视为纯文本。

我的任务是稍微对协议进行反向工程,以找到有关数据包中包含的数据的一些非常基本的东西。

有人知道为什么聊天字符串不能作为纯文本显示,是否可能使用标准的顶级协议?

此外,是否有任何工具可以帮助从转储中获取数据?

3 个答案:

答案 0 :(得分:5)

如果它是加密的,你有机会(事实上,如果你正确处理它,你有100%的机会):密钥必须位于你计算机的某个地方。只需弹出你喜欢的调试器,看一下(错误,一百个字节,我希望)数据从套接字进来,设置一个关于该数据的观察点,并查看访问的事物的堆栈跟踪它。如果你真的很幸运,你甚至可能会看到它被解密了。如果没有,你可能会发现他们正在使用标准加密算法(从理论上的安全角度来看,他们不是傻瓜)要么通过查看堆栈跟踪(如果你很幸运),要么使用其中一个IV / S-box分析器(避开学术分析器,大多数都不会没有太多麻烦)。许多加密算法使用可以检测到的“标准数据”块(这些是IV / S盒),这些是您在没有其他信息的情况下寻找的。无论你发现什么,谷歌它,并尝试覆盖他们的加密库来转储正在加密/解密的数据。从这些转储中,可以相对容易地看到正在发生的事情。

重新加密会话可能会很有趣,但它需要掌握调试器和大量阅读的技巧。这可能令人沮丧,但如果你花时间学习如何去做,你就不会后悔:)

答案 1 :(得分:2)

最佳猜测:加密或压缩。

即使整个协议完全基于文本(嗯,非常接近),即使telnet也支持线路压缩。

您可以尝试通过一些常见的压缩实用程序来运行数据流,但我怀疑这对您有用,因为很可能它们不会传输压缩标头,只需执行一些预定义的值。

如果它是加密的,那么你几乎搞砸了(没有多少努力,我甚至都没有开始进入)。

答案 2 :(得分:2)

最有可能是压缩或加密。

如果它已加密,您将没有机会。

如果它被压缩,你必须以某种方式弄清楚数据的哪些部分被压缩,压缩部分的起始位置和压缩算法是什么。如果幸运的话,您可以识别标准标题,尽管它们可能会被剥离以节省空间。

这一切都不简单。逆向工程很难。没有任何标准工具可以帮助您,您只需要调查并尝试一些事情,直到您弄明白为止。我的建议是向开发人员询问协议规范,看看他们是否愿意帮助支持你要做的事情。