Как настроить необязательный параметр в LDP Layer, используя scapy

Я пытаюсь собрать пакеты LDPHello, но я не могу добавить необязательный параметр, такой как транспортный уровень IPv4, используя scapy.

Я сделал это:

ip = IP(src=src_ipv4, dst= '224.0.0.2', proto=17, ttl=1)
udp = UDP(sport=646, dport=646)
hello = LDPHello(params=[180,0,0,0,0,"2.2.2.2",0])
packet = ip / udp / hello

Что дает мне вывод, как:

###[ IP ]### 
  version   = 4
  ihl       = 5
  tos       = 0x0
  len       = 54
  id        = 1
  flags     = 
  frag      = 0
  ttl       = 1
  proto     = udp
  chksum    = 0x6c44
  src       = 10.110.99.2
  dst       = 224.0.0.2
  \options   \
###[ UDP ]### 
     sport     = 646
     dport     = 646
     len       = 34
     chksum    = 0xa34c
###[ LDP ]### 
        version   = 1
        len       = 22
        id        = 2.2.2.2
        space     = 0
###[ LDPHello ]### 
           u         = 0
           type      = 256
           len       = 12
           id        = 0
           params    = [180, 0, 0]


По определению LDPHello от scapy:

class LDPHello(_LDP_Packet):
    name = "LDPHello"
    fields_desc = [BitField("u", 0, 1),
                   BitField("type", 0x0100, 15),
                   ShortField("len", None),
                   IntField("id", 0),
                   CommonHelloTLVField("params", [180, 0, 0])]

После CommonHelloTLVField нет поля, в которое мы можем добавить необязательный параметр, такой как транспортный адрес IPv4.

В то время как по RFC общая структура данных выглядит следующим образом:


    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|   Hello (0x0100)            |      Message Length           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Message ID                                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Common Hello Parameters TLV               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Optional Parameters                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Я не знаю, как получить вывод, как: Содержит транспортный уровень IPv4

0 ответов

Другие вопросы по тегам