反转网络协议

逆向工程 文件格式 嗅探 线鲨
2021-06-23 03:43:34

我有一个 DVR,它使用自己专有的 TCP 协议通过以太网发送视频。我想编写一个 VLC 模块来查看视频,而不是提供的 DxClient.exe。我在wireshark中捕获了流量并尝试使用IDA Pro对客户端进行逆向工程,据我所知客户端进行某种握手身份验证,然后DVR发送2个网络数据包(总是1514字节长),客户端发送一个TCP ACK 和另外 2 个数据包被传输,等等......永远。据我所知,客户端使用 Microsoft 的 AVIFIL32 库将数据包解压缩为本质上成为 AVI 文件帧的内容。

问题是我不明白这些帧是如何编码的,或者它们是否是 AVI 帧。任何人都可以帮助我,这是来自 2 个数据包的数据有效负载:

http://pastebin.com/2VDu2Tc2

http://pastebin.com/L3Zi3VqU

3个回答

您可以尝试使用 Netzob 工具。这是一个专用于逆向工程协议的工具。

你也可以看看 CANAPE :http : //www.contextis.com/research/tools/canape/

我不能给你一个具体的解决方案,但我可以告诉你一个工具,使逆向工程协议更容易。

Scapy是一个 Python 数据包操作工具。您遇到的问题之一是,wireshark 不知道这些数据包。使用 Scapy 可以很容易地构建和剖析奇怪的/自己的数据包。当您开始使用 IDA 对数据包的构建方式进行逆向工程时,这肯定会有所帮助。

以下是 UDP 层定义的示例:

class UDP(Packet):
    name = "UDP"
    fields_desc = [ ShortEnumField("sport", 53, UDP_SERVICES),
                    ShortEnumField("dport", 53, UDP_SERVICES),
                    ShortField("len", None),
                    XShortField("chksum", None), ]

您现在可以创建自己的层,并尝试通过使用 IDA 对数据包构建过程进行逆向工程并使用 scapy 重新构建协议来理解数据包数据。

从我最近收集到的内容来看,DxClient 被设计为 DVR Netview 技术的客户端。仅通过查看 DxClient 的功能,很明显它不仅仅是 AVI 格式流的二进制传输。我认为,可以安全地假设,使用了专有的传输和控制协议。您提供的 2 个框架不足以为您提供帮助。我认为您应该尝试专注于逆转客户。花费足够的时间后,您应该能够深入了解每个框架的构造方式。

我建议您熟悉网络协议逆向工程的一般原则。一篇文章博客协议逆向工程概述是一个很好的起点。