• 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)

  • 相关阅读:
    读取数据变JSON传值!
    YII2.0多条件查询升级版
    JS跳转页面方法
    yii的简单片段缓存
    我读过的最好的epoll讲解--转自”知乎“
    I/O多路复用详解
    ”open-close"prinple (OCP)
    获取本机的IPv4或者v6地址
    .Net 下未捕获异常的处理
    TCP断开连接的过程
  • 原文地址:https://www.cnblogs.com/yyxianren/p/10752038.html
Copyright © 2020-2023  润新知