added paylen and debug mode
This commit is contained in:
40
find_dns.py
40
find_dns.py
@@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
import time
|
||||||
import Queue
|
import Queue
|
||||||
import struct
|
import struct
|
||||||
import socket
|
import socket
|
||||||
@@ -52,14 +53,16 @@ def parseDomain(domain):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
def checkDNS(payload,host,resolv):
|
def checkDNS(payload,host,resolv,debug):
|
||||||
# settimeout so recv is not block
|
# settimeout so recv is not block
|
||||||
|
rBuf_len = -1
|
||||||
try:
|
try:
|
||||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||||
s.settimeout(3)
|
s.settimeout(5)
|
||||||
s.connect((host,53))
|
s.connect((host,53))
|
||||||
s.send(payload)
|
s.send(payload)
|
||||||
rBuf = s.recv(1024)
|
rBuf = s.recv(1024)
|
||||||
|
rBuf_len = len(rBuf)
|
||||||
name = ''
|
name = ''
|
||||||
# default we resolve IPs as long as -n is not choosen
|
# default we resolve IPs as long as -n is not choosen
|
||||||
if resolv:
|
if resolv:
|
||||||
@@ -69,11 +72,19 @@ def checkDNS(payload,host,resolv):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
if name == '':
|
if name == '':
|
||||||
print '%s' % (host)
|
if debug:
|
||||||
data = '%s\n' % (host)
|
print '%s\t%d\t%s' % (host,rBuf_len,repr(rBuf))
|
||||||
|
data = '%s%d\t%s\n' % (host,rBuf_len,repr(rBuf))
|
||||||
|
else:
|
||||||
|
print '%s\t%d' % (host,rBuf_len)
|
||||||
|
data = '%s%d\n' % (host,rBuf_len)
|
||||||
else:
|
else:
|
||||||
print '%s\t(%s)' % (host,name)
|
if debug:
|
||||||
data = '%s\t(%s)\n' % (host,name)
|
print '%s\t(%s) %d\t%s' % (host,name,rBuf_len,repr(rBuf))
|
||||||
|
data = '%s\t(%s) %d\t%s\n' % (host,name,rBuf_len,repr(rBuf))
|
||||||
|
else:
|
||||||
|
print '%s\t(%s) %d' % (host,name,rBuf_len)
|
||||||
|
data = '%s\t(%s) %d\n' % (host,name,rBuf_len)
|
||||||
|
|
||||||
rQ.put(data)
|
rQ.put(data)
|
||||||
except socket.error,e:
|
except socket.error,e:
|
||||||
@@ -108,13 +119,18 @@ def run(args):
|
|||||||
print '[*] Entries %d in queue' % q.qsize()
|
print '[*] Entries %d in queue' % q.qsize()
|
||||||
print '[*] Running with %d threads' % thrCnt
|
print '[*] Running with %d threads' % thrCnt
|
||||||
print '='*50
|
print '='*50
|
||||||
print 'IP\t\tNAME'
|
if args.resolv:
|
||||||
|
print 'IP\t\tNAME\tPaylen'
|
||||||
|
else:
|
||||||
|
print 'IP\t\tPaylen'
|
||||||
|
|
||||||
print '='*50
|
print '='*50
|
||||||
thrList = []
|
thrList = []
|
||||||
while q.qsize()>0:
|
while True:
|
||||||
|
#while q.qsize()>0:
|
||||||
|
|
||||||
if len(thrList) < thrCnt:
|
if len(thrList) < thrCnt and q.qsize()>0:
|
||||||
thrDns = threading.Thread(target = checkDNS, args = (payload,q.get(),args.resolv))
|
thrDns = threading.Thread(target = checkDNS, args = (payload,q.get(),args.resolv,args.debug))
|
||||||
thrDns.daemon = True
|
thrDns.daemon = True
|
||||||
thrDns.start()
|
thrDns.start()
|
||||||
thrList.append(thrDns)
|
thrList.append(thrDns)
|
||||||
@@ -133,6 +149,9 @@ def run(args):
|
|||||||
if rQ.qsize()>0:
|
if rQ.qsize()>0:
|
||||||
rQ.get()
|
rQ.get()
|
||||||
|
|
||||||
|
if q.qsize()==0 and len(thrList) == 0:
|
||||||
|
break
|
||||||
|
|
||||||
if args.outfile:
|
if args.outfile:
|
||||||
fw.close()
|
fw.close()
|
||||||
print '='*50
|
print '='*50
|
||||||
@@ -149,6 +168,7 @@ def main():
|
|||||||
parser.add_argument('-o',action='store',required=False,help='write found data to file', dest='outfile')
|
parser.add_argument('-o',action='store',required=False,help='write found data to file', dest='outfile')
|
||||||
parser.add_argument('-n',action='store_false',default=True,required=False,help='do not resolve ips', dest='resolv')
|
parser.add_argument('-n',action='store_false',default=True,required=False,help='do not resolve ips', dest='resolv')
|
||||||
parser.add_argument('-d',action='store',default='google.com',required=False,help='choose the domain for the dns request', dest='domain')
|
parser.add_argument('-d',action='store',default='google.com',required=False,help='choose the domain for the dns request', dest='domain')
|
||||||
|
parser.add_argument('--debug',action='store_true',default=False,required=False,help='debug output', dest='debug')
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
run(args)
|
run(args)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user