scapy---DNS报文格式解析
(2009-10-10 14:46:50)
标签:
dnsdns包结构scapy可变部分报文 |
分类: Python |
主要看DNS请求包,其实请求包和应答包格式是一样的,只是一些参数的取值不同而已
先看一个截图,是当我访问一个新浪网的时候用wireshak抓的DNS请求包(点击图可放大看)

一个DNS报文(不管是请求包还是应答包)可分为两大部分,不可变部分与可变部分(指长度是否可变)
其中不可变部分有六个定常域,每个域长2个字节,也就是我们在上图中看到的:Transaction ID, Flags,
Questions, Anwser RRS, Authority RRs, Additional
RRs六个每个长度为2个字节。
可变部分分为四个小部分:问题部分,回答部分,管理机构部分和附加信息部分,下面会讨论。
下面结合scapy中的DNS类说明:(下面黑色部分为6个定长域,蓝色部分为可变域)
>>> ls(DNS)
id
:
ShortField
= (0) #Transaction
ID,2字节标识,用于解释器匹配请求与响应
qr
:
BitField
=
(0)
* **
**************************
opcode
:
BitEnumField
= (0) *
aa
:
BitField
=
(0)
*
tc
:
BitField
=
(0)
*
这里是2字节的Flags,具体到每一位下面会通过截图详细说
rd
:
BitField
=
(0)
*
ra
:
BitField
=
(0)
*
z
:
BitField
=
(0)

>>> ls(DNS)
id
qr
opcode
aa
tc
rd
ra
z