我创建的网络数据包之间有什么区别?

时间:2019-02-21 06:03:13

标签: python networking scapy

我正在创建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() 

0 个答案:

没有答案