mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2025-05-06 16:53:44 +03:00
minor update for DNSServer support
This commit is contained in:
parent
56638f9e95
commit
429b8396e9
|
@ -52,36 +52,53 @@ class DNSServer:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._requests = []
|
self._requests = []
|
||||||
self._lock = threading.Lock()
|
self._lock = threading.Lock()
|
||||||
|
self._socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||||
|
self._socket.bind(("", 53))
|
||||||
|
self._running = False
|
||||||
|
|
||||||
|
def pop(self):
|
||||||
|
retVal = None
|
||||||
|
with self._lock:
|
||||||
|
if len(self._requests):
|
||||||
|
retVal = self._requests.pop(0)
|
||||||
|
return retVal
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
def _():
|
def _():
|
||||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
||||||
s.bind(("", 53))
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
self._running = True
|
||||||
while True:
|
while True:
|
||||||
data, addr = s.recvfrom(1024)
|
data, addr = self._socket.recvfrom(1024)
|
||||||
_ = DNSQuery(data)
|
_ = DNSQuery(data)
|
||||||
s.sendto(_.response("127.0.0.1"), addr)
|
self._socket.sendto(_.response("127.0.0.1"), addr)
|
||||||
self._lock.acquire()
|
with self._lock:
|
||||||
self._requests.append(_._query)
|
self._requests.append(_._query)
|
||||||
self._lock.release()
|
except KeyboardInterrupt:
|
||||||
|
raise
|
||||||
finally:
|
finally:
|
||||||
s.close()
|
self._running = False
|
||||||
|
|
||||||
thread = threading.Thread(target=_)
|
thread = threading.Thread(target=_)
|
||||||
thread.start()
|
thread.start()
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
server = DNSServer()
|
|
||||||
try:
|
try:
|
||||||
|
server = DNSServer()
|
||||||
server.run()
|
server.run()
|
||||||
while True:
|
while server._running:
|
||||||
server._lock.acquire()
|
while True:
|
||||||
for _ in server._requests[:]:
|
_ = server.pop()
|
||||||
print _
|
if _ is None:
|
||||||
server._requests = []
|
break
|
||||||
server._lock.release()
|
else:
|
||||||
|
print "[i] %s" % _
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
except socket.error, ex:
|
||||||
|
if 'Permission' in str(ex):
|
||||||
|
print "[x] Please run with sudo/Administrator privileges"
|
||||||
|
else:
|
||||||
|
raise
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
os._exit(0)
|
os._exit(0)
|
||||||
|
finally:
|
||||||
|
server._running = False
|
||||||
|
|
Loading…
Reference in New Issue
Block a user