gpt4 book ai didi

DNS 协议(protocol)消息示例

转载 作者:行者123 更新时间:2023-12-04 21:54:48 24 4
gpt4 key购买 nike

我试图弄清楚如何将 DNS 消息从应用程序套接字适配器发送到 DNSBL。
我花了两天时间了解基础知识,包括尝试使用 WireShark 来捕捉消息交换的示例。
现在我想在不使用 dig 或 host 命令的情况下查询 DNS(我使用的是 Ubuntu);如果没有这些工具的帮助以正确的 DNS 消息格式包装请求,我如何在低级别执行此操作?邮件应该怎么发呢?十六进制还是字符串?

提前感谢您的帮助。
问候

亚历山德罗·伊拉多

已添加评论

我正在调查 JDev 和 Oracle SOA。该平台提供了一个套接字适配器,它简单地应用转换 (XSLT) 并将消息直接发送到套接字。
有效负载参数(例如我正在查找的主机)如何包装在消息中由开发人员决定。所以基本上我对所有 DNS 消息的结构都有一个想法,但我不想立即将所有内容都放在 JDev 上,我想自己进行一些测试,以确保我得到有效的消息格式。

所以,我没有使用任何特定的语言(我什至不明白他们为什么将我的问题从 serverfault 转移),我不想使用任何会隐藏部分消息的工具,例如标题。我知道他们工作得很好顺便说一句。
我猜这东西与数据包注入(inject)有关。有人建议我使用 telnet,但我只用于 SMTP 或 HTTP,我不知道它如何用于 DNS 请求。
现在更有意义了吗?

最佳答案

Ewww ...而不是手动构建DNS协议(protocol),您真的应该使用您的编程环境提供的某种库来进行查找。

不要在没有非常好的理由的情况下手动构建协议(protocol)。严重地。不要那样做。

@Synetech:不,OP 没有考虑使用库。他只是不想使用命令行工具。就示例库而言,您无需看得太远。 dns 怎么样?图书馆?这并不完全是一个很大的努力。

#!/usr/bin/python3
import dns
import dns.message
import dns.query

from ipaddress import IPv6Address, IPv6Network

query = dns.message.make_query('www.google.ca', dns.rdatatype.ANY)
resp = dns.query.tcp(query, '2001:4860:4860::8888', timeout=5)
aaaa_data = resp.get_rrset(resp.answer, resp.question[0].name,
dns.rdataclass.IN, dns.rdatatype.AAAA)

aaaa_addrs = (IPv6Address(x) for x in aaaa_data)
for addr in aaaa_addrs:
if addr in IPv6Network('2607:F8B0::/32'):
print("{} is in Google's network".format(addr))
else:
print("{} is NOT in Google's network".format(addr))

关于DNS 协议(protocol)消息示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2869710/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com