added paylen and debug mode

This commit is contained in:
Marco Lux
2015-06-11 11:53:45 +02:00
parent 54bc9eb535
commit 673dd9d6eb

View File

@@ -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: else:
print '%s\t(%s)' % (host,name) print '%s\t%d' % (host,rBuf_len)
data = '%s\t(%s)\n' % (host,name) data = '%s%d\n' % (host,rBuf_len)
else:
if debug:
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)