使用 Scapy 读取原始字节?
Reading Raw Bytes using Scapy?
我有一个正在构建 DNS 转发器的项目。
我正在使用 UDP 服务器套接字来侦听端口 53 上的 DNS 请求(客户端正在使用 dig 命令),我必须将收到的原始 DNS 请求转发给 scapy 以对其进行解析。我知道 scapy 用于 forge/send/manipulate 数据包。
原始请求看起来像这样 -
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'
scapy 中是否有一个 method/function 用于导入原始 DNS 请求以获取标志,正在询问什么记录?
只需使用您的字节字符串初始化 DNS 负载:
from scapy.all import DNS
p = DNS(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')
然后您可以访问它的字段:
print(p.id)
print(p.opcode)
...
[编辑]
并打印其所有内容:
p.show()
我有一个正在构建 DNS 转发器的项目。
我正在使用 UDP 服务器套接字来侦听端口 53 上的 DNS 请求(客户端正在使用 dig 命令),我必须将收到的原始 DNS 请求转发给 scapy 以对其进行解析。我知道 scapy 用于 forge/send/manipulate 数据包。
原始请求看起来像这样 -
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'
scapy 中是否有一个 method/function 用于导入原始 DNS 请求以获取标志,正在询问什么记录?
只需使用您的字节字符串初始化 DNS 负载:
from scapy.all import DNS
p = DNS(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')
然后您可以访问它的字段:
print(p.id)
print(p.opcode)
...
[编辑] 并打印其所有内容:
p.show()