展示DNS数据包的格式

import binascii

def display_dns_packet(packet):
    print("DNS Packet:")
    print("ID: ", binascii.hexlify(packet[0:2]))
    print("QR: ", binascii.hexlify(packet[2]))
    print("OPCODE: ", binascii.hexlify(packet[3]))
    print("AA: ", binascii.hexlify(packet[4]))
    print("TC: ", binascii.hexlify(packet[5]))
    print("RD: ", binascii.hexlify(packet[6]))
    print("RA: ", binascii.hexlify(packet[7]))
    print("Z: ", binascii.hexlify(packet[8]))
    print("AD: ", binascii.hexlify(packet[9]))
    print("CD: ", binascii.hexlify(packet[10]))
    print("RCODE: ", binascii.hexlify(packet[11]))
    print("QUESTION COUNT: ", binascii.hexlify(packet[12:14]))
    print("ANSWER COUNT: ", binascii.hexlify(packet[14:16]))
    print("AUTHORITY COUNT: ", binascii.hexlify(packet[16:18]))
    print("ADDITIONAL COUNT: ", binascii.hexlify(packet[18:20]))
    print("QUESTION:")
    question_start = 20
    question_end = question_start + 2 * int(binascii.hexlify(packet[12:14]), 16)
    print("Name: ", binascii.hexlify(packet[question_start:question_end]))
    print("Type: ", binascii.hexlify(packet[question_end:question_end+2]))
    print()

代码使用Python标准库中的binascii模块对DNS数据包进行十六进制展示。首先输出DNS数据包的头部信息,然后展示问题和回答区域的内容。

DNS数据包的格式如下:

  • 头部:会话标识ID,用于标识报文的ID标识,对于请求报文和其对应的应答报文,这个字段是相同的,通过它可以区分DNS应答报文是哪个请求的响应。
  • 正文:
    • Queries区域
      • 查询名QNAME:要查找的名字,是一个或多个标识符的序列。
      • 查询类型QTYPE:每一个问题有一个查询类型,2个字节表示查询类型。
  • 响应状态码:用于表示响应的状态。
  • 域名服务器:用于解析域名的IP地址。
  • 开始记录:表示从哪个字节开始记录。
  • 回答区域数量:表示报文中有多少个回答区域。
  • 权威域名服务器数量:表示权威域名服务器的数量。
  • 附加资源记录数:表示附加记录的数量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Risehuxyc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值