Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 7d131d1

Browse files
committed
minor update
1 parent 7fd64df commit 7d131d1

3 files changed

Lines changed: 28 additions & 12 deletions

File tree

_sqlmap.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,3 @@ def main():
128128
# Reference: http://stackoverflow.com/questions/1635080/terminate-a-multi-thread-python-program
129129
if hasattr(conf, "threads") and conf.threads > 1:
130130
os._exit(0)
131-
132-
if __name__ == "__main__":
133-
main()

lib/request/dns.py

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77
See the file 'doc/COPYING' for copying permission
88
"""
99

10+
import os
1011
import socket
1112
import threading
13+
import time
1214

1315
class DNSQuery:
1416
"""
@@ -34,21 +36,22 @@ def __init__(self, raw):
3436
j = ord(raw[i])
3537

3638
def response(self, resolution):
37-
retval = ""
39+
retVal = ""
3840

3941
if self._query:
40-
retval += self._raw[:2] + "\x81\x80"
41-
retval += self._raw[4:6] + self._raw[4:6] + "\x00\x00\x00\x00" # Questions and Answers Counts
42-
retval += self._raw[12:] # Original Domain Name Question
43-
retval += "\xc0\x0c" # Pointer to domain name
44-
retval += "\x00\x01\x00\x01\x00\x00\x00\x3c\x00\x04" # Response type, ttl and resource data length -> 4 bytes
45-
retval += "".join(chr(int(_)) for _ in resolution.split('.')) # 4 bytes of IP
42+
retVal += self._raw[:2] + "\x81\x80"
43+
retVal += self._raw[4:6] + self._raw[4:6] + "\x00\x00\x00\x00" # Questions and Answers Counts
44+
retVal += self._raw[12:] # Original Domain Name Question
45+
retVal += "\xc0\x0c" # Pointer to domain name
46+
retVal += "\x00\x01\x00\x01\x00\x00\x00\x3c\x00\x04" # Response type, ttl and resource data length -> 4 bytes
47+
retVal += "".join(chr(int(_)) for _ in resolution.split('.')) # 4 bytes of IP
4648

47-
return retval
49+
return retVal
4850

4951
class DNSServer:
5052
def __init__(self):
5153
self._requests = []
54+
self._lock = threading.Lock()
5255

5356
def run(self):
5457
def _():
@@ -60,9 +63,25 @@ def _():
6063
data, addr = s.recvfrom(1024)
6164
_ = DNSQuery(data)
6265
s.sendto(_.response("127.0.0.1"), addr)
66+
self._lock.acquire()
6367
self._requests.append(_._query)
68+
self._lock.release()
6469
finally:
6570
s.close()
6671

6772
thread = threading.Thread(target=_)
6873
thread.start()
74+
75+
if __name__ == "__main__":
76+
server = DNSServer()
77+
try:
78+
server.run()
79+
while True:
80+
server._lock.acquire()
81+
for _ in server._requests[:]:
82+
print _
83+
server._requests = []
84+
server._lock.release()
85+
time.sleep(1)
86+
except KeyboardInterrupt:
87+
os._exit(0)

sqlmap.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
if PYVERSION >= "3" or PYVERSION < "2.6":
1515
exit("[CRITICAL] incompatible Python version detected ('%s'). For successfully running sqlmap you'll have to use version 2.6 or 2.7 (visit \"http://www.python.org/download/\")" % PYVERSION)
16-
else:
16+
elif __name__ == "__main__":
1717
from _sqlmap import main
1818
# import needed for proper working of --profile switch
1919
from lib.controller.controller import start

0 commit comments

Comments
 (0)