如何使用 scapy 模块发送请求并接受三个答案?

How can I use the scapy module to send a request and accept three answers?

我正在尝试使用 scapy 模块向 4.2.2.4 服务器询问一些 url IP 地址。

大部分查询请求只会得到一个答复,可能有一个或多个IP地址。但是“facebook.com”是不同的。服务器会给我三个答案,每个答案都有一个IP地址。

为什么会这样?如何在我的 python 程序中获得所有三个答案?我尝试了 sr() 和 sr1() 函数,但它们都只能得到一个答案。

我的代码:

from scapy.all import *
url = 'facebook.com'
server = '4.2.2.4'
result1, unanswer = sr(IP(dst=server) / UDP() / DNS(qd=DNSQR(qname=url, qtype='A', qclass='IN')))
result2 = sr1(IP(dst=server) / UDP() / DNS(qd=DNSQR(qname=url, qtype='A', qclass='IN')))

我得到的结果(部分答案):

\an \

|###[ DNS Resource Record ]###

| rrname = 'facebook.com.'

......

| rdata = '173.252.103.64'

我用wireshark得到的结果:

嗨,

您可以在 sr() 中使用 multiple 关键字参数:

sr([...], multiple=True)