Получение сырой полезной нагрузки DNS-пакетов с помощью scapy - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь извлечь все полезные данные UDP и TCP из файла pcap, используя packet[TCP].payload.load и packet[UDP].payload.load. Однако я заметил, что packet[UDP].payload.load не удалось для пакетов DNS.

Вывод packet[IP].show() выглядит следующим образом (один пакет запроса и ответа DNS). Я не вижу ни одного раздела [ Raw ], где, как мне кажется, произошел сбой .load. Как я могу извлечь полезную нагрузку в байтах после уровня UDP для таких пакетов?

====================================================
###[ IP ]### 
  version   = 4
  ihl       = 5
  tos       = 0x0
  len       = 64
  id        = 59183
  flags     = 
  frag      = 0
  ttl       = 128
  proto     = udp
  chksum    = 0x0
  src       = 172.22.32.48
  dst       = 203.211.152.66
  \options   \
###[ UDP ]### 
     sport     = 55884
     dport     = domain
     len       = 44
     chksum    = 0x309a
###[ DNS ]### 
        id        = 40212
        qr        = 0
        opcode    = QUERY
        aa        = 0
        tc        = 0
        rd        = 1
        ra        = 0
        z         = 0
        <snipped>

None
====================================================
###[ IP ]### 
  version   = 4
  ihl       = 5
  tos       = 0x0
  len       = 155
  id        = 38148
  flags     = 
  frag      = 0
  ttl       = 58
  proto     = udp
  chksum    = 0xbaf1
  src       = 203.211.152.66
  dst       = 172.22.32.48
  \options   \
###[ UDP ]### 
     sport     = domain
     dport     = 55884
     len       = 135
     chksum    = 0x51d9
###[ DNS ]### 
        id        = 40212
        qr        = 1
        opcode    = QUERY
        aa        = 0
        tc        = 0
        rd        = 1
        ra        = 1
        <snipped>

None

1 Ответ

1 голос
/ 22 апреля 2020

Scapy разделил слой DNS на что-то значимое. Если вам нужны необработанные байты, вы можете вызвать bytes() на слое, чтобы получить их обратно.

Например:

bytes(packet[TCP].payload)
...