我正在阅读一本 Python 书,它有一个安装和使用 scapy 的教程。要尝试的脚本之一是“使用加州理工大学的公共(public) DNS 服务器对 www.oreilly.com 进行递归 DNS 查询”。我不知道为什么有人会出于有用的原因想要这样做。如果有人也能解释为什么这很有用,那就太棒了。 :D

在我的机器上安装此程序后,我从 bin 目录 ./bin/scapy 启动 scapy。 scapy 的版本是:Welcome to Scapy (2.2.0)
好吧无论如何这里是对我不起作用的脚本:

sr1(IP(dst="131.215.9.49")/UDP()/DNS(rd=1,qd=DNSQR(qname="www.oreilly.com")))

所有这些都是打印:
Begin emission:
Finished to send 1 packets.
.......tons of never ending dots in the shell.............................
..........................................................................
.......................................................................etc

如何修复此脚本以使其正常工作?我使用 help() 查找了一些函数和/或方法,但这并没有给我足够的信息来进行故障排除。我希望熟悉这个的人会出于某种原因阅读这篇文章并帮助我理解这一点。

谢谢您阅读此篇。

节日快乐,

失败者

最佳答案

看起来您的数据包没有得到任何答案(这是正常的,没有理由 131.215.9.49 应该回答您的递归查询)。

如果您希望 sr1() 调用终止,您可以添加一个 timeout= 参数(值以秒为单位)。

如果您想确保 131.215.9.49 没有接听但您的 sr1() 调用有效,您可以:

  • 从 shell 发出 host www.oreilly.com 131.215.9.49 并检查您是否获得 ;; connection timed out; no servers could be reached
  • 将 131.215.9.49 更改为您的 DNS 服务器的 IP 地址(这个应该回答您的递归查询)并检查您是否得到了答案。

  • 为了了解发生了什么,您还可以在运行测试时尝试运行 tcpdump 并查看是否发送和/或接收了哪些数据包。

    关于Python Scapy 递归 DNS 查询 - 书中的脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27198751/

    10-12 18:27