#!/usr/bin/env python
from __future__ import print_function
import sys
from dnslib import A, RR
from dnslib import DNSHeader, DNSRecord, QTYPE
from circuits import handler
from circuits.net.sockets import UDPServer
class DNSServer(UDPServer):
@handler("read")
def _on_read(self, peer, data):
# DNS Request Data
request = DNSRecord.parse(data)
id = request.header.id
qname = request.q.qname
print("DNS Request for qname({0:s})".format(qname), file=sys.stderr)
reply = DNSRecord(
DNSHeader(id=id, qr=1, aa=1, ra=1),
q=request.q
)
# Add A Record
reply.add_answer(RR(qname, QTYPE.A, rdata=A("127.0.0.1")))
# Send To Client
#self.fire(write(peer, reply.pack()))
return reply.pack()
server = DNSServer(("0.0.0.0", 5353))
from circuits import Debugger
Debugger().register(server)
server.run()