You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Scapy解析原始DNS请求字节以提取标识和查询记录类型?

Scapy解析原始DNS报文方案

Scapy原生支持直接加载原始DNS字节流完成解析,不需要额外的格式转换操作,使用方式如下:

核心解析方法

直接将UDP socket接收到的原始DNS请求字节传入DNS类的构造函数即可完成解析,示例代码:

from scapy.layers.dns import DNS

# 替换为你从socket实际收到的原始DNS请求字节
raw_dns_req = b'\xd6t\x01\x00\x01\x00\x00\x00\x00\x00\x01\x03www\x08facebook\x03com\x00\x00\x01\x00\x01\x00\x00)\x10\x00\x00\x00\x00\x00\x00\x00'
dns_pkt = DNS(raw_dns_req)

常用字段读取示例

解析完成后可以直接通过属性读取你需要的各类DNS报文参数:

  • 事务标识(ID):读取dns_pkt.id,你给出的示例中该值为十六进制0xd674,对应十进制54900
  • 查询记录类型:读取dns_pkt.qd.qtype,示例中返回值为1,对应A记录
  • 查询域名:读取dns_pkt.qd.qname,示例中返回b'www.facebook.com.'
  • 请求/响应标识:读取dns_pkt.qr,返回0为请求、返回1为响应,你的示例中该值为0符合请求特征

如果需要查看完整的报文字段,调用dns_pkt.show()即可分层打印所有报文参数,方便你查找需要的自定义字段。


内容的提问来源于stack exchange,提问作者Mr.X

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 07:27:03