From 41d46dc492c74883cd7faacacacfa1343378025d Mon Sep 17 00:00:00 2001 From: fly6516 Date: Wed, 8 Jan 2025 14:04:18 +0800 Subject: [PATCH] =?UTF-8?q?refactor(main):=20=E4=BC=98=E5=8C=96=20ICMP?= =?UTF-8?q?=E6=8A=A5=E6=96=87=E6=9E=84=E9=80=A0=E5=87=BD=E6=95=B0=E7=9A=84?= =?UTF-8?q?=E6=B3=A8=E9=87=8A-=20=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=AF=B9=20IC?= =?UTF-8?q?MP=20=E6=8A=A5=E6=96=87=E6=9E=84=E9=80=A0=E8=BF=87=E7=A8=8B?= =?UTF-8?q?=E7=9A=84=E8=AF=A6=E7=BB=86=E6=B3=A8=E9=87=8A=20-=20=E8=A7=A3?= =?UTF-8?q?=E9=87=8A=E4=BA=86=E6=A0=A1=E9=AA=8C=E5=92=8C=E7=9A=84=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E5=92=8C=E5=A1=AB=E5=85=85=E6=AD=A5=E9=AA=A4=20-=20?= =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BA=86=E5=AF=B9=E6=8A=A5=E6=96=87=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=83=A8=E5=88=86=E7=9A=84=E6=B3=A8=E9=87=8A=20-=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=86=E6=B3=A8=E9=87=8A=E7=9A=84=E8=A1=A8?= =?UTF-8?q?=E8=BE=BE=EF=BC=8C=E4=BD=BF=E5=85=B6=E6=9B=B4=E5=8A=A0=E6=B8=85?= =?UTF-8?q?=E6=99=B0=E5=92=8C=E5=87=86=E7=A1=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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 报文