TCP\IP 数据包签名-如何识别此类数据包?

TCP\IP 数据包签名-如何识别此类数据包?

我知道有一个程序可以从原始二进制数据中“挖掘”(寻找)TCP IP 数据包。它呈现的结果是源和目标 MAC 地址、源和目标 IP 地址以及一些其他信息(端口号等)。

我很好奇,想知道哪些数据位可以作为签名\标志,以便在大量其他二进制数据中识别此类数据?下面的示例是我自己测试的一个 IP 数据包。前 6 个字节 = 目标 MAC 地址。接下来的 6 个字节是源 MAC 地址。0800 是我现在忘记的某种标记。45 AB F7 25 是一个 IP 地址,C0 A8 6F A0 是我的一个内部 IP 地址等。

但是它前后没有任何内容表明“嘿 - 这是 TCP IP 数据”。还有数百个其他类似的例子。那么当起始数据只是一个 MAC 地址时,软件如何找到它和其他数据 - 而不是您可以轻松编写程序来查找的东西(这是我自己想做的)?

有什么想法吗?

Offset       0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 15

000000000   00 0C 29 31 24 41 00 50  56 ED A5 46 08 00 45 00     )1$A PVí¥F  E 
000000016   00 28 C0 A8 00 00 80 06  0D 0E 45 AB F7 25 C0 A8    (À¨  €   E«÷%À¨
000000032   6F A0 01 BB 06 AF 7C 3E  0B 51 35 87 6B 87 50 10   o  » ¯|> Q5‡k‡P 
000000048   FA F0 16 C2 00 00 00 00  00 00 00 00 00 00 00 00   úð Â            
000000064   FD 0C AC 83 FB 0A B0 41  B3 B3 F8 71 88 1F 4C 8C   ý ¬ƒû °A³³øqˆ LŒ

答案1

我的建议是,下载并使用 Wireshark 捕获一些数据。确保已启用数据包列表、数据包详细信息和数据包字节查看选项,然后开始单击数据包。在数据包详细信息部分,您可以单击数据包的 L2、L3 和 L4 部分,它将突出显示与您选择的内容相关的字节。

然后开始在网上搜索,了解以太网报头/封装、IP 报头、TCP 报头等。维基百科通常是这类主题的良好起点,但网上有数百种资源。我快速搜索了一下,想找一张代表以太网框架最终如何构建的图像,结果发现这张相当不错:http://www.tcpipguide.com/free/t_IPDatagramEncapsulation.htm

还没有阅读内容,但是在这样的资源之间并开始在 Wireshark 这样的工具中使用框架的各个部分,您会发现二进制数据具有明确的结构,并且很容易区分。

答案2

字节 13、14、15 是 IPv4 或 IPv6 标记。在您提供的屏幕截图中,它是 00 45 00,因此您有一个 IPv4 数据包。

对于 IPv4 数据包,请查看第 23 个字节。如果是 06,则表示您有 TCP 数据包。如果是 11,则表示您有 UDP 数据包。

对于 IPv6 数据包,它是第 20 个字节。

相关内容