Python Scapy递归DNS查询 - 书中的脚本

时间:2014-11-29 04:06:51

标签: python scapy

我正在阅读一本Python书籍,它有一个安装和使用 scapy 的教程。其中一个尝试的脚本是“使用加州理工大学公共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()查找了一些函数和/或方法,但这并没有给我足够的信息来解决问题。我希望熟悉这个的人会出于某种原因读到这个,并帮助我理解这一点。

感谢您阅读本文。

节日快乐,

user_loser

1 个答案:

答案 0 :(得分:2)

看起来您的数据包似乎没有得到任何答案(这是正常的,没有理由为什么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
  • 使用您的DNS服务器的IP地址更改131.215.9.49(这个应该回答您的递归查询)并检查您是否得到答案。

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