如何使用 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)
我正在尝试使用 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)