我正在创建1个网络数据包(数据包1),如下所示:
###IPv6 Options ###
version= 6
tc= 0
fl= 0
plen= 1336
nh= Fragment Header
hlim= 255
src= XXXX::2
dst= XXXX::1
###[ IPv6 Extension Header - Fragmentation header ]###
nh= ICMPv6
res1= 0
offset= 0
res2= 0
m= 1
id= 10
###[ ICMPv6 Echo Request ]###
type= Echo Request
code= 0
cksum= 0x5bc2
id= 0x64
seq= 0x1
data= 'abc'
但是我想要一个如下所示的数据包(数据包2):
IP_Fields:
IP_Header:
Version: '6'
Traffic_Class: '00000000'B
Flow_Label: '00000000000000000000'B
Payload_Length: '1336'
Next_Header: '44'
Hop_Limit: '255'
Source_Address:
Unicast_Address:
Unicast_Address: 'FE8000000000000000080800200ZZZZZ'O
Destination_Address:
Unicast_Address:
Unicast_Address: 'FE8000000000000000080800200YYYYY'O
Fragment:
Next_Header: '58'
Reserved: '0'
Fragment_Offset: '0'
Res: '0'
M_Flag: '1'B
Identification: '0000000A'O
ICMP_Header:
Type: '128'
Code: '0'
Checksum: '5BC2'O
Echo_Request_Contents:
Identifier: '100'
Sequence_Number: '0001'O
Data: 'abc'
我觉得,我实际上使用scapy创建的数据包看起来不像我需要的数据包,因为我没有得到预期的响应。 我觉得在数据包2中,ICMP头和回显请求内容与IPv6层处于同一级别。但是在数据包1中,这两层位于IPv6层内。 有人可以告诉我如何将所有层堆叠在船顶中,以便两个包看起来相同且行为相似。
我用来创建数据包1的Scapy代码是:
ip_header = IPv6(dst="XXXX::1", plen=1336, nh=44, hlim=255)
frgmnt = IPv6ExtHdrFragment(nh=58, m=1, id=int("0000000A", 16))
echo = ICMPv6EchoRequest(cksum=int("5BC2", 16), id=100, seq=int("0001", 16))
packet = ip_header/frgmnt/echo
packet.display()