Ich möchte mit dnslib die DNS-Antworten von den jeweiligen Anfragen mit einem DNS-Cookie versehen. Ich habe auch bereits etwas dafür in meinen Code implementiert, jedoch funktioniert das noch nicht so. Kann mir jemand sagen, was ich da brauche?
Der 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), 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=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}")
Die Fehlermeldung:
Traceback (most recent call last):
File "c:\Users\Stoppersocke\Documents\Projects\MDM Bypass\test5.py", line 35, in <module>
dns_socket.sendto(dns_response.pack(), address)
^^^^^^^^^^^^^^^^^^^
File "C:\Users\Stoppersocke\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\dnslib\dns.py", line 339, in pack
ar.pack(buffer)
File "C:\Users\Stoppersocke\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\dnslib\dns.py", line 885, in pack
for opt in self.rdata:
TypeError: 'TXT' object is not iterable
fängt die gua immer mit 2000 an?