diff --git a/main.py b/main.py index 1d0be1a..56f3fa3 100644 --- a/main.py +++ b/main.py @@ -102,12 +102,15 @@ def construct_icmp(): bytes: 构造的ICMP报文。 """ # ICMP 报文头部: 类型(8), 代码(0), 校验和(0), 标识符(1), 序列号(1) + # 一开始校验和设为0,因为之后需要先计算校验和 icmp_header = struct.pack('!BBHHH', 8, 0, 0, 1, 1) + # ICMP 报文的数据部分,这里简单地使用 'Ping' 作为示例数据 data = b'Ping' - # 计算校验和 + # 计算校验和,确保报文的完整性 checksum = calculate_checksum(icmp_header + data) - # 填充校验和字段 + # 填充校验和字段,完成报文头部的构造 icmp_header = struct.pack('!BBHHH', 8, 0, checksum, 1, 1) + # 返回完整的ICMP报文 return icmp_header + data # 构造 UDP 报文