Я создаю 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 и содержимое Echo Request находятся на одном уровне с уровнем IPv6.Но в пакете 1 эти два уровня находятся внутри уровня IPv6.Может кто-нибудь, пожалуйста, скажите мне, как сложить все слои в scapy, чтобы оба пакета выглядели одинаково и вели себя одинаково.
Код scapy, который я использовал для создания пакета 1:
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()