Python 2.7 使用scapy获取DNS数据包的原始有效负载

Python 2.7 使用scapy获取DNS数据包的原始有效负载,python-2.7,dns,scapy,payload,Python 2.7,Dns,Scapy,Payload,我正在尝试使用packet[TCP].payload.load和packet[UDP].payload.load从pcap文件中提取所有UDP和TCP有效负载。但是,我注意到对于DNS数据包,packet[UDP].payload.load失败 数据包[IP].show()的输出如下(一个DNS查询和响应数据包)。我没有看到任何[Raw]部分,我想这就是.load失败的地方。如何在UDP层之后提取此类数据包的有效负载(以字节为单位) ===============================

我正在尝试使用
packet[TCP].payload.load和
packet[UDP].payload.load从pcap文件中提取所有UDP和TCP有效负载。但是,我注意到对于DNS数据包,
packet[UDP].payload.load
失败

数据包[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
====================================================
###[IP]###
版本=4
国际人道主义法=5
tos=0x0
len=64
id=59183
标志=
frag=0
ttl=128
proto=udp
chksum=0x0
src=172.22.32.48
dst=203.211.152.66
\选择权\
###[UDP]###
运动=55884
dport=域
len=44
chksum=0x309a
###[DNS]###
id=40212
qr=0
操作码=查询
aa=0
tc=0
rd=1
ra=0
z=0
没有一个
====================================================
###[IP]###
版本=4
国际人道主义法=5
tos=0x0
len=155
id=38148
标志=
frag=0
ttl=58
proto=udp
chksum=0xbaf1
src=203.211.152.66
dst=172.22.32.48
\选择权\
###[UDP]###
运动=领域
dport=55884
len=135
chksum=0x51d9
###[DNS]###
id=40212
qr=1
操作码=查询
aa=0
tc=0
rd=1
ra=1
没有一个

Scapy将DNS层分解为一些有意义的内容。如果需要原始字节,可以在层上调用
bytes()
,将它们取回

例如:

bytes(packet[TCP].payload)

Scapy已经将DNS层分解成一些有意义的东西。如果需要原始字节,可以在层上调用
bytes()
,将它们取回

例如:

bytes(packet[TCP].payload)

谢谢我想我也可以使用
binascii.hexlify(str(packet[UDP].payload))
以ASCII格式打印十六进制字符。谢谢!我想我也可以使用
binascii.hexlify(str(packet[UDP].payload))
以ASCII格式打印十六进制字符。