python scapy dns 包字段解析


qr:       0表示查詢報文,1表示響應報文
opcode:   通常值為0(標准查詢),其他值為1(反向查詢)和2(服務器狀態請求)。
aa:      表示授權回答(authoritative answer)
tc:      表示可截斷的(truncated)
rcode:     返回碼,通常為0(沒有差錯)和3(名字差錯)表示期望遞歸
ra:      表示可用遞歸
z:         隨后3bit必須為0(保留字段)
rcode:    返回碼,通常為0(沒有差錯)和3(名字差錯)

 

qd 問題部分
an 回答部分
ns 管理機構部分和
ar 附加信息部分


qd 它有三部分組成:
  qname(詢問域名,比如說www.sina.com它由一個或者多個標示符序列組成。每個標示符已首字節數的計數值來說明該標示符長度,每個名字以0結束。計數字節數必須是0~63之間。該字段無需填充字節。
  qtype(詢問類型,表示希望得到什么類型的回答),通常設為A,表示是由域名獲得該域名的IP地址,當然還有其他的類型,這里不作介紹。
  qclass(詢問類),此處一般為IN,表示為Internet名字空間,別的類這里不作介紹。
  后面的 an(回答部分),ns(管理機構部分),ar(附加信息部分),這三部分作為DNS請求包來說一般是不用寫的,為空。

標准DNS字段如下:

>>> ls(DNS)

length     : ShortField (Cond)                   = (None)

id         : ShortField                          = (0)

qr         : BitField (1 bit)                    = (0)

opcode     : BitEnumField (4 bits)               = (0)

aa         : BitField (1 bit)                    = (0)

tc         : BitField (1 bit)                    = (0)

rd         : BitField (1 bit)                    = (1)

ra         : BitField (1 bit)                    = (0)

z          : BitField (1 bit)                    = (0)

ad         : BitField (1 bit)                    = (0)

cd         : BitField (1 bit)                    = (0)

rcode      : BitEnumField (4 bits)               = (0)

qdcount    : DNSRRCountField                     = (None)

ancount    : DNSRRCountField                     = (None)

nscount    : DNSRRCountField                     = (None)

arcount    : DNSRRCountField                     = (None)

qd         : DNSQRField                          = (None)

an         : DNSRRField                          = (None)

ns         : DNSRRField                          = (None)

ar         : DNSRRField                          = (None)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM