我正在阅读一本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
答案 0 :(得分:2)
看起来您的数据包似乎没有得到任何答案(这是正常的,没有理由为什么131.215.9.49应该回答您的递归查询)。
如果您希望sr1()
调用终止,可以添加timeout=
参数(值以秒为单位)。
如果您想确保131.215.9.49没有回复,但sr1()
来电有效,您可以:
host www.oreilly.com 131.215.9.49
并检查您是否获得;; connection timed out; no servers could be reached
。您还可以了解正在发生的情况,尝试在运行测试时运行tcpdump
并查看是否发送和/或接收了哪些数据包。