Wie sende ich DNS Cookies mit dnslib?

1 Antwort

Die Fehlermeldung besagt, dass das

TXT

-Objekt nicht iterierbar ist. In der Tat, das

TXT

-Objekt stellt normalerweise einen einzelnen TXT Resource Record dar, daher ist es nicht notwendig, es zu iterieren. Um einen DNS-Cookie als OPT RR zu senden, sollte der

DNSRecord

mit dem

edns

-Flag versehen werden. Das

edns

-Flag wird durch das Setzen des

rcode

-Felds auf

DNSHeader.RCODE_OK

aktiviert. Hier ist ein Beispielcode, der zeigt, wie man einen DNS-Cookie als OPT RR mit dnslib sendet:

python

Copy code
import socket from dnslib import * DNS_PORT = 53 dns_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) dns_socket.bind(('', DNS_PORT))print(f"DNS-Server hört auf Port {DNS_PORT}...") def dns_forward(domain): try: ip_address = socket.gethostbyname(domain) return ip_address except socket.error: return'185.199.111.153' #Error 404 while True: data, address = dns_socket.recvfrom(1024) dns_message = DNSRecord.parse(data) dns_request = str(dns_message.q.qname) dns_answer = dns_forward(dns_request) client_ip = address[0] client_port = address[1] dns_cookie = ("4096") if client_ip == '192.168.0.113': dns_response = DNSRecord(DNSHeader(id=dns_message.header.id, qr=1, aa=1, ra=1, rcode=DNSHeader.RCODE_OK), q=dns_message.q) dns_response.add_answer(RR(dns_request, QTYPE.A, rdata=A(dns_answer))) dns_response.add_ar(RR(dns_request, QTYPE.OPT, rdata=OPT(rdata=[TXT(dns_cookie)]))) dns_socket.sendto(dns_response.pack(), address)print(f"DNS-Anfrage von {client_ip} mit Port {client_port} für {dns_request} die Antwort ist {dns_answer}")

Hier wird ein

OPT

-RR mit einem einzelnen

TXT

-RR, der den DNS-Cookie enthält, erstellt und als Additional Record (AR) zur DNS-Antwort hinzugefügt. Das

rcode

-Feld im

DNSHeader

wird auf

DNSHeader.RCODE_OK

gesetzt, um den Einsatz von EDNS zu signalisieren.

Woher ich das weiß:eigene Erfahrung
StoppiDerGrosse 
Fragesteller
 26.03.2023, 00:15

DNSHeader hat kein Attribut namens "RCODE_OK"

0
StoppiDerGrosse 
Fragesteller
 26.03.2023, 00:35
@Pandoratim
Traceback (most recent call last):
 File "c:\Users\Stoppersocke\Documents\Projects\MDM Bypass\test4.py", line 26, in <module>
  dns_response = DNSRecord(DNSHeader(id=dns_message.header.id, qr=1, aa=1, ra=1, rcode=DNSHeader.RCODE_OK), q=dns_message.q)
                                             ^^^^^^^^^^^^^^^^^^
AttributeError: type object 'DNSHeader' has no attribute 'RCODE_OK'
0