通过 Wireshark 验证校验和值

Posted

技术标签:

【中文标题】通过 Wireshark 验证校验和值【英文标题】:Verifying Checksum value through Wireshark 【发布时间】:2019-04-08 16:10:29 【问题描述】:

我正在尝试通过使用 Wireshark 检查数据包来验证 UDP 数据包的校验和值的有效性。 在我正在查看的这个特定数据包中,UDP 标头的值如下:

源端口:53 (0000 0000 0011 0101)

目的端口:64992 (1111 1101 1110 0000)

长度:64 (0000 0000 0100 0000)

现在如果将这些值相加,总和是65109 (1111 1110 0101 0101)

所以我希望校验和值为426 (0001 1010 1010),它是总和的 1 的补码。

但是在 Wireshark 中,校验和的值为0x63c7,它说这个校验和是正确的。

我想知道我错在哪里。 任何帮助或推动正确的方向将不胜感激。

提前致谢。

【问题讨论】:

【参考方案1】:

如果您引用RFC 768,您将找到正确计算校验和所需的详细信息:

Checksum is the 16-bit one's complement of the one's complement sum of a
pseudo header of information from the IP header, the UDP header, and the
data,  padded  with zero octets  at the end (if  necessary)  to  make  a
multiple of two octets.

The pseudo  header  conceptually prefixed to the UDP header contains the
source  address,  the destination  address,  the protocol,  and the  UDP
length.   This information gives protection against misrouted datagrams.
This checksum procedure is the same as is used in TCP.

                  0      7 8     15 16    23 24    31
                 +--------+--------+--------+--------+
                 |          source address           |
                 +--------+--------+--------+--------+
                 |        destination address        |
                 +--------+--------+--------+--------+
                 |  zero  |protocol|   UDP length    |
                 +--------+--------+--------+--------+

If the computed  checksum  is zero,  it is transmitted  as all ones (the
equivalent  in one's complement  arithmetic).   An all zero  transmitted
checksum  value means that the transmitter  generated  no checksum  (for
debugging or for higher level protocols that don't care).

如果您想了解 Wireshark 的 UDP 解析器如何处理它,您可以查看 packet-udp.c 的源代码。基本上,在正确设置数据输入之后,它本质上只是调用in_cksum.c文件中的in_cksum()函数来计算它。

您可能还想看看RFC 1071,“计算互联网校验和”。

【讨论】:

以上是关于通过 Wireshark 验证校验和值的主要内容,如果未能解决你的问题,请参考以下文章

解密由于 JMeter https 请求而生成的“加密警报”数据包(例如,通过 Wireshark)

wireshark抓取聊天网络数据包

抓包三次握手

Wireshark基本介绍及应用tcp

wireshark 学习 3 display filter

转帖:linux下wireshark安装和使用