【问题标题】:Good tools to understand / reverse engineer a top layer network protocol理解/反向工程顶层网络协议的好工具
【发布时间】:2013-01-27 18:50:08
【问题描述】:

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

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

此外,此转储没有任何纯文本字符串。尽管游戏具有聊天功能,但发送的聊天字符串在此转储中并未在任何地方以纯文本形式显示。

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

有谁知道为什么聊天字符串不显示为纯文本以及是否可能正在使用标准顶级协议?

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

【问题讨论】:

标签: networking tcp protocols


【解决方案1】:

如果它是加密的,你确实有机会(事实上,如果你处理得当,你有 100% 的机会):密钥必须位于你计算机的某个地方。只需弹出您最喜欢的调试器,观察从套接字传入的一些数据(错误,一百字节左右),在该数据上设置一个观察点,然后查看访问的事物的堆栈跟踪它。如果你真的很幸运,你甚至可能会看到它被原地解密。如果没有,您可能会通过查看堆栈跟踪(如果幸运的话)或通过使用其中一种 IV / S-box 分析器(避免学术分析器,它们中的大多数都无法正常工作)。许多加密算法使用可以检测到的“标准数据”块(这些是 IVs / S-box),这些是您在没有其他信息的情况下寻找的。无论你找到什么,谷歌它,并尝试覆盖他们的加密库以转储正在加密/解密的数据。从这些转储中,应该相对容易看出发生了什么。

RE 进行加密会话可能会很有趣,但它需要你的调试器技巧和大量阅读。这可能会令人沮丧,但如果您花时间学习如何做到这一点,您将不会后悔 :)

【讨论】:

    【解决方案2】:

    最佳猜测:加密或压缩。

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

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

    如果它是事实上的加密,那么你就完蛋了(没有太多、更多的努力,我什至不会开始涉足)。

    【讨论】:

      【解决方案3】:

      它很可能是压缩或加密的。

      如果它是加密的,你就没有机会了。

      如果它被压缩,您必须以某种方式确定数据的哪些部分被压缩,压缩部分从哪里开始以及压缩算法是什么。如果幸运的话,您可以识别标准标题,尽管它们可能被剥离以节省空间。

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

      【讨论】:

      • +1 用于通信,但我怀疑许多 MMO 会乐于提供他们的协议规范。
      • @Matthew:的确,这可能是一个很长的镜头,但很多游戏都有蓬勃发展的模组社区。根据团队的不同,他们可能希望支持第 3 方扩展。看看像 Quake & Unreal 这样的游戏(有点暴露我的年龄),他们几乎把所有的源代码都给了修改者。我不知道这是否仍然是普遍做法,但值得一问。
      猜你喜欢
      • 1970-01-01
      • 2012-05-19
      • 2010-12-14
      • 1970-01-01
      • 2020-10-21
      • 1970-01-01
      • 2012-03-09
      • 2010-12-20
      • 2022-12-10
      相关资源
      最近更新 更多