Python - 使用scapy模块

时间:2016-08-04 08:58:32

标签: python dns scapy any dig

我想使用python模块scapy来执行

的等效命令
dig ANY google.com @8.8.4.4 +notcp

我做了一个简单的示例代码:

from scapy.all import *

a = sr(IP(dst="8.8.4.4")/UDP(sport=RandShort(),dport=53)/DNS(qd=DNSQR(qname="google.com",qtype="ALL",qclass="IN")))

print str(a[0])

它发送和接收数据包, 但当我嗅到数据包时,回复显示Server failure

Wireshark Screenshot - scapy

Wireshark Screenshot - dig

嗅探dig命令本身看起来几乎相同,但它给了我一个正确的响应,而且它不发送另一个ICMP - Destination unreachable数据包..这只有在发送它时才会出现。< / p>

如果您需要更多信息,请随时提出。 也许有人可以帮我这个..

修改

可能ICMP - Destination unreachable数据包已发送,因为8.8.4.4尝试将响应发送到我的sport,这已关闭?但为什么dig会起作用?!

1 个答案:

答案 0 :(得分:0)

让Python代码使用scapy ..

srp(Ether()/IP(src="192.168.1.101",dst="8.8.8.8")/UDP(sport=RandShort(),dport=53)/DNS(rd=1,qd=DNSQR(qname="google.com",qtype="ALL",qclass="IN"),ar=DNSRROPT(rclass=3000)),timeout=1,verbose=0)

在Wireshark中,我们现在可以看到正确的响应: Wireshark Screenshot

但我仍然收到ICMP - Destination unreachable数据包.. 我不知道为什么..