В чем разница между сетевыми пакетами, которые я создаю? - PullRequest
0 голосов
/ 21 февраля 2019

Я создаю 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() 
...