Fixed most byte and str improper concats and now need to work on sockets not connecting properly.

This commit is contained in:
NotoriousRebel 2018-11-21 01:36:36 -05:00
parent d21e2846d7
commit e826dc663b
3 changed files with 25 additions and 10 deletions

View file

@ -55,7 +55,7 @@ def DiscoverNameServers():
import win32dns
defaults['server'] = win32dns.RegistryResolve()
else:
return ParseResolvConf(resolv_path="/etc/resolv.conf")
return ParseResolvConf()
class DnsRequest:
@ -65,7 +65,7 @@ class DnsRequest:
def __init__(self, *name, **args):
self.donefunc = None
#fix maybe?
self.asyn= False
self.asyn = False
#self.async = None #TODO FIX async is a keyword
self.defaults = {}
self.argparse(name, args)
@ -148,7 +148,18 @@ def processReply(self):
# Lib.dumpM(u)
def conn(self):
self.s.connect((self.ns, self.port))
"""print('self.ns is: ',self.ns)
print('self.port is: ',self.port)
print('type of self.ns is: ',type(self.ns))
print('type of self.port is: ',self.port)"""
if not isinstance(self.ns,str):
self.ns = str(self.ns)
#print('self.ns is: ',self.ns)
#print('self.ns type is: ',type(self.ns))
try:
self.s.connect((self.ns, self.port))
except Exception:
pass
def req(self, *name, **args):
" needs a refactoring "
@ -210,7 +221,9 @@ def sendUDPRequest(self, server):
self.s.send(self.request)
self.response = self.processUDPReply()
# except socket.error:
except Exception:
except Exception as e:
print('getting exception: ', e)
import traceback; print(traceback.print_exc())
continue
break
if not self.response:

View file

@ -70,7 +70,7 @@ class Packer:
" packer base class. supports basic byte/16bit/32bit/addr/string/name "
def __init__(self):
self.buf = ''
self.buf = b''
self.index = {}
def getbuf(self):
@ -141,7 +141,7 @@ def addname(self, name):
buf = buf + pack16bit(pointer | 0xC000)
else:
buf = buf + '\0'
self.buf = self.buf + buf
self.buf = self.buf + bytes(buf, encoding='utf-8')
for key, value in index:
self.index[key] = value
@ -207,10 +207,10 @@ def getstring(self):
def getname(self):
# Domain name unpacking (section 4.1.4)
c = self.getbyte()
i = ord(c)
i = ord(chr(c))
if i & 0xC0 == 0xC0:
d = self.getbyte()
j = ord(d)
j = ord(chr(d))
pointer = ((i << 8) | j) & ~0xC000
save_offset = self.offset
try:
@ -226,7 +226,7 @@ def getname(self):
if not remains:
return domain
else:
return domain + '.' + remains
return domain + b'.' + remains
# Test program for packin/unpacking (section 4.1.4)

View file

@ -12,6 +12,7 @@ def __init__(self, range, verbose=True):
self.verbose = verbose
try:
DNS.ParseResolvConf("/etc/resolv.conf")
#DNS.ParseResolvConf("/etc/resolv.conf")
nameserver = DNS.defaults['server'][0]
except:
print("Error in DNS resolvers")
@ -83,6 +84,7 @@ def __init__(self, domain, dnsserver, verbose=False):
def getdns(self, domain):
DNS.ParseResolvConf("/etc/resolv.conf")
#DNS.ParseResolvConf("/etc/resolv.conf")
# nameserver=DNS.defaults['server'][0]
dom = domain
if self.subdo == True:
@ -107,7 +109,7 @@ def getdns(self, domain):
#check if variable is defined
test
except NameError:
print("Error test is not defined")
print("Error, test is not defined")
sys.exit()
if test.header['status'] != "NOERROR":
print("Error")