summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--net/py-impacket/Makefile18
-rw-r--r--net/py-impacket/distinfo6
-rw-r--r--net/py-impacket/files/patch-2to36561
-rw-r--r--net/py-impacket/files/patch-setup.py27
4 files changed, 28 insertions, 6584 deletions
diff --git a/net/py-impacket/Makefile b/net/py-impacket/Makefile
index 08c2b502f287..0fb09ef9dce7 100644
--- a/net/py-impacket/Makefile
+++ b/net/py-impacket/Makefile
@@ -1,12 +1,10 @@
PORTNAME= impacket
-PORTVERSION= 0.9.17
-PORTREVISION= 1
+PORTVERSION= 0.11.0
CATEGORIES= net python
-MASTER_SITES= PYPI \
- https://github.com/CoreSecurity/impacket/releases/download/impacket_${PORTVERSION:S,.,_,g}/
+MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
-MAINTAINER= contato@kanazuchi.com
+MAINTAINER= acm@FreeBSD.org
COMMENT= Collection of Python classes providing access to network packets
WWW= https://www.coresecurity.com/corelabs-research/open-source-tools/impacket
@@ -15,8 +13,14 @@ LICENSE_COMB= multi
LICENSE_FILE= ${WRKSRC}/LICENSE
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pyasn1>=0:devel/py-pyasn1@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}pcapy>=0:net/py-pcapy@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}pycryptodome>0:security/py-pycryptodome@${PY_FLAVOR}
+ ${PYTHON_PKGNAMEPREFIX}pycryptodomex>0:security/py-pycryptodomex@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}openssl>0:security/py-openssl@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}six>0:devel/py-six@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}ldap3>0:net/py-ldap3@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}Flask>0:www/py-flask@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}future>0:devel/py-future@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}charset-normalizer>0:textproc/py-charset-normalizer@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}ldapdomaindump>0:net/py-ldapdomaindump@${PY_FLAVOR}
USES= dos2unix python
USE_PYTHON= autoplist distutils
diff --git a/net/py-impacket/distinfo b/net/py-impacket/distinfo
index 24f3b6d98b0a..a0e55d4c50bd 100644
--- a/net/py-impacket/distinfo
+++ b/net/py-impacket/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1535712677
-SHA256 (impacket-0.9.17.tar.gz) = 68d47b101392e68e7abeb4a99e7b22f455f5879a5ef1d7c6bd0fc02b373a6858
-SIZE (impacket-0.9.17.tar.gz) = 1197897
+TIMESTAMP = 1695272809
+SHA256 (impacket-0.11.0.tar.gz) = ee4039b4d2aede8f5f64478bc59faac86036796be24dea8dc18f009fb0905e4a
+SIZE (impacket-0.11.0.tar.gz) = 1502931
diff --git a/net/py-impacket/files/patch-2to3 b/net/py-impacket/files/patch-2to3
deleted file mode 100644
index f0d68cfd1fa5..000000000000
--- a/net/py-impacket/files/patch-2to3
+++ /dev/null
@@ -1,6561 +0,0 @@
---- impacket/IP6_Address.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/IP6_Address.py
-@@ -26,7 +26,7 @@ class IP6_Address():
- self.__scope_id = ""
-
- #Invoke a constructor based on the type of the argument
-- if type(address) is str or type(address) is unicode:
-+ if type(address) is str or type(address) is str:
- self.__from_string(address)
- else:
- self.__from_bytes(address)
-@@ -243,7 +243,7 @@ class IP6_Address():
- #Capitalize on the constructor's ability to detect invalid text representations of an IP6 address
- ip6_address = IP6_Address(text_representation)
- return True
-- except Exception, e:
-+ except Exception as e:
- return False
-
- def __is_a_scoped_address(self, text_representation):
-@@ -252,18 +252,18 @@ class IP6_Address():
- #############################################################################################################
- # Informal tests
- if __name__ == '__main__':
-- print IP6_Address("A:B:C:D:E:F:1:2").as_string()
-+ print(IP6_Address("A:B:C:D:E:F:1:2").as_string())
- # print IP6_Address("A:B:C:D:E:F:0:2").as_bytes()
-- print IP6_Address("A:B:0:D:E:F:0:2").as_string()
-+ print(IP6_Address("A:B:0:D:E:F:0:2").as_string())
- # print IP6_Address("A::BC:E:D").as_string(False)
-- print IP6_Address("A::BC:E:D").as_string()
-- print IP6_Address("A::BCD:EFFF:D").as_string()
-- print IP6_Address("FE80:0000:0000:0000:020C:29FF:FE26:E251").as_string()
-+ print(IP6_Address("A::BC:E:D").as_string())
-+ print(IP6_Address("A::BCD:EFFF:D").as_string())
-+ print(IP6_Address("FE80:0000:0000:0000:020C:29FF:FE26:E251").as_string())
-
- # print IP6_Address("A::BCD:EFFF:D").as_bytes()
-- print IP6_Address("::").as_string()
-- print IP6_Address("1::").as_string()
-- print IP6_Address("::2").as_string()
-+ print(IP6_Address("::").as_string())
-+ print(IP6_Address("1::").as_string())
-+ print(IP6_Address("::2").as_string())
- # bin = [
- # 0x01, 0x02, 0x03, 0x04,
- # 0x01, 0x02, 0x03, 0x04,
---- impacket/IP6_Extension_Headers.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/IP6_Extension_Headers.py
-@@ -6,7 +6,7 @@
- #
- import array
-
--from ImpactPacket import Header, ImpactPacketException, PacketBuffer
-+from .ImpactPacket import Header, ImpactPacketException, PacketBuffer
-
- class IP6_Extension_Header(Header):
- # --------------------------------- - - - - - - -
-@@ -40,7 +40,7 @@ class IP6_Extension_Header(Header):
- for option in self._option_list:
- option_str = str(option)
- option_str = option_str.split('\n')
-- option_str = map(lambda s: (' ' * 4) + s, option_str)
-+ option_str = [(' ' * 4) + s for s in option_str]
- s += '\n'.join(option_str) + '\n'
-
- return s
-@@ -53,7 +53,7 @@ class IP6_Extension_Header(Header):
-
- buffer = array.array('B', buffer[self.get_headers_field_size():])
- if remaining_bytes > len(buffer):
-- raise ImpactPacketException, "Cannot load options from truncated packet"
-+ raise ImpactPacketException("Cannot load options from truncated packet")
-
- while remaining_bytes > 0:
- option_type = buffer[0]
-@@ -164,7 +164,7 @@ class Extension_Option(PacketBuffer):
-
- def __init__(self, option_type, size):
- if size > Extension_Option.MAX_OPTION_LEN:
-- raise ImpactPacketException, "Option size of % is greater than the maximum of %d" % (size, Extension_Option.MAX_OPTION_LEN)
-+ raise ImpactPacketException("Option size of % is greater than the maximum of %d" % (size, Extension_Option.MAX_OPTION_LEN))
- PacketBuffer.__init__(self, size)
- self.set_option_type(option_type)
-
-@@ -217,7 +217,7 @@ class Option_PADN(Extension_Option):
-
- def __init__(self, padding_size):
- if padding_size < 2:
-- raise ImpactPacketException, "PadN Extension Option must be greater than 2 bytes"
-+ raise ImpactPacketException("PadN Extension Option must be greater than 2 bytes")
-
- Extension_Option.__init__(self, Option_PADN.OPTION_TYPE_VALUE, padding_size)
- self.set_data('\x00' * (padding_size - 2))
-@@ -266,7 +266,7 @@ class Hop_By_Hop(Basic_Extension_Header):
-
- @classmethod
- def get_decoder(self):
-- import ImpactDecoder
-+ from . import ImpactDecoder
- return ImpactDecoder.HopByHopDecoder
-
- class Destination_Options(Basic_Extension_Header):
-@@ -275,7 +275,7 @@ class Destination_Options(Basic_Extension_Header):
-
- @classmethod
- def get_decoder(self):
-- import ImpactDecoder
-+ from . import ImpactDecoder
- return ImpactDecoder.DestinationOptionsDecoder
-
- class Routing_Options(IP6_Extension_Header):
-@@ -307,7 +307,7 @@ class Routing_Options(IP6_Extension_Header):
-
- @classmethod
- def get_decoder(self):
-- import ImpactDecoder
-+ from . import ImpactDecoder
- return ImpactDecoder.RoutingOptionsDecoder
-
- def get_headers_field_size(self):
---- impacket/ImpactPacket.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/ImpactPacket.py
-@@ -19,6 +19,7 @@ import socket
- import string
- import sys
- from binascii import hexlify
-+from functools import reduce
-
- """Classes to build network packets programmatically.
-
-@@ -34,7 +35,7 @@ class ImpactPacketException(Exception):
- def __init__(self, value):
- self.value = value
- def __str__(self):
-- return `self.value`
-+ return repr(self.value)
-
- class PacketBuffer(object):
- """Implement the basic operations utilized to operate on a
-@@ -362,7 +363,7 @@ class ProtocolPacket(ProtocolLayer):
- class Header(PacketBuffer,ProtocolLayer):
- "This is the base class from which all protocol definitions extend."
-
-- packet_printable = filter(lambda c: c not in string.whitespace, string.printable) + ' '
-+ packet_printable = [c for c in string.printable if c not in string.whitespace] + ' '
-
- ethertype = None
- protocol = None
-@@ -650,7 +651,7 @@ class Ethernet(Header):
-
- @staticmethod
- def as_eth_addr(anArray):
-- tmp_list = map(lambda x: x > 15 and '%x'%x or '0%x'%x, anArray)
-+ tmp_list = [x > 15 and '%x'%x or '0%x'%x for x in anArray]
- return '' + reduce(lambda x, y: x+':'+y, tmp_list)
-
- def __str__(self):
-@@ -842,7 +843,7 @@ class IP(Header):
- for op in self.__option_list:
- sum += op.get_len()
- if sum > 40:
-- raise ImpactPacketException, "Options overflowed in IP packet with length: %d" % sum
-+ raise ImpactPacketException("Options overflowed in IP packet with length: %d" % sum)
-
-
- def get_ip_v(self):
-@@ -1065,7 +1066,7 @@ class IP(Header):
- opt_left = (self.get_ip_hl() - 5) * 4
- opt_bytes = array.array('B', aBuffer[20:(20 + opt_left)])
- if len(opt_bytes) != opt_left:
-- raise ImpactPacketException, "Cannot load options from truncated packet"
-+ raise ImpactPacketException("Cannot load options from truncated packet")
-
-
- while opt_left:
-@@ -1076,7 +1077,7 @@ class IP(Header):
- else:
- op_len = opt_bytes[1]
- if op_len > len(opt_bytes):
-- raise ImpactPacketException, "IP Option length is too high"
-+ raise ImpactPacketException("IP Option length is too high")
-
- new_option = IPOption(op_type, op_len)
- new_option.set_bytes(opt_bytes[:op_len])
-@@ -1111,7 +1112,7 @@ class IPOption(PacketBuffer):
-
- def __init__(self, opcode = 0, size = None):
- if size and (size < 3 or size > 40):
-- raise ImpactPacketException, "IP Options must have a size between 3 and 40 bytes"
-+ raise ImpactPacketException("IP Options must have a size between 3 and 40 bytes")
-
- if(opcode == IPOption.IPOPT_EOL):
- PacketBuffer.__init__(self, 1)
-@@ -1153,7 +1154,7 @@ class IPOption(PacketBuffer):
- self.set_flags(0)
- else:
- if not size:
-- raise ImpactPacketException, "Size required for this type"
-+ raise ImpactPacketException("Size required for this type")
- PacketBuffer.__init__(self,size)
- self.set_code(opcode)
- self.set_len(size)
-@@ -1162,14 +1163,14 @@ class IPOption(PacketBuffer):
- def append_ip(self, ip):
- op = self.get_code()
- if not (op == IPOption.IPOPT_RR or op == IPOption.IPOPT_LSRR or op == IPOption.IPOPT_SSRR or op == IPOption.IPOPT_TS):
-- raise ImpactPacketException, "append_ip() not support for option type %d" % self.opt_type
-+ raise ImpactPacketException("append_ip() not support for option type %d" % self.opt_type)
-
- p = self.get_ptr()
- if not p:
-- raise ImpactPacketException, "append_ip() failed, option ptr uninitialized"
-+ raise ImpactPacketException("append_ip() failed, option ptr uninitialized")
-
- if (p + 4) > self.get_len():
-- raise ImpactPacketException, "append_ip() would overflow option"
-+ raise ImpactPacketException("append_ip() would overflow option")
-
- self.set_ip_address(p - 1, ip)
- p += 4
-@@ -1185,12 +1186,12 @@ class IPOption(PacketBuffer):
-
- def set_flags(self, flags):
- if not (self.get_code() == IPOption.IPOPT_TS):
-- raise ImpactPacketException, "Operation only supported on Timestamp option"
-+ raise ImpactPacketException("Operation only supported on Timestamp option")
- self.set_byte(3, flags)
-
- def get_flags(self, flags):
- if not (self.get_code() == IPOption.IPOPT_TS):
-- raise ImpactPacketException, "Operation only supported on Timestamp option"
-+ raise ImpactPacketException("Operation only supported on Timestamp option")
- return self.get_byte(3)
-
-
-@@ -1218,7 +1219,7 @@ class IPOption(PacketBuffer):
-
- tmp_str = "\tIP Option: "
- op = self.get_code()
-- if map.has_key(op):
-+ if op in map:
- tmp_str += map[op]
- else:
- tmp_str += "Code: %d " % op
-@@ -1327,7 +1328,7 @@ class TCP(Header):
- sum += op.get_size()
-
- if sum > 40:
-- raise ImpactPacketException, "Cannot add TCP option, would overflow option space"
-+ raise ImpactPacketException("Cannot add TCP option, would overflow option space")
-
- def get_options(self):
- return self.__option_list
-@@ -1509,7 +1510,7 @@ class TCP(Header):
- opt_left = (self.get_th_off() - 5) * 4
- opt_bytes = array.array('B', aBuffer[20:(20 + opt_left)])
- if len(opt_bytes) != opt_left:
-- raise ImpactPacketException, "Cannot load options from truncated packet"
-+ raise ImpactPacketException("Cannot load options from truncated packet")
-
- while opt_left:
- op_kind = opt_bytes[0]
-@@ -1519,9 +1520,9 @@ class TCP(Header):
- else:
- op_len = opt_bytes[1]
- if op_len > len(opt_bytes):
-- raise ImpactPacketException, "TCP Option length is too high"
-+ raise ImpactPacketException("TCP Option length is too high")
- if op_len < 2:
-- raise ImpactPacketException, "TCP Option length is too low"
-+ raise ImpactPacketException("TCP Option length is too low")
-
- new_option = TCPOption(op_kind)
- new_option.set_bytes(opt_bytes[:op_len])
-@@ -1655,12 +1656,12 @@ class TCPOption(PacketBuffer):
-
- def set_len(self, len):
- if self.get_size() < 2:
-- raise ImpactPacketException, "Cannot set length field on an option having a size smaller than 2 bytes"
-+ raise ImpactPacketException("Cannot set length field on an option having a size smaller than 2 bytes")
- self.set_byte(1, len)
-
- def get_len(self):
- if self.get_size() < 2:
-- raise ImpactPacketException, "Cannot retrieve length field from an option having a size smaller than 2 bytes"
-+ raise ImpactPacketException("Cannot retrieve length field from an option having a size smaller than 2 bytes")
- return self.get_byte(1)
-
- def get_size(self):
-@@ -1669,42 +1670,42 @@ class TCPOption(PacketBuffer):
-
- def set_mss(self, len):
- if self.get_kind() != TCPOption.TCPOPT_MAXSEG:
-- raise ImpactPacketException, "Can only set MSS on TCPOPT_MAXSEG option"
-+ raise ImpactPacketException("Can only set MSS on TCPOPT_MAXSEG option")
- self.set_word(2, len)
-
- def get_mss(self):
- if self.get_kind() != TCPOption.TCPOPT_MAXSEG:
-- raise ImpactPacketException, "Can only retrieve MSS from TCPOPT_MAXSEG option"
-+ raise ImpactPacketException("Can only retrieve MSS from TCPOPT_MAXSEG option")
- return self.get_word(2)
-
- def set_shift_cnt(self, cnt):
- if self.get_kind() != TCPOption.TCPOPT_WINDOW:
-- raise ImpactPacketException, "Can only set Shift Count on TCPOPT_WINDOW option"
-+ raise ImpactPacketException("Can only set Shift Count on TCPOPT_WINDOW option")
- self.set_byte(2, cnt)
-
- def get_shift_cnt(self):
- if self.get_kind() != TCPOption.TCPOPT_WINDOW:
-- raise ImpactPacketException, "Can only retrieve Shift Count from TCPOPT_WINDOW option"
-+ raise ImpactPacketException("Can only retrieve Shift Count from TCPOPT_WINDOW option")
- return self.get_byte(2)
-
- def get_ts(self):
- if self.get_kind() != TCPOption.TCPOPT_TIMESTAMP:
-- raise ImpactPacketException, "Can only retrieve timestamp from TCPOPT_TIMESTAMP option"
-+ raise ImpactPacketException("Can only retrieve timestamp from TCPOPT_TIMESTAMP option")
- return self.get_long(2)
-
- def set_ts(self, ts):
- if self.get_kind() != TCPOption.TCPOPT_TIMESTAMP:
-- raise ImpactPacketException, "Can only set timestamp on TCPOPT_TIMESTAMP option"
-+ raise ImpactPacketException("Can only set timestamp on TCPOPT_TIMESTAMP option")
- self.set_long(2, ts)
-
- def get_ts_echo(self):
- if self.get_kind() != TCPOption.TCPOPT_TIMESTAMP:
-- raise ImpactPacketException, "Can only retrieve timestamp from TCPOPT_TIMESTAMP option"
-+ raise ImpactPacketException("Can only retrieve timestamp from TCPOPT_TIMESTAMP option")
- return self.get_long(6)
-
- def set_ts_echo(self, ts):
- if self.get_kind() != TCPOption.TCPOPT_TIMESTAMP:
-- raise ImpactPacketException, "Can only set timestamp on TCPOPT_TIMESTAMP option"
-+ raise ImpactPacketException("Can only set timestamp on TCPOPT_TIMESTAMP option")
- self.set_long(6, ts)
-
- def __str__(self):
-@@ -1716,7 +1717,7 @@ class TCPOption(PacketBuffer):
-
- tmp_str = "\tTCP Option: "
- op = self.get_kind()
-- if map.has_key(op):
-+ if op in map:
- tmp_str += map[op]
- else:
- tmp_str += " kind: %d " % op
-@@ -1779,7 +1780,7 @@ class ICMP(Header):
-
- def get_header_size(self):
- anamolies = { ICMP.ICMP_TSTAMP : 20, ICMP.ICMP_TSTAMPREPLY : 20, ICMP.ICMP_MASKREQ : 12, ICMP.ICMP_MASKREPLY : 12 }
-- if anamolies.has_key(self.get_icmp_type()):
-+ if self.get_icmp_type() in anamolies:
- return anamolies[self.get_icmp_type()]
- else:
- return 8
-@@ -1899,7 +1900,7 @@ class ICMP(Header):
- tmp_code[11] = ['TIMXCEED INTRANS ', 'TIMXCEED REASS']
- tmp_code[12] = ['PARAMPROB ERRATPTR ', 'PARAMPROB OPTABSENT', 'PARAMPROB LENGTH']
- tmp_code[40] = [None, 'PHOTURIS UNKNOWN INDEX', 'PHOTURIS AUTH FAILED', 'PHOTURIS DECRYPT FAILED']
-- if tmp_code.has_key(aType):
-+ if aType in tmp_code:
- tmp_list = tmp_code[aType]
- if ((aCode + 1) > len(tmp_list)) or (not tmp_list[aCode]):
- return 'UNKNOWN'
-@@ -1937,7 +1938,7 @@ class ICMP(Header):
-
- def isQuery(self):
- tmp_dict = {8:'', 9:'', 10:'', 13:'', 14:'', 15:'', 16:'', 17:'', 18:''}
-- return tmp_dict.has_key(self.get_icmp_type())
-+ return self.get_icmp_type() in tmp_dict
-
- class IGMP(Header):
- protocol = 2
-@@ -2122,5 +2123,5 @@ def example(): #To execute an example, remove this lin
- b.set_ar_tpa((192, 168, 66, 171))
- a.set_ether_shost((0x0, 0xe0, 0x7d, 0x8a, 0xef, 0x3d))
- a.set_ether_dhost((0x0, 0xc0, 0xdf, 0x6, 0x5, 0xe))
-- print "beto %s" % a
-+ print("beto %s" % a)
-
---- impacket/dcerpc/v5/dcom/oaut.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/dcerpc/v5/dcom/oaut.py
-@@ -40,7 +40,7 @@ class DCERPCSessionError(DCERPCException):
- DCERPCException.__init__(self, error_string, error_code, packet)
-
- def __str__( self ):
-- if hresult_errors.ERROR_MESSAGES.has_key(self.error_code):
-+ if self.error_code in hresult_errors.ERROR_MESSAGES:
- error_msg_short = hresult_errors.ERROR_MESSAGES[self.error_code][0]
- error_msg_verbose = hresult_errors.ERROR_MESSAGES[self.error_code][1]
- return 'OAUT SessionError: code: 0x%x - %s - %s' % (self.error_code, error_msg_short, error_msg_verbose)
-@@ -286,9 +286,9 @@ class FLAGGED_WORD_BLOB(NDRSTRUCT):
- if msg is None: msg = self.__class__.__name__
- ind = ' '*indent
- if msg != '':
-- print "%s" % (msg)
-+ print("%s" % (msg))
- value = ''
-- print '%sasData: %s' % (ind,self['asData']),
-+ print('%sasData: %s' % (ind,self['asData']), end=' ')
-
- # 2.2.23.2 BSTR Type Definition
- class BSTR(NDRPOINTER):
-@@ -979,9 +979,9 @@ def enumerateMethods(iInterface):
- for x in range(iTypeAttr['ppTypeAttr']['cFuncs']):
- funcDesc = iTypeInfo.GetFuncDesc(x)
- names = iTypeInfo.GetNames(funcDesc['ppFuncDesc']['memid'], 255)
-- print names['rgBstrNames'][0]['asData']
-+ print(names['rgBstrNames'][0]['asData'])
- funcDesc.dump()
-- print '='*80
-+ print('='*80)
- if names['pcNames'] > 0:
- name = names['rgBstrNames'][0]['asData']
- methods[name] = {}
---- impacket/dcerpc/v5/dcom/scmp.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/dcerpc/v5/dcom/scmp.py
-@@ -32,7 +32,7 @@ class DCERPCSessionError(DCERPCException):
- DCERPCException.__init__(self, error_string, error_code, packet)
-
- def __str__( self ):
-- if hresult_errors.ERROR_MESSAGES.has_key(self.error_code):
-+ if self.error_code in hresult_errors.ERROR_MESSAGES:
- error_msg_short = hresult_errors.ERROR_MESSAGES[self.error_code][0]
- error_msg_verbose = hresult_errors.ERROR_MESSAGES[self.error_code][1]
- return 'SCMP SessionError: code: 0x%x - %s - %s' % (self.error_code, error_msg_short, error_msg_verbose)
-@@ -301,8 +301,8 @@ class IVssSnapshotMgmt(IRemUnknown2):
- req['ProviderId'] = providerId
- try:
- resp = self.request(req, self._iid, uuid = self.get_iPid())
-- except DCERPCException, e:
-- print e
-+ except DCERPCException as e:
-+ print(e)
- from impacket.winregistry import hexdump
- data = e.get_packet()
- hexdump(data)
---- impacket/dcerpc/v5/dcom/vds.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/dcerpc/v5/dcom/vds.py
-@@ -32,7 +32,7 @@ class DCERPCSessionError(DCERPCException):
- DCERPCException.__init__(self, error_string, error_code, packet)
-
- def __str__( self ):
-- if hresult_errors.ERROR_MESSAGES.has_key(self.error_code):
-+ if self.error_code in hresult_errors.ERROR_MESSAGES:
- error_msg_short = hresult_errors.ERROR_MESSAGES[self.error_code][0]
- error_msg_verbose = hresult_errors.ERROR_MESSAGES[self.error_code][1]
- return 'VDS SessionError: code: 0x%x - %s - %s' % (self.error_code, error_msg_short, error_msg_verbose)
-@@ -198,7 +198,7 @@ class IEnumVdsObject(IRemUnknown2):
- request['celt'] = celt
- try:
- resp = self.request(request, uuid = self.get_iPid())
-- except Exception, e:
-+ except Exception as e:
- resp = e.get_packet()
- # If it is S_FALSE(1) means less items were returned
- if resp['ErrorCode'] != 1:
-@@ -238,7 +238,7 @@ class IVdsService(IRemUnknown2):
- request['ORPCthis']['flags'] = 0
- try:
- resp = self.request(request, uuid = self.get_iPid())
-- except Exception, e:
-+ except Exception as e:
- resp = e.get_packet()
- return resp
-
---- impacket/dcerpc/v5/dcom/wmi.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/dcerpc/v5/dcom/wmi.py
-@@ -38,11 +38,11 @@ from impacket.structure import Structure
- def format_structure(d, level=0):
- x = ""
- if isinstance(d, collections.Mapping):
-- lenk = max(map(lambda x: len(str(x)), d.keys()))
-- for k, v in d.items():
-+ lenk = max([len(str(x)) for x in list(d.keys())])
-+ for k, v in list(d.items()):
- key_text = "\n" + " "*level + " "*(lenk - len(str(k))) + str(k)
- x += key_text + ": " + format_structure(v, level=level+lenk)
-- elif isinstance(d, collections.Iterable) and not isinstance(d, basestring):
-+ elif isinstance(d, collections.Iterable) and not isinstance(d, str):
- for e in d:
- x += "\n" + " "*level + "- " + format_structure(e, level=level+4)
- else:
-@@ -61,7 +61,7 @@ class DCERPCSessionError(DCERPCException):
- DCERPCException.__init__(self, error_string, error_code, packet)
-
- def __str__( self ):
-- if hresult_errors.ERROR_MESSAGES.has_key(self.error_code):
-+ if self.error_code in hresult_errors.ERROR_MESSAGES:
- error_msg_short = hresult_errors.ERROR_MESSAGES[self.error_code][0]
- error_msg_verbose = hresult_errors.ERROR_MESSAGES[self.error_code][1]
- return 'WMI SessionError: code: 0x%x - %s - %s' % (self.error_code, error_msg_short, error_msg_verbose)
-@@ -501,7 +501,7 @@ class PROPERTY_LOOKUP_TABLE(Structure):
-
- propTable = propTable[self.PropertyLookupSize:]
-
-- return OrderedDict(sorted(properties.items(), key=lambda x:x[1]['order']))
-+ return OrderedDict(sorted(list(properties.items()), key=lambda x:x[1]['order']))
- #return properties
-
- # 2.2.66 Heap
-@@ -539,7 +539,7 @@ class CLASS_PART(Structure):
- def getProperties(self):
- heap = self["ClassHeap"]["HeapItem"]
- properties = self["PropertyLookupTable"].getProperties(self["ClassHeap"]["HeapItem"])
-- sorted_props = sorted(properties.keys(), key=lambda k: properties[k]['order'])
-+ sorted_props = sorted(list(properties.keys()), key=lambda k: properties[k]['order'])
- valueTableOff = (len(properties) - 1) / 4 + 1
- valueTable = self['NdTable_ValueTable'][valueTableOff:]
- for key in sorted_props:
-@@ -787,7 +787,7 @@ class INSTANCE_TYPE(Structure):
- heap = self["InstanceHeap"]["HeapItem"]
- valueTableOff = (len(properties) - 1) / 4 + 1
- valueTable = self['NdTable_ValueTable'][valueTableOff:]
-- sorted_props = sorted(properties.keys(), key=lambda k: properties[k]['order'])
-+ sorted_props = sorted(list(properties.keys()), key=lambda k: properties[k]['order'])
- for key in sorted_props:
- pType = properties[key]['type'] & (~(CIM_ARRAY_FLAG|Inherited))
- if properties[key]['type'] & CIM_ARRAY_FLAG:
-@@ -868,11 +868,11 @@ class OBJECT_BLOCK(Structure):
- qualifiers = pClass.getQualifiers()
-
- for qualifier in qualifiers:
-- print "[%s]" % qualifier
-+ print("[%s]" % qualifier)
-
- className = pClass.getClassName()
-
-- print "class %s \n{" % className
-+ print("class %s \n{" % className)
-
- properties = pClass.getProperties()
- if cInstance is not None:
-@@ -883,52 +883,52 @@ class OBJECT_BLOCK(Structure):
- qualifiers = properties[pName]['qualifiers']
- for qName in qualifiers:
- if qName != 'CIMTYPE':
-- print '\t[%s(%s)]' % (qName, qualifiers[qName])
-- print "\t%s %s" % (properties[pName]['stype'], properties[pName]['name']),
-+ print('\t[%s(%s)]' % (qName, qualifiers[qName]))
-+ print("\t%s %s" % (properties[pName]['stype'], properties[pName]['name']), end=' ')
- if properties[pName]['value'] is not None:
- if properties[pName]['type'] == CIM_TYPE_ENUM.CIM_TYPE_OBJECT.value:
-- print '= IWbemClassObject\n'
-+ print('= IWbemClassObject\n')
- elif properties[pName]['type'] == CIM_TYPE_ENUM.CIM_ARRAY_OBJECT.value:
- if properties[pName]['value'] == 0:
-- print '= %s\n' % properties[pName]['value']
-+ print('= %s\n' % properties[pName]['value'])
- else:
-- print '= %s\n' % list('IWbemClassObject' for _ in range(len(properties[pName]['value'])))
-+ print('= %s\n' % list('IWbemClassObject' for _ in range(len(properties[pName]['value']))))
- else:
-- print '= %s\n' % properties[pName]['value']
-+ print('= %s\n' % properties[pName]['value'])
- else:
-- print '\n'
-+ print('\n')
-
-- print
-+ print()
- methods = pClass.getMethods()
- for methodName in methods:
- for qualifier in methods[methodName]['qualifiers']:
-- print '\t[%s]' % qualifier
-+ print('\t[%s]' % qualifier)
-
- if methods[methodName]['InParams'] is None and methods[methodName]['OutParams'] is None:
-- print '\t%s %s();\n' % ('void', methodName)
-+ print('\t%s %s();\n' % ('void', methodName))
- if methods[methodName]['InParams'] is None and len(methods[methodName]['OutParams']) == 1:
-- print '\t%s %s();\n' % (methods[methodName]['OutParams']['ReturnValue']['stype'], methodName)
-+ print('\t%s %s();\n' % (methods[methodName]['OutParams']['ReturnValue']['stype'], methodName))
- else:
- returnValue = ''
- if methods[methodName]['OutParams'] is not None:
- # Search the Return Value
- #returnValue = (item for item in method['OutParams'] if item["name"] == "ReturnValue").next()
-- if methods[methodName]['OutParams'].has_key('ReturnValue'):
-+ if 'ReturnValue' in methods[methodName]['OutParams']:
- returnValue = methods[methodName]['OutParams']['ReturnValue']['stype']
-
-- print '\t%s %s(\n' % (returnValue, methodName),
-+ print('\t%s %s(\n' % (returnValue, methodName), end=' ')
- if methods[methodName]['InParams'] is not None:
- for pName in methods[methodName]['InParams']:
-- print '\t\t[in] %s %s,' % (methods[methodName]['InParams'][pName]['stype'], pName)
-+ print('\t\t[in] %s %s,' % (methods[methodName]['InParams'][pName]['stype'], pName))
-
- if methods[methodName]['OutParams'] is not None:
- for pName in methods[methodName]['OutParams']:
- if pName != 'ReturnValue':
-- print '\t\t[out] %s %s,' % (methods[methodName]['OutParams'][pName]['stype'], pName)
-+ print('\t\t[out] %s %s,' % (methods[methodName]['OutParams'][pName]['stype'], pName))
-
-- print '\t);\n'
-+ print('\t);\n')
-
-- print "}"
-+ print("}")
-
- def parseClass(self, pClass, cInstance = None):
- classDict = OrderedDict()
-@@ -2301,7 +2301,7 @@ class IWbemClassObject(IRemUnknown):
- # Let's see if there's a key property so we can ExecMethod
- keyProperty = None
- for pName in properties:
-- if properties[pName]['qualifiers'].has_key('key'):
-+ if 'key' in properties[pName]['qualifiers']:
- keyProperty = pName
-
- if keyProperty is None:
-@@ -2311,7 +2311,7 @@ class IWbemClassObject(IRemUnknown):
- classObject,_ = self.__iWbemServices.GetObject(self.getClassName())
- self.__methods = classObject.getMethods()
-
-- if self.__methods.has_key(attr):
-+ if attr in self.__methods:
- # Now we gotta build the class name to be called through ExecMethod
- if self.getProperties()[keyProperty]['stype'] != 'string':
- instanceName = '%s.%s=%s' % (
-@@ -2619,7 +2619,7 @@ class IWbemClassObject(IRemUnknown):
-
- ndTable = 0
- for i in range(len(args)):
-- paramDefinition = methodDefinition['InParams'].values()[i]
-+ paramDefinition = list(methodDefinition['InParams'].values())[i]
- inArg = args[i]
-
- pType = paramDefinition['type'] & (~(CIM_ARRAY_FLAG|Inherited))
-@@ -2651,7 +2651,7 @@ class IWbemClassObject(IRemUnknown):
- ndTable |= 3 << (2*i)
- else:
- strIn = ENCODED_STRING()
-- if type(inArg) is unicode:
-+ if type(inArg) is str:
- # The Encoded-String-Flag is set to 0x01 if the sequence of characters that follows
- # consists of UTF-16 characters (as specified in [UNICODE]) followed by a UTF-16 null
- # terminator.
-@@ -2729,7 +2729,7 @@ class IWbemClassObject(IRemUnknown):
- return self.__iWbemServices.ExecMethod(classOrInstance, methodDefinition['name'], pInParams = objRefCustomIn )
- #return self.__iWbemServices.ExecMethod('Win32_Process.Handle="436"', methodDefinition['name'],
- # pInParams=objRefCustomIn).getObject().ctCurrent['properties']
-- except Exception, e:
-+ except Exception as e:
- if LOG.level == logging.DEBUG:
- import traceback
- traceback.print_exc()
---- impacket/dcerpc/v5/dcomrt.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/dcerpc/v5/dcomrt.py
-@@ -70,7 +70,7 @@ class DCERPCSessionError(DCERPCException):
- DCERPCException.__init__(self, error_string, error_code, packet)
-
- def __str__( self ):
-- if hresult_errors.ERROR_MESSAGES.has_key(self.error_code):
-+ if self.error_code in hresult_errors.ERROR_MESSAGES:
- error_msg_short = hresult_errors.ERROR_MESSAGES[self.error_code][0]
- error_msg_verbose = hresult_errors.ERROR_MESSAGES[self.error_code][1]
- return 'DCOM SessionError: code: 0x%x - %s - %s' % (self.error_code, error_msg_short, error_msg_verbose)
-@@ -963,20 +963,20 @@ class DCOMConnection:
-
- @classmethod
- def addOid(cls, target, oid):
-- if DCOMConnection.OID_ADD.has_key(target) is False:
-+ if (target in DCOMConnection.OID_ADD) is False:
- DCOMConnection.OID_ADD[target] = set()
- DCOMConnection.OID_ADD[target].add(oid)
-- if DCOMConnection.OID_SET.has_key(target) is False:
-+ if (target in DCOMConnection.OID_SET) is False:
- DCOMConnection.OID_SET[target] = {}
- DCOMConnection.OID_SET[target]['oids'] = set()
- DCOMConnection.OID_SET[target]['setid'] = 0
-
- @classmethod
- def delOid(cls, target, oid):
-- if DCOMConnection.OID_DEL.has_key(target) is False:
-+ if (target in DCOMConnection.OID_DEL) is False:
- DCOMConnection.OID_DEL[target] = set()
- DCOMConnection.OID_DEL[target].add(oid)
-- if DCOMConnection.OID_SET.has_key(target) is False:
-+ if (target in DCOMConnection.OID_SET) is False:
- DCOMConnection.OID_SET[target] = {}
- DCOMConnection.OID_SET[target]['oids'] = set()
- DCOMConnection.OID_SET[target]['setid'] = 0
-@@ -991,18 +991,18 @@ class DCOMConnection:
- for target in DCOMConnection.OID_SET:
- addedOids = set()
- deletedOids = set()
-- if DCOMConnection.OID_ADD.has_key(target):
-+ if target in DCOMConnection.OID_ADD:
- addedOids = DCOMConnection.OID_ADD[target]
- del(DCOMConnection.OID_ADD[target])
-
-- if DCOMConnection.OID_DEL.has_key(target):
-+ if target in DCOMConnection.OID_DEL:
- deletedOids = DCOMConnection.OID_DEL[target]
- del(DCOMConnection.OID_DEL[target])
-
- objExporter = IObjectExporter(DCOMConnection.PORTMAPS[target])
-
- if len(addedOids) > 0 or len(deletedOids) > 0:
-- if DCOMConnection.OID_SET[target].has_key('setid'):
-+ if 'setid' in DCOMConnection.OID_SET[target]:
- setId = DCOMConnection.OID_SET[target]['setid']
- else:
- setId = 0
-@@ -1012,7 +1012,7 @@ class DCOMConnection:
- DCOMConnection.OID_SET[target]['setid'] = resp['pSetId']
- else:
- objExporter.SimplePing(DCOMConnection.OID_SET[target]['setid'])
-- except Exception, e:
-+ except Exception as e:
- # There might be exceptions when sending packets
- # We should try to continue tho.
- LOG.error(str(e))
-@@ -1021,7 +1021,7 @@ class DCOMConnection:
- DCOMConnection.PINGTIMER = Timer(120,DCOMConnection.pingServer)
- try:
- DCOMConnection.PINGTIMER.start()
-- except Exception, e:
-+ except Exception as e:
- if str(e).find('threads can only be started once') < 0:
- raise e
-
-@@ -1031,7 +1031,7 @@ class DCOMConnection:
- DCOMConnection.PINGTIMER = Timer(120, DCOMConnection.pingServer)
- try:
- DCOMConnection.PINGTIMER.start()
-- except Exception, e:
-+ except Exception as e:
- if str(e).find('threads can only be started once') < 0:
- raise e
-
-@@ -1069,7 +1069,7 @@ class DCOMConnection:
- DCOMConnection.PINGTIMER.cancel()
- DCOMConnection.PINGTIMER.join()
- DCOMConnection.PINGTIMER = None
-- if INTERFACE.CONNECTIONS.has_key(self.__target):
-+ if self.__target in INTERFACE.CONNECTIONS:
- del(INTERFACE.CONNECTIONS[self.__target][currentThread().getName()])
- self.__portmap.disconnect()
- #print INTERFACE.CONNECTIONS
-@@ -1124,7 +1124,7 @@ class INTERFACE:
- self.__objRef = objRef
- self.__ipidRemUnknown = ipidRemUnknown
- # We gotta check if we have a container inside our connection list, if not, create
-- if INTERFACE.CONNECTIONS.has_key(self.__target) is not True:
-+ if (self.__target in INTERFACE.CONNECTIONS) is not True:
- INTERFACE.CONNECTIONS[self.__target] = {}
- INTERFACE.CONNECTIONS[self.__target][currentThread().getName()] = {}
-
-@@ -1213,9 +1213,9 @@ class INTERFACE:
-
-
- def connect(self, iid = None):
-- if INTERFACE.CONNECTIONS.has_key(self.__target) is True:
-- if INTERFACE.CONNECTIONS[self.__target].has_key(currentThread().getName()) and \
-- INTERFACE.CONNECTIONS[self.__target][currentThread().getName()].has_key(self.__oxid) is True:
-+ if (self.__target in INTERFACE.CONNECTIONS) is True:
-+ if currentThread().getName() in INTERFACE.CONNECTIONS[self.__target] and \
-+ (self.__oxid in INTERFACE.CONNECTIONS[self.__target][currentThread().getName()]) is True:
- dce = INTERFACE.CONNECTIONS[self.__target][currentThread().getName()][self.__oxid]['dce']
- currentBinding = INTERFACE.CONNECTIONS[self.__target][currentThread().getName()][self.__oxid]['currentBinding']
- if currentBinding == iid:
-@@ -1308,7 +1308,7 @@ class INTERFACE:
- dce = self.get_dce_rpc()
- try:
- resp = dce.request(req, uuid)
-- except Exception, e:
-+ except Exception as e:
- if str(e).find('RPC_E_DISCONNECTED') >= 0:
- msg = str(e) + '\n'
- msg += "DCOM keep-alive pinging it might not be working as expected. You can't be idle for more than 14 minutes!\n"
---- impacket/dcerpc/v5/dhcpm.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/dcerpc/v5/dhcpm.py
-@@ -47,11 +47,11 @@ class DCERPCSessionError(DCERPCException):
-
- def __str__(self):
- key = self.error_code
-- if system_errors.ERROR_MESSAGES.has_key(key):
-+ if key in system_errors.ERROR_MESSAGES:
- error_msg_short = system_errors.ERROR_MESSAGES[key][0]
- error_msg_verbose = system_errors.ERROR_MESSAGES[key][1]
- return 'DHCPM SessionError: code: 0x%x - %s - %s' % (self.error_code, error_msg_short, error_msg_verbose)
-- elif self.ERROR_MESSAGES.has_key(key):
-+ elif key in self.ERROR_MESSAGES:
- error_msg_short = self.ERROR_MESSAGES[key][0]
- error_msg_verbose = self.ERROR_MESSAGES[key][1]
- return 'DHCPM SessionError: code: 0x%x - %s - %s' % (self.error_code, error_msg_short, error_msg_verbose)
-@@ -815,7 +815,7 @@ def hDhcpGetOptionValue(dce, optionID, scopetype=DHCP_
- while status == system_errors.ERROR_MORE_DATA:
- try:
- resp = dce.request(request)
-- except DCERPCException, e:
-+ except DCERPCException as e:
- if str(e).find('ERROR_NO_MORE_ITEMS') < 0:
- raise
- resp = e.get_packet()
-@@ -842,7 +842,7 @@ def hDhcpEnumOptionValues(dce, scopetype=DHCP_OPTION_S
- while status == system_errors.ERROR_MORE_DATA:
- try:
- resp = dce.request(request)
-- except DCERPCException, e:
-+ except DCERPCException as e:
- if str(e).find('ERROR_NO_MORE_ITEMS') < 0:
- raise
- resp = e.get_packet()
-@@ -872,7 +872,7 @@ def hDhcpEnumOptionValuesV5(dce, flags=DHCP_FLAGS_OPTI
- while status == system_errors.ERROR_MORE_DATA:
- try:
- resp = dce.request(request)
-- except DCERPCException, e:
-+ except DCERPCException as e:
- if str(e).find('ERROR_NO_MORE_ITEMS') < 0:
- raise
- resp = e.get_packet()
-@@ -900,7 +900,7 @@ def hDhcpGetOptionValueV5(dce, option_id, flags=DHCP_F
- while status == system_errors.ERROR_MORE_DATA:
- try:
- resp = dce.request(request)
-- except DCERPCException, e:
-+ except DCERPCException as e:
- if str(e).find('ERROR_NO_MORE_ITEMS') < 0:
- raise
- resp = e.get_packet()
-@@ -924,7 +924,7 @@ def hDhcpGetAllOptionValues(dce, scopetype=DHCP_OPTION
- while status == system_errors.ERROR_MORE_DATA:
- try:
- resp = dce.request(request)
-- except DCERPCException, e:
-+ except DCERPCException as e:
- if str(e).find('ERROR_NO_MORE_ITEMS') < 0:
- raise
- resp = e.get_packet()
-@@ -940,7 +940,7 @@ def hDhcpEnumSubnets(dce, preferredMaximum=0xffffffff)
- while status == system_errors.ERROR_MORE_DATA:
- try:
- resp = dce.request(request)
-- except DCERPCException, e:
-+ except DCERPCException as e:
- if str(e).find('STATUS_MORE_ENTRIES') < 0:
- raise
- resp = e.get_packet()
-@@ -957,7 +957,7 @@ def hDhcpEnumSubnetClientsVQ(dce, preferredMaximum=0xf
- while status == system_errors.ERROR_MORE_DATA:
- try:
- resp = dce.request(request)
-- except DCERPCException, e:
-+ except DCERPCException as e:
- if str(e).find('STATUS_MORE_ENTRIES') < 0:
- raise
- resp = e.get_packet()
-@@ -974,7 +974,7 @@ def hDhcpEnumSubnetClientsV4(dce, preferredMaximum=0xf
- while status == system_errors.ERROR_MORE_DATA:
- try:
- resp = dce.request(request)
-- except DCERPCException, e:
-+ except DCERPCException as e:
- if str(e).find('STATUS_MORE_ENTRIES') < 0:
- raise
- resp = e.get_packet()
-@@ -991,7 +991,7 @@ def hDhcpEnumSubnetClientsV5(dce, subnetAddress=0, pre
- while status == system_errors.ERROR_MORE_DATA:
- try:
- resp = dce.request(request)
-- except DCERPCSessionError, e:
-+ except DCERPCSessionError as e:
- if str(e).find('STATUS_MORE_ENTRIES') < 0:
- raise
- resp = e.get_packet()
-@@ -1010,7 +1010,7 @@ def hDhcpEnumSubnetElementsV5(dce, subnet_address, ele
- while status == system_errors.ERROR_MORE_DATA:
- try:
- resp = dce.request(request)
-- except DCERPCException, e:
-+ except DCERPCException as e:
- if str(e).find('ERROR_NO_MORE_ITEMS') < 0:
- raise
- resp = e.get_packet()
---- impacket/dcerpc/v5/drsuapi.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/dcerpc/v5/drsuapi.py
-@@ -47,11 +47,11 @@ class DCERPCSessionError(DCERPCException):
-
- def __str__( self ):
- key = self.error_code
-- if hresult_errors.ERROR_MESSAGES.has_key(key):
-+ if key in hresult_errors.ERROR_MESSAGES:
- error_msg_short = hresult_errors.ERROR_MESSAGES[key][0]
- error_msg_verbose = hresult_errors.ERROR_MESSAGES[key][1]
- return 'DRSR SessionError: code: 0x%x - %s - %s' % (self.error_code, error_msg_short, error_msg_verbose)
-- elif system_errors.ERROR_MESSAGES.has_key(key & 0xffff):
-+ elif key & 0xffff in system_errors.ERROR_MESSAGES:
- error_msg_short = system_errors.ERROR_MESSAGES[key & 0xffff][0]
- error_msg_verbose = system_errors.ERROR_MESSAGES[key & 0xffff][1]
- return 'DRSR SessionError: code: 0x%x - %s - %s' % (self.error_code, error_msg_short, error_msg_verbose)
-@@ -89,12 +89,12 @@ class EXOP_ERR(NDRENUM):
- def dump(self, msg = None, indent = 0):
- if msg is None: msg = self.__class__.__name__
- if msg != '':
-- print msg,
-+ print(msg, end=' ')
-
- try:
-- print " %s" % self.enumItems(self.fields['Data']).name,
-+ print(" %s" % self.enumItems(self.fields['Data']).name, end=' ')
- except ValueError:
-- print " %d" % self.fields['Data']
-+ print(" %d" % self.fields['Data'])
-
- # 4.1.10.2.18 EXOP_REQ Codes
- EXOP_FSMO_REQ_ROLE = 0x00000001
-@@ -607,7 +607,7 @@ class WCHAR_ARRAY(NDRUniConformantArray):
- # We might have Unicode chars in here, let's use unichr instead
- LOG.debug('ValueError exception on %s' % self.fields[key])
- LOG.debug('Switching to unichr()')
-- return ''.join([unichr(i) for i in self.fields[key]])
-+ return ''.join([chr(i) for i in self.fields[key]])
-
- else:
- return NDR.__getitem__(self,key)
-@@ -1488,22 +1488,22 @@ if __name__ == '__main__':
- oid4 = '1.2.840.113556.1.5.7000.53'
-
- o0 = MakeAttid(prefixTable, oid0)
-- print hex(o0)
-+ print(hex(o0))
- o1 = MakeAttid(prefixTable, oid1)
-- print hex(o1)
-+ print(hex(o1))
- o2 = MakeAttid(prefixTable, oid2)
-- print hex(o2)
-+ print(hex(o2))
- o3 = MakeAttid(prefixTable, oid3)
-- print hex(o3)
-+ print(hex(o3))
- o4 = MakeAttid(prefixTable, oid4)
-- print hex(o4)
-+ print(hex(o4))
- jj = OidFromAttid(prefixTable, o0)
-- print jj
-+ print(jj)
- jj = OidFromAttid(prefixTable, o1)
-- print jj
-+ print(jj)
- jj = OidFromAttid(prefixTable, o2)
-- print jj
-+ print(jj)
- jj = OidFromAttid(prefixTable, o3)
-- print jj
-+ print(jj)
- jj = OidFromAttid(prefixTable, o4)
-- print jj
-+ print(jj)
---- impacket/dcerpc/v5/dtypes.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/dcerpc/v5/dtypes.py
-@@ -95,9 +95,9 @@ class STR(NDRSTRUCT):
- def dump(self, msg = None, indent = 0):
- if msg is None: msg = self.__class__.__name__
- if msg != '':
-- print "%s" % msg,
-+ print("%s" % msg, end=' ')
- # Here just print the data
-- print " %r" % (self['Data']),
-+ print(" %r" % (self['Data']), end=' ')
-
- def __setitem__(self, key, value):
- if key == 'Data':
-@@ -134,9 +134,9 @@ class WSTR(NDRSTRUCT):
- def dump(self, msg = None, indent = 0):
- if msg is None: msg = self.__class__.__name__
- if msg != '':
-- print "%s" % msg,
-+ print("%s" % msg, end=' ')
- # Here just print the data
-- print " %r" % (self['Data']),
-+ print(" %r" % (self['Data']), end=' ')
-
- def getDataLen(self, data):
- return self["ActualCount"]*2
-@@ -358,12 +358,12 @@ class RPC_UNICODE_STRING(NDRSTRUCT):
- def dump(self, msg = None, indent = 0):
- if msg is None: msg = self.__class__.__name__
- if msg != '':
-- print "%s" % msg,
-+ print("%s" % msg, end=' ')
-
- if isinstance(self.fields['Data'] , NDRPOINTERNULL):
-- print " NULL",
-+ print(" NULL", end=' ')
- elif self.fields['Data']['ReferentID'] == 0:
-- print " NULL",
-+ print(" NULL", end=' ')
- else:
- return self.fields['Data'].dump('',indent)
-
-@@ -459,17 +459,17 @@ class PRPC_SID(NDRPOINTER):
- PSID = PRPC_SID
-
- # 2.4.3 ACCESS_MASK
--GENERIC_READ = 0x80000000L
--GENERIC_WRITE = 0x4000000L
--GENERIC_EXECUTE = 0x20000000L
--GENERIC_ALL = 0x10000000L
--MAXIMUM_ALLOWED = 0x02000000L
--ACCESS_SYSTEM_SECURITY = 0x01000000L
--SYNCHRONIZE = 0x00100000L
--WRITE_OWNER = 0x00080000L
--WRITE_DACL = 0x00040000L
--READ_CONTROL = 0x00020000L
--DELETE = 0x00010000L
-+GENERIC_READ = 0x80000000
-+GENERIC_WRITE = 0x4000000
-+GENERIC_EXECUTE = 0x20000000
-+GENERIC_ALL = 0x10000000
-+MAXIMUM_ALLOWED = 0x02000000
-+ACCESS_SYSTEM_SECURITY = 0x01000000
-+SYNCHRONIZE = 0x00100000
-+WRITE_OWNER = 0x00080000
-+WRITE_DACL = 0x00040000
-+READ_CONTROL = 0x00020000
-+DELETE = 0x00010000
-
- # 2.4.5.1 ACL--RPC Representation
- class ACL(NDRSTRUCT):
---- impacket/dcerpc/v5/epm.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/dcerpc/v5/epm.py
-@@ -41,7 +41,7 @@ class DCERPCSessionError(DCERPCException):
-
- def __str__( self ):
- key = self.error_code
-- if self.error_messages.has_key(key):
-+ if key in self.error_messages:
- error_msg_short = self.error_messages[key]
- return 'EPM SessionError: code: 0x%x - %s ' % (self.error_code, error_msg_short)
- else:
-@@ -1335,7 +1335,7 @@ def PrintStringBinding(floors, serverAddr = '0.0.0.0')
- # If the address were 0.0.0.0 it would have to be replaced by the remote host's IP.
- if tmp_address2 == '0.0.0.0':
- tmp_address2 = serverAddr
-- if tmp_address <> '':
-+ if tmp_address != '':
- return tmp_address % tmp_address2
- else:
- return 'IP: %s' % tmp_address2
-@@ -1345,7 +1345,7 @@ def PrintStringBinding(floors, serverAddr = '0.0.0.0')
- n = len(floor['RelatedData'])
- tmp_address2 = ('%02X' * n) % unpack("%dB" % n, floor['RelatedData'])
-
-- if tmp_address <> '':
-+ if tmp_address != '':
- return tmp_address % tmp_address2
- else:
- return 'SPX: %s' % tmp_address2
-@@ -1356,7 +1356,7 @@ def PrintStringBinding(floors, serverAddr = '0.0.0.0')
- elif floor['ProtocolData'] == chr(0x10):
- return 'ncalrpc:[%s]' % floor['RelatedData'][:len(floor['RelatedData'])-1]
- elif floor['ProtocolData'] == chr(0x01) or floor['ProtocolData'] == chr(0x11):
-- if tmp_address <> '':
-+ if tmp_address != '':
- return tmp_address % floor['RelatedData'][:len(floor['RelatedData'])-1]
- else:
- return 'NetBIOS: %s' % floor['RelatedData']
---- impacket/dcerpc/v5/even6.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/dcerpc/v5/even6.py
-@@ -33,7 +33,7 @@ class DCERPCSessionError(DCERPCException):
-
- def __str__(self):
- key = self.error_code
-- if system_errors.ERROR_MESSAGES.has_key(key):
-+ if key in system_errors.ERROR_MESSAGES:
- error_msg_short = system_errors.ERROR_MESSAGES[key][0]
- error_msg_verbose = system_errors.ERROR_MESSAGES[key][1]
- return 'EVEN6 SessionError: code: 0x%x - %s - %s' % (self.error_code, error_msg_short, error_msg_verbose)
-@@ -315,7 +315,7 @@ def hEvtRpcQueryNext(dce, handle, numRequestedRecords,
- while status == system_errors.ERROR_MORE_DATA:
- try:
- resp = dce.request(request)
-- except DCERPCException, e:
-+ except DCERPCException as e:
- if str(e).find('ERROR_NO_MORE_ITEMS') < 0:
- raise
- elif str(e).find('ERROR_TIMEOUT') < 0:
---- impacket/dcerpc/v5/lsad.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/dcerpc/v5/lsad.py
-@@ -36,7 +36,7 @@ class DCERPCSessionError(DCERPCException):
-
- def __str__( self ):
- key = self.error_code
-- if nt_errors.ERROR_MESSAGES.has_key(key):
-+ if key in nt_errors.ERROR_MESSAGES:
- error_msg_short = nt_errors.ERROR_MESSAGES[key][0]
- error_msg_verbose = nt_errors.ERROR_MESSAGES[key][1]
- return 'LSAD SessionError: code: 0x%x - %s - %s' % (self.error_code, error_msg_short, error_msg_verbose)
-@@ -150,9 +150,9 @@ class STRING(NDRSTRUCT):
- if msg is None: msg = self.__class__.__name__
- ind = ' '*indent
- if msg != '':
-- print "%s" % (msg),
-+ print("%s" % (msg), end=' ')
- # Here just print the data
-- print " %r" % (self['Data']),
-+ print(" %r" % (self['Data']), end=' ')
-
- def __setitem__(self, key, value):
- if key == 'Data':
---- impacket/dcerpc/v5/mimilib.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/dcerpc/v5/mimilib.py
-@@ -36,7 +36,7 @@ class DCERPCSessionError(DCERPCException):
-
- def __str__( self ):
- key = self.error_code
-- if nt_errors.ERROR_MESSAGES.has_key(key):
-+ if key in nt_errors.ERROR_MESSAGES:
- error_msg_short = nt_errors.ERROR_MESSAGES[key][0]
- error_msg_verbose = nt_errors.ERROR_MESSAGES[key][1]
- return 'Mimikatz SessionError: code: 0x%x - %s - %s' % (self.error_code, error_msg_short, error_msg_verbose)
-@@ -180,7 +180,7 @@ OPNUMS = {
- class MimiDiffeH:
- def __init__(self):
- self.G = 2
-- self.P = 0xFFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFFL
-+ self.P = 0xFFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFF
- self.privateKey = random.getrandbits(1024)
- #self.privateKey = int('A'*128, base=16)
-
-@@ -224,12 +224,12 @@ if __name__ == '__main__':
- bob.P = 23
- bob.privateKey = 15
-
-- print 'Alice pubKey'
-+ print('Alice pubKey')
- hexdump(alice.genPublicKey())
-- print 'Bob pubKey'
-+ print('Bob pubKey')
- hexdump(bob.genPublicKey())
-
-- print 'Secret'
-+ print('Secret')
- hexdump(alice.getSharedSecret(bob.genPublicKey()))
- hexdump(bob.getSharedSecret(alice.genPublicKey()))
-
---- impacket/dcerpc/v5/ndr.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/dcerpc/v5/ndr.py
-@@ -76,7 +76,7 @@ class NDR(object):
- if self._isNDR64 is False:
- # Ok, let's change everything
- self._isNDR64 = True
-- for fieldName in self.fields.keys():
-+ for fieldName in list(self.fields.keys()):
- if isinstance(self.fields[fieldName], NDR):
- self.fields[fieldName].changeTransferSyntax(newSyntax)
- # Finally, I change myself
-@@ -94,7 +94,7 @@ class NDR(object):
- if fieldTypeOrClass != self.fields[fieldName].__class__ and isinstance(self.fields[fieldName], NDRPOINTERNULL) is False:
- backupData = self[fieldName]
- self.fields[fieldName] = fieldTypeOrClass(isNDR64 = self._isNDR64)
-- if self.fields[fieldName].fields.has_key('Data'):
-+ if 'Data' in self.fields[fieldName].fields:
- self.fields[fieldName].fields['Data'] = backupData
- else:
- self[fieldName] = backupData
-@@ -109,7 +109,7 @@ class NDR(object):
- value = NDRPOINTERNULL(isNDR64 = self._isNDR64)
- if isinstance(self.fields[key], NDRPOINTER):
- self.fields[key] = value
-- elif self.fields[key].fields.has_key('Data'):
-+ elif 'Data' in self.fields[key].fields:
- if isinstance(self.fields[key].fields['Data'], NDRPOINTER):
- self.fields[key].fields['Data'] = value
- elif isinstance(value, NDR):
-@@ -131,7 +131,7 @@ class NDR(object):
-
- def __getitem__(self, key):
- if isinstance(self.fields[key], NDR):
-- if self.fields[key].fields.has_key('Data'):
-+ if 'Data' in self.fields[key].fields:
- return self.fields[key]['Data']
- return self.fields[key]
-
-@@ -156,38 +156,38 @@ class NDR(object):
- def dumpRaw(self, msg = None, indent = 0):
- if msg is None: msg = self.__class__.__name__
- ind = ' '*indent
-- print "\n%s" % msg
-+ print("\n%s" % msg)
- for field in self.commonHdr+self.structure+self.referent:
- i = field[0]
- if i in self.fields:
- if isinstance(self.fields[i], NDR):
- self.fields[i].dumpRaw('%s%s:{' % (ind,i), indent = indent + 4)
-- print "%s}" % ind
-+ print("%s}" % ind)
-
- elif isinstance(self.fields[i], list):
-- print "%s[" % ind
-+ print("%s[" % ind)
- for num,j in enumerate(self.fields[i]):
- if isinstance(j, NDR):
- j.dumpRaw('%s%s:' % (ind,i), indent = indent + 4)
-- print "%s," % ind
-+ print("%s," % ind)
- else:
-- print "%s%s: {%r}," % (ind, i, j)
-- print "%s]" % ind
-+ print("%s%s: {%r}," % (ind, i, j))
-+ print("%s]" % ind)
-
- else:
-- print "%s%s: {%r}" % (ind,i,self[i])
-+ print("%s%s: {%r}" % (ind,i,self[i]))
-
- def dump(self, msg = None, indent = 0):
- if msg is None: msg = self.__class__.__name__
- ind = ' '*indent
- if msg != '':
-- print "%s" % msg,
-+ print("%s" % msg, end=' ')
- for fieldName, fieldType in self.commonHdr+self.structure+self.referent:
- if fieldName in self.fields:
- if isinstance(self.fields[fieldName], NDR):
- self.fields[fieldName].dump('\n%s%-31s' % (ind, fieldName+':'), indent = indent + 4),
- else:
-- print " %r" % (self[fieldName]),
-+ print(" %r" % (self[fieldName]), end=' ')
-
- def getAlignment(self):
- return self.align
-@@ -228,7 +228,7 @@ class NDR(object):
-
- data += res
- soFar += len(res)
-- except Exception, e:
-+ except Exception as e:
- LOG.error(str(e))
- LOG.error("Error packing field '%s | %s' in %s" % (fieldName, fieldTypeOrClass, self.__class__))
- raise
-@@ -257,7 +257,7 @@ class NDR(object):
-
- data = data[size:]
- soFar += size
-- except Exception,e:
-+ except Exception as e:
- LOG.error(str(e))
- LOG.error("Error unpacking field '%s | %s | %r'" % (fieldName, fieldTypeOrClass, data[:256]))
- raise
-@@ -369,12 +369,12 @@ class NDRBOOLEAN(NDRSMALL):
- def dump(self, msg = None, indent = 0):
- if msg is None: msg = self.__class__.__name__
- if msg != '':
-- print msg,
-+ print(msg, end=' ')
-
- if self['Data'] > 0:
-- print " TRUE"
-+ print(" TRUE")
- else:
-- print " FALSE"
-+ print(" FALSE")
-
- class NDRCHAR(NDR):
- align = 1
-@@ -434,8 +434,7 @@ class EnumType(type):
- def __getattr__(self, attr):
- return self.enumItems[attr].value
-
--class NDRENUM(NDR):
-- __metaclass__ = EnumType
-+class NDRENUM(NDR, metaclass=EnumType):
- align = 2
- align64 = 4
- structure = (
-@@ -462,9 +461,9 @@ class NDRENUM(NDR):
- def dump(self, msg = None, indent = 0):
- if msg is None: msg = self.__class__.__name__
- if msg != '':
-- print msg,
-+ print(msg, end=' ')
-
-- print " %s" % self.enumItems(self.fields['Data']).name,
-+ print(" %s" % self.enumItems(self.fields['Data']).name, end=' ')
-
- # NDR Constructed Types (arrays, strings, structures, unions, variant structures, pipes and pointers)
- class NDRCONSTRUCTEDTYPE(NDR):
-@@ -498,7 +497,7 @@ class NDRCONSTRUCTEDTYPE(NDR):
- if hasattr(self,'referent') is False:
- return ''
-
-- if self.fields.has_key('ReferentID'):
-+ if 'ReferentID' in self.fields:
- if self['ReferentID'] == 0:
- return ''
-
-@@ -544,7 +543,7 @@ class NDRCONSTRUCTEDTYPE(NDR):
- data += self.fields[fieldName].getDataReferent(soFar0 + len(data))
- soFar = soFar0 + len(data)
-
-- except Exception, e:
-+ except Exception as e:
- LOG.error(str(e))
- LOG.error("Error packing field '%s | %s' in %s" % (fieldName, fieldTypeOrClass, self.__class__))
- raise
-@@ -623,7 +622,7 @@ class NDRCONSTRUCTEDTYPE(NDR):
-
- soFar0 = soFar
-
-- if self.fields.has_key('ReferentID'):
-+ if 'ReferentID' in self.fields:
- if self['ReferentID'] == 0:
- # NULL Pointer, there's no referent for it
- return 0
-@@ -653,7 +652,7 @@ class NDRCONSTRUCTEDTYPE(NDR):
- size += self.fields[fieldName].fromStringReferent(data[size:], soFar + size)
- data = data[size:]
- soFar += size
-- except Exception,e:
-+ except Exception as e:
- LOG.error(str(e))
- LOG.error("Error unpacking field '%s | %s | %r'" % (fieldName, fieldTypeOrClass, data[:256]))
- raise
-@@ -676,20 +675,20 @@ class NDRArray(NDRCONSTRUCTEDTYPE):
- if msg is None: msg = self.__class__.__name__
- ind = ' '*indent
- if msg != '':
-- print msg,
-+ print(msg, end=' ')
-
- if isinstance(self['Data'], list):
-- print "\n%s[" % ind
-+ print("\n%s[" % ind)
- ind += ' '*4
- for num,j in enumerate(self.fields['Data']):
- if isinstance(j, NDR):
- j.dump('%s' % ind, indent = indent + 4),
-- print ","
-+ print(",")
- else:
-- print "%s %r," % (ind,j)
-- print "%s]" % ind[:-4],
-+ print("%s %r," % (ind,j))
-+ print("%s]" % ind[:-4], end=' ')
- else:
-- print " %r" % self['Data'],
-+ print(" %r" % self['Data'], end=' ')
-
- def setArraySize(self, size):
- self.arraySize = size
-@@ -736,7 +735,7 @@ class NDRArray(NDRCONSTRUCTEDTYPE):
- res = self.pack(fieldName, fieldTypeOrClass, soFar)
- data += res
- soFar = soFar0 + len(data)
-- except Exception, e:
-+ except Exception as e:
- LOG.error(str(e))
- LOG.error("Error packing field '%s | %s' in %s" % (fieldName, fieldTypeOrClass, self.__class__))
- raise
-@@ -799,7 +798,7 @@ class NDRArray(NDRCONSTRUCTEDTYPE):
-
- data = data[size:]
- soFar += size
-- except Exception,e:
-+ except Exception as e:
- LOG.error(str(e))
- LOG.error("Error unpacking field '%s | %s | %r'" % (fieldName, fieldTypeOrClass, data[:256]))
- raise
-@@ -958,7 +957,7 @@ class NDRUniConformantVaryingArray(NDRArray):
- res = self.pack(fieldName, fieldTypeOrClass, soFar)
- data += res
- soFar = soFar0 + len(data)
-- except Exception, e:
-+ except Exception as e:
- LOG.error(str(e))
- LOG.error("Error packing field '%s | %s' in %s" % (fieldName, fieldTypeOrClass, self.__class__))
- raise
-@@ -1063,7 +1062,7 @@ class NDRSTRUCT(NDRCONSTRUCTEDTYPE):
- res = self.pack(fieldName, fieldTypeOrClass, soFar)
- data += res
- soFar = soFar0 + len(data) + len(arrayPadding) + arrayItemSize
-- except Exception, e:
-+ except Exception as e:
- LOG.error(str(e))
- LOG.error("Error packing field '%s | %s' in %s" % (fieldName, fieldTypeOrClass, self.__class__))
- raise
-@@ -1159,7 +1158,7 @@ class NDRSTRUCT(NDRCONSTRUCTEDTYPE):
-
- data = data[size:]
- soFar += size
-- except Exception,e:
-+ except Exception as e:
- LOG.error(str(e))
- LOG.error("Error unpacking field '%s | %s | %r'" % (fieldName, fieldTypeOrClass, data[:256]))
- raise
-@@ -1253,14 +1252,14 @@ class NDRUNION(NDRCONSTRUCTEDTYPE):
- if key == 'tag':
- # We're writing the tag, we now should set the right item for the structure
- self.structure = ()
-- if self.union.has_key(value):
-+ if value in self.union:
- self.structure = (self.union[value]),
- # Init again the structure
- self.__init__(None, isNDR64=self._isNDR64, topLevel = self.topLevel)
- self.fields['tag']['Data'] = value
- else:
- # Let's see if we have a default value
-- if self.union.has_key('default'):
-+ if 'default' in self.union:
- if self.union['default'] is None:
- self.structure = ()
- else:
-@@ -1297,7 +1296,7 @@ class NDRUNION(NDRCONSTRUCTEDTYPE):
- res = self.pack(fieldName, fieldTypeOrClass, soFar)
- data += res
- soFar = soFar0 + len(data)
-- except Exception, e:
-+ except Exception as e:
- LOG.error(str(e))
- LOG.error("Error packing field '%s | %s' in %s" % (fieldName, fieldTypeOrClass, self.__class__))
- raise
-@@ -1333,7 +1332,7 @@ class NDRUNION(NDRCONSTRUCTEDTYPE):
- res = self.pack(fieldName, fieldTypeOrClass, soFar)
- data += res
- soFar = soFar0 + len(data)
-- except Exception, e:
-+ except Exception as e:
- LOG.error(str(e))
- LOG.error("Error packing field '%s | %s' in %s" % (fieldName, fieldTypeOrClass, self.__class__))
- raise
-@@ -1357,12 +1356,12 @@ class NDRUNION(NDRCONSTRUCTEDTYPE):
- # We need to know the tag type and unpack it
- tagtype = self.commonHdr[0][1].structure[0][1].split('=')[0]
- tag = unpack(tagtype, data[:calcsize(tagtype)])[0]
-- if self.union.has_key(tag):
-+ if tag in self.union:
- self.structure = (self.union[tag]),
- self.__init__(None, isNDR64=self._isNDR64, topLevel = self.topLevel)
- else:
- # Let's see if we have a default value
-- if self.union.has_key('default'):
-+ if 'default' in self.union:
- if self.union['default'] is None:
- self.structure = ()
- else:
-@@ -1384,7 +1383,7 @@ class NDRUNION(NDRCONSTRUCTEDTYPE):
-
- data = data[size:]
- soFar += size
-- except Exception,e:
-+ except Exception as e:
- LOG.error(str(e))
- LOG.error("Error unpacking field '%s | %s | %r'" % (fieldName, fieldTypeOrClass, data[:256]))
- raise
-@@ -1421,7 +1420,7 @@ class NDRUNION(NDRCONSTRUCTEDTYPE):
-
- data = data[size:]
- soFar += size
-- except Exception,e:
-+ except Exception as e:
- LOG.error(str(e))
- LOG.error("Error unpacking field '%s | %s | %r'" % (fieldName, fieldTypeOrClass, data[:256]))
- raise
-@@ -1448,7 +1447,7 @@ class NDRUNION(NDRCONSTRUCTEDTYPE):
- align = tmpAlign
-
- if self._isNDR64:
-- for fieldName, fieldTypeOrClass in self.union.itervalues():
-+ for fieldName, fieldTypeOrClass in self.union.values():
- tmpAlign = fieldTypeOrClass(isNDR64 = self._isNDR64).getAlignment()
- if tmpAlign > align:
- align = tmpAlign
-@@ -1470,9 +1469,9 @@ class NDRPOINTERNULL(NDR):
- def dump(self, msg = None, indent = 0):
- if msg is None: msg = self.__class__.__name__
- if msg != '':
-- print "%s" % msg,
-+ print("%s" % msg, end=' ')
- # Here we just print NULL
-- print " NULL",
-+ print(" NULL", end=' ')
-
- NULL = NDRPOINTERNULL()
-
-@@ -1507,16 +1506,16 @@ class NDRPOINTER(NDRSTRUCT):
- self.fromString(data)
-
- def __setitem__(self, key, value):
-- if self.fields.has_key(key) is False:
-+ if (key in self.fields) is False:
- # Key not found.. let's send it to the referent to handle, maybe it's there
- return self.fields['Data'].__setitem__(key,value)
- else:
- return NDRSTRUCT.__setitem__(self,key,value)
-
- def __getitem__(self, key):
-- if self.fields.has_key(key):
-+ if key in self.fields:
- if isinstance(self.fields[key], NDR):
-- if self.fields[key].fields.has_key('Data'):
-+ if 'Data' in self.fields[key].fields:
- return self.fields[key]['Data']
- return self.fields[key]
- else:
-@@ -1570,15 +1569,15 @@ class NDRPOINTER(NDRSTRUCT):
- def dump(self, msg = None, indent = 0):
- if msg is None: msg = self.__class__.__name__
- if msg != '':
-- print "%s" % msg,
-+ print("%s" % msg, end=' ')
- # Here we just print the referent
- if isinstance(self.fields['Data'], NDR):
- self.fields['Data'].dump('', indent = indent)
- else:
- if self['ReferentID'] == 0:
-- print " NULL",
-+ print(" NULL", end=' ')
- else:
-- print " %r" % (self['Data']),
-+ print(" %r" % (self['Data']), end=' ')
-
- def getAlignment(self):
- if self._isNDR64 is True:
-@@ -1649,7 +1648,7 @@ class NDRCALL(NDRCONSTRUCTEDTYPE):
-
- def dump(self, msg = None, indent = 0):
- NDRCONSTRUCTEDTYPE.dump(self, msg, indent)
-- print '\n\n'
-+ print('\n\n')
-
- def getData(self, soFar = 0):
- data = ''
-@@ -1692,7 +1691,7 @@ class NDRCALL(NDRCONSTRUCTEDTYPE):
- soFar = soFar0 + len(data)
- data += self.fields[fieldName].getDataReferent(soFar)
- soFar = soFar0 + len(data)
-- except Exception, e:
-+ except Exception as e:
- LOG.error(str(e))
- LOG.error("Error packing field '%s | %s' in %s" % (fieldName, fieldTypeOrClass, self.__class__))
- raise
-@@ -1720,7 +1719,7 @@ class NDRCALL(NDRCONSTRUCTEDTYPE):
- size += self.fields[fieldName].fromStringReferent(data[size:], soFar + size)
- data = data[size:]
- soFar += size
-- except Exception,e:
-+ except Exception as e:
- LOG.error(str(e))
- LOG.error("Error unpacking field '%s | %s | %r'" % (fieldName, fieldTypeOrClass, data[:256]))
- raise
-@@ -1747,24 +1746,24 @@ class NDRTest:
- return self.theClass(isNDR64 = isNDR64)
-
- def test(self, isNDR64 = False):
-- print
-- print "-"*70
-+ print()
-+ print("-"*70)
- testName = self.__class__.__name__
-- print "starting test: %s (NDR64 = %s)....." % (testName, isNDR64)
-+ print("starting test: %s (NDR64 = %s)....." % (testName, isNDR64))
- a = self.create(isNDR64 = isNDR64)
- self.populate(a)
- a.dump("packing.....")
- a_str = str(a)
-- print "packed:"
-+ print("packed:")
- hexdump(a_str)
-- print "unpacking....."
-+ print("unpacking.....")
- b = self.create(a_str, isNDR64 = isNDR64)
- b.dump("unpacked.....")
-- print "\nrepacking....."
-+ print("\nrepacking.....")
- b_str = str(b)
- if b_str != a_str:
-- print "ERROR: original packed and repacked don't match"
-- print "packed: "
-+ print("ERROR: original packed and repacked don't match")
-+ print("packed: ")
- hexdump(b_str)
- raise
-
---- impacket/dcerpc/v5/rpcrt.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/dcerpc/v5/rpcrt.py
-@@ -119,427 +119,427 @@ rpc_cont_def_result = {
- #http://www.opengroup.org/onlinepubs/9629399/apdxn.htm
-
- rpc_status_codes = {
-- 0x00000005L : 'rpc_s_access_denied',
-- 0x00000008L : 'Authentication type not recognized',
-- 0x000006D8L : 'rpc_fault_cant_perform',
-- 0x000006C6L : 'rpc_x_invalid_bound', # the arrays bound are invalid
-- 0x000006E4L : 'rpc_s_cannot_support: The requested operation is not supported.', # some operation is not supported
-- 0x000006F7L : 'rpc_x_bad_stub_data', # the stub data is invalid, doesn't match with the IDL definition
-- 0x1C010001L : 'nca_s_comm_failure', # unable to get response from server:
-- 0x1C010002L : 'nca_s_op_rng_error', # bad operation number in call
-- 0x1C010003L : 'nca_s_unk_if', # unknown interface
-- 0x1C010006L : 'nca_s_wrong_boot_time', # client passed server wrong server boot time
-- 0x1C010009L : 'nca_s_you_crashed', # a restarted server called back a client
-- 0x1C01000BL : 'nca_s_proto_error', # someone messed up the protocol
-- 0x1C010013L : 'nca_s_out_args_too_big ', # output args too big
-- 0x1C010014L : 'nca_s_server_too_busy', # server is too busy to handle call
-- 0x1C010015L : 'nca_s_fault_string_too_long', # string argument longer than declared max len
-- 0x1C010017L : 'nca_s_unsupported_type ', # no implementation of generic operation for object
-- 0x1C000001L : 'nca_s_fault_int_div_by_zero',
-- 0x1C000002L : 'nca_s_fault_addr_error ',
-- 0x1C000003L : 'nca_s_fault_fp_div_zero',
-- 0x1C000004L : 'nca_s_fault_fp_underflow',
-- 0x1C000005L : 'nca_s_fault_fp_overflow',
-- 0x1C000006L : 'nca_s_fault_invalid_tag',
-- 0x1C000007L : 'nca_s_fault_invalid_bound ',
-- 0x1C000008L : 'nca_s_rpc_version_mismatch',
-- 0x1C000009L : 'nca_s_unspec_reject ',
-- 0x1C00000AL : 'nca_s_bad_actid',
-- 0x1C00000BL : 'nca_s_who_are_you_failed',
-- 0x1C00000CL : 'nca_s_manager_not_entered ',
-- 0x1C00000DL : 'nca_s_fault_cancel',
-- 0x1C00000EL : 'nca_s_fault_ill_inst',
-- 0x1C00000FL : 'nca_s_fault_fp_error',
-- 0x1C000010L : 'nca_s_fault_int_overflow',
-- 0x1C000012L : 'nca_s_fault_unspec',
-- 0x1C000013L : 'nca_s_fault_remote_comm_failure ',
-- 0x1C000014L : 'nca_s_fault_pipe_empty ',
-- 0x1C000015L : 'nca_s_fault_pipe_closed',
-- 0x1C000016L : 'nca_s_fault_pipe_order ',
-- 0x1C000017L : 'nca_s_fault_pipe_discipline',
-- 0x1C000018L : 'nca_s_fault_pipe_comm_error',
-- 0x1C000019L : 'nca_s_fault_pipe_memory',
-- 0x1C00001AL : 'nca_s_fault_context_mismatch ',
-- 0x1C00001BL : 'nca_s_fault_remote_no_memory ',
-- 0x1C00001CL : 'nca_s_invalid_pres_context_id',
-- 0x1C00001DL : 'nca_s_unsupported_authn_level',
-- 0x1C00001FL : 'nca_s_invalid_checksum ',
-- 0x1C000020L : 'nca_s_invalid_crc',
-- 0x1C000021L : 'nca_s_fault_user_defined',
-- 0x1C000022L : 'nca_s_fault_tx_open_failed',
-- 0x1C000023L : 'nca_s_fault_codeset_conv_error',
-- 0x1C000024L : 'nca_s_fault_object_not_found ',
-- 0x1C000025L : 'nca_s_fault_no_client_stub',
-- 0x16c9a000L : "rpc_s_mod",
-- 0x16c9a001L : "rpc_s_op_rng_error",
-- 0x16c9a002L : "rpc_s_cant_create_socket",
-- 0x16c9a003L : "rpc_s_cant_bind_socket",
-- 0x16c9a004L : "rpc_s_not_in_call",
-- 0x16c9a005L : "rpc_s_no_port",
-- 0x16c9a006L : "rpc_s_wrong_boot_time",
-- 0x16c9a007L : "rpc_s_too_many_sockets",
-- 0x16c9a008L : "rpc_s_illegal_register",
-- 0x16c9a009L : "rpc_s_cant_recv",
-- 0x16c9a00aL : "rpc_s_bad_pkt",
-- 0x16c9a00bL : "rpc_s_unbound_handle",
-- 0x16c9a00cL : "rpc_s_addr_in_use",
-- 0x16c9a00dL : "rpc_s_in_args_too_big",
-- 0x16c9a00eL : "rpc_s_string_too_long",
-- 0x16c9a00fL : "rpc_s_too_many_objects",
-- 0x16c9a010L : "rpc_s_binding_has_no_auth",
-- 0x16c9a011L : "rpc_s_unknown_authn_service",
-- 0x16c9a012L : "rpc_s_no_memory",
-- 0x16c9a013L : "rpc_s_cant_nmalloc",
-- 0x16c9a014L : "rpc_s_call_faulted",
-- 0x16c9a015L : "rpc_s_call_failed",
-- 0x16c9a016L : "rpc_s_comm_failure",
-- 0x16c9a017L : "rpc_s_rpcd_comm_failure",
-- 0x16c9a018L : "rpc_s_illegal_family_rebind",
-- 0x16c9a019L : "rpc_s_invalid_handle",
-- 0x16c9a01aL : "rpc_s_coding_error",
-- 0x16c9a01bL : "rpc_s_object_not_found",
-- 0x16c9a01cL : "rpc_s_cthread_not_found",
-- 0x16c9a01dL : "rpc_s_invalid_binding",
-- 0x16c9a01eL : "rpc_s_already_registered",
-- 0x16c9a01fL : "rpc_s_endpoint_not_found",
-- 0x16c9a020L : "rpc_s_invalid_rpc_protseq",
-- 0x16c9a021L : "rpc_s_desc_not_registered",
-- 0x16c9a022L : "rpc_s_already_listening",
-- 0x16c9a023L : "rpc_s_no_protseqs",
-- 0x16c9a024L : "rpc_s_no_protseqs_registered",
-- 0x16c9a025L : "rpc_s_no_bindings",
-- 0x16c9a026L : "rpc_s_max_descs_exceeded",
-- 0x16c9a027L : "rpc_s_no_interfaces",
-- 0x16c9a028L : "rpc_s_invalid_timeout",
-- 0x16c9a029L : "rpc_s_cant_inq_socket",
-- 0x16c9a02aL : "rpc_s_invalid_naf_id",
-- 0x16c9a02bL : "rpc_s_inval_net_addr",
-- 0x16c9a02cL : "rpc_s_unknown_if",
-- 0x16c9a02dL : "rpc_s_unsupported_type",
-- 0x16c9a02eL : "rpc_s_invalid_call_opt",
-- 0x16c9a02fL : "rpc_s_no_fault",
-- 0x16c9a030L : "rpc_s_cancel_timeout",
-- 0x16c9a031L : "rpc_s_call_cancelled",
-- 0x16c9a032L : "rpc_s_invalid_call_handle",
-- 0x16c9a033L : "rpc_s_cannot_alloc_assoc",
-- 0x16c9a034L : "rpc_s_cannot_connect",
-- 0x16c9a035L : "rpc_s_connection_aborted",
-- 0x16c9a036L : "rpc_s_connection_closed",
-- 0x16c9a037L : "rpc_s_cannot_accept",
-- 0x16c9a038L : "rpc_s_assoc_grp_not_found",
-- 0x16c9a039L : "rpc_s_stub_interface_error",
-- 0x16c9a03aL : "rpc_s_invalid_object",
-- 0x16c9a03bL : "rpc_s_invalid_type",
-- 0x16c9a03cL : "rpc_s_invalid_if_opnum",
-- 0x16c9a03dL : "rpc_s_different_server_instance",
-- 0x16c9a03eL : "rpc_s_protocol_error",
-- 0x16c9a03fL : "rpc_s_cant_recvmsg",
-- 0x16c9a040L : "rpc_s_invalid_string_binding",
-- 0x16c9a041L : "rpc_s_connect_timed_out",
-- 0x16c9a042L : "rpc_s_connect_rejected",
-- 0x16c9a043L : "rpc_s_network_unreachable",
-- 0x16c9a044L : "rpc_s_connect_no_resources",
-- 0x16c9a045L : "rpc_s_rem_network_shutdown",
-- 0x16c9a046L : "rpc_s_too_many_rem_connects",
-- 0x16c9a047L : "rpc_s_no_rem_endpoint",
-- 0x16c9a048L : "rpc_s_rem_host_down",
-- 0x16c9a049L : "rpc_s_host_unreachable",
-- 0x16c9a04aL : "rpc_s_access_control_info_inv",
-- 0x16c9a04bL : "rpc_s_loc_connect_aborted",
-- 0x16c9a04cL : "rpc_s_connect_closed_by_rem",
-- 0x16c9a04dL : "rpc_s_rem_host_crashed",
-- 0x16c9a04eL : "rpc_s_invalid_endpoint_format",
-- 0x16c9a04fL : "rpc_s_unknown_status_code",
-- 0x16c9a050L : "rpc_s_unknown_mgr_type",
-- 0x16c9a051L : "rpc_s_assoc_creation_failed",
-- 0x16c9a052L : "rpc_s_assoc_grp_max_exceeded",
-- 0x16c9a053L : "rpc_s_assoc_grp_alloc_failed",
-- 0x16c9a054L : "rpc_s_sm_invalid_state",
-- 0x16c9a055L : "rpc_s_assoc_req_rejected",
-- 0x16c9a056L : "rpc_s_assoc_shutdown",
-- 0x16c9a057L : "rpc_s_tsyntaxes_unsupported",
-- 0x16c9a058L : "rpc_s_context_id_not_found",
-- 0x16c9a059L : "rpc_s_cant_listen_socket",
-- 0x16c9a05aL : "rpc_s_no_addrs",
-- 0x16c9a05bL : "rpc_s_cant_getpeername",
-- 0x16c9a05cL : "rpc_s_cant_get_if_id",
-- 0x16c9a05dL : "rpc_s_protseq_not_supported",
-- 0x16c9a05eL : "rpc_s_call_orphaned",
-- 0x16c9a05fL : "rpc_s_who_are_you_failed",
-- 0x16c9a060L : "rpc_s_unknown_reject",
-- 0x16c9a061L : "rpc_s_type_already_registered",
-- 0x16c9a062L : "rpc_s_stop_listening_disabled",
-- 0x16c9a063L : "rpc_s_invalid_arg",
-- 0x16c9a064L : "rpc_s_not_supported",
-- 0x16c9a065L : "rpc_s_wrong_kind_of_binding",
-- 0x16c9a066L : "rpc_s_authn_authz_mismatch",
-- 0x16c9a067L : "rpc_s_call_queued",
-- 0x16c9a068L : "rpc_s_cannot_set_nodelay",
-- 0x16c9a069L : "rpc_s_not_rpc_tower",
-- 0x16c9a06aL : "rpc_s_invalid_rpc_protid",
-- 0x16c9a06bL : "rpc_s_invalid_rpc_floor",
-- 0x16c9a06cL : "rpc_s_call_timeout",
-- 0x16c9a06dL : "rpc_s_mgmt_op_disallowed",
-- 0x16c9a06eL : "rpc_s_manager_not_entered",
-- 0x16c9a06fL : "rpc_s_calls_too_large_for_wk_ep",
-- 0x16c9a070L : "rpc_s_server_too_busy",
-- 0x16c9a071L : "rpc_s_prot_version_mismatch",
-- 0x16c9a072L : "rpc_s_rpc_prot_version_mismatch",
-- 0x16c9a073L : "rpc_s_ss_no_import_cursor",
-- 0x16c9a074L : "rpc_s_fault_addr_error",
-- 0x16c9a075L : "rpc_s_fault_context_mismatch",
-- 0x16c9a076L : "rpc_s_fault_fp_div_by_zero",
-- 0x16c9a077L : "rpc_s_fault_fp_error",
-- 0x16c9a078L : "rpc_s_fault_fp_overflow",
-- 0x16c9a079L : "rpc_s_fault_fp_underflow",
-- 0x16c9a07aL : "rpc_s_fault_ill_inst",
-- 0x16c9a07bL : "rpc_s_fault_int_div_by_zero",
-- 0x16c9a07cL : "rpc_s_fault_int_overflow",
-- 0x16c9a07dL : "rpc_s_fault_invalid_bound",
-- 0x16c9a07eL : "rpc_s_fault_invalid_tag",
-- 0x16c9a07fL : "rpc_s_fault_pipe_closed",
-- 0x16c9a080L : "rpc_s_fault_pipe_comm_error",
-- 0x16c9a081L : "rpc_s_fault_pipe_discipline",
-- 0x16c9a082L : "rpc_s_fault_pipe_empty",
-- 0x16c9a083L : "rpc_s_fault_pipe_memory",
-- 0x16c9a084L : "rpc_s_fault_pipe_order",
-- 0x16c9a085L : "rpc_s_fault_remote_comm_failure",
-- 0x16c9a086L : "rpc_s_fault_remote_no_memory",
-- 0x16c9a087L : "rpc_s_fault_unspec",
-- 0x16c9a088L : "uuid_s_bad_version",
-- 0x16c9a089L : "uuid_s_socket_failure",
-- 0x16c9a08aL : "uuid_s_getconf_failure",
-- 0x16c9a08bL : "uuid_s_no_address",
-- 0x16c9a08cL : "uuid_s_overrun",
-- 0x16c9a08dL : "uuid_s_internal_error",
-- 0x16c9a08eL : "uuid_s_coding_error",
-- 0x16c9a08fL : "uuid_s_invalid_string_uuid",
-- 0x16c9a090L : "uuid_s_no_memory",
-- 0x16c9a091L : "rpc_s_no_more_entries",
-- 0x16c9a092L : "rpc_s_unknown_ns_error",
-- 0x16c9a093L : "rpc_s_name_service_unavailable",
-- 0x16c9a094L : "rpc_s_incomplete_name",
-- 0x16c9a095L : "rpc_s_group_not_found",
-- 0x16c9a096L : "rpc_s_invalid_name_syntax",
-- 0x16c9a097L : "rpc_s_no_more_members",
-- 0x16c9a098L : "rpc_s_no_more_interfaces",
-- 0x16c9a099L : "rpc_s_invalid_name_service",
-- 0x16c9a09aL : "rpc_s_no_name_mapping",
-- 0x16c9a09bL : "rpc_s_profile_not_found",
-- 0x16c9a09cL : "rpc_s_not_found",
-- 0x16c9a09dL : "rpc_s_no_updates",
-- 0x16c9a09eL : "rpc_s_update_failed",
-- 0x16c9a09fL : "rpc_s_no_match_exported",
-- 0x16c9a0a0L : "rpc_s_entry_not_found",
-- 0x16c9a0a1L : "rpc_s_invalid_inquiry_context",
-- 0x16c9a0a2L : "rpc_s_interface_not_found",
-- 0x16c9a0a3L : "rpc_s_group_member_not_found",
-- 0x16c9a0a4L : "rpc_s_entry_already_exists",
-- 0x16c9a0a5L : "rpc_s_nsinit_failure",
-- 0x16c9a0a6L : "rpc_s_unsupported_name_syntax",
-- 0x16c9a0a7L : "rpc_s_no_more_elements",
-- 0x16c9a0a8L : "rpc_s_no_ns_permission",
-- 0x16c9a0a9L : "rpc_s_invalid_inquiry_type",
-- 0x16c9a0aaL : "rpc_s_profile_element_not_found",
-- 0x16c9a0abL : "rpc_s_profile_element_replaced",
-- 0x16c9a0acL : "rpc_s_import_already_done",
-- 0x16c9a0adL : "rpc_s_database_busy",
-- 0x16c9a0aeL : "rpc_s_invalid_import_context",
-- 0x16c9a0afL : "rpc_s_uuid_set_not_found",
-- 0x16c9a0b0L : "rpc_s_uuid_member_not_found",
-- 0x16c9a0b1L : "rpc_s_no_interfaces_exported",
-- 0x16c9a0b2L : "rpc_s_tower_set_not_found",
-- 0x16c9a0b3L : "rpc_s_tower_member_not_found",
-- 0x16c9a0b4L : "rpc_s_obj_uuid_not_found",
-- 0x16c9a0b5L : "rpc_s_no_more_bindings",
-- 0x16c9a0b6L : "rpc_s_invalid_priority",
-- 0x16c9a0b7L : "rpc_s_not_rpc_entry",
-- 0x16c9a0b8L : "rpc_s_invalid_lookup_context",
-- 0x16c9a0b9L : "rpc_s_binding_vector_full",
-- 0x16c9a0baL : "rpc_s_cycle_detected",
-- 0x16c9a0bbL : "rpc_s_nothing_to_export",
-- 0x16c9a0bcL : "rpc_s_nothing_to_unexport",
-- 0x16c9a0bdL : "rpc_s_invalid_vers_option",
-- 0x16c9a0beL : "rpc_s_no_rpc_data",
-- 0x16c9a0bfL : "rpc_s_mbr_picked",
-- 0x16c9a0c0L : "rpc_s_not_all_objs_unexported",
-- 0x16c9a0c1L : "rpc_s_no_entry_name",
-- 0x16c9a0c2L : "rpc_s_priority_group_done",
-- 0x16c9a0c3L : "rpc_s_partial_results",
-- 0x16c9a0c4L : "rpc_s_no_env_setup",
-- 0x16c9a0c5L : "twr_s_unknown_sa",
-- 0x16c9a0c6L : "twr_s_unknown_tower",
-- 0x16c9a0c7L : "twr_s_not_implemented",
-- 0x16c9a0c8L : "rpc_s_max_calls_too_small",
-- 0x16c9a0c9L : "rpc_s_cthread_create_failed",
-- 0x16c9a0caL : "rpc_s_cthread_pool_exists",
-- 0x16c9a0cbL : "rpc_s_cthread_no_such_pool",
-- 0x16c9a0ccL : "rpc_s_cthread_invoke_disabled",
-- 0x16c9a0cdL : "ept_s_cant_perform_op",
-- 0x16c9a0ceL : "ept_s_no_memory",
-- 0x16c9a0cfL : "ept_s_database_invalid",
-- 0x16c9a0d0L : "ept_s_cant_create",
-- 0x16c9a0d1L : "ept_s_cant_access",
-- 0x16c9a0d2L : "ept_s_database_already_open",
-- 0x16c9a0d3L : "ept_s_invalid_entry",
-- 0x16c9a0d4L : "ept_s_update_failed",
-- 0x16c9a0d5L : "ept_s_invalid_context",
-- 0x16c9a0d6L : "ept_s_not_registered",
-- 0x16c9a0d7L : "ept_s_server_unavailable",
-- 0x16c9a0d8L : "rpc_s_underspecified_name",
-- 0x16c9a0d9L : "rpc_s_invalid_ns_handle",
-- 0x16c9a0daL : "rpc_s_unknown_error",
-- 0x16c9a0dbL : "rpc_s_ss_char_trans_open_fail",
-- 0x16c9a0dcL : "rpc_s_ss_char_trans_short_file",
-- 0x16c9a0ddL : "rpc_s_ss_context_damaged",
-- 0x16c9a0deL : "rpc_s_ss_in_null_context",
-- 0x16c9a0dfL : "rpc_s_socket_failure",
-- 0x16c9a0e0L : "rpc_s_unsupported_protect_level",
-- 0x16c9a0e1L : "rpc_s_invalid_checksum",
-- 0x16c9a0e2L : "rpc_s_invalid_credentials",
-- 0x16c9a0e3L : "rpc_s_credentials_too_large",
-- 0x16c9a0e4L : "rpc_s_call_id_not_found",
-- 0x16c9a0e5L : "rpc_s_key_id_not_found",
-- 0x16c9a0e6L : "rpc_s_auth_bad_integrity",
-- 0x16c9a0e7L : "rpc_s_auth_tkt_expired",
-- 0x16c9a0e8L : "rpc_s_auth_tkt_nyv",
-- 0x16c9a0e9L : "rpc_s_auth_repeat",
-- 0x16c9a0eaL : "rpc_s_auth_not_us",
-- 0x16c9a0ebL : "rpc_s_auth_badmatch",
-- 0x16c9a0ecL : "rpc_s_auth_skew",
-- 0x16c9a0edL : "rpc_s_auth_badaddr",
-- 0x16c9a0eeL : "rpc_s_auth_badversion",
-- 0x16c9a0efL : "rpc_s_auth_msg_type",
-- 0x16c9a0f0L : "rpc_s_auth_modified",
-- 0x16c9a0f1L : "rpc_s_auth_badorder",
-- 0x16c9a0f2L : "rpc_s_auth_badkeyver",
-- 0x16c9a0f3L : "rpc_s_auth_nokey",
-- 0x16c9a0f4L : "rpc_s_auth_mut_fail",
-- 0x16c9a0f5L : "rpc_s_auth_baddirection",
-- 0x16c9a0f6L : "rpc_s_auth_method",
-- 0x16c9a0f7L : "rpc_s_auth_badseq",
-- 0x16c9a0f8L : "rpc_s_auth_inapp_cksum",
-- 0x16c9a0f9L : "rpc_s_auth_field_toolong",
-- 0x16c9a0faL : "rpc_s_invalid_crc",
-- 0x16c9a0fbL : "rpc_s_binding_incomplete",
-- 0x16c9a0fcL : "rpc_s_key_func_not_allowed",
-- 0x16c9a0fdL : "rpc_s_unknown_stub_rtl_if_vers",
-- 0x16c9a0feL : "rpc_s_unknown_ifspec_vers",
-- 0x16c9a0ffL : "rpc_s_proto_unsupp_by_auth",
-- 0x16c9a100L : "rpc_s_authn_challenge_malformed",
-- 0x16c9a101L : "rpc_s_protect_level_mismatch",
-- 0x16c9a102L : "rpc_s_no_mepv",
-- 0x16c9a103L : "rpc_s_stub_protocol_error",
-- 0x16c9a104L : "rpc_s_class_version_mismatch",
-- 0x16c9a105L : "rpc_s_helper_not_running",
-- 0x16c9a106L : "rpc_s_helper_short_read",
-- 0x16c9a107L : "rpc_s_helper_catatonic",
-- 0x16c9a108L : "rpc_s_helper_aborted",
-- 0x16c9a109L : "rpc_s_not_in_kernel",
-- 0x16c9a10aL : "rpc_s_helper_wrong_user",
-- 0x16c9a10bL : "rpc_s_helper_overflow",
-- 0x16c9a10cL : "rpc_s_dg_need_way_auth",
-- 0x16c9a10dL : "rpc_s_unsupported_auth_subtype",
-- 0x16c9a10eL : "rpc_s_wrong_pickle_type",
-- 0x16c9a10fL : "rpc_s_not_listening",
-- 0x16c9a110L : "rpc_s_ss_bad_buffer",
-- 0x16c9a111L : "rpc_s_ss_bad_es_action",
-- 0x16c9a112L : "rpc_s_ss_wrong_es_version",
-- 0x16c9a113L : "rpc_s_fault_user_defined",
-- 0x16c9a114L : "rpc_s_ss_incompatible_codesets",
-- 0x16c9a115L : "rpc_s_tx_not_in_transaction",
-- 0x16c9a116L : "rpc_s_tx_open_failed",
-- 0x16c9a117L : "rpc_s_partial_credentials",
-- 0x16c9a118L : "rpc_s_ss_invalid_codeset_tag",
-- 0x16c9a119L : "rpc_s_mgmt_bad_type",
-- 0x16c9a11aL : "rpc_s_ss_invalid_char_input",
-- 0x16c9a11bL : "rpc_s_ss_short_conv_buffer",
-- 0x16c9a11cL : "rpc_s_ss_iconv_error",
-- 0x16c9a11dL : "rpc_s_ss_no_compat_codeset",
-- 0x16c9a11eL : "rpc_s_ss_no_compat_charsets",
-- 0x16c9a11fL : "dce_cs_c_ok",
-- 0x16c9a120L : "dce_cs_c_unknown",
-- 0x16c9a121L : "dce_cs_c_notfound",
-- 0x16c9a122L : "dce_cs_c_cannot_open_file",
-- 0x16c9a123L : "dce_cs_c_cannot_read_file",
-- 0x16c9a124L : "dce_cs_c_cannot_allocate_memory",
-- 0x16c9a125L : "rpc_s_ss_cleanup_failed",
-- 0x16c9a126L : "rpc_svc_desc_general",
-- 0x16c9a127L : "rpc_svc_desc_mutex",
-- 0x16c9a128L : "rpc_svc_desc_xmit",
-- 0x16c9a129L : "rpc_svc_desc_recv",
-- 0x16c9a12aL : "rpc_svc_desc_dg_state",
-- 0x16c9a12bL : "rpc_svc_desc_cancel",
-- 0x16c9a12cL : "rpc_svc_desc_orphan",
-- 0x16c9a12dL : "rpc_svc_desc_cn_state",
-- 0x16c9a12eL : "rpc_svc_desc_cn_pkt",
-- 0x16c9a12fL : "rpc_svc_desc_pkt_quotas",
-- 0x16c9a130L : "rpc_svc_desc_auth",
-- 0x16c9a131L : "rpc_svc_desc_source",
-- 0x16c9a132L : "rpc_svc_desc_stats",
-- 0x16c9a133L : "rpc_svc_desc_mem",
-- 0x16c9a134L : "rpc_svc_desc_mem_type",
-- 0x16c9a135L : "rpc_svc_desc_dg_pktlog",
-- 0x16c9a136L : "rpc_svc_desc_thread_id",
-- 0x16c9a137L : "rpc_svc_desc_timestamp",
-- 0x16c9a138L : "rpc_svc_desc_cn_errors",
-- 0x16c9a139L : "rpc_svc_desc_conv_thread",
-- 0x16c9a13aL : "rpc_svc_desc_pid",
-- 0x16c9a13bL : "rpc_svc_desc_atfork",
-- 0x16c9a13cL : "rpc_svc_desc_cma_thread",
-- 0x16c9a13dL : "rpc_svc_desc_inherit",
-- 0x16c9a13eL : "rpc_svc_desc_dg_sockets",
-- 0x16c9a13fL : "rpc_svc_desc_timer",
-- 0x16c9a140L : "rpc_svc_desc_threads",
-- 0x16c9a141L : "rpc_svc_desc_server_call",
-- 0x16c9a142L : "rpc_svc_desc_nsi",
-- 0x16c9a143L : "rpc_svc_desc_dg_pkt",
-- 0x16c9a144L : "rpc_m_cn_ill_state_trans_sa",
-- 0x16c9a145L : "rpc_m_cn_ill_state_trans_ca",
-- 0x16c9a146L : "rpc_m_cn_ill_state_trans_sg",
-- 0x16c9a147L : "rpc_m_cn_ill_state_trans_cg",
-- 0x16c9a148L : "rpc_m_cn_ill_state_trans_sr",
-- 0x16c9a149L : "rpc_m_cn_ill_state_trans_cr",
-- 0x16c9a14aL : "rpc_m_bad_pkt_type",
-- 0x16c9a14bL : "rpc_m_prot_mismatch",
-- 0x16c9a14cL : "rpc_m_frag_toobig",
-- 0x16c9a14dL : "rpc_m_unsupp_stub_rtl_if",
-- 0x16c9a14eL : "rpc_m_unhandled_callstate",
-- 0x16c9a14fL : "rpc_m_call_failed",
-- 0x16c9a150L : "rpc_m_call_failed_no_status",
-- 0x16c9a151L : "rpc_m_call_failed_errno",
-- 0x16c9a152L : "rpc_m_call_failed_s",
-- 0x16c9a153L : "rpc_m_call_failed_c",
-- 0x16c9a154L : "rpc_m_errmsg_toobig",
-- 0x16c9a155L : "rpc_m_invalid_srchattr",
-- 0x16c9a156L : "rpc_m_nts_not_found",
-- 0x16c9a157L : "rpc_m_invalid_accbytcnt",
-- 0x16c9a158L : "rpc_m_pre_v2_ifspec",
-- 0x16c9a159L : "rpc_m_unk_ifspec",
-- 0x16c9a15aL : "rpc_m_recvbuf_toosmall",
-- 0x16c9a15bL : "rpc_m_unalign_authtrl",
-- 0x16c9a15cL : "rpc_m_unexpected_exc",
-- 0x16c9a15dL : "rpc_m_no_stub_data",
-- 0x16c9a15eL : "rpc_m_eventlist_full",
-- 0x16c9a15fL : "rpc_m_unk_sock_type",
-- 0x16c9a160L : "rpc_m_unimp_call",
-- 0x16c9a161L : "rpc_m_invalid_seqnum",
-- 0x16c9a162L : "rpc_m_cant_create_uuid",
-- 0x16c9a163L : "rpc_m_pre_v2_ss",
-- 0x16c9a164L : "rpc_m_dgpkt_pool_corrupt",
-- 0x16c9a165L : "rpc_m_dgpkt_bad_free",
-- 0x16c9a166L : "rpc_m_lookaside_corrupt",
-- 0x16c9a167L : "rpc_m_alloc_fail",
-- 0x16c9a168L : "rpc_m_realloc_fail",
-- 0x16c9a169L : "rpc_m_cant_open_file",
-- 0x16c9a16aL : "rpc_m_cant_read_addr",
-- 0x16c9a16bL : "rpc_svc_desc_libidl",
-- 0x16c9a16cL : "rpc_m_ctxrundown_nomem",
-- 0x16c9a16dL : "rpc_m_ctxrundown_exc",
-- 0x16c9a16eL : "rpc_s_fault_codeset_conv_error",
-- 0x16c9a16fL : "rpc_s_no_call_active",
-- 0x16c9a170L : "rpc_s_cannot_support",
-- 0x16c9a171L : "rpc_s_no_context_available",
-+ 0x00000005 : 'rpc_s_access_denied',
-+ 0x00000008 : 'Authentication type not recognized',
-+ 0x000006D8 : 'rpc_fault_cant_perform',
-+ 0x000006C6 : 'rpc_x_invalid_bound', # the arrays bound are invalid
-+ 0x000006E4 : 'rpc_s_cannot_support: The requested operation is not supported.', # some operation is not supported
-+ 0x000006F7 : 'rpc_x_bad_stub_data', # the stub data is invalid, doesn't match with the IDL definition
-+ 0x1C010001 : 'nca_s_comm_failure', # unable to get response from server:
-+ 0x1C010002 : 'nca_s_op_rng_error', # bad operation number in call
-+ 0x1C010003 : 'nca_s_unk_if', # unknown interface
-+ 0x1C010006 : 'nca_s_wrong_boot_time', # client passed server wrong server boot time
-+ 0x1C010009 : 'nca_s_you_crashed', # a restarted server called back a client
-+ 0x1C01000B : 'nca_s_proto_error', # someone messed up the protocol
-+ 0x1C010013 : 'nca_s_out_args_too_big ', # output args too big
-+ 0x1C010014 : 'nca_s_server_too_busy', # server is too busy to handle call
-+ 0x1C010015 : 'nca_s_fault_string_too_long', # string argument longer than declared max len
-+ 0x1C010017 : 'nca_s_unsupported_type ', # no implementation of generic operation for object
-+ 0x1C000001 : 'nca_s_fault_int_div_by_zero',
-+ 0x1C000002 : 'nca_s_fault_addr_error ',
-+ 0x1C000003 : 'nca_s_fault_fp_div_zero',
-+ 0x1C000004 : 'nca_s_fault_fp_underflow',
-+ 0x1C000005 : 'nca_s_fault_fp_overflow',
-+ 0x1C000006 : 'nca_s_fault_invalid_tag',
-+ 0x1C000007 : 'nca_s_fault_invalid_bound ',
-+ 0x1C000008 : 'nca_s_rpc_version_mismatch',
-+ 0x1C000009 : 'nca_s_unspec_reject ',
-+ 0x1C00000A : 'nca_s_bad_actid',
-+ 0x1C00000B : 'nca_s_who_are_you_failed',
-+ 0x1C00000C : 'nca_s_manager_not_entered ',
-+ 0x1C00000D : 'nca_s_fault_cancel',
-+ 0x1C00000E : 'nca_s_fault_ill_inst',
-+ 0x1C00000F : 'nca_s_fault_fp_error',
-+ 0x1C000010 : 'nca_s_fault_int_overflow',
-+ 0x1C000012 : 'nca_s_fault_unspec',
-+ 0x1C000013 : 'nca_s_fault_remote_comm_failure ',
-+ 0x1C000014 : 'nca_s_fault_pipe_empty ',
-+ 0x1C000015 : 'nca_s_fault_pipe_closed',
-+ 0x1C000016 : 'nca_s_fault_pipe_order ',
-+ 0x1C000017 : 'nca_s_fault_pipe_discipline',
-+ 0x1C000018 : 'nca_s_fault_pipe_comm_error',
-+ 0x1C000019 : 'nca_s_fault_pipe_memory',
-+ 0x1C00001A : 'nca_s_fault_context_mismatch ',
-+ 0x1C00001B : 'nca_s_fault_remote_no_memory ',
-+ 0x1C00001C : 'nca_s_invalid_pres_context_id',
-+ 0x1C00001D : 'nca_s_unsupported_authn_level',
-+ 0x1C00001F : 'nca_s_invalid_checksum ',
-+ 0x1C000020 : 'nca_s_invalid_crc',
-+ 0x1C000021 : 'nca_s_fault_user_defined',
-+ 0x1C000022 : 'nca_s_fault_tx_open_failed',
-+ 0x1C000023 : 'nca_s_fault_codeset_conv_error',
-+ 0x1C000024 : 'nca_s_fault_object_not_found ',
-+ 0x1C000025 : 'nca_s_fault_no_client_stub',
-+ 0x16c9a000 : "rpc_s_mod",
-+ 0x16c9a001 : "rpc_s_op_rng_error",
-+ 0x16c9a002 : "rpc_s_cant_create_socket",
-+ 0x16c9a003 : "rpc_s_cant_bind_socket",
-+ 0x16c9a004 : "rpc_s_not_in_call",
-+ 0x16c9a005 : "rpc_s_no_port",
-+ 0x16c9a006 : "rpc_s_wrong_boot_time",
-+ 0x16c9a007 : "rpc_s_too_many_sockets",
-+ 0x16c9a008 : "rpc_s_illegal_register",
-+ 0x16c9a009 : "rpc_s_cant_recv",
-+ 0x16c9a00a : "rpc_s_bad_pkt",
-+ 0x16c9a00b : "rpc_s_unbound_handle",
-+ 0x16c9a00c : "rpc_s_addr_in_use",
-+ 0x16c9a00d : "rpc_s_in_args_too_big",
-+ 0x16c9a00e : "rpc_s_string_too_long",
-+ 0x16c9a00f : "rpc_s_too_many_objects",
-+ 0x16c9a010 : "rpc_s_binding_has_no_auth",
-+ 0x16c9a011 : "rpc_s_unknown_authn_service",
-+ 0x16c9a012 : "rpc_s_no_memory",
-+ 0x16c9a013 : "rpc_s_cant_nmalloc",
-+ 0x16c9a014 : "rpc_s_call_faulted",
-+ 0x16c9a015 : "rpc_s_call_failed",
-+ 0x16c9a016 : "rpc_s_comm_failure",
-+ 0x16c9a017 : "rpc_s_rpcd_comm_failure",
-+ 0x16c9a018 : "rpc_s_illegal_family_rebind",
-+ 0x16c9a019 : "rpc_s_invalid_handle",
-+ 0x16c9a01a : "rpc_s_coding_error",
-+ 0x16c9a01b : "rpc_s_object_not_found",
-+ 0x16c9a01c : "rpc_s_cthread_not_found",
-+ 0x16c9a01d : "rpc_s_invalid_binding",
-+ 0x16c9a01e : "rpc_s_already_registered",
-+ 0x16c9a01f : "rpc_s_endpoint_not_found",
-+ 0x16c9a020 : "rpc_s_invalid_rpc_protseq",
-+ 0x16c9a021 : "rpc_s_desc_not_registered",
-+ 0x16c9a022 : "rpc_s_already_listening",
-+ 0x16c9a023 : "rpc_s_no_protseqs",
-+ 0x16c9a024 : "rpc_s_no_protseqs_registered",
-+ 0x16c9a025 : "rpc_s_no_bindings",
-+ 0x16c9a026 : "rpc_s_max_descs_exceeded",
-+ 0x16c9a027 : "rpc_s_no_interfaces",
-+ 0x16c9a028 : "rpc_s_invalid_timeout",
-+ 0x16c9a029 : "rpc_s_cant_inq_socket",
-+ 0x16c9a02a : "rpc_s_invalid_naf_id",
-+ 0x16c9a02b : "rpc_s_inval_net_addr",
-+ 0x16c9a02c : "rpc_s_unknown_if",
-+ 0x16c9a02d : "rpc_s_unsupported_type",
-+ 0x16c9a02e : "rpc_s_invalid_call_opt",
-+ 0x16c9a02f : "rpc_s_no_fault",
-+ 0x16c9a030 : "rpc_s_cancel_timeout",
-+ 0x16c9a031 : "rpc_s_call_cancelled",
-+ 0x16c9a032 : "rpc_s_invalid_call_handle",
-+ 0x16c9a033 : "rpc_s_cannot_alloc_assoc",
-+ 0x16c9a034 : "rpc_s_cannot_connect",
-+ 0x16c9a035 : "rpc_s_connection_aborted",
-+ 0x16c9a036 : "rpc_s_connection_closed",
-+ 0x16c9a037 : "rpc_s_cannot_accept",
-+ 0x16c9a038 : "rpc_s_assoc_grp_not_found",
-+ 0x16c9a039 : "rpc_s_stub_interface_error",
-+ 0x16c9a03a : "rpc_s_invalid_object",
-+ 0x16c9a03b : "rpc_s_invalid_type",
-+ 0x16c9a03c : "rpc_s_invalid_if_opnum",
-+ 0x16c9a03d : "rpc_s_different_server_instance",
-+ 0x16c9a03e : "rpc_s_protocol_error",
-+ 0x16c9a03f : "rpc_s_cant_recvmsg",
-+ 0x16c9a040 : "rpc_s_invalid_string_binding",
-+ 0x16c9a041 : "rpc_s_connect_timed_out",
-+ 0x16c9a042 : "rpc_s_connect_rejected",
-+ 0x16c9a043 : "rpc_s_network_unreachable",
-+ 0x16c9a044 : "rpc_s_connect_no_resources",
-+ 0x16c9a045 : "rpc_s_rem_network_shutdown",
-+ 0x16c9a046 : "rpc_s_too_many_rem_connects",
-+ 0x16c9a047 : "rpc_s_no_rem_endpoint",
-+ 0x16c9a048 : "rpc_s_rem_host_down",
-+ 0x16c9a049 : "rpc_s_host_unreachable",
-+ 0x16c9a04a : "rpc_s_access_control_info_inv",
-+ 0x16c9a04b : "rpc_s_loc_connect_aborted",
-+ 0x16c9a04c : "rpc_s_connect_closed_by_rem",
-+ 0x16c9a04d : "rpc_s_rem_host_crashed",
-+ 0x16c9a04e : "rpc_s_invalid_endpoint_format",
-+ 0x16c9a04f : "rpc_s_unknown_status_code",
-+ 0x16c9a050 : "rpc_s_unknown_mgr_type",
-+ 0x16c9a051 : "rpc_s_assoc_creation_failed",
-+ 0x16c9a052 : "rpc_s_assoc_grp_max_exceeded",
-+ 0x16c9a053 : "rpc_s_assoc_grp_alloc_failed",
-+ 0x16c9a054 : "rpc_s_sm_invalid_state",
-+ 0x16c9a055 : "rpc_s_assoc_req_rejected",
-+ 0x16c9a056 : "rpc_s_assoc_shutdown",
-+ 0x16c9a057 : "rpc_s_tsyntaxes_unsupported",
-+ 0x16c9a058 : "rpc_s_context_id_not_found",
-+ 0x16c9a059 : "rpc_s_cant_listen_socket",
-+ 0x16c9a05a : "rpc_s_no_addrs",
-+ 0x16c9a05b : "rpc_s_cant_getpeername",
-+ 0x16c9a05c : "rpc_s_cant_get_if_id",
-+ 0x16c9a05d : "rpc_s_protseq_not_supported",
-+ 0x16c9a05e : "rpc_s_call_orphaned",
-+ 0x16c9a05f : "rpc_s_who_are_you_failed",
-+ 0x16c9a060 : "rpc_s_unknown_reject",
-+ 0x16c9a061 : "rpc_s_type_already_registered",
-+ 0x16c9a062 : "rpc_s_stop_listening_disabled",
-+ 0x16c9a063 : "rpc_s_invalid_arg",
-+ 0x16c9a064 : "rpc_s_not_supported",
-+ 0x16c9a065 : "rpc_s_wrong_kind_of_binding",
-+ 0x16c9a066 : "rpc_s_authn_authz_mismatch",
-+ 0x16c9a067 : "rpc_s_call_queued",
-+ 0x16c9a068 : "rpc_s_cannot_set_nodelay",
-+ 0x16c9a069 : "rpc_s_not_rpc_tower",
-+ 0x16c9a06a : "rpc_s_invalid_rpc_protid",
-+ 0x16c9a06b : "rpc_s_invalid_rpc_floor",
-+ 0x16c9a06c : "rpc_s_call_timeout",
-+ 0x16c9a06d : "rpc_s_mgmt_op_disallowed",
-+ 0x16c9a06e : "rpc_s_manager_not_entered",
-+ 0x16c9a06f : "rpc_s_calls_too_large_for_wk_ep",
-+ 0x16c9a070 : "rpc_s_server_too_busy",
-+ 0x16c9a071 : "rpc_s_prot_version_mismatch",
-+ 0x16c9a072 : "rpc_s_rpc_prot_version_mismatch",
-+ 0x16c9a073 : "rpc_s_ss_no_import_cursor",
-+ 0x16c9a074 : "rpc_s_fault_addr_error",
-+ 0x16c9a075 : "rpc_s_fault_context_mismatch",
-+ 0x16c9a076 : "rpc_s_fault_fp_div_by_zero",
-+ 0x16c9a077 : "rpc_s_fault_fp_error",
-+ 0x16c9a078 : "rpc_s_fault_fp_overflow",
-+ 0x16c9a079 : "rpc_s_fault_fp_underflow",
-+ 0x16c9a07a : "rpc_s_fault_ill_inst",
-+ 0x16c9a07b : "rpc_s_fault_int_div_by_zero",
-+ 0x16c9a07c : "rpc_s_fault_int_overflow",
-+ 0x16c9a07d : "rpc_s_fault_invalid_bound",
-+ 0x16c9a07e : "rpc_s_fault_invalid_tag",
-+ 0x16c9a07f : "rpc_s_fault_pipe_closed",
-+ 0x16c9a080 : "rpc_s_fault_pipe_comm_error",
-+ 0x16c9a081 : "rpc_s_fault_pipe_discipline",
-+ 0x16c9a082 : "rpc_s_fault_pipe_empty",
-+ 0x16c9a083 : "rpc_s_fault_pipe_memory",
-+ 0x16c9a084 : "rpc_s_fault_pipe_order",
-+ 0x16c9a085 : "rpc_s_fault_remote_comm_failure",
-+ 0x16c9a086 : "rpc_s_fault_remote_no_memory",
-+ 0x16c9a087 : "rpc_s_fault_unspec",
-+ 0x16c9a088 : "uuid_s_bad_version",
-+ 0x16c9a089 : "uuid_s_socket_failure",
-+ 0x16c9a08a : "uuid_s_getconf_failure",
-+ 0x16c9a08b : "uuid_s_no_address",
-+ 0x16c9a08c : "uuid_s_overrun",
-+ 0x16c9a08d : "uuid_s_internal_error",
-+ 0x16c9a08e : "uuid_s_coding_error",
-+ 0x16c9a08f : "uuid_s_invalid_string_uuid",
-+ 0x16c9a090 : "uuid_s_no_memory",
-+ 0x16c9a091 : "rpc_s_no_more_entries",
-+ 0x16c9a092 : "rpc_s_unknown_ns_error",
-+ 0x16c9a093 : "rpc_s_name_service_unavailable",
-+ 0x16c9a094 : "rpc_s_incomplete_name",
-+ 0x16c9a095 : "rpc_s_group_not_found",
-+ 0x16c9a096 : "rpc_s_invalid_name_syntax",
-+ 0x16c9a097 : "rpc_s_no_more_members",
-+ 0x16c9a098 : "rpc_s_no_more_interfaces",
-+ 0x16c9a099 : "rpc_s_invalid_name_service",
-+ 0x16c9a09a : "rpc_s_no_name_mapping",
-+ 0x16c9a09b : "rpc_s_profile_not_found",
-+ 0x16c9a09c : "rpc_s_not_found",
-+ 0x16c9a09d : "rpc_s_no_updates",
-+ 0x16c9a09e : "rpc_s_update_failed",
-+ 0x16c9a09f : "rpc_s_no_match_exported",
-+ 0x16c9a0a0 : "rpc_s_entry_not_found",
-+ 0x16c9a0a1 : "rpc_s_invalid_inquiry_context",
-+ 0x16c9a0a2 : "rpc_s_interface_not_found",
-+ 0x16c9a0a3 : "rpc_s_group_member_not_found",
-+ 0x16c9a0a4 : "rpc_s_entry_already_exists",
-+ 0x16c9a0a5 : "rpc_s_nsinit_failure",
-+ 0x16c9a0a6 : "rpc_s_unsupported_name_syntax",
-+ 0x16c9a0a7 : "rpc_s_no_more_elements",
-+ 0x16c9a0a8 : "rpc_s_no_ns_permission",
-+ 0x16c9a0a9 : "rpc_s_invalid_inquiry_type",
-+ 0x16c9a0aa : "rpc_s_profile_element_not_found",
-+ 0x16c9a0ab : "rpc_s_profile_element_replaced",
-+ 0x16c9a0ac : "rpc_s_import_already_done",
-+ 0x16c9a0ad : "rpc_s_database_busy",
-+ 0x16c9a0ae : "rpc_s_invalid_import_context",
-+ 0x16c9a0af : "rpc_s_uuid_set_not_found",
-+ 0x16c9a0b0 : "rpc_s_uuid_member_not_found",
-+ 0x16c9a0b1 : "rpc_s_no_interfaces_exported",
-+ 0x16c9a0b2 : "rpc_s_tower_set_not_found",
-+ 0x16c9a0b3 : "rpc_s_tower_member_not_found",
-+ 0x16c9a0b4 : "rpc_s_obj_uuid_not_found",
-+ 0x16c9a0b5 : "rpc_s_no_more_bindings",
-+ 0x16c9a0b6 : "rpc_s_invalid_priority",
-+ 0x16c9a0b7 : "rpc_s_not_rpc_entry",
-+ 0x16c9a0b8 : "rpc_s_invalid_lookup_context",
-+ 0x16c9a0b9 : "rpc_s_binding_vector_full",
-+ 0x16c9a0ba : "rpc_s_cycle_detected",
-+ 0x16c9a0bb : "rpc_s_nothing_to_export",
-+ 0x16c9a0bc : "rpc_s_nothing_to_unexport",
-+ 0x16c9a0bd : "rpc_s_invalid_vers_option",
-+ 0x16c9a0be : "rpc_s_no_rpc_data",
-+ 0x16c9a0bf : "rpc_s_mbr_picked",
-+ 0x16c9a0c0 : "rpc_s_not_all_objs_unexported",
-+ 0x16c9a0c1 : "rpc_s_no_entry_name",
-+ 0x16c9a0c2 : "rpc_s_priority_group_done",
-+ 0x16c9a0c3 : "rpc_s_partial_results",
-+ 0x16c9a0c4 : "rpc_s_no_env_setup",
-+ 0x16c9a0c5 : "twr_s_unknown_sa",
-+ 0x16c9a0c6 : "twr_s_unknown_tower",
-+ 0x16c9a0c7 : "twr_s_not_implemented",
-+ 0x16c9a0c8 : "rpc_s_max_calls_too_small",
-+ 0x16c9a0c9 : "rpc_s_cthread_create_failed",
-+ 0x16c9a0ca : "rpc_s_cthread_pool_exists",
-+ 0x16c9a0cb : "rpc_s_cthread_no_such_pool",
-+ 0x16c9a0cc : "rpc_s_cthread_invoke_disabled",
-+ 0x16c9a0cd : "ept_s_cant_perform_op",
-+ 0x16c9a0ce : "ept_s_no_memory",
-+ 0x16c9a0cf : "ept_s_database_invalid",
-+ 0x16c9a0d0 : "ept_s_cant_create",
-+ 0x16c9a0d1 : "ept_s_cant_access",
-+ 0x16c9a0d2 : "ept_s_database_already_open",
-+ 0x16c9a0d3 : "ept_s_invalid_entry",
-+ 0x16c9a0d4 : "ept_s_update_failed",
-+ 0x16c9a0d5 : "ept_s_invalid_context",
-+ 0x16c9a0d6 : "ept_s_not_registered",
-+ 0x16c9a0d7 : "ept_s_server_unavailable",
-+ 0x16c9a0d8 : "rpc_s_underspecified_name",
-+ 0x16c9a0d9 : "rpc_s_invalid_ns_handle",
-+ 0x16c9a0da : "rpc_s_unknown_error",
-+ 0x16c9a0db : "rpc_s_ss_char_trans_open_fail",
-+ 0x16c9a0dc : "rpc_s_ss_char_trans_short_file",
-+ 0x16c9a0dd : "rpc_s_ss_context_damaged",
-+ 0x16c9a0de : "rpc_s_ss_in_null_context",
-+ 0x16c9a0df : "rpc_s_socket_failure",
-+ 0x16c9a0e0 : "rpc_s_unsupported_protect_level",
-+ 0x16c9a0e1 : "rpc_s_invalid_checksum",
-+ 0x16c9a0e2 : "rpc_s_invalid_credentials",
-+ 0x16c9a0e3 : "rpc_s_credentials_too_large",
-+ 0x16c9a0e4 : "rpc_s_call_id_not_found",
-+ 0x16c9a0e5 : "rpc_s_key_id_not_found",
-+ 0x16c9a0e6 : "rpc_s_auth_bad_integrity",
-+ 0x16c9a0e7 : "rpc_s_auth_tkt_expired",
-+ 0x16c9a0e8 : "rpc_s_auth_tkt_nyv",
-+ 0x16c9a0e9 : "rpc_s_auth_repeat",
-+ 0x16c9a0ea : "rpc_s_auth_not_us",
-+ 0x16c9a0eb : "rpc_s_auth_badmatch",
-+ 0x16c9a0ec : "rpc_s_auth_skew",
-+ 0x16c9a0ed : "rpc_s_auth_badaddr",
-+ 0x16c9a0ee : "rpc_s_auth_badversion",
-+ 0x16c9a0ef : "rpc_s_auth_msg_type",
-+ 0x16c9a0f0 : "rpc_s_auth_modified",
-+ 0x16c9a0f1 : "rpc_s_auth_badorder",
-+ 0x16c9a0f2 : "rpc_s_auth_badkeyver",
-+ 0x16c9a0f3 : "rpc_s_auth_nokey",
-+ 0x16c9a0f4 : "rpc_s_auth_mut_fail",
-+ 0x16c9a0f5 : "rpc_s_auth_baddirection",
-+ 0x16c9a0f6 : "rpc_s_auth_method",
-+ 0x16c9a0f7 : "rpc_s_auth_badseq",
-+ 0x16c9a0f8 : "rpc_s_auth_inapp_cksum",
-+ 0x16c9a0f9 : "rpc_s_auth_field_toolong",
-+ 0x16c9a0fa : "rpc_s_invalid_crc",
-+ 0x16c9a0fb : "rpc_s_binding_incomplete",
-+ 0x16c9a0fc : "rpc_s_key_func_not_allowed",
-+ 0x16c9a0fd : "rpc_s_unknown_stub_rtl_if_vers",
-+ 0x16c9a0fe : "rpc_s_unknown_ifspec_vers",
-+ 0x16c9a0ff : "rpc_s_proto_unsupp_by_auth",
-+ 0x16c9a100 : "rpc_s_authn_challenge_malformed",
-+ 0x16c9a101 : "rpc_s_protect_level_mismatch",
-+ 0x16c9a102 : "rpc_s_no_mepv",
-+ 0x16c9a103 : "rpc_s_stub_protocol_error",
-+ 0x16c9a104 : "rpc_s_class_version_mismatch",
-+ 0x16c9a105 : "rpc_s_helper_not_running",
-+ 0x16c9a106 : "rpc_s_helper_short_read",
-+ 0x16c9a107 : "rpc_s_helper_catatonic",
-+ 0x16c9a108 : "rpc_s_helper_aborted",
-+ 0x16c9a109 : "rpc_s_not_in_kernel",
-+ 0x16c9a10a : "rpc_s_helper_wrong_user",
-+ 0x16c9a10b : "rpc_s_helper_overflow",
-+ 0x16c9a10c : "rpc_s_dg_need_way_auth",
-+ 0x16c9a10d : "rpc_s_unsupported_auth_subtype",
-+ 0x16c9a10e : "rpc_s_wrong_pickle_type",
-+ 0x16c9a10f : "rpc_s_not_listening",
-+ 0x16c9a110 : "rpc_s_ss_bad_buffer",
-+ 0x16c9a111 : "rpc_s_ss_bad_es_action",
-+ 0x16c9a112 : "rpc_s_ss_wrong_es_version",
-+ 0x16c9a113 : "rpc_s_fault_user_defined",
-+ 0x16c9a114 : "rpc_s_ss_incompatible_codesets",
-+ 0x16c9a115 : "rpc_s_tx_not_in_transaction",
-+ 0x16c9a116 : "rpc_s_tx_open_failed",
-+ 0x16c9a117 : "rpc_s_partial_credentials",
-+ 0x16c9a118 : "rpc_s_ss_invalid_codeset_tag",
-+ 0x16c9a119 : "rpc_s_mgmt_bad_type",
-+ 0x16c9a11a : "rpc_s_ss_invalid_char_input",
-+ 0x16c9a11b : "rpc_s_ss_short_conv_buffer",
-+ 0x16c9a11c : "rpc_s_ss_iconv_error",
-+ 0x16c9a11d : "rpc_s_ss_no_compat_codeset",
-+ 0x16c9a11e : "rpc_s_ss_no_compat_charsets",
-+ 0x16c9a11f : "dce_cs_c_ok",
-+ 0x16c9a120 : "dce_cs_c_unknown",
-+ 0x16c9a121 : "dce_cs_c_notfound",
-+ 0x16c9a122 : "dce_cs_c_cannot_open_file",
-+ 0x16c9a123 : "dce_cs_c_cannot_read_file",
-+ 0x16c9a124 : "dce_cs_c_cannot_allocate_memory",
-+ 0x16c9a125 : "rpc_s_ss_cleanup_failed",
-+ 0x16c9a126 : "rpc_svc_desc_general",
-+ 0x16c9a127 : "rpc_svc_desc_mutex",
-+ 0x16c9a128 : "rpc_svc_desc_xmit",
-+ 0x16c9a129 : "rpc_svc_desc_recv",
-+ 0x16c9a12a : "rpc_svc_desc_dg_state",
-+ 0x16c9a12b : "rpc_svc_desc_cancel",
-+ 0x16c9a12c : "rpc_svc_desc_orphan",
-+ 0x16c9a12d : "rpc_svc_desc_cn_state",
-+ 0x16c9a12e : "rpc_svc_desc_cn_pkt",
-+ 0x16c9a12f : "rpc_svc_desc_pkt_quotas",
-+ 0x16c9a130 : "rpc_svc_desc_auth",
-+ 0x16c9a131 : "rpc_svc_desc_source",
-+ 0x16c9a132 : "rpc_svc_desc_stats",
-+ 0x16c9a133 : "rpc_svc_desc_mem",
-+ 0x16c9a134 : "rpc_svc_desc_mem_type",
-+ 0x16c9a135 : "rpc_svc_desc_dg_pktlog",
-+ 0x16c9a136 : "rpc_svc_desc_thread_id",
-+ 0x16c9a137 : "rpc_svc_desc_timestamp",
-+ 0x16c9a138 : "rpc_svc_desc_cn_errors",
-+ 0x16c9a139 : "rpc_svc_desc_conv_thread",
-+ 0x16c9a13a : "rpc_svc_desc_pid",
-+ 0x16c9a13b : "rpc_svc_desc_atfork",
-+ 0x16c9a13c : "rpc_svc_desc_cma_thread",
-+ 0x16c9a13d : "rpc_svc_desc_inherit",
-+ 0x16c9a13e : "rpc_svc_desc_dg_sockets",
-+ 0x16c9a13f : "rpc_svc_desc_timer",
-+ 0x16c9a140 : "rpc_svc_desc_threads",
-+ 0x16c9a141 : "rpc_svc_desc_server_call",
-+ 0x16c9a142 : "rpc_svc_desc_nsi",
-+ 0x16c9a143 : "rpc_svc_desc_dg_pkt",
-+ 0x16c9a144 : "rpc_m_cn_ill_state_trans_sa",
-+ 0x16c9a145 : "rpc_m_cn_ill_state_trans_ca",
-+ 0x16c9a146 : "rpc_m_cn_ill_state_trans_sg",
-+ 0x16c9a147 : "rpc_m_cn_ill_state_trans_cg",
-+ 0x16c9a148 : "rpc_m_cn_ill_state_trans_sr",
-+ 0x16c9a149 : "rpc_m_cn_ill_state_trans_cr",
-+ 0x16c9a14a : "rpc_m_bad_pkt_type",
-+ 0x16c9a14b : "rpc_m_prot_mismatch",
-+ 0x16c9a14c : "rpc_m_frag_toobig",
-+ 0x16c9a14d : "rpc_m_unsupp_stub_rtl_if",
-+ 0x16c9a14e : "rpc_m_unhandled_callstate",
-+ 0x16c9a14f : "rpc_m_call_failed",
-+ 0x16c9a150 : "rpc_m_call_failed_no_status",
-+ 0x16c9a151 : "rpc_m_call_failed_errno",
-+ 0x16c9a152 : "rpc_m_call_failed_s",
-+ 0x16c9a153 : "rpc_m_call_failed_c",
-+ 0x16c9a154 : "rpc_m_errmsg_toobig",
-+ 0x16c9a155 : "rpc_m_invalid_srchattr",
-+ 0x16c9a156 : "rpc_m_nts_not_found",
-+ 0x16c9a157 : "rpc_m_invalid_accbytcnt",
-+ 0x16c9a158 : "rpc_m_pre_v2_ifspec",
-+ 0x16c9a159 : "rpc_m_unk_ifspec",
-+ 0x16c9a15a : "rpc_m_recvbuf_toosmall",
-+ 0x16c9a15b : "rpc_m_unalign_authtrl",
-+ 0x16c9a15c : "rpc_m_unexpected_exc",
-+ 0x16c9a15d : "rpc_m_no_stub_data",
-+ 0x16c9a15e : "rpc_m_eventlist_full",
-+ 0x16c9a15f : "rpc_m_unk_sock_type",
-+ 0x16c9a160 : "rpc_m_unimp_call",
-+ 0x16c9a161 : "rpc_m_invalid_seqnum",
-+ 0x16c9a162 : "rpc_m_cant_create_uuid",
-+ 0x16c9a163 : "rpc_m_pre_v2_ss",
-+ 0x16c9a164 : "rpc_m_dgpkt_pool_corrupt",
-+ 0x16c9a165 : "rpc_m_dgpkt_bad_free",
-+ 0x16c9a166 : "rpc_m_lookaside_corrupt",
-+ 0x16c9a167 : "rpc_m_alloc_fail",
-+ 0x16c9a168 : "rpc_m_realloc_fail",
-+ 0x16c9a169 : "rpc_m_cant_open_file",
-+ 0x16c9a16a : "rpc_m_cant_read_addr",
-+ 0x16c9a16b : "rpc_svc_desc_libidl",
-+ 0x16c9a16c : "rpc_m_ctxrundown_nomem",
-+ 0x16c9a16d : "rpc_m_ctxrundown_exc",
-+ 0x16c9a16e : "rpc_s_fault_codeset_conv_error",
-+ 0x16c9a16f : "rpc_s_no_call_active",
-+ 0x16c9a170 : "rpc_s_cannot_support",
-+ 0x16c9a171 : "rpc_s_no_context_available",
- }
-
- class DCERPCException(Exception):
-@@ -575,7 +575,7 @@ class DCERPCException(Exception):
- key = self.error_code
- if self.error_string is not None:
- return self.error_string
-- if rpc_status_codes.has_key(key):
-+ if key in rpc_status_codes:
- error_msg_short = rpc_status_codes[key]
- return 'DCERPC Runtime Error: code: 0x%x - %s ' % (self.error_code, error_msg_short)
- else:
-@@ -816,9 +816,9 @@ class DCERPC:
- # default is 0: don'fragment. v4 will override this method
- self._max_user_frag = 0
-
-- def send(self, data): raise RuntimeError, 'virtual method. Not implemented in subclass'
-- def recv(self): raise RuntimeError, 'virtual method. Not implemented in subclass'
-- def alter_ctx(self, newUID, bogus_binds = ''): raise RuntimeError, 'virtual method. Not implemented in subclass'
-+ def send(self, data): raise RuntimeError('virtual method. Not implemented in subclass')
-+ def recv(self): raise RuntimeError('virtual method. Not implemented in subclass')
-+ def alter_ctx(self, newUID, bogus_binds = ''): raise RuntimeError('virtual method. Not implemented in subclass')
- def set_credentials(self, username, password, domain = '', lmhash = '', nthash = '', aesKey = '', TGT=None, TGS=None): pass
- def set_auth_level(self, auth_level): pass
- def set_auth_type(self, auth_type, callback = None): pass
-@@ -842,7 +842,7 @@ class DCERPC:
-
- if answer[-4:] != '\x00\x00\x00\x00' and checkError is True:
- error_code = unpack('<L', answer[-4:])[0]
-- if rpc_status_codes.has_key(error_code):
-+ if error_code in rpc_status_codes:
- # This is an error we can handle
- exception = DCERPCException(error_code = error_code)
- else:
-@@ -1022,9 +1022,9 @@ class DCERPC_v5(DCERPC):
- else:
- resp = MSRPCBindNak(resp['pduData'])
- status_code = resp['RejectedReason']
-- if rpc_status_codes.has_key(status_code):
-+ if status_code in rpc_status_codes:
- raise DCERPCException(error_code = status_code)
-- elif rpc_provider_reason.has_key(status_code):
-+ elif status_code in rpc_provider_reason:
- raise DCERPCException("Bind context rejected: %s" % rpc_provider_reason[status_code])
- else:
- raise DCERPCException('Unknown DCE RPC fault status code: %.8x' % status_code)
-@@ -1295,12 +1295,12 @@ class DCERPC_v5(DCERPC):
-
- if response_header['type'] == MSRPC_FAULT and response_header['frag_len'] >= off+4:
- status_code = unpack("<L",response_data[off:off+4])[0]
-- if rpc_status_codes.has_key(status_code):
-+ if status_code in rpc_status_codes:
- raise DCERPCException(rpc_status_codes[status_code])
-- elif rpc_status_codes.has_key(status_code & 0xffff):
-+ elif status_code & 0xffff in rpc_status_codes:
- raise DCERPCException(rpc_status_codes[status_code & 0xffff])
- else:
-- if hresult_errors.ERROR_MESSAGES.has_key(status_code):
-+ if status_code in hresult_errors.ERROR_MESSAGES:
- error_msg_short = hresult_errors.ERROR_MESSAGES[status_code][0]
- error_msg_verbose = hresult_errors.ERROR_MESSAGES[status_code][1]
- raise DCERPCException('%s - %s' % (error_msg_short, error_msg_verbose))
-@@ -1647,14 +1647,14 @@ class DCERPCServer(Thread):
- response = MSRPCRespHeader(data)
- response['type'] = MSRPC_RESPONSE
- # Serve the opnum requested, if not, fails
-- if self._listenUUIDS[self._boundUUID]['CallBacks'].has_key(request['op_num']):
-+ if request['op_num'] in self._listenUUIDS[self._boundUUID]['CallBacks']:
- # Call the function
- returnData = self._listenUUIDS[self._boundUUID]['CallBacks'][request['op_num']](request['pduData'])
- response['pduData'] = returnData
- else:
- LOG.error('Unsupported DCERPC opnum %d called for interface %s' % (request['op_num'], bin_to_uuidtup(self._boundUUID)))
- response['type'] = MSRPC_FAULT
-- response['pduData'] = pack('<L',0x000006E4L)
-+ response['pduData'] = pack('<L',0x000006E4)
- response['frag_len'] = len(response)
- return response
- else:
---- impacket/dcerpc/v5/rrp.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/dcerpc/v5/rrp.py
-@@ -35,7 +35,7 @@ class DCERPCSessionError(DCERPCException):
-
- def __str__( self ):
- key = self.error_code
-- if system_errors.ERROR_MESSAGES.has_key(key):
-+ if key in system_errors.ERROR_MESSAGES:
- error_msg_short = system_errors.ERROR_MESSAGES[key][0]
- error_msg_verbose = system_errors.ERROR_MESSAGES[key][1]
- return 'RRP SessionError: code: 0x%x - %s - %s' % (self.error_code, error_msg_short, error_msg_verbose)
-@@ -813,7 +813,7 @@ def hBaseRegEnumValue(dce, hKey, dwIndex, dataLen=256)
- request['lpcbData'] = dataLen
- request['lpcbLen'] = dataLen
- resp = dce.request(request)
-- except DCERPCSessionError, e:
-+ except DCERPCSessionError as e:
- if retries > 1:
- LOG.debug('Too many retries when calling hBaseRegEnumValue, aborting')
- raise
-@@ -886,7 +886,7 @@ def hBaseRegQueryValue(dce, hKey, lpValueName, dataLen
- request['lpcbData'] = dataLen
- request['lpcbLen'] = dataLen
- resp = dce.request(request)
-- except DCERPCSessionError, e:
-+ except DCERPCSessionError as e:
- if retries > 1:
- LOG.debug('Too many retries when calling hBaseRegQueryValue, aborting')
- raise
---- impacket/dcerpc/v5/samr.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/dcerpc/v5/samr.py
-@@ -38,7 +38,7 @@ class DCERPCSessionError(DCERPCException):
-
- def __str__( self ):
- key = self.error_code
-- if nt_errors.ERROR_MESSAGES.has_key(key):
-+ if key in nt_errors.ERROR_MESSAGES:
- error_msg_short = nt_errors.ERROR_MESSAGES[key][0]
- error_msg_verbose = nt_errors.ERROR_MESSAGES[key][1]
- return 'SAMR SessionError: code: 0x%x - %s - %s' % (self.error_code, error_msg_short, error_msg_verbose)
-@@ -300,9 +300,9 @@ class RPC_STRING(NDRSTRUCT):
- def dump(self, msg = None, indent = 0):
- if msg is None: msg = self.__class__.__name__
- if msg != '':
-- print "%s" % msg,
-+ print("%s" % msg, end=' ')
- # Here just print the data
-- print " %r" % (self['Data']),
-+ print(" %r" % (self['Data']), end=' ')
-
- class PRPC_STRING(NDRPOINTER):
- referent = (
---- impacket/dcerpc/v5/scmr.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/dcerpc/v5/scmr.py
-@@ -35,7 +35,7 @@ class DCERPCSessionError(DCERPCException):
-
- def __str__( self ):
- key = self.error_code
-- if system_errors.ERROR_MESSAGES.has_key(key):
-+ if key in system_errors.ERROR_MESSAGES:
- error_msg_short = system_errors.ERROR_MESSAGES[key][0]
- error_msg_verbose = system_errors.ERROR_MESSAGES[key][1]
- return 'SCMR SessionError: code: 0x%x - %s - %s' % (self.error_code, error_msg_short, error_msg_verbose)
-@@ -1282,7 +1282,7 @@ def hREnumServicesStatusW(dce, hSCManager, dwServiceTy
-
- try:
- resp = dce.request(enumServicesStatus)
-- except DCERPCSessionError, e:
-+ except DCERPCSessionError as e:
- if e.get_error_code() == system_errors.ERROR_MORE_DATA:
- resp = e.get_packet()
- enumServicesStatus['cbBufSize'] = resp['pcbBytesNeeded']
-@@ -1332,7 +1332,7 @@ def hRQueryServiceConfigW(dce, hService):
- queryService['cbBufSize'] = 0
- try:
- resp = dce.request(queryService)
-- except DCERPCSessionError, e:
-+ except DCERPCSessionError as e:
- if e.get_error_code() == system_errors.ERROR_INSUFFICIENT_BUFFER:
- resp = e.get_packet()
- queryService['cbBufSize'] = resp['pcbBytesNeeded']
---- impacket/dcerpc/v5/srvs.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/dcerpc/v5/srvs.py
-@@ -34,7 +34,7 @@ class DCERPCSessionError(DCERPCException):
-
- def __str__( self ):
- key = self.error_code
-- if system_errors.ERROR_MESSAGES.has_key(key):
-+ if key in system_errors.ERROR_MESSAGES:
- error_msg_short = system_errors.ERROR_MESSAGES[key][0]
- error_msg_verbose = system_errors.ERROR_MESSAGES[key][1]
- return 'SRVS SessionError: code: 0x%x - %s - %s' % (self.error_code, error_msg_short, error_msg_verbose)
-@@ -1753,9 +1753,9 @@ class WCHAR_ARRAY(NDRSTRUCT):
- def dump(self, msg = None, indent = 0):
- if msg is None: msg = self.__class__.__name__
- if msg != '':
-- print "%s" % msg,
-+ print("%s" % msg, end=' ')
- # Here just print the data
-- print " %r" % (self['Data']),
-+ print(" %r" % (self['Data']), end=' ')
-
- def __setitem__(self, key, value):
- if key == 'Data':
---- impacket/dcerpc/v5/transport.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/dcerpc/v5/transport.py
-@@ -138,15 +138,15 @@ class DCERPCTransport:
- self.set_credentials('','')
-
- def connect(self):
-- raise RuntimeError, 'virtual function'
-+ raise RuntimeError('virtual function')
- def send(self,data=0, forceWriteAndx = 0, forceRecv = 0):
-- raise RuntimeError, 'virtual function'
-+ raise RuntimeError('virtual function')
- def recv(self, forceRecv = 0, count = 0):
-- raise RuntimeError, 'virtual function'
-+ raise RuntimeError('virtual function')
- def disconnect(self):
-- raise RuntimeError, 'virtual function'
-+ raise RuntimeError('virtual function')
- def get_socket(self):
-- raise RuntimeError, 'virtual function'
-+ raise RuntimeError('virtual function')
-
- def get_connect_timeout(self):
- return self.__connect_timeout
-@@ -256,7 +256,7 @@ class UDPTransport(DCERPCTransport):
- af, socktype, proto, canonname, sa = socket.getaddrinfo(self.getRemoteHost(), self.get_dport(), 0, socket.SOCK_DGRAM)[0]
- self.__socket = socket.socket(af, socktype, proto)
- self.__socket.settimeout(self.get_connect_timeout())
-- except socket.error, msg:
-+ except socket.error as msg:
- self.__socket = None
- raise DCERPCException("Could not connect: %s" % msg)
-
-@@ -297,7 +297,7 @@ class TCPTransport(DCERPCTransport):
- try:
- self.__socket.settimeout(self.get_connect_timeout())
- self.__socket.connect(sa)
-- except socket.error, msg:
-+ except socket.error as msg:
- self.__socket.close()
- raise DCERPCException("Could not connect: %s" % msg)
- return 1
-@@ -305,7 +305,7 @@ class TCPTransport(DCERPCTransport):
- def disconnect(self):
- try:
- self.__socket.close()
-- except socket.error, msg:
-+ except socket.error as msg:
- self.__socket = None
- return 0
- return 1
---- impacket/dns.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/dns.py
-@@ -31,7 +31,7 @@
- import socket
- import struct
-
--from ImpactPacket import ProtocolPacket
-+from .ImpactPacket import ProtocolPacket
-
-
- class DNSFlags():
-@@ -152,7 +152,7 @@ class DNSType():
-
- @staticmethod
- def getTypeName(type):
-- for item, value in DNSType.__dict__.items():
-+ for item, value in list(DNSType.__dict__.items()):
- if value == type:
- return item
-
-@@ -168,7 +168,7 @@ class DNSClass():
-
- @staticmethod
- def getClassName(type):
-- for item, value in DNSClass.__dict__.items():
-+ for item, value in list(DNSClass.__dict__.items()):
- if value == type:
- return item
-
-@@ -613,4 +613,4 @@ if __name__ == "__main__":
-
- for pkt in pkts:
- d = DNS(pkt)
-- print d
-+ print(d)
---- impacket/dot11.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/dot11.py
-@@ -14,8 +14,8 @@ import struct
- import string
- from binascii import crc32
-
--from ImpactPacket import ProtocolPacket
--from Dot11Crypto import RC4
-+from .ImpactPacket import ProtocolPacket
-+from .Dot11Crypto import RC4
-
- frequency = {
- 2412: 1, 2417: 2, 2422: 3, 2427: 4, 2432: 5, 2437: 6, 2442: 7, 2447: 8, 2452: 9,
-@@ -467,7 +467,7 @@ class Dot11(ProtocolPacket):
- self.header.set_byte(0, nb)
-
- def compute_checksum(self,bytes):
-- crcle=crc32(bytes)&0xffffffffL
-+ crcle=crc32(bytes)&0xffffffff
- # ggrr this crc32 is in little endian, convert it to big endian
- crc=struct.pack('<L', crcle)
- # Convert to long
-@@ -1125,7 +1125,7 @@ class Dot11WEPData(ProtocolPacket):
- self.tail.set_long(-4, nb)
-
- def get_computed_icv(self):
-- crcle=crc32(self.body_string)&0xffffffffL
-+ crcle=crc32(self.body_string)&0xffffffff
- # This crc32 is in little endian, convert it to big endian
- crc=struct.pack('<L', crcle)
- # Convert to long
-@@ -2224,7 +2224,7 @@ class Dot11ManagementHelper(ProtocolPacket):
-
- def __calculate_elements_length(self, elements):
- gen_tp=self._find_element(elements, None )
-- (match,offset,length)=gen_tp.next()
-+ (match,offset,length)=next(gen_tp)
- if match != -1:
- # element_id is None, then __find_tagged_parameter must return -1
- raise Exception("Internal Error %s"%match)
-@@ -2234,7 +2234,7 @@ class Dot11ManagementHelper(ProtocolPacket):
- elements=self.get_header_as_string()[self.__HEADER_BASE_SIZE:]
- gen_tp=self._find_element(elements, element_id )
- while True:
-- (match,offset,length)=gen_tp.next()
-+ (match,offset,length)=next(gen_tp)
- if match != 0:
- return
- value_offset=offset+2
-@@ -2245,7 +2245,7 @@ class Dot11ManagementHelper(ProtocolPacket):
- def _get_element(self, element_id):
- gen_get_element=self._get_elements_generator(element_id)
- try:
-- s=gen_get_element.next()
-+ s=next(gen_get_element)
-
- if s is None:
- raise Exception("gen_get_element salio con None in _get_element!!!")
-@@ -2262,7 +2262,7 @@ class Dot11ManagementHelper(ProtocolPacket):
- gen_tp=self._find_element(elements, element_id )
- found=False
- while True:
-- (match,offset,length)=gen_tp.next()
-+ (match,offset,length)=next(gen_tp)
- if match != 0:
- break
- start=self.__HEADER_BASE_SIZE+offset
-@@ -2285,7 +2285,7 @@ class Dot11ManagementHelper(ProtocolPacket):
- gen_tp=self._find_element(elements, element_id )
- found=False
- while True:
-- (match,offset,length)=gen_tp.next()
-+ (match,offset,length)=next(gen_tp)
- start=self.__HEADER_BASE_SIZE+offset
- if match == 0 and replace:
- # Replace
-@@ -2371,7 +2371,7 @@ class Dot11ManagementBeacon(Dot11ManagementHelper):
- if not human_readable:
- return rates
-
-- rates_Mbs=tuple(map(lambda x: (x&0x7F)*0.5,rates))
-+ rates_Mbs=tuple([(x&0x7F)*0.5 for x in rates])
- return rates_Mbs
-
- def set_supported_rates(self, rates):
-@@ -2466,7 +2466,7 @@ class Dot11ManagementBeacon(Dot11ManagementHelper):
- gen_get_element=self._get_elements_generator(DOT11_MANAGEMENT_ELEMENTS.VENDOR_SPECIFIC)
- try:
- while 1:
-- s=gen_get_element.next()
-+ s=next(gen_get_element)
-
- if s is None:
- raise Exception("gen_get_element salio con None!!!")
-@@ -2526,7 +2526,7 @@ class Dot11ManagementProbeRequest(Dot11ManagementHelpe
- if not human_readable:
- return rates
-
-- rates_Mbs=tuple(map(lambda x: (x&0x7F)*0.5,rates))
-+ rates_Mbs=tuple([(x&0x7F)*0.5 for x in rates])
- return rates_Mbs
-
- def set_supported_rates(self, rates):
-@@ -2702,7 +2702,7 @@ class Dot11ManagementAuthentication(Dot11ManagementHel
- gen_get_element=self._get_elements_generator(DOT11_MANAGEMENT_ELEMENTS.VENDOR_SPECIFIC)
- try:
- while 1:
-- s=gen_get_element.next()
-+ s=next(gen_get_element)
-
- if s is None:
- raise Exception("gen_get_element salio con None!!!")
-@@ -2790,7 +2790,7 @@ class Dot11ManagementAssociationRequest(Dot11Managemen
- if not human_readable:
- return rates
-
-- rates_Mbs=tuple(map(lambda x: (x&0x7F)*0.5,rates))
-+ rates_Mbs=tuple([(x&0x7F)*0.5 for x in rates])
- return rates_Mbs
-
- def set_supported_rates(self, rates):
-@@ -2826,7 +2826,7 @@ class Dot11ManagementAssociationRequest(Dot11Managemen
- gen_get_element=self._get_elements_generator(DOT11_MANAGEMENT_ELEMENTS.VENDOR_SPECIFIC)
- try:
- while 1:
-- s=gen_get_element.next()
-+ s=next(gen_get_element)
-
- if s is None:
- raise Exception("gen_get_element salio con None!!!")
-@@ -2909,7 +2909,7 @@ class Dot11ManagementAssociationResponse(Dot11Manageme
- if not human_readable:
- return rates
-
-- rates_Mbs=tuple(map(lambda x: (x&0x7F)*0.5,rates))
-+ rates_Mbs=tuple([(x&0x7F)*0.5 for x in rates])
- return rates_Mbs
-
- def set_supported_rates(self, rates):
-@@ -2934,7 +2934,7 @@ class Dot11ManagementAssociationResponse(Dot11Manageme
- gen_get_element=self._get_elements_generator(DOT11_MANAGEMENT_ELEMENTS.VENDOR_SPECIFIC)
- try:
- while 1:
-- s=gen_get_element.next()
-+ s=next(gen_get_element)
-
- if s is None:
- raise Exception("gen_get_element salio con None!!!")
-@@ -3024,7 +3024,7 @@ class Dot11ManagementReassociationRequest(Dot11Managem
- if not human_readable:
- return rates
-
-- rates_Mbs=tuple(map(lambda x: (x&0x7F)*0.5,rates))
-+ rates_Mbs=tuple([(x&0x7F)*0.5 for x in rates])
- return rates_Mbs
-
- def set_supported_rates(self, rates):
-@@ -3060,7 +3060,7 @@ class Dot11ManagementReassociationRequest(Dot11Managem
- gen_get_element=self._get_elements_generator(DOT11_MANAGEMENT_ELEMENTS.VENDOR_SPECIFIC)
- try:
- while 1:
-- s=gen_get_element.next()
-+ s=next(gen_get_element)
-
- if s is None:
- raise Exception("gen_get_element salio con None!!!")
---- impacket/ese.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/ese.py
-@@ -435,17 +435,17 @@ def hexdump(data):
- strLen = len(x)
- i = 0
- while i < strLen:
-- print "%04x " % i,
-+ print("%04x " % i, end=' ')
- for j in range(16):
- if i+j < strLen:
-- print "%02X" % ord(x[i+j]),
-+ print("%02X" % ord(x[i+j]), end=' ')
-
- else:
-- print " ",
-+ print(" ", end=' ')
- if j%16 == 7:
-- print "",
-- print " ",
-- print ''.join(pretty_print(x) for x in x[i:i+16] )
-+ print("", end=' ')
-+ print(" ", end=' ')
-+ print(''.join(pretty_print(x) for x in x[i:i+16] ))
- i += 16
-
- def getUnixTime(t):
-@@ -464,35 +464,35 @@ class ESENT_PAGE:
- def printFlags(self):
- flags = self.record['PageFlags']
- if flags & FLAGS_EMPTY:
-- print "\tEmpty"
-+ print("\tEmpty")
- if flags & FLAGS_INDEX:
-- print "\tIndex"
-+ print("\tIndex")
- if flags & FLAGS_LEAF:
-- print "\tLeaf"
-+ print("\tLeaf")
- else:
-- print "\tBranch"
-+ print("\tBranch")
- if flags & FLAGS_LONG_VALUE:
-- print "\tLong Value"
-+ print("\tLong Value")
- if flags & FLAGS_NEW_CHECKSUM:
-- print "\tNew Checksum"
-+ print("\tNew Checksum")
- if flags & FLAGS_NEW_FORMAT:
-- print "\tNew Format"
-+ print("\tNew Format")
- if flags & FLAGS_PARENT:
-- print "\tParent"
-+ print("\tParent")
- if flags & FLAGS_ROOT:
-- print "\tRoot"
-+ print("\tRoot")
- if flags & FLAGS_SPACE_TREE:
-- print "\tSpace Tree"
-+ print("\tSpace Tree")
-
- def dump(self):
- baseOffset = len(self.record)
- self.record.dump()
- tags = self.data[-4*self.record['FirstAvailablePageTag']:]
-
-- print "FLAGS: "
-+ print("FLAGS: ")
- self.printFlags()
-
-- print
-+ print()
-
- for i in range(self.record['FirstAvailablePageTag']):
- tag = tags[-4:]
-@@ -508,7 +508,7 @@ class ESENT_PAGE:
- pageFlags = (unpack('<H', tag[2:])[0] & 0xe000) >> 13
- valueOffset = unpack('<H',tag[2:])[0] & 0x1fff
-
-- print "TAG %-8d offset:0x%-6x flags:0x%-4x valueSize:0x%x" % (i,valueOffset,pageFlags,valueSize)
-+ print("TAG %-8d offset:0x%-6x flags:0x%-4x valueSize:0x%x" % (i,valueOffset,pageFlags,valueSize))
- #hexdump(self.getTag(i)[1])
- tags = tags[:-4]
-
-@@ -620,21 +620,21 @@ class ESENT_DB:
- def printCatalog(self):
- indent = ' '
-
-- print "Database version: 0x%x, 0x%x" % (self.__DBHeader['Version'], self.__DBHeader['FileFormatRevision'] )
-- print "Page size: %d " % self.__pageSize
-- print "Number of pages: %d" % self.__totalPages
-- print
-- print "Catalog for %s" % self.__fileName
-- for table in self.__tables.keys():
-- print "[%s]" % table
-- print "%sColumns " % indent
-- for column in self.__tables[table]['Columns'].keys():
-+ print("Database version: 0x%x, 0x%x" % (self.__DBHeader['Version'], self.__DBHeader['FileFormatRevision'] ))
-+ print("Page size: %d " % self.__pageSize)
-+ print("Number of pages: %d" % self.__totalPages)
-+ print()
-+ print("Catalog for %s" % self.__fileName)
-+ for table in list(self.__tables.keys()):
-+ print("[%s]" % table)
-+ print("%sColumns " % indent)
-+ for column in list(self.__tables[table]['Columns'].keys()):
- record = self.__tables[table]['Columns'][column]['Record']
-- print "%s%-5d%-30s%s" % (indent*2, record['Identifier'], column,ColumnTypeToName[record['ColumnType']])
-- print "%sIndexes"% indent
-- for index in self.__tables[table]['Indexes'].keys():
-- print "%s%s" % (indent*2, index)
-- print ""
-+ print("%s%-5d%-30s%s" % (indent*2, record['Identifier'], column,ColumnTypeToName[record['ColumnType']]))
-+ print("%sIndexes"% indent)
-+ for index in list(self.__tables[table]['Indexes'].keys()):
-+ print("%s%s" % (indent*2, index))
-+ print("")
-
- def __addItem(self, entry):
- dataDefinitionHeader = ESENT_DATA_DEFINITION_HEADER(entry['EntryData'])
-@@ -846,7 +846,7 @@ class ESENT_DB:
-
- columns = cursor['TableData']['Columns']
-
-- for column in columns.keys():
-+ for column in list(columns.keys()):
- columnRecord = columns[column]['Record']
- #columnRecord.dump()
- if columnRecord['Identifier'] <= dataDefinitionHeader['LastFixedSize']:
-@@ -900,17 +900,17 @@ class ESENT_DB:
-
- # Calculate length of variable items
- # Ugly.. should be redone
-- prevKey = taggedItems.keys()[0]
-+ prevKey = list(taggedItems.keys())[0]
- for i in range(1,len(taggedItems)):
- offset0, length, flags = taggedItems[prevKey]
-- offset, _, _ = taggedItems.items()[i][1]
-+ offset, _, _ = list(taggedItems.items())[i][1]
- taggedItems[prevKey] = (offset0, offset-offset0, flags)
- #print "ID: %d, Offset: %d, Len: %d, flags: %d" % (prevKey, offset0, offset-offset0, flags)
-- prevKey = taggedItems.keys()[i]
-+ prevKey = list(taggedItems.keys())[i]
- taggedItemsParsed = True
-
- # Tagged data type
-- if taggedItems.has_key(columnRecord['Identifier']):
-+ if columnRecord['Identifier'] in taggedItems:
- offsetItem = variableDataBytesProcessed + variableSizeOffset + taggedItems[columnRecord['Identifier']][0]
- itemSize = taggedItems[columnRecord['Identifier']][1]
- # If item have flags, we should skip them
---- impacket/examples/ntlmrelayx/attacks/__init__.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/examples/ntlmrelayx/attacks/__init__.py
-@@ -59,7 +59,7 @@ for file in pkg_resources.resource_listdir('impacket.e
- else:
- # Single class
- pluginClasses.add(getattr(module, getattr(module, 'PROTOCOL_ATTACK_CLASS')))
-- except Exception, e:
-+ except Exception as e:
- LOG.debug(e)
- pass
-
-@@ -67,6 +67,6 @@ for file in pkg_resources.resource_listdir('impacket.e
- for pluginName in pluginClass.PLUGIN_NAMES:
- LOG.debug('Protocol Attack %s loaded..' % pluginName)
- PROTOCOL_ATTACKS[pluginName] = pluginClass
-- except Exception, e:
-+ except Exception as e:
- LOG.debug(str(e))
-
---- impacket/examples/ntlmrelayx/attacks/httpattack.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/examples/ntlmrelayx/attacks/httpattack.py
-@@ -34,9 +34,9 @@ class HTTPAttack(ProtocolAttack):
- #for example with:
- result = self.client.request("GET", "/")
- r1 = self.client.getresponse()
-- print r1.status, r1.reason
-+ print(r1.status, r1.reason)
- data1 = r1.read()
-- print data1
-+ print(data1)
-
- #Remove protocol from target name
- #safeTargetName = self.client.target.replace('http://','').replace('https://','')
---- impacket/examples/ntlmrelayx/attacks/smbattack.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/examples/ntlmrelayx/attacks/smbattack.py
-@@ -79,7 +79,7 @@ class SMBAttack(ProtocolAttack):
-
- remoteOps = RemoteOperations(self.__SMBConnection, False)
- remoteOps.enableRegistry()
-- except Exception, e:
-+ except Exception as e:
- if "rpc_s_access_denied" in str(e): # user doesn't have correct privileges
- if self.config.enumLocalAdmins:
- LOG.info("Relayed user doesn't have admin on {}. Attempting to enumerate users who do...".format(self.__SMBConnection.getRemoteHost()))
-@@ -89,7 +89,7 @@ class SMBAttack(ProtocolAttack):
- LOG.info("Host {} has the following local admins (hint: try relaying one of them here...)".format(self.__SMBConnection.getRemoteHost()))
- for name in localAdminNames:
- LOG.info("Host {} local admin member: {} ".format(self.__SMBConnection.getRemoteHost(), name))
-- except DCERPCException, e:
-+ except DCERPCException as e:
- LOG.info("SAMR access denied")
- return
- # Something else went wrong. aborting
-@@ -103,7 +103,7 @@ class SMBAttack(ProtocolAttack):
- self.__answerTMP = ''
- self.__SMBConnection.getFile('ADMIN$', 'Temp\\__output', self.__answer)
- self.__SMBConnection.deleteFile('ADMIN$', 'Temp\\__output')
-- print self.__answerTMP.decode(self.config.encoding, 'replace')
-+ print(self.__answerTMP.decode(self.config.encoding, 'replace'))
- else:
- bootKey = remoteOps.getBootKey()
- remoteOps._RemoteOperations__serviceDeleted = True
-@@ -112,7 +112,7 @@ class SMBAttack(ProtocolAttack):
- samHashes.dump()
- samHashes.export(self.__SMBConnection.getRemoteHost()+'_samhashes')
- LOG.info("Done dumping SAM hashes for host: %s", self.__SMBConnection.getRemoteHost())
-- except Exception, e:
-+ except Exception as e:
- LOG.error(str(e))
- finally:
- if samHashes is not None:
---- impacket/examples/ntlmrelayx/clients/__init__.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/examples/ntlmrelayx/clients/__init__.py
-@@ -89,13 +89,13 @@ for file in pkg_resources.resource_listdir('impacket.e
- pluginClasses.add(getattr(module, pluginClass))
- else:
- pluginClasses.add(getattr(module, getattr(module, 'PROTOCOL_CLIENT_CLASS')))
-- except Exception, e:
-+ except Exception as e:
- LOG.debug(e)
- pass
-
- for pluginClass in pluginClasses:
- LOG.info('Protocol Client %s loaded..' % pluginClass.PLUGIN_NAME)
- PROTOCOL_CLIENTS[pluginClass.PLUGIN_NAME] = pluginClass
-- except Exception, e:
-+ except Exception as e:
- LOG.debug(str(e))
-
---- impacket/examples/ntlmrelayx/servers/httprelayserver.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/examples/ntlmrelayx/servers/httprelayserver.py
-@@ -13,8 +13,8 @@
- # Description:
- # This is the HTTP server which relays the NTLMSSP messages to other protocols
-
--import SimpleHTTPServer
--import SocketServer
-+import http.server
-+import socketserver
- import socket
- import base64
- import random
-@@ -31,7 +31,7 @@ from impacket.examples.ntlmrelayx.servers.socksserver
-
- class HTTPRelayServer(Thread):
-
-- class HTTPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
-+ class HTTPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
- def __init__(self, server_address, RequestHandlerClass, config):
- self.config = config
- self.daemon_threads = True
-@@ -39,9 +39,9 @@ class HTTPRelayServer(Thread):
- self.address_family = socket.AF_INET6
- # Tracks the number of times authentication was prompted for WPAD per client
- self.wpad_counters = {}
-- SocketServer.TCPServer.__init__(self,server_address, RequestHandlerClass)
-+ socketserver.TCPServer.__init__(self,server_address, RequestHandlerClass)
-
-- class HTTPHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
-+ class HTTPHandler(http.server.SimpleHTTPRequestHandler):
- def __init__(self,request, client_address, server):
- self.server = server
- self.protocol_version = 'HTTP/1.1'
-@@ -60,17 +60,17 @@ class HTTPRelayServer(Thread):
- self.target = self.server.config.target.getTarget(self.server.config.randomtargets)
- LOG.info("HTTPD: Received connection from %s, attacking target %s://%s" % (client_address[0] ,self.target.scheme, self.target.netloc))
- try:
-- SimpleHTTPServer.SimpleHTTPRequestHandler.__init__(self,request, client_address, server)
-- except Exception, e:
-+ http.server.SimpleHTTPRequestHandler.__init__(self,request, client_address, server)
-+ except Exception as e:
- LOG.error(str(e))
- LOG.debug(traceback.format_exc())
-
- def handle_one_request(self):
- try:
-- SimpleHTTPServer.SimpleHTTPRequestHandler.handle_one_request(self)
-+ http.server.SimpleHTTPRequestHandler.handle_one_request(self)
- except KeyboardInterrupt:
- raise
-- except Exception, e:
-+ except Exception as e:
- LOG.error('Exception in HTTP request handler: %s' % e)
- LOG.debug(traceback.format_exc())
-
-@@ -80,7 +80,7 @@ class HTTPRelayServer(Thread):
- def send_error(self, code, message=None):
- if message.find('RPC_OUT') >=0 or message.find('RPC_IN'):
- return self.do_GET()
-- return SimpleHTTPServer.SimpleHTTPRequestHandler.send_error(self,code,message)
-+ return http.server.SimpleHTTPRequestHandler.send_error(self,code,message)
-
- def serve_wpad(self):
- wpadResponse = self.wpad % (self.server.config.wpad_host, self.server.config.wpad_host)
-@@ -252,7 +252,7 @@ class HTTPRelayServer(Thread):
- return
-
- def do_ntlm_negotiate(self, token, proxy):
-- if self.server.config.protocolClients.has_key(self.target.scheme.upper()):
-+ if self.target.scheme.upper() in self.server.config.protocolClients:
- self.client = self.server.config.protocolClients[self.target.scheme.upper()](self.server.config, self.target)
- # If connection failed, return
- if not self.client.initConnection():
---- impacket/examples/ntlmrelayx/servers/smbrelayserver.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/examples/ntlmrelayx/servers/smbrelayserver.py
-@@ -15,7 +15,7 @@
- # to other protocols
-
- from threading import Thread
--import ConfigParser
-+import configparser
- import struct
- import logging
- import time
-@@ -50,7 +50,7 @@ class SMBRelayServer(Thread):
- self.proxyTranslator = None
-
- # Here we write a mini config for the server
-- smbConfig = ConfigParser.ConfigParser()
-+ smbConfig = configparser.ConfigParser()
- smbConfig.add_section('global')
- smbConfig.set('global','server_name','server_name')
- smbConfig.set('global','server_os','UNIX')
-@@ -107,7 +107,7 @@ class SMBRelayServer(Thread):
- # SMBRelay
- # Get the data for all connections
- smbData = smbServer.getConnectionData('SMBRelay', False)
-- if smbData.has_key(self.target):
-+ if self.target in smbData:
- # Remove the previous connection and use the last one
- smbClient = smbData[self.target]['SMBClient']
- del smbClient
-@@ -125,7 +125,7 @@ class SMBRelayServer(Thread):
- extSec = True
- # Init the correct client for our target
- client = self.init_client(extSec)
-- except Exception, e:
-+ except Exception as e:
- LOG.error("Connection against target %s://%s FAILED: %s" % (self.target.scheme, self.target.netloc, str(e)))
- self.targetprocessor.logTarget(self.target)
- else:
-@@ -218,7 +218,7 @@ class SMBRelayServer(Thread):
- if mechType != TypesMech['NTLMSSP - Microsoft NTLM Security Support Provider'] and \
- mechType != TypesMech['NEGOEX - SPNEGO Extended Negotiation Security Mechanism']:
- # Nope, do we know it?
-- if MechTypes.has_key(mechType):
-+ if mechType in MechTypes:
- mechStr = MechTypes[mechType]
- else:
- mechStr = hexlify(mechType)
-@@ -258,7 +258,7 @@ class SMBRelayServer(Thread):
- client = smbData[self.target]['SMBClient']
- try:
- challengeMessage = self.do_ntlm_negotiate(client, token)
-- except Exception, e:
-+ except Exception as e:
- # Log this target as processed for this client
- self.targetprocessor.logTarget(self.target)
- # Raise exception again to pass it on to the SMB server
-@@ -376,7 +376,7 @@ class SMBRelayServer(Thread):
- # Get the data for all connections
- smbData = smbServer.getConnectionData('SMBRelay', False)
-
-- if smbData.has_key(self.target):
-+ if self.target in smbData:
- # Remove the previous connection and use the last one
- smbClient = smbData[self.target]['SMBClient']
- del smbClient
-@@ -398,7 +398,7 @@ class SMBRelayServer(Thread):
-
- #Init the correct client for our target
- client = self.init_client(extSec)
-- except Exception, e:
-+ except Exception as e:
- LOG.error("Connection against target %s://%s FAILED: %s" % (self.target.scheme, self.target.netloc, str(e)))
- self.targetprocessor.logTarget(self.target)
- else:
-@@ -457,7 +457,7 @@ class SMBRelayServer(Thread):
- client = smbData[self.target]['SMBClient']
- try:
- challengeMessage = self.do_ntlm_negotiate(client,token)
-- except Exception, e:
-+ except Exception as e:
- # Log this target as processed for this client
- self.targetprocessor.logTarget(self.target)
- # Raise exception again to pass it on to the SMB server
-@@ -645,7 +645,7 @@ class SMBRelayServer(Thread):
-
- #Initialize the correct client for the relay target
- def init_client(self,extSec):
-- if self.config.protocolClients.has_key(self.target.scheme.upper()):
-+ if self.target.scheme.upper() in self.config.protocolClients:
- client = self.config.protocolClients[self.target.scheme.upper()](self.config, self.target, extendedSecurity = extSec)
- client.initConnection()
- else:
---- impacket/examples/ntlmrelayx/servers/socksplugins/imap.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/examples/ntlmrelayx/servers/socksplugins/imap.py
-@@ -41,8 +41,8 @@ class IMAPSocksRelay(SocksRelay):
- return 143
-
- def getServerCapabilities(self):
-- for key in self.activeRelays.keys():
-- if self.activeRelays[key].has_key('protocolClient'):
-+ for key in list(self.activeRelays.keys()):
-+ if 'protocolClient' in self.activeRelays[key]:
- return self.activeRelays[key]['protocolClient'].session.capabilities
-
- def initConnection(self):
-@@ -92,7 +92,7 @@ class IMAPSocksRelay(SocksRelay):
- return False
-
- # Check if we have a connection for the user
-- if self.activeRelays.has_key(self.username):
-+ if self.username in self.activeRelays:
- # Check the connection is not inUse
- if self.activeRelays[self.username]['inUse'] is True:
- LOG.error('IMAP: Connection for %s@%s(%s) is being used at the moment!' % (
-@@ -119,9 +119,9 @@ class IMAPSocksRelay(SocksRelay):
- while True:
- try:
- data = self.socksSocket.recv(self.packetSize)
-- except Exception, e:
-+ except Exception as e:
- # Socks socket (client) closed connection or something else. Not fatal for killing the existing relay
-- print keyword, tag
-+ print(keyword, tag)
- LOG.debug('IMAP: sockSocket recv(): %s' % (str(e)))
- break
- # If this returns with an empty string, it means the socket was closed
-@@ -215,14 +215,14 @@ class IMAPSocksRelay(SocksRelay):
- while keyword != tag and keyword != '+':
- try:
- data = self.relaySocketFile.readline()
-- except Exception, e:
-+ except Exception as e:
- # This didn't break the connection to the server, don't make it fatal
- LOG.debug("IMAP relaySocketFile: %s" % str(e))
- return False
- keyword = data.split(' ', 2)[0]
- try:
- self.socksSocket.sendall(data)
-- except Exception, e:
-+ except Exception as e:
- LOG.debug("IMAP socksSocket: %s" % str(e))
- return False
-
---- impacket/examples/ntlmrelayx/servers/socksplugins/imaps.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/examples/ntlmrelayx/servers/socksplugins/imaps.py
-@@ -43,7 +43,7 @@ class IMAPSSocksRelay(SSLServerMixin, IMAPSocksRelay):
- # Shut down TLS connection
- self.socksSocket.shutdown()
- return False
-- except Exception, e:
-+ except Exception as e:
- LOG.debug('IMAPS: %s' % str(e))
- return False
- # Change our outgoing socket to the SSL object of IMAP4_SSL
---- impacket/examples/ntlmrelayx/servers/socksplugins/mssql.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/examples/ntlmrelayx/servers/socksplugins/mssql.py
-@@ -114,7 +114,7 @@ class MSSQLSocksRelay(SocksRelay):
- self.username = ('/%s' % login['UserName']).upper()
-
- # Check if we have a connection for the user
-- if self.activeRelays.has_key(self.username):
-+ if self.username in self.activeRelays:
- # Check the connection is not inUse
- if self.activeRelays[self.username]['inUse'] is True:
- LOG.error('MSSQL: Connection for %s@%s(%s) is being used at the moment!' % (
-@@ -152,7 +152,7 @@ class MSSQLSocksRelay(SocksRelay):
- tds = self.session.recvTDS()
- # 4. Send it back to the client
- self.sendTDS(tds['Type'], tds['Data'], 0)
-- except Exception, e:
-+ except Exception as e:
- # Probably an error here
- if LOG.level == logging.DEBUG:
- import traceback
---- impacket/examples/ntlmrelayx/servers/socksplugins/smb.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/examples/ntlmrelayx/servers/socksplugins/smb.py
-@@ -54,8 +54,8 @@ class SMBSocksRelay(SocksRelay):
-
- # Let's verify the target's server SMB version, will need it for later.
- # We're assuming all connections to the target server use the same SMB version
-- for key in activeRelays.keys():
-- if activeRelays[key].has_key('protocolClient'):
-+ for key in list(activeRelays.keys()):
-+ if 'protocolClient' in activeRelays[key]:
- self.serverDialect = activeRelays[key]['protocolClient'].session.getDialect()
- self.isSMB2 = activeRelays[key]['protocolClient'].session.getDialect() is not SMB_DIALECT
- break
-@@ -134,7 +134,7 @@ class SMBSocksRelay(SocksRelay):
- data2 = self.clientConnection.getSMBServer()._sess.recv_packet(timeout=1).get_trailer()
- self.__NBSession.send_packet(str(data))
- data = data2
-- except Exception, e:
-+ except Exception as e:
- if str(e).find('timed out') > 0:
- pass
- else:
-@@ -151,7 +151,7 @@ class SMBSocksRelay(SocksRelay):
- packet['Flags'] &= ~(SMB2_FLAGS_SIGNED)
-
- # Let's be sure the TreeConnect Table is filled with fake data
-- if self.clientConnection.getSMBServer()._Session['TreeConnectTable'].has_key(packet['TreeID']) is False:
-+ if (packet['TreeID'] in self.clientConnection.getSMBServer()._Session['TreeConnectTable']) is False:
- self.clientConnection.getSMBServer()._Session['TreeConnectTable'][packet['TreeID']] = {}
- self.clientConnection.getSMBServer()._Session['TreeConnectTable'][packet['TreeID']]['EncryptData'] = False
-
-@@ -182,12 +182,12 @@ class SMBSocksRelay(SocksRelay):
- try:
- packet = NewSMBPacket(data=data.get_trailer())
- smbCommand = SMBCommand(packet['Data'][0])
-- except Exception, e:
-+ except Exception as e:
- # Maybe a SMB2 packet?
- try:
- packet = SMB2Packet(data = data.get_trailer())
- smbCommand = None
-- except Exception, e:
-+ except Exception as e:
- LOG.error('SOCKS: %s' % str(e))
-
- return packet, smbCommand
-@@ -355,7 +355,7 @@ class SMBSocksRelay(SocksRelay):
- username = ('%s/%s' % (authenticateMessage['domain_name'], authenticateMessage['user_name'])).upper()
-
- # Check if we have a connection for the user
-- if self.activeRelays.has_key(username):
-+ if username in self.activeRelays:
- LOG.info('SOCKS: Proxying client session for %s@%s(445)' % (username, self.targetHost))
- errorCode = STATUS_SUCCESS
- smbClient = self.activeRelays[username]['protocolClient'].session
-@@ -417,7 +417,7 @@ class SMBSocksRelay(SocksRelay):
- mechType = blob['MechTypes'][0]
- if mechType != TypesMech['NTLMSSP - Microsoft NTLM Security Support Provider']:
- # Nope, do we know it?
-- if MechTypes.has_key(mechType):
-+ if mechType in MechTypes:
- mechStr = MechTypes[mechType]
- else:
- mechStr = hexlify(mechType)
-@@ -509,7 +509,7 @@ class SMBSocksRelay(SocksRelay):
- respToken = SPNEGO_NegTokenResp()
-
- # Check if we have a connection for the user
-- if self.activeRelays.has_key(username):
-+ if username in self.activeRelays:
- LOG.info('SOCKS: Proxying client session for %s@%s(445)' % (username, self.targetHost))
- errorCode = STATUS_SUCCESS
- smbClient = self.activeRelays[username]['protocolClient'].session
---- impacket/examples/ntlmrelayx/servers/socksserver.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/examples/ntlmrelayx/servers/socksserver.py
-@@ -18,11 +18,11 @@
- # [ ] Port handlers should be dynamically subscribed, and coded in another place. This will help coding
- # proxies for different protocols (e.g. MSSQL)
-
--import SocketServer
-+import socketserver
- import socket
- import time
- import logging
--from Queue import Queue
-+from queue import Queue
- from struct import unpack, pack
- from threading import Timer, Thread
-
-@@ -177,23 +177,23 @@ class SocksRelay:
- def keepAliveTimer(server):
- LOG.debug('KeepAlive Timer reached. Updating connections')
-
-- for target in server.activeRelays.keys():
-- for port in server.activeRelays[target].keys():
-+ for target in list(server.activeRelays.keys()):
-+ for port in list(server.activeRelays[target].keys()):
- # Now cycle through the users
-- for user in server.activeRelays[target][port].keys():
-+ for user in list(server.activeRelays[target][port].keys()):
- if user != 'data':
- # Let's call the keepAlive method for the handler to keep the connection alive
- if server.activeRelays[target][port][user]['inUse'] is False:
- LOG.debug('Calling keepAlive() for %s@%s:%s' % (user, target, port))
- try:
- server.activeRelays[target][port][user]['protocolClient'].keepAlive()
-- except Exception, e:
-+ except Exception as e:
- LOG.debug('SOCKS: %s' % str(e))
- if str(e).find('Broken pipe') >= 0 or str(e).find('reset by peer') >=0 or \
- str(e).find('Invalid argument') >= 0 or str(e).find('Server not connected') >=0:
- # Connection died, taking out of the active list
- del (server.activeRelays[target][port][user])
-- if len(server.activeRelays[target][port].keys()) == 1:
-+ if len(list(server.activeRelays[target][port].keys())) == 1:
- del (server.activeRelays[target][port])
- LOG.debug('Removing active relay for %s@%s:%s' % (user, target, port))
- else:
-@@ -204,12 +204,12 @@ def activeConnectionsWatcher(server):
- # This call blocks until there is data, so it doesn't loop endlessly
- target, port, userName, client, data = activeConnections.get()
- # ToDo: Careful. Dicts are not thread safe right?
-- if server.activeRelays.has_key(target) is not True:
-+ if (target in server.activeRelays) is not True:
- server.activeRelays[target] = {}
-- if server.activeRelays[target].has_key(port) is not True:
-+ if (port in server.activeRelays[target]) is not True:
- server.activeRelays[target][port] = {}
-
-- if server.activeRelays[target][port].has_key(userName) is not True:
-+ if (userName in server.activeRelays[target][port]) is not True:
- LOG.info('SOCKS: Adding %s@%s(%s) to active SOCKS connection. Enjoy' % (userName, target, port))
- server.activeRelays[target][port][userName] = {}
- # This is the protocolClient. Needed because we need to access the killConnection from time to time.
-@@ -233,7 +233,7 @@ def webService(server):
-
- @app.route('/')
- def index():
-- print server.activeRelays
-+ print(server.activeRelays)
- return "Relays available: %s!" % (len(server.activeRelays))
-
- @app.route('/ntlmrelayx/api/v1.0/relays', methods=['GET'])
-@@ -253,7 +253,7 @@ def webService(server):
-
- app.run(host='0.0.0.0', port=9090)
-
--class SocksRequestHandler(SocketServer.BaseRequestHandler):
-+class SocksRequestHandler(socketserver.BaseRequestHandler):
- def __init__(self, request, client_address, server):
- self.__socksServer = server
- self.__ip, self.__port = client_address
-@@ -262,7 +262,7 @@ class SocksRequestHandler(SocketServer.BaseRequestHand
- self.targetHost = None
- self.targetPort = None
- self.__NBSession= None
-- SocketServer.BaseRequestHandler.__init__(self, request, client_address, server)
-+ socketserver.BaseRequestHandler.__init__(self, request, client_address, server)
-
- def sendReplyError(self, error = replyField.CONNECTION_REFUSED):
-
-@@ -323,8 +323,8 @@ class SocksRequestHandler(SocketServer.BaseRequestHand
- if self.targetPort != 53:
- # Do we have an active connection for the target host/port asked?
- # Still don't know the username, but it's a start
-- if self.__socksServer.activeRelays.has_key(self.targetHost):
-- if self.__socksServer.activeRelays[self.targetHost].has_key(self.targetPort) is not True:
-+ if self.targetHost in self.__socksServer.activeRelays:
-+ if (self.targetPort in self.__socksServer.activeRelays[self.targetHost]) is not True:
- LOG.error('SOCKS: Don\'t have a relay for %s(%s)' % (self.targetHost, self.targetPort))
- self.sendReplyError(replyField.CONNECTION_REFUSED)
- return
-@@ -340,7 +340,7 @@ class SocksRequestHandler(SocketServer.BaseRequestHand
- try:
- LOG.debug('SOCKS: Connecting to %s(%s)' %(self.targetHost, self.targetPort))
- s.connect((self.targetHost, self.targetPort))
-- except Exception, e:
-+ except Exception as e:
- if LOG.level == logging.DEBUG:
- import traceback
- traceback.print_exc()
-@@ -366,13 +366,13 @@ class SocksRequestHandler(SocketServer.BaseRequestHand
- s.sendall(data)
- data = s.recv(8192)
- self.__connSocket.sendall(data)
-- except Exception, e:
-+ except Exception as e:
- if LOG.level == logging.DEBUG:
- import traceback
- traceback.print_exc()
- LOG.error('SOCKS: ', str(e))
-
-- if self.__socksServer.socksPlugins.has_key(self.targetPort):
-+ if self.targetPort in self.__socksServer.socksPlugins:
- LOG.debug('Handler for port %s found %s' % (self.targetPort, self.__socksServer.socksPlugins[self.targetPort]))
- relay = self.__socksServer.socksPlugins[self.targetPort](self.targetHost, self.targetPort, self.__connSocket,
- self.__socksServer.activeRelays[self.targetHost][self.targetPort])
-@@ -402,7 +402,7 @@ class SocksRequestHandler(SocketServer.BaseRequestHand
- self.__socksServer.activeRelays[self.targetHost][self.targetPort][relay.username]['inUse'] = True
-
- relay.tunnelConnection()
-- except Exception, e:
-+ except Exception as e:
- if LOG.level == logging.DEBUG:
- import traceback
- traceback.print_exc()
-@@ -411,7 +411,7 @@ class SocksRequestHandler(SocketServer.BaseRequestHand
- str(e).find('Invalid argument') >= 0:
- # Connection died, taking out of the active list
- del(self.__socksServer.activeRelays[self.targetHost][self.targetPort][relay.username])
-- if len(self.__socksServer.activeRelays[self.targetHost][self.targetPort].keys()) == 1:
-+ if len(list(self.__socksServer.activeRelays[self.targetHost][self.targetPort].keys())) == 1:
- del(self.__socksServer.activeRelays[self.targetHost][self.targetPort])
- LOG.debug('Removing active relay for %s@%s:%s' % (relay.username, self.targetHost, self.targetPort))
- self.sendReplyError(replyField.CONNECTION_REFUSED)
-@@ -427,11 +427,11 @@ class SocksRequestHandler(SocketServer.BaseRequestHand
- LOG.debug('SOCKS: Shutting down connection')
- try:
- self.sendReplyError(replyField.CONNECTION_REFUSED)
-- except Exception, e:
-+ except Exception as e:
- LOG.debug('SOCKS END: %s' % str(e))
-
-
--class SOCKS(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
-+class SOCKS(socketserver.ThreadingMixIn, socketserver.TCPServer):
- def __init__(self, server_address=('0.0.0.0', 1080), handler_class=SocksRequestHandler):
- LOG.info('SOCKS proxy started. Listening at port %d', server_address[1] )
-
-@@ -440,8 +440,8 @@ class SOCKS(SocketServer.ThreadingMixIn, SocketServer.
- self.restAPI = None
- self.activeConnectionsWatcher = None
- self.supportedSchemes = []
-- SocketServer.TCPServer.allow_reuse_address = True
-- SocketServer.TCPServer.__init__(self, server_address, handler_class)
-+ socketserver.TCPServer.allow_reuse_address = True
-+ socketserver.TCPServer.__init__(self, server_address, handler_class)
-
- # Let's register the socksplugins plugins we have
- from impacket.examples.ntlmrelayx.servers.socksplugins import SOCKS_RELAYS
-@@ -468,7 +468,7 @@ class SOCKS(SocketServer.ThreadingMixIn, SocketServer.
- self.__timer.stop()
- del self.restAPI
- del self.activeConnectionsWatcher
-- return SocketServer.TCPServer.shutdown(self)
-+ return socketserver.TCPServer.shutdown(self)
-
- if __name__ == '__main__':
- from impacket.examples import logger
---- impacket/examples/ntlmrelayx/utils/targetsutils.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/examples/ntlmrelayx/utils/targetsutils.py
-@@ -33,7 +33,7 @@
- import os
- import random
- import time
--from urlparse import urlparse
-+from urllib.parse import urlparse
- from impacket import LOG
- from threading import Thread
-
-@@ -79,7 +79,7 @@ class TargetsProcessor:
- target = line.strip()
- if target is not None:
- self.originalTargets.extend(self.processTarget(target, self.protocolClients))
-- except IOError, e:
-+ except IOError as e:
- LOG.error("Could not open file: %s - " % (self.filename, str(e)))
-
- if len(self.originalTargets) == 0:
---- impacket/examples/os_ident.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/examples/os_ident.py
-@@ -22,6 +22,7 @@
-
- from impacket.ImpactPacket import *
- from impacket.ImpactDecoder import *
-+from functools import reduce
-
- g_nmap1_signature_filename="nmap-os-fingerprints"
- g_nmap2_signature_filename="nmap-os-db"
-@@ -30,7 +31,7 @@ class os_id_exception:
- def __init__(self, value):
- self.value = value
- def __str__(self):
-- return `self.value`
-+ return repr(self.value)
-
- class os_id_test:
-
-@@ -276,7 +277,7 @@ class nmap1_tcp_probe(nmap_tcp_probe):
- # "\003\003\012\001\002\004\001\011\010\012\077\077\077\077\000\000\000\000\000\000"
- # [...]
- tcp_options = [
-- TCPOption(TCPOption.TCPOPT_WINDOW, 012), #\003\003\012
-+ TCPOption(TCPOption.TCPOPT_WINDOW, 0o12), #\003\003\012
- TCPOption(TCPOption.TCPOPT_NOP), #\001
- TCPOption(TCPOption.TCPOPT_MAXSEG, mss), #\002\004\001\011
- TCPOption(TCPOption.TCPOPT_TIMESTAMP, 0x3F3F3F3F), #\010\012\077\077\077\077\000\000\000\000
-@@ -417,7 +418,7 @@ class nmap2_ecn_probe(nmap_tcp_probe):
- # open port.
- # [...]
- tcp_options = [
-- TCPOption(TCPOption.TCPOPT_WINDOW, 012), #\003\003\012
-+ TCPOption(TCPOption.TCPOPT_WINDOW, 0o12), #\003\003\012
- TCPOption(TCPOption.TCPOPT_NOP), #\001
- TCPOption(TCPOption.TCPOPT_MAXSEG, 1460), #\002\004\005\0264
- TCPOption(TCPOption.TCPOPT_SACK_PERMITTED), #\004\002
-@@ -665,7 +666,7 @@ class nmap2_tcp_probe_2_6(nmap2_tcp_probe):
- # Timestamp (TSval: 0xFFFFFFFF; TSecr: 0), then SACK permitted.
- # (...
- tcp_options = [
-- TCPOption(TCPOption.TCPOPT_WINDOW, 012), #\003\003\012
-+ TCPOption(TCPOption.TCPOPT_WINDOW, 0o12), #\003\003\012
- TCPOption(TCPOption.TCPOPT_NOP), #\001
- TCPOption(TCPOption.TCPOPT_MAXSEG, mss), #\002\004\001\011
- TCPOption(TCPOption.TCPOPT_TIMESTAMP, 0xFFFFFFFF), #\010\012\377\377\377\377\000\000\000\000
-@@ -684,7 +685,7 @@ class nmap2_tcp_probe_7(nmap2_tcp_probe):
- # The exception is that T7 uses a Window scale value of 15 rather than 10
- # [...]
- tcp_options = [
-- TCPOption(TCPOption.TCPOPT_WINDOW, 017), #\003\003\017
-+ TCPOption(TCPOption.TCPOPT_WINDOW, 0o17), #\003\003\017
- TCPOption(TCPOption.TCPOPT_NOP), #\001
- TCPOption(TCPOption.TCPOPT_MAXSEG, mss), #\002\004\001\011
- TCPOption(TCPOption.TCPOPT_TIMESTAMP, 0xFFFFFFFF), #\010\012\377\377\377\377\000\000\000\000
-@@ -1004,7 +1005,7 @@ class OS_ID:
-
- # Ok, I need to know if the constructor accepts the parameter port
- # We could ask also by co_varnames, but the port parameters is not a standarized... asking by args count :(
-- if t_class.__init__.im_func.func_code.co_argcount == 4:
-+ if t_class.__init__.__func__.__code__.co_argcount == 4:
- test = t_class(self.get_new_id(), [self.__source, self.__target], self.__ports )
- else:
- test = t_class(self.get_new_id(), [self.__source, self.__target] )
-@@ -1348,7 +1349,7 @@ class nmap1_seq_container(os_id_test):
- ipid_diffs = array.array('H', [0] * (self.seq_num_responses - 1))
-
- null_ipids = 1
-- for i in xrange(1, self.seq_num_responses):
-+ for i in range(1, self.seq_num_responses):
- prev_ipid = self.seq_responses[i-1].get_ipid()
- cur_ipid = self.seq_responses[i].get_ipid()
-
-@@ -1364,13 +1365,13 @@ class nmap1_seq_container(os_id_test):
- # If any diff is > 1000, set to random, if 0, set to constant.
- # If any of the diffs are 1, or all are less than 9, set to incremental.
-
-- for i in xrange(0, self.seq_num_responses - 1):
-+ for i in range(0, self.seq_num_responses - 1):
- if ipid_diffs[i] > 1000: return nmap1_seq.IPID_SEQ_RPI
- if ipid_diffs[i] == 0: return nmap1_seq.IPID_SEQ_CONSTANT
-
- is_incremental = 1 # All diferences are less than 9
- is_ms = 1 # All diferences are multiples of 256
-- for i in xrange(0, self.seq_num_responses - 1):
-+ for i in range(0, self.seq_num_responses - 1):
- if ipid_diffs[i] == 1: return nmap1_seq.IPID_SEQ_INCR
- if is_ms and ipid_diffs[i] < 2560 and (ipid_diffs[i] % 256) != 0: is_ms = 0
- if ipid_diffs[i] > 9: is_incremental = 0
-@@ -1391,7 +1392,7 @@ class nmap1_seq_container(os_id_test):
- # 5) Same with ~100/s.
-
- avg_freq = 0.0
-- for i in xrange(0, self.seq_num_responses - 1):
-+ for i in range(0, self.seq_num_responses - 1):
- dhz = self.ts_diffs[i] / self.time_diffs[i]
- avg_freq += dhz / (self.seq_num_responses - 1)
-
-@@ -1409,8 +1410,8 @@ class nmap1_seq_container(os_id_test):
- seqclass = nmap1_seq.SEQ_UNKNOWN
-
- if 0 != self.seq_gcd:
-- map(lambda x, gcd = self.seq_gcd: x / gcd, self.seq_diffs)
-- for i in xrange(0, self.seq_num_responses - 1):
-+ list(map(lambda x, gcd = self.seq_gcd: x / gcd, self.seq_diffs))
-+ for i in range(0, self.seq_num_responses - 1):
- if abs(self.seq_responses[i+1].get_seq() - self.seq_responses[i].get_seq()) > 50000000:
- seqclass = nmap1_seq.SEQ_TR;
- self.index = 9999999
-@@ -1531,7 +1532,7 @@ class nmap2_seq_container(os_id_test):
-
- # Random and zero
- null_ipids = 1
-- for i in xrange(1, self.seq_num_responses):
-+ for i in range(1, self.seq_num_responses):
- prev_ipid = self.seq_responses[i-1].get_ipid()
- cur_ipid = self.seq_responses[i].get_ipid()
-
-@@ -1553,7 +1554,7 @@ class nmap2_seq_container(os_id_test):
-
- # Constant
- all_zero = 1
-- for i in xrange(0, self.seq_num_responses - 1):
-+ for i in range(0, self.seq_num_responses - 1):
- if ipid_diffs[i] != 0:
- all_zero = 0
- break
-@@ -1563,7 +1564,7 @@ class nmap2_seq_container(os_id_test):
- return
-
- # Random positive increments
-- for i in xrange(0, self.seq_num_responses - 1):
-+ for i in range(0, self.seq_num_responses - 1):
- if ipid_diffs[i] > 1000 and \
- ((ipid_diffs[i] % 256 != 0) or \
- ((ipid_diffs[i] % 256 == 0) and (ipid_diffs[i] >= 25600))):
-@@ -1573,7 +1574,7 @@ class nmap2_seq_container(os_id_test):
- # Broken Increment and Incremental
- is_incremental = 1 # All diferences are less than 10
- is_ms = 1 # All diferences are multiples of 256 and no greater than 5120
-- for i in xrange(0, self.seq_num_responses - 1):
-+ for i in range(0, self.seq_num_responses - 1):
- if is_ms and ((ipid_diffs[i] > 5120) or (ipid_diffs[i] % 256) != 0):
- is_ms = 0
- if is_incremental and ipid_diffs[i] > 9:
-@@ -1606,7 +1607,7 @@ class nmap2_seq_container(os_id_test):
- return
-
- avg_freq = 0.0
-- for i in xrange(0, self.seq_num_responses - 1):
-+ for i in range(0, self.seq_num_responses - 1):
- dhz = self.ts_diffs[i] / self.time_diffs[i]
- avg_freq += dhz / (self.seq_num_responses - 1)
-
-@@ -1626,7 +1627,7 @@ class nmap2_seq_container(os_id_test):
- seq_gcd = reduce(my_gcd, self.seq_diffs)
-
- seq_avg_rate = 0.0
-- for i in xrange(0, self.seq_num_responses - 1):
-+ for i in range(0, self.seq_num_responses - 1):
- seq_avg_rate += self.seq_diffs[i] / self.time_diffs[i]
- seq_avg_rate /= (self.seq_num_responses - 1)
-
-@@ -1643,7 +1644,7 @@ class nmap2_seq_container(os_id_test):
- if seq_gcd > 9:
- div_gcd = seq_gcd
-
-- for i in xrange(0, self.seq_num_responses - 1):
-+ for i in range(0, self.seq_num_responses - 1):
- rtmp = (self.seq_diffs[i] / self.time_diffs[i]) / div_gcd - \
- seq_avg_rate / div_gcd
- seq_stddev += rtmp * rtmp
-@@ -1675,7 +1676,7 @@ class nmap2_ops_container(os_id_test):
- self.add_result('R', 'N')
- return
-
-- for i in xrange(0, self.seq_num_responses):
-+ for i in range(0, self.seq_num_responses):
- tests = nmap2_tcp_tests(self.seq_responses[i].get_ip(),
- self.seq_responses[i].get_tcp(),
- 0,
-@@ -1703,7 +1704,7 @@ class nmap2_win_container(os_id_test):
- self.add_result('R', 'N')
- return
-
-- for i in xrange(0, self.seq_num_responses):
-+ for i in range(0, self.seq_num_responses):
- tests = nmap2_tcp_tests(self.seq_responses[i].get_ip(),
- self.seq_responses[i].get_tcp(),
- 0,
-@@ -1972,9 +1973,9 @@ class NMAP2_Fingerprint:
- def parse_int(self, field, value):
- try:
- return int(value, 16)
-- except ValueError, err:
-- if NMAP2_Fingerprint.literal_conv.has_key( field ):
-- if NMAP2_Fingerprint.literal_conv[field].has_key(value):
-+ except ValueError as err:
-+ if field in NMAP2_Fingerprint.literal_conv:
-+ if value in NMAP2_Fingerprint.literal_conv[field]:
- return NMAP2_Fingerprint.literal_conv[field][value]
- return 0
-
-@@ -2009,14 +2010,14 @@ class NMAP2_Fingerprint:
-
- for test in self.__tests:
- # ignore unknown response lines:
-- if not sample.has_key(test):
-+ if test not in sample:
- continue
-
- for field in self.__tests[test]:
- # ignore unsupported fields:
-- if not sample[test].has_key(field) or \
-- not mp.has_key(test) or \
-- not mp[test].has_key(field):
-+ if field not in sample[test] or \
-+ test not in mp or \
-+ field not in mp[test]:
- continue
-
- ref = self.__tests[test][field]
-@@ -2047,8 +2048,8 @@ class NMAP2_Fingerprint_Matcher:
- fp = self.parse_fp(fingerprint)
- similarity = fp.compare(res, mp)
- if similarity >= threshold:
-- print "\"%s\" matches with an accuracy of %.2f%%" \
-- % (fp.get_id(), similarity)
-+ print("\"%s\" matches with an accuracy of %.2f%%" \
-+ % (fp.get_id(), similarity))
- output.append((similarity / 100,
- fp.get_id(),
- (fp.get_os_class().get_vendor(),
-@@ -2057,8 +2058,8 @@ class NMAP2_Fingerprint_Matcher:
- fp.get_os_class().get_device_type())))
-
- infile.close()
-- except IOError, err:
-- print "IOError: %s", err
-+ except IOError as err:
-+ print("IOError: %s", err)
-
- return output
-
-@@ -2091,7 +2092,7 @@ class NMAP2_Fingerprint_Matcher:
- yield section
-
- def matchpoints(self, infile):
-- return self.sections(infile,"MatchPoints").next()
-+ return next(self.sections(infile,"MatchPoints"))
-
- def parse_line(self, line):
- name = line[:line.find("(")]
---- impacket/examples/remcomsvc.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/examples/remcomsvc.py
-@@ -1666,4 +1666,4 @@ REMCOMSVC='4d5a90000300000004000000ffff0000b8000000000
- '0000000000000000000000000000000000000000000000000000000000000000000000' \
- '0000000000000000000000000000000000000000000000000000000000000000000000' \
- '0000000000000000000000000000000000000000000000000000000000000000000000' \
--'00000000000000000000' \
-+'00000000000000000000'
---- impacket/examples/secretsdump.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/examples/secretsdump.py
-@@ -289,7 +289,7 @@ class RemoteFile:
- try:
- self.__fid = self.__smbConnection.openFile(self.__tid, self.__fileName, desiredAccess=FILE_READ_DATA,
- shareMode=FILE_SHARE_READ)
-- except Exception, e:
-+ except Exception as e:
- if str(e).find('STATUS_SHARING_VIOLATION') >=0:
- if tries >= 3:
- raise e
-@@ -527,7 +527,7 @@ class RemoteOperations:
- self.__ppartialAttrSet = drsuapi.PARTIAL_ATTR_VECTOR_V1_EXT()
- self.__ppartialAttrSet['dwVersion'] = 1
- self.__ppartialAttrSet['cAttrs'] = len(NTDSHashes.ATTRTYP_TO_ATTID)
-- for attId in NTDSHashes.ATTRTYP_TO_ATTID.values():
-+ for attId in list(NTDSHashes.ATTRTYP_TO_ATTID.values()):
- self.__ppartialAttrSet['rgPartialAttr'].append(drsuapi.MakeAttid(self.__prefixTable , attId))
- request['pmsgIn']['V8']['pPartialAttrSet'] = self.__ppartialAttrSet
- request['pmsgIn']['V8']['PrefixTableDest']['PrefixCount'] = len(self.__prefixTable)
-@@ -547,7 +547,7 @@ class RemoteOperations:
- samr.USER_SERVER_TRUST_ACCOUNT |\
- samr.USER_INTERDOMAIN_TRUST_ACCOUNT,
- enumerationContext=enumerationContext)
-- except DCERPCException, e:
-+ except DCERPCException as e:
- if str(e).find('STATUS_MORE_ENTRIES') < 0:
- raise
- resp = e.get_packet()
-@@ -603,7 +603,7 @@ class RemoteOperations:
- if account.startswith('.\\'):
- account = account[2:]
- return account
-- except Exception, e:
-+ except Exception as e:
- # Don't log if history service is not found, that should be normal
- if serviceName.endswith("_history") is False:
- LOG.error(e)
-@@ -677,7 +677,7 @@ class RemoteOperations:
- scmr.hRCloseServiceHandle(self.__scmr, self.__serviceHandle)
- scmr.hRCloseServiceHandle(self.__scmr, self.__scManagerHandle)
- rpc.disconnect()
-- except Exception, e:
-+ except Exception as e:
- # If service is stopped it'll trigger an exception
- # If service does not exist it'll trigger an exception
- # So. we just wanna be sure we delete it, no need to
-@@ -695,7 +695,7 @@ class RemoteOperations:
- if self.__scmr is not None:
- try:
- self.__scmr.disconnect()
-- except Exception, e:
-+ except Exception as e:
- if str(e).find('STATUS_INVALID_PARAMETER') >=0:
- pass
- else:
-@@ -717,7 +717,7 @@ class RemoteOperations:
-
- bootKey = unhexlify(bootKey)
-
-- for i in xrange(len(bootKey)):
-+ for i in range(len(bootKey)):
- self.__bootKey += bootKey[transforms[i]]
-
- LOG.info('Target system bootKey: 0x%s' % hexlify(self.__bootKey))
-@@ -913,7 +913,7 @@ class RemoteOperations:
- try:
- self.__smbConnection.getFile('ADMIN$', 'Temp\\__output', self.__answer)
- break
-- except Exception, e:
-+ except Exception as e:
- if tries > 30:
- # We give up
- raise Exception('Too many tries trying to list vss shadows')
-@@ -994,7 +994,7 @@ class RemoteOperations:
- try:
- self.__smbConnection.deleteFile('ADMIN$', 'Temp\\__output')
- break
-- except Exception, e:
-+ except Exception as e:
- if tries >= 30:
- raise e
- if str(e).find('STATUS_OBJECT_NAME_NOT_FOUND') >= 0 or str(e).find('STATUS_SHARING_VIOLATION') >=0:
-@@ -1575,7 +1575,7 @@ class ResumeSessionMgrInFile(object):
- def getResumeData(self):
- try:
- self.__resumeFile = open(self.__resumeFileName,'rb')
-- except Exception, e:
-+ except Exception as e:
- raise Exception('Cannot open resume session file name %s' % str(e))
- resumeSid = self.__resumeFile.read()
- self.__resumeFile.close()
-@@ -1593,7 +1593,7 @@ class ResumeSessionMgrInFile(object):
- if not self.__resumeFile:
- try:
- self.__resumeFile = open(self.__resumeFileName, 'wb+')
-- except Exception, e:
-+ except Exception as e:
- raise Exception('Cannot create "%s" resume session file: %s' % (self.__resumeFileName, str(e)))
-
- def endTransaction(self):
-@@ -1664,7 +1664,7 @@ class NTDSHashes:
- 0xffffff74:'rc4_hmac',
- }
-
-- INTERNAL_TO_NAME = dict((v,k) for k,v in NAME_TO_INTERNAL.iteritems())
-+ INTERNAL_TO_NAME = dict((v,k) for k,v in NAME_TO_INTERNAL.items())
-
- SAM_NORMAL_USER_ACCOUNT = 0x30000000
- SAM_MACHINE_ACCOUNT = 0x30000001
-@@ -1866,7 +1866,7 @@ class NTDSHashes:
- try:
- attId = drsuapi.OidFromAttid(prefixTable, attr['attrTyp'])
- LOOKUP_TABLE = self.ATTRTYP_TO_ATTID
-- except Exception, e:
-+ except Exception as e:
- LOG.debug('Failed to execute OidFromAttid with error %s' % e)
- # Fallbacking to fixed table and hope for the best
- attId = attr['attrTyp']
-@@ -1921,7 +1921,7 @@ class NTDSHashes:
- data = data[len(keyDataNew):]
- keyValue = propertyValueBuffer[keyDataNew['KeyOffset']:][:keyDataNew['KeyLength']]
-
-- if self.KERBEROS_TYPE.has_key(keyDataNew['KeyType']):
-+ if keyDataNew['KeyType'] in self.KERBEROS_TYPE:
- answer = "%s:%s:%s" % (userName, self.KERBEROS_TYPE[keyDataNew['KeyType']],hexlify(keyValue))
- else:
- answer = "%s:%s:%s" % (userName, hex(keyDataNew['KeyType']),hexlify(keyValue))
-@@ -2064,7 +2064,7 @@ class NTDSHashes:
- try:
- attId = drsuapi.OidFromAttid(prefixTable, attr['attrTyp'])
- LOOKUP_TABLE = self.ATTRTYP_TO_ATTID
-- except Exception, e:
-+ except Exception as e:
- LOG.debug('Failed to execute OidFromAttid with error %s, fallbacking to fixed table' % e)
- # Fallbacking to fixed table and hope for the best
- attId = attr['attrTyp']
-@@ -2201,7 +2201,7 @@ class NTDSHashes:
- raise
- else:
- raise Exception('No remote Operations available')
-- except Exception, e:
-+ except Exception as e:
- LOG.debug('Exiting NTDSHashes.dump() because %s' % e)
- # Target's not a DC
- return
-@@ -2234,7 +2234,7 @@ class NTDSHashes:
- self.__decryptHash(record, outputFile=hashesOutputFile)
- if self.__justNTLM is False:
- self.__decryptSupplementalInfo(record, None, keysOutputFile, clearTextOutputFile)
-- except Exception, e:
-+ except Exception as e:
- if LOG.level == logging.DEBUG:
- import traceback
- traceback.print_exc()
-@@ -2263,7 +2263,7 @@ class NTDSHashes:
- self.__decryptHash(record, outputFile=hashesOutputFile)
- if self.__justNTLM is False:
- self.__decryptSupplementalInfo(record, None, keysOutputFile, clearTextOutputFile)
-- except Exception, e:
-+ except Exception as e:
- if LOG.level == logging.DEBUG:
- import traceback
- traceback.print_exc()
-@@ -2329,7 +2329,7 @@ class NTDSHashes:
- self.__decryptSupplementalInfo(userRecord, userRecord['pmsgOut'][replyVersion]['PrefixTableSrc'][
- 'pPrefixEntry'], keysOutputFile, clearTextOutputFile)
-
-- except Exception, e:
-+ except Exception as e:
- #import traceback
- #traceback.print_exc()
- LOG.error("Error while processing user!")
-@@ -2382,7 +2382,7 @@ class NTDSHashes:
- self.__decryptSupplementalInfo(userRecord, userRecord['pmsgOut'][replyVersion]['PrefixTableSrc'][
- 'pPrefixEntry'], keysOutputFile, clearTextOutputFile)
-
-- except Exception, e:
-+ except Exception as e:
- if LOG.level == logging.DEBUG:
- import traceback
- traceback.print_exc()
-@@ -2408,7 +2408,7 @@ class NTDSHashes:
- else:
- LOG.info('Kerberos keys grabbed')
-
-- for itemKey in self.__kerberosKeys.keys():
-+ for itemKey in list(self.__kerberosKeys.keys()):
- self.__perSecretCallback(NTDSHashes.SECRET_TYPE.NTDS_KERBEROS, itemKey)
-
- # And finally the cleartext pwds
-@@ -2418,7 +2418,7 @@ class NTDSHashes:
- else:
- LOG.info('ClearText passwords grabbed')
-
-- for itemKey in self.__clearTextPwds.keys():
-+ for itemKey in list(self.__clearTextPwds.keys()):
- self.__perSecretCallback(NTDSHashes.SECRET_TYPE.NTDS_CLEARTEXT, itemKey)
- finally:
- # Resources cleanup
-@@ -2437,7 +2437,7 @@ class NTDSHashes:
- def __writeOutput(cls, fd, data):
- try:
- fd.write(data)
-- except Exception, e:
-+ except Exception as e:
- LOG.error("Error writing entry, skipping (%s)" % str(e))
- pass
-
-@@ -2467,7 +2467,7 @@ class LocalOperations:
-
- tmpKey = unhexlify(tmpKey)
-
-- for i in xrange(len(tmpKey)):
-+ for i in range(len(tmpKey)):
- bootKey += tmpKey[transforms[i]]
-
- LOG.info('Target system bootKey: 0x%s' % hexlify(bootKey))
-@@ -2496,4 +2496,4 @@ class LocalOperations:
- return True
-
- def _print_helper(*args, **kwargs):
-- print args[-1]
-+ print(args[-1])
---- impacket/examples/serviceinstall.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/examples/serviceinstall.py
-@@ -65,7 +65,7 @@ class ServiceInstall:
- # First we try to open the service in case it exists. If it does, we remove it.
- try:
- resp = scmr.hROpenServiceW(self.rpcsvc, handle, self.__service_name+'\x00')
-- except Exception, e:
-+ except Exception as e:
- if str(e).find('ERROR_SERVICE_DOES_NOT_EXIST') >= 0:
- # We're good, pass the exception
- pass
-@@ -181,7 +181,7 @@ class ServiceInstall:
- scmr.hRCloseServiceHandle(self.rpcsvc, service)
- scmr.hRCloseServiceHandle(self.rpcsvc, svcManager)
- return True
-- except Exception, e:
-+ except Exception as e:
- LOG.critical("Error performing the installation, cleaning up: %s" %e)
- try:
- scmr.hRControlService(self.rpcsvc, service, scmr.SERVICE_CONTROL_STOP)
---- impacket/examples/smbclient.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/examples/smbclient.py
-@@ -69,7 +69,7 @@ class MiniImpacketShell(cmd.Cmd):
- retVal = False
- try:
- retVal = cmd.Cmd.onecmd(self,s)
-- except Exception, e:
-+ except Exception as e:
- #import traceback
- #traceback.print_exc()
- LOG.error(e)
-@@ -83,11 +83,11 @@ class MiniImpacketShell(cmd.Cmd):
-
- def do_shell(self, line):
- output = os.popen(line).read()
-- print output
-+ print(output)
- self.last_output = output
-
- def do_help(self,line):
-- print """
-+ print("""
- open {host,port=445} - opens a SMB connection against the target host/port
- login {domain/username,passwd} - logs into the current SMB connection, no parameters for NULL connection. If no password specified, it'll be prompted
- kerberos_login {domain/username,passwd} - logs into the current SMB connection using Kerberos. If no password specified, it'll be prompted. Use the DNS resolvable domain name
-@@ -110,7 +110,7 @@ class MiniImpacketShell(cmd.Cmd):
- close - closes the current SMB Session
- exit - terminates the server process (and this session)
-
--"""
-+""")
-
- def do_password(self, line):
- if self.loggedIn is False:
-@@ -280,12 +280,12 @@ class MiniImpacketShell(cmd.Cmd):
- dce.bind(srvs.MSRPC_UUID_SRVS)
- resp = srvs.hNetrServerGetInfo(dce, 102)
-
-- print "Version Major: %d" % resp['InfoStruct']['ServerInfo102']['sv102_version_major']
-- print "Version Minor: %d" % resp['InfoStruct']['ServerInfo102']['sv102_version_minor']
-- print "Server Name: %s" % resp['InfoStruct']['ServerInfo102']['sv102_name']
-- print "Server Comment: %s" % resp['InfoStruct']['ServerInfo102']['sv102_comment']
-- print "Server UserPath: %s" % resp['InfoStruct']['ServerInfo102']['sv102_userpath']
-- print "Simultaneous Users: %d" % resp['InfoStruct']['ServerInfo102']['sv102_users']
-+ print("Version Major: %d" % resp['InfoStruct']['ServerInfo102']['sv102_version_major'])
-+ print("Version Minor: %d" % resp['InfoStruct']['ServerInfo102']['sv102_version_minor'])
-+ print("Server Name: %s" % resp['InfoStruct']['ServerInfo102']['sv102_name'])
-+ print("Server Comment: %s" % resp['InfoStruct']['ServerInfo102']['sv102_comment'])
-+ print("Server UserPath: %s" % resp['InfoStruct']['ServerInfo102']['sv102_userpath'])
-+ print("Simultaneous Users: %d" % resp['InfoStruct']['ServerInfo102']['sv102_users'])
-
- def do_who(self, line):
- if self.loggedIn is False:
-@@ -298,9 +298,9 @@ class MiniImpacketShell(cmd.Cmd):
- resp = srvs.hNetrSessionEnum(dce, NULL, NULL, 10)
-
- for session in resp['InfoStruct']['SessionInfo']['Level10']['Buffer']:
-- print "host: %15s, user: %5s, active: %5d, idle: %5d" % (
-+ print("host: %15s, user: %5s, active: %5d, idle: %5d" % (
- session['sesi10_cname'][:-1], session['sesi10_username'][:-1], session['sesi10_time'],
-- session['sesi10_idle_time'])
-+ session['sesi10_idle_time']))
-
- def do_shares(self, line):
- if self.loggedIn is False:
-@@ -308,7 +308,7 @@ class MiniImpacketShell(cmd.Cmd):
- return
- resp = self.smb.listShares()
- for i in range(len(resp)):
-- print resp[i]['shi1_netname'][:-1]
-+ print(resp[i]['shi1_netname'][:-1])
-
- def do_use(self,line):
- if self.loggedIn is False:
-@@ -345,9 +345,9 @@ class MiniImpacketShell(cmd.Cmd):
- raise
-
- def do_lcd(self, s):
-- print s
-+ print(s)
- if s == '':
-- print os.getcwd()
-+ print(os.getcwd())
- else:
- os.chdir(s)
-
-@@ -355,7 +355,7 @@ class MiniImpacketShell(cmd.Cmd):
- if self.loggedIn is False:
- LOG.error("Not logged in")
- return
-- print self.pwd
-+ print(self.pwd)
-
- def do_ls(self, wildcard, display = True):
- if self.loggedIn is False:
-@@ -373,9 +373,9 @@ class MiniImpacketShell(cmd.Cmd):
- pwd = ntpath.normpath(pwd)
- for f in self.smb.listPath(self.share, pwd):
- if display is True:
-- print "%crw-rw-rw- %10d %s %s" % (
-+ print("%crw-rw-rw- %10d %s %s" % (
- 'd' if f.is_directory() > 0 else '-', f.get_filesize(), time.ctime(float(f.get_mtime_epoch())),
-- f.get_longname())
-+ f.get_longname()))
- self.completion.append((f.get_longname(), f.is_directory()))
-
-
---- impacket/krb5/ccache.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/krb5/ccache.py
-@@ -72,10 +72,10 @@ class Times(Structure):
- ('renew_till','!L=0'),
- )
- def prettyPrint(self, indent = ''):
-- print "%sAuth : %s" % (indent, datetime.fromtimestamp(self['authtime']).isoformat())
-- print "%sStart: %s" % (indent, datetime.fromtimestamp(self['starttime']).isoformat())
-- print "%sEnd : %s" % (indent, datetime.fromtimestamp(self['endtime']).isoformat())
-- print "%sRenew: %s" % (indent, datetime.fromtimestamp(self['renew_till']).isoformat())
-+ print("%sAuth : %s" % (indent, datetime.fromtimestamp(self['authtime']).isoformat()))
-+ print("%sStart: %s" % (indent, datetime.fromtimestamp(self['starttime']).isoformat()))
-+ print("%sEnd : %s" % (indent, datetime.fromtimestamp(self['endtime']).isoformat()))
-+ print("%sRenew: %s" % (indent, datetime.fromtimestamp(self['renew_till']).isoformat()))
-
- class Address(Structure):
- structure = (
-@@ -230,21 +230,21 @@ class Credential:
- return self.getData()
-
- def prettyPrint(self, indent=''):
-- print "%sClient: %s" % (indent, self.header['client'].prettyPrint())
-- print "%sServer: %s" % (indent, self.header['server'].prettyPrint())
-- print "%s%s" % (indent, self.header['key'].prettyPrint())
-- print "%sTimes: " % indent
-+ print("%sClient: %s" % (indent, self.header['client'].prettyPrint()))
-+ print("%sServer: %s" % (indent, self.header['server'].prettyPrint()))
-+ print("%s%s" % (indent, self.header['key'].prettyPrint()))
-+ print("%sTimes: " % indent)
- self.header['time'].prettyPrint('\t\t')
-- print "%sSubKey: %s" % (indent, self.header['is_skey'])
-- print "%sFlags: 0x%x" % (indent, self.header['tktflags'])
-- print "%sAddresses: %d" % (indent, self.header['num_address'])
-+ print("%sSubKey: %s" % (indent, self.header['is_skey']))
-+ print("%sFlags: 0x%x" % (indent, self.header['tktflags']))
-+ print("%sAddresses: %d" % (indent, self.header['num_address']))
- for address in self.addresses:
- address.prettyPrint('\t\t')
-- print "%sAuth Data: %d" % (indent, len(self.authData))
-+ print("%sAuth Data: %d" % (indent, len(self.authData)))
- for ad in self.authData:
- ad.prettyPrint('\t\t')
-- print "%sTicket: %s" % (indent, self.ticket.prettyPrint())
-- print "%sSecond Ticket: %s" % (indent, self.secondTicket.prettyPrint())
-+ print("%sTicket: %s" % (indent, self.ticket.prettyPrint()))
-+ print("%sSecond Ticket: %s" % (indent, self.secondTicket.prettyPrint()))
-
- def toTGT(self):
- tgt_rep = AS_REP()
-@@ -516,10 +516,10 @@ class CCache:
- f.close()
-
- def prettyPrint(self):
-- print "Primary Principal: %s" % self.principal.prettyPrint()
-- print "Credentials: "
-+ print("Primary Principal: %s" % self.principal.prettyPrint())
-+ print("Credentials: ")
- for i, credential in enumerate(self.credentials):
-- print "[%d]" % i
-+ print("[%d]" % i)
- credential.prettyPrint('\t')
-
-
---- impacket/krb5/kerberosv5.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/krb5/kerberosv5.py
-@@ -51,7 +51,7 @@ def sendReceive(data, host, kdcHost):
- af, socktype, proto, canonname, sa = socket.getaddrinfo(targetHost, 88, 0, socket.SOCK_STREAM)[0]
- s = socket.socket(af, socktype, proto)
- s.connect(sa)
-- except socket.error, e:
-+ except socket.error as e:
- raise socket.error("Connection error (%s:%s)" % (targetHost, 88), e)
-
- s.sendall(messageLen + data)
-@@ -140,7 +140,7 @@ def getKerberosTGT(clientName, password, domain, lmhas
-
- try:
- r = sendReceive(message, domain, kdcHost)
-- except KerberosError, e:
-+ except KerberosError as e:
- if e.getErrorCode() == constants.ErrorCodes.KDC_ERR_ETYPE_NOSUPP.value:
- if supportedCiphers[0] in (constants.EncryptionTypes.aes128_cts_hmac_sha1_96.value, constants.EncryptionTypes.aes256_cts_hmac_sha1_96.value) and aesKey is '':
- supportedCiphers = (int(constants.EncryptionTypes.rc4_hmac.value),)
-@@ -181,7 +181,7 @@ def getKerberosTGT(clientName, password, domain, lmhas
- salt = ''
- else:
- salt = str(etype2['salt'])
-- except PyAsn1Error, e:
-+ except PyAsn1Error as e:
- salt = ''
-
- encryptionTypesData[etype2['etype']] = salt
-@@ -193,7 +193,7 @@ def getKerberosTGT(clientName, password, domain, lmhas
- salt = ''
- else:
- salt = str(etype['salt'])
-- except PyAsn1Error, e:
-+ except PyAsn1Error as e:
- salt = ''
-
- encryptionTypesData[etype['etype']] = salt
-@@ -211,7 +211,7 @@ def getKerberosTGT(clientName, password, domain, lmhas
- key = cipher.string_to_key(password, encryptionTypesData[enctype], None)
-
- if preAuth is True:
-- if encryptionTypesData.has_key(enctype) is False:
-+ if (enctype in encryptionTypesData) is False:
- raise Exception('No Encryption Data Available!')
-
- # Let's build the timestamp
-@@ -272,7 +272,7 @@ def getKerberosTGT(clientName, password, domain, lmhas
-
- try:
- tgt = sendReceive(encoder.encode(asReq), domain, kdcHost)
-- except Exception, e:
-+ except Exception as e:
- if str(e).find('KDC_ERR_ETYPE_NOSUPP') >= 0:
- if lmhash is '' and nthash is '' and (aesKey is '' or aesKey is None):
- from impacket.ntlm import compute_lmhash, compute_nthash
-@@ -435,7 +435,7 @@ def getKerberosType3(cipher, sessionKey, auth_data):
- #ap_rep = decoder.decode(negTokenResp['ResponseToken'][16:], asn1Spec=AP_REP())[0]
- try:
- krbError = KerberosError(packet = decoder.decode(negTokenResp['ResponseToken'][15:], asn1Spec = KRB_ERROR())[0])
-- except Exception, e:
-+ except Exception as e:
- pass
- else:
- raise krbError
-@@ -482,7 +482,7 @@ def getKerberosType1(username, password, domain, lmhas
- if useCache is True:
- try:
- ccache = CCache.loadFile(os.getenv('KRB5CCNAME'))
-- except Exception, e:
-+ except Exception as e:
- # No cache present
- pass
- else:
-@@ -521,7 +521,7 @@ def getKerberosType1(username, password, domain, lmhas
- if TGS is None:
- try:
- tgt, cipher, oldSessionKey, sessionKey = getKerberosTGT(userName, password, domain, lmhash, nthash, aesKey, kdcHost)
-- except KerberosError, e:
-+ except KerberosError as e:
- if e.getErrorCode() == constants.ErrorCodes.KDC_ERR_ETYPE_NOSUPP.value:
- # We might face this if the target does not support AES
- # So, if that's the case we'll force using RC4 by converting
-@@ -549,7 +549,7 @@ def getKerberosType1(username, password, domain, lmhas
- serverName = Principal('host/%s' % targetName, type=constants.PrincipalNameType.NT_SRV_INST.value)
- try:
- tgs, cipher, oldSessionKey, sessionKey = getKerberosTGS(serverName, domain, kdcHost, tgt, cipher, sessionKey)
-- except KerberosError, e:
-+ except KerberosError as e:
- if e.getErrorCode() == constants.ErrorCodes.KDC_ERR_ETYPE_NOSUPP.value:
- # We might face this if the target does not support AES
- # So, if that's the case we'll force using RC4 by converting
---- impacket/krb5/types.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/krb5/types.py
-@@ -31,14 +31,14 @@ import struct
-
- from pyasn1.codec.der import decoder
-
--import asn1
--import constants
-+from . import asn1
-+from . import constants
-
-
- class KerberosException(Exception): pass
-
- def _asn1_decode(data, asn1Spec):
-- if isinstance(data, basestring):
-+ if isinstance(data, str):
- data, substrate = decoder.decode(data, asn1Spec=asn1Spec)
- if substrate != '':
- raise KerberosException("asn1 encoding invalid")
-@@ -66,7 +66,7 @@ If the value contains no realm, then default_realm wil
- self.type = value.type
- self.components = value.components[:]
- self.realm = value.realm
-- elif isinstance(value, basestring):
-+ elif isinstance(value, str):
- m = re.match(r'((?:[^\\]|\\.)+?)(@((?:[^\\@]|\\.)+))?$', value)
- if not m:
- raise KerberosException("invalid principal syntax")
-@@ -85,7 +85,7 @@ If the value contains no realm, then default_realm wil
- elif len(value) == 2:
- self.components = value[0]
- self.realm = value[-1]
-- if isinstance(self.components, basestring):
-+ if isinstance(self.components, str):
- self.components = [self.components]
- elif len(value) >= 2:
- self.components = value[0:-1]
-@@ -97,7 +97,7 @@ If the value contains no realm, then default_realm wil
- self.type = type
-
- def __eq__(self, other):
-- if isinstance(other, basestring):
-+ if isinstance(other, str):
- other = Principal(other)
-
- return (self.type == constants.PrincipalNameType.NT_UNKNOWN.value or \
-@@ -255,15 +255,15 @@ class KerberosTime(object):
-
- if __name__ == '__main__':
- # TODO marc: turn this into a real test
-- print Principal("marc")
-- print Principal(("marc", None))
-- print Principal((("marc",), None))
-- print Principal("marc@ATHENA.MIT.EDU")
-- print Principal("marc", default_realm="ATHENA.MIT.EDU")
-- print Principal("marc@ATHENA.MIT.EDU", default_realm="EXAMPLE.COM")
-- print Principal(("marc", "ATHENA.MIT.EDU"))
-- print Principal((("marc"), "ATHENA.MIT.EDU"))
-- print Principal("marc/root")
-- print Principal(("marc", "root", "ATHENA.MIT.EDU"))
-- print Principal((("marc", "root"), "ATHENA.MIT.EDU"))
-- print Principal("marc\\/root")
-+ print(Principal("marc"))
-+ print(Principal(("marc", None)))
-+ print(Principal((("marc",), None)))
-+ print(Principal("marc@ATHENA.MIT.EDU"))
-+ print(Principal("marc", default_realm="ATHENA.MIT.EDU"))
-+ print(Principal("marc@ATHENA.MIT.EDU", default_realm="EXAMPLE.COM"))
-+ print(Principal(("marc", "ATHENA.MIT.EDU")))
-+ print(Principal((("marc"), "ATHENA.MIT.EDU")))
-+ print(Principal("marc/root"))
-+ print(Principal(("marc", "root", "ATHENA.MIT.EDU")))
-+ print(Principal((("marc", "root"), "ATHENA.MIT.EDU")))
-+ print(Principal("marc\\/root"))
---- impacket/ldap/ldapasn1.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/ldap/ldapasn1.py
-@@ -575,7 +575,7 @@ class SDFlagsControlValue(univ.Sequence):
- )
-
- class SDFlagsControl(Control):
-- def __init__(self, criticality=None, flags=0x00000007L, **kwargs):
-+ def __init__(self, criticality=None, flags=0x00000007, **kwargs):
- Control.__init__(self, **kwargs)
- self['controlType'] = CONTROL_SDFLAGS
- if criticality is not None:
---- impacket/ldap/ldaptypes.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/ldap/ldaptypes.py
-@@ -189,17 +189,17 @@ https://msdn.microsoft.com/en-us/library/cc230294.aspx
- """
- class ACCESS_MASK(Structure):
- # Flag constants
-- GENERIC_READ = 0x80000000L
-- GENERIC_WRITE = 0x04000000L
-- GENERIC_EXECUTE = 0x20000000L
-- GENERIC_ALL = 0x10000000L
-- MAXIMUM_ALLOWED = 0x02000000L
-- ACCESS_SYSTEM_SECURITY = 0x01000000L
-- SYNCHRONIZE = 0x00100000L
-- WRITE_OWNER = 0x00080000L
-- WRITE_DACL = 0x00040000L
-- READ_CONTROL = 0x00020000L
-- DELETE = 0x00010000L
-+ GENERIC_READ = 0x80000000
-+ GENERIC_WRITE = 0x04000000
-+ GENERIC_EXECUTE = 0x20000000
-+ GENERIC_ALL = 0x10000000
-+ MAXIMUM_ALLOWED = 0x02000000
-+ ACCESS_SYSTEM_SECURITY = 0x01000000
-+ SYNCHRONIZE = 0x00100000
-+ WRITE_OWNER = 0x00080000
-+ WRITE_DACL = 0x00040000
-+ READ_CONTROL = 0x00020000
-+ DELETE = 0x00010000
-
- structure = (
- ('Mask', '<L'),
-@@ -460,7 +460,7 @@ class ACL(Structure):
- for i in range(self['AceCount']):
- # If we don't have any data left, return
- if len(self['Data']) == 0:
-- raise Exception, "ACL header indicated there are more ACLs to unpack, but there is no more data"
-+ raise Exception("ACL header indicated there are more ACLs to unpack, but there is no more data")
- ace = ACE(data=self['Data'])
- self.aces.append(ace)
- self['Data'] = self['Data'][ace['AceSize']:]
---- impacket/mqtt.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/mqtt.py
-@@ -270,7 +270,7 @@ class MQTTConnection:
- try:
- message = MQTT_Packet(data)
- remaining = data[len(message):]
-- except Exception, e:
-+ except Exception as e:
- # We need more data
- remaining = data + self._socket.recv(REQUEST_SIZE)
- else:
-@@ -347,7 +347,7 @@ class MQTTConnection:
-
- try:
- data = self.sendReceive(subscribePacket)[0]
-- except Exception, e:
-+ except Exception as e:
- raise MQTTSessionError(errorString=str(e))
-
- subAck = MQTT_SubscribeACK(str(data))
-@@ -410,7 +410,7 @@ if __name__ == '__main__':
- packets = mqtt.recv()
- for packet in packets:
- publish = MQTT_Publish(str(packet))
-- print '%s -> %s' % (publish['Topic']['Name'], publish['Message'])
-+ print('%s -> %s' % (publish['Topic']['Name'], publish['Message']))
-
- mqtt.disconnect()
-
---- impacket/ntlm.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/ntlm.py
-@@ -206,7 +206,7 @@ class AV_PAIRS:
- self.fields[key] = (len(value),value)
-
- def __getitem__(self, key):
-- if self.fields.has_key(key):
-+ if key in self.fields:
- return self.fields[key]
- return None
-
-@@ -232,14 +232,14 @@ class AV_PAIRS:
- tInfo = tInfo[length:]
-
- def dump(self):
-- for i in self.fields.keys():
-- print "%s: {%r}" % (i,self[i])
-+ for i in list(self.fields.keys()):
-+ print("%s: {%r}" % (i,self[i]))
-
- def getData(self):
-- if self.fields.has_key(NTLMSSP_AV_EOL):
-+ if NTLMSSP_AV_EOL in self.fields:
- del self.fields[NTLMSSP_AV_EOL]
- ans = ''
-- for i in self.fields.keys():
-+ for i in list(self.fields.keys()):
- ans+= struct.pack('<HH', i, self[i][0])
- ans+= self[i][1]
-
-@@ -619,7 +619,7 @@ def getNTLMSSPType3(type1, type2, user, password, doma
- # method we will create a valid ChallengeResponse
- ntlmChallengeResponse = NTLMAuthChallengeResponse(user, password, ntlmChallenge['challenge'])
-
-- clientChallenge = "".join([random.choice(string.digits+string.letters) for _ in xrange(8)])
-+ clientChallenge = "".join([random.choice(string.digits+string.letters) for _ in range(8)])
-
- serverName = ntlmChallenge['TargetInfoFields']
-
-@@ -658,7 +658,7 @@ def getNTLMSSPType3(type1, type2, user, password, doma
- if ntlmChallenge['flags'] & NTLMSSP_NEGOTIATE_KEY_EXCH:
- # not exactly what I call random tho :\
- # exportedSessionKey = this is the key we should use to sign
-- exportedSessionKey = "".join([random.choice(string.digits+string.letters) for _ in xrange(16)])
-+ exportedSessionKey = "".join([random.choice(string.digits+string.letters) for _ in range(16)])
- #exportedSessionKey = "A"*16
- #print "keyExchangeKey %r" % keyExchangeKey
- # Let's generate the right session key based on the challenge flags
-@@ -751,7 +751,7 @@ def LMOWFv1(password, lmhash = '', nthash=''):
- def compute_nthash(password):
- # This is done according to Samba's encryption specification (docs/html/ENCRYPTION.html)
- try:
-- password = unicode(password).encode('utf_16le')
-+ password = str(password).encode('utf_16le')
- except UnicodeDecodeError:
- import sys
- password = password.decode(sys.getfilesystemencoding()).encode('utf_16le')
---- impacket/smb.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/smb.py
-@@ -60,9 +60,9 @@ unicode_support = 0
- unicode_convert = 1
-
- try:
-- from cStringIO import StringIO
-+ from io import StringIO
- except ImportError:
-- from StringIO import StringIO
-+ from io import StringIO
-
- # Dialect for SMB1
- SMB_DIALECT = 'NT LM 0.12'
-@@ -634,9 +634,9 @@ class SharedFile:
- @staticmethod
- def __convert_smbtime(t):
- x = t >> 32
-- y = t & 0xffffffffL
-+ y = t & 0xffffffff
- geo_cal_offset = 11644473600.0 # = 369.0 * 365.25 * 24 * 60 * 60 - (3.0 * 24 * 60 * 60 + 6.0 * 60 * 60)
-- return (x * 4.0 * (1 << 30) + (y & 0xfff00000L)) * 1.0e-7 - geo_cal_offset
-+ return (x * 4.0 * (1 << 30) + (y & 0xfff00000)) * 1.0e-7 - geo_cal_offset
-
-
- # Contain information about a SMB machine
-@@ -681,12 +681,12 @@ class NewSMBPacket(Structure):
- def __init__(self, **kargs):
- Structure.__init__(self, **kargs)
-
-- if self.fields.has_key('Flags2') is False:
-+ if ('Flags2' in self.fields) is False:
- self['Flags2'] = 0
-- if self.fields.has_key('Flags1') is False:
-+ if ('Flags1' in self.fields) is False:
- self['Flags1'] = 0
-
-- if not kargs.has_key('data'):
-+ if 'data' not in kargs:
- self['Data'] = []
-
- def addCommand(self, command):
-@@ -714,9 +714,9 @@ class NewSMBPacket(Structure):
- return 1
- elif self.isMoreProcessingRequired():
- return 1
-- raise SessionError, ("SMB Library Error", self['ErrorClass'] + (self['_reserved'] << 8), self['ErrorCode'], self['Flags2'] & SMB.FLAGS2_NT_STATUS, self)
-+ raise SessionError("SMB Library Error", self['ErrorClass'] + (self['_reserved'] << 8), self['ErrorCode'], self['Flags2'] & SMB.FLAGS2_NT_STATUS, self)
- else:
-- raise UnsupportedFeature, ("Unexpected answer from server: Got %d, Expected %d" % (self['Command'], cmd))
-+ raise UnsupportedFeature("Unexpected answer from server: Got %d, Expected %d" % (self['Command'], cmd))
-
-
- class SMBCommand(Structure):
-@@ -2582,7 +2582,7 @@ class SMB:
- if s.get_error_class() == 0x00 and s.get_error_code() == 0x00:
- return 1
- else:
-- raise SessionError, ( "SMB Library Error", s.get_error_class()+ (s.get_reserved() << 8), s.get_error_code() , s.get_flags2() & SMB.FLAGS2_NT_STATUS )
-+ raise SessionError( "SMB Library Error", s.get_error_class()+ (s.get_reserved() << 8), s.get_error_code() , s.get_flags2() & SMB.FLAGS2_NT_STATUS)
- else:
- break
- return 0
-@@ -2615,7 +2615,7 @@ class SMB:
- self.__server_name = self._dialects_data['ServerName']
-
- if self._dialects_parameters['DialectIndex'] == 0xffff:
-- raise UnsupportedFeature,"Remote server does not know NT LM 0.12"
-+ raise UnsupportedFeature("Remote server does not know NT LM 0.12")
- return 1
- else:
- return 0
-@@ -2769,7 +2769,7 @@ class SMB:
- self._SigningSessionKey = key
-
- def get_encryption_key(self):
-- if self._dialects_data.fields.has_key('Challenge'):
-+ if 'Challenge' in self._dialects_data.fields:
- return self._dialects_data['Challenge']
- else:
- return None
-@@ -3275,7 +3275,7 @@ class SMB:
- pass
-
- # Parse Version to know the target Operating system name. Not provided elsewhere anymore
-- if ntlmChallenge.fields.has_key('Version'):
-+ if 'Version' in ntlmChallenge.fields:
- version = ntlmChallenge['Version']
-
- if len(version) >= 4:
---- impacket/smb3.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/smb3.py
-@@ -244,13 +244,13 @@ class SMB3:
- self.negotiateSession(preferredDialect, negSessionResponse)
-
- def printStatus(self):
-- print "CONNECTION"
-- for i in self._Connection.items():
-- print "%-40s : %s" % i
-- print
-- print "SESSION"
-- for i in self._Session.items():
-- print "%-40s : %s" % i
-+ print("CONNECTION")
-+ for i in list(self._Connection.items()):
-+ print("%-40s : %s" % i)
-+ print()
-+ print("SESSION")
-+ for i in list(self._Session.items()):
-+ print("%-40s : %s" % i)
-
- def getKerberos(self):
- return self._doKerberos
-@@ -335,7 +335,7 @@ class SMB3:
- packet['SessionID'] = self._Session['SessionID']
-
- # Default the credit charge to 1 unless set by the caller
-- if packet.fields.has_key('CreditCharge') is False:
-+ if ('CreditCharge' in packet.fields) is False:
- packet['CreditCharge'] = 1
-
- # Standard credit request after negotiating protocol
-@@ -345,7 +345,7 @@ class SMB3:
- messageId = packet['MessageID']
-
- if self._Session['SigningActivated'] is True and self._Connection['SequenceWindow'] > 2:
-- if packet['TreeID'] > 0 and self._Session['TreeConnectTable'].has_key(packet['TreeID']) is True:
-+ if packet['TreeID'] > 0 and (packet['TreeID'] in self._Session['TreeConnectTable']) is True:
- if self._Session['TreeConnectTable'][packet['TreeID']]['EncryptData'] is False:
- packet['Flags'] = SMB2_FLAGS_SIGNED
- self.signSMB(packet)
-@@ -377,7 +377,7 @@ class SMB3:
-
- def recvSMB(self, packetID = None):
- # First, verify we don't have the packet already
-- if self._Connection['OutstandingResponses'].has_key(packetID):
-+ if packetID in self._Connection['OutstandingResponses']:
- return self._Connection['OutstandingResponses'].pop(packetID)
-
- data = self._NetBIOSSession.recv_packet(self._timeout)
-@@ -772,7 +772,7 @@ class SMB3:
- pass
-
- # Parse Version to know the target Operating system name. Not provided elsewhere anymore
-- if ntlmChallenge.fields.has_key('Version'):
-+ if 'Version' in ntlmChallenge.fields:
- version = ntlmChallenge['Version']
-
- if len(version) >= 4:
-@@ -838,7 +838,7 @@ class SMB3:
-
- #print self._Session['TreeConnectTable']
- share = share.split('\\')[-1]
-- if self._Session['TreeConnectTable'].has_key(share):
-+ if share in self._Session['TreeConnectTable']:
- # Already connected, no need to reconnect
- treeEntry = self._Session['TreeConnectTable'][share]
- treeEntry['NumberOfUses'] += 1
-@@ -890,10 +890,10 @@ class SMB3:
- return packet['TreeID']
-
- def disconnectTree(self, treeId):
-- if self._Session['TreeConnectTable'].has_key(treeId) is False:
-+ if (treeId in self._Session['TreeConnectTable']) is False:
- raise SessionError(STATUS_INVALID_PARAMETER)
-
-- if self._Session['TreeConnectTable'].has_key(treeId):
-+ if treeId in self._Session['TreeConnectTable']:
- # More than 1 use? descrease it and return, if not, send the packet
- if self._Session['TreeConnectTable'][treeId]['NumberOfUses'] > 1:
- treeEntry = self._Session['TreeConnectTable'][treeId]
-@@ -913,7 +913,7 @@ class SMB3:
- del(self._Session['TreeConnectTable'][shareName])
- del(self._Session['TreeConnectTable'][treeId])
- filesIDToBeRemoved = []
-- for fileID in self._Session['OpenTable'].keys():
-+ for fileID in list(self._Session['OpenTable'].keys()):
- if self._Session['OpenTable'][fileID]['TreeConnect'] == treeId:
- filesIDToBeRemoved.append(fileID)
- for fileIDToBeRemoved in filesIDToBeRemoved:
-@@ -921,7 +921,7 @@ class SMB3:
- return True
-
- def create(self, treeId, fileName, desiredAccess, shareMode, creationOptions, creationDisposition, fileAttributes, impersonationLevel = SMB2_IL_IMPERSONATION, securityFlags = 0, oplockLevel = SMB2_OPLOCK_LEVEL_NONE, createContexts = None):
-- if self._Session['TreeConnectTable'].has_key(treeId) is False:
-+ if (treeId in self._Session['TreeConnectTable']) is False:
- raise SessionError(STATUS_INVALID_PARAMETER)
-
- fileName = string.replace(fileName, '/', '\\')
-@@ -944,7 +944,7 @@ class SMB3:
- # Is this file NOT on the root directory?
- if len(fileName.split('\\')) > 2:
- parentDir = ntpath.dirname(pathName)
-- if self.GlobalFileTable.has_key(parentDir):
-+ if parentDir in self.GlobalFileTable:
- LOG.critical("Don't know what to do now! :-o")
- raise
- else:
-@@ -1016,9 +1016,9 @@ class SMB3:
- return str(createResponse['FileID'])
-
- def close(self, treeId, fileId):
-- if self._Session['TreeConnectTable'].has_key(treeId) is False:
-+ if (treeId in self._Session['TreeConnectTable']) is False:
- raise SessionError(STATUS_INVALID_PARAMETER)
-- if self._Session['OpenTable'].has_key(fileId) is False:
-+ if (fileId in self._Session['OpenTable']) is False:
- raise SessionError(STATUS_INVALID_PARAMETER)
-
- packet = self.SMB_PACKET()
-@@ -1047,9 +1047,9 @@ class SMB3:
- # This function should NOT be used for reading files directly, but another higher
- # level function should be used that will break the read into smaller pieces
-
-- if self._Session['TreeConnectTable'].has_key(treeId) is False:
-+ if (treeId in self._Session['TreeConnectTable']) is False:
- raise SessionError(STATUS_INVALID_PARAMETER)
-- if self._Session['OpenTable'].has_key(fileId) is False:
-+ if (fileId in self._Session['OpenTable']) is False:
- raise SessionError(STATUS_INVALID_PARAMETER)
-
- packet = self.SMB_PACKET()
-@@ -1089,9 +1089,9 @@ class SMB3:
- # This function should NOT be used for writing directly to files, but another higher
- # level function should be used that will break the writes into smaller pieces
-
-- if self._Session['TreeConnectTable'].has_key(treeId) is False:
-+ if (treeId in self._Session['TreeConnectTable']) is False:
- raise SessionError(STATUS_INVALID_PARAMETER)
-- if self._Session['OpenTable'].has_key(fileId) is False:
-+ if (fileId in self._Session['OpenTable']) is False:
- raise SessionError(STATUS_INVALID_PARAMETER)
-
- packet = self.SMB_PACKET()
-@@ -1130,9 +1130,9 @@ class SMB3:
- return bytesWritten
-
- def queryDirectory(self, treeId, fileId, searchString = '*', resumeIndex = 0, informationClass = FILENAMES_INFORMATION, maxBufferSize = None, enumRestart = False, singleEntry = False):
-- if self._Session['TreeConnectTable'].has_key(treeId) is False:
-+ if (treeId in self._Session['TreeConnectTable']) is False:
- raise SessionError(STATUS_INVALID_PARAMETER)
-- if self._Session['OpenTable'].has_key(fileId) is False:
-+ if (fileId in self._Session['OpenTable']) is False:
- raise SessionError(STATUS_INVALID_PARAMETER)
-
- packet = self.SMB_PACKET()
-@@ -1183,12 +1183,12 @@ class SMB3:
- self.sendSMB(packet)
-
- def ioctl(self, treeId, fileId = None, ctlCode = -1, flags = 0, inputBlob = '', maxInputResponse = None, maxOutputResponse = None, waitAnswer = 1):
-- if self._Session['TreeConnectTable'].has_key(treeId) is False:
-+ if (treeId in self._Session['TreeConnectTable']) is False:
- raise SessionError(STATUS_INVALID_PARAMETER)
- if fileId is None:
- fileId = '\xff'*16
- else:
-- if self._Session['OpenTable'].has_key(fileId) is False:
-+ if (fileId in self._Session['OpenTable']) is False:
- raise SessionError(STATUS_INVALID_PARAMETER)
-
- packet = self.SMB_PACKET()
-@@ -1224,9 +1224,9 @@ class SMB3:
- return smbIoctlResponse['Buffer']
-
- def flush(self,treeId, fileId):
-- if self._Session['TreeConnectTable'].has_key(treeId) is False:
-+ if (treeId in self._Session['TreeConnectTable']) is False:
- raise SessionError(STATUS_INVALID_PARAMETER)
-- if self._Session['OpenTable'].has_key(fileId) is False:
-+ if (fileId in self._Session['OpenTable']) is False:
- raise SessionError(STATUS_INVALID_PARAMETER)
-
- packet = self.SMB_PACKET()
-@@ -1245,9 +1245,9 @@ class SMB3:
- return True
-
- def lock(self, treeId, fileId, locks, lockSequence = 0):
-- if self._Session['TreeConnectTable'].has_key(treeId) is False:
-+ if (treeId in self._Session['TreeConnectTable']) is False:
- raise SessionError(STATUS_INVALID_PARAMETER)
-- if self._Session['OpenTable'].has_key(fileId) is False:
-+ if (fileId in self._Session['OpenTable']) is False:
- raise SessionError(STATUS_INVALID_PARAMETER)
-
- packet = self.SMB_PACKET()
-@@ -1307,9 +1307,9 @@ class SMB3:
- return True
-
- def queryInfo(self, treeId, fileId, inputBlob = '', infoType = SMB2_0_INFO_FILE, fileInfoClass = SMB2_FILE_STANDARD_INFO, additionalInformation = 0, flags = 0 ):
-- if self._Session['TreeConnectTable'].has_key(treeId) is False:
-+ if (treeId in self._Session['TreeConnectTable']) is False:
- raise SessionError(STATUS_INVALID_PARAMETER)
-- if self._Session['OpenTable'].has_key(fileId) is False:
-+ if (fileId in self._Session['OpenTable']) is False:
- raise SessionError(STATUS_INVALID_PARAMETER)
-
- packet = self.SMB_PACKET()
-@@ -1339,9 +1339,9 @@ class SMB3:
- return queryResponse['Buffer']
-
- def setInfo(self, treeId, fileId, inputBlob = '', infoType = SMB2_0_INFO_FILE, fileInfoClass = SMB2_FILE_STANDARD_INFO, additionalInformation = 0 ):
-- if self._Session['TreeConnectTable'].has_key(treeId) is False:
-+ if (treeId in self._Session['TreeConnectTable']) is False:
- raise SessionError(STATUS_INVALID_PARAMETER)
-- if self._Session['OpenTable'].has_key(fileId) is False:
-+ if (fileId in self._Session['OpenTable']) is False:
- raise SessionError(STATUS_INVALID_PARAMETER)
-
- packet = self.SMB_PACKET()
-@@ -1444,7 +1444,7 @@ class SMB3:
- files.append(smb.SharedFile(fileInfo['CreationTime'],fileInfo['LastAccessTime'],fileInfo['LastChangeTime'],fileInfo['EndOfFile'],fileInfo['AllocationSize'],fileInfo['ExtFileAttributes'],fileInfo['FileName'].decode('utf-16le'), fileInfo['FileName'].decode('utf-16le')))
- nextOffset = fileInfo['NextEntryOffset']
- res = res[nextOffset:]
-- except SessionError, e:
-+ except SessionError as e:
- if (e.get_error_code()) != STATUS_NO_MORE_FILES:
- raise
- break
-@@ -1578,7 +1578,7 @@ class SMB3:
-
- def waitNamedPipe(self, treeId, pipename, timeout = 5):
- pipename = ntpath.basename(pipename)
-- if self._Session['TreeConnectTable'].has_key(treeId) is False:
-+ if (treeId in self._Session['TreeConnectTable']) is False:
- raise SessionError(STATUS_INVALID_PARAMETER)
- if len(pipename) > 0xffff:
- raise SessionError(STATUS_INVALID_PARAMETER)
---- impacket/smbconnection.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/smbconnection.py
-@@ -18,7 +18,7 @@ import string
- import socket
-
- from impacket import smb, smb3, nmb, nt_errors, LOG
--from smb3structs import *
-+from .smb3structs import *
-
-
- # So the user doesn't need to import smb, the smb3 are already in here
-@@ -261,7 +261,7 @@ class SMBConnection:
- return self._SMBConnection.login(user, password, domain, lmhash, nthash, ntlmFallback)
- else:
- return self._SMBConnection.login(user, password, domain, lmhash, nthash)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-
- def kerberosLogin(self, user, password, domain='', lmhash='', nthash='', aesKey='', kdcHost=None, TGT=None,
-@@ -337,9 +337,9 @@ class SMBConnection:
- TGT, TGS)
- return self._SMBConnection.kerberosLogin(user, password, domain, lmhash, nthash, aesKey, kdcHost, TGT,
- TGS)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-- except KerberosError, e:
-+ except KerberosError as e:
- if e.getErrorCode() == constants.ErrorCodes.KDC_ERR_ETYPE_NOSUPP.value:
- # We might face this if the target does not support AES
- # So, if that's the case we'll force using RC4 by converting
-@@ -357,13 +357,13 @@ class SMBConnection:
- def isGuestSession(self):
- try:
- return self._SMBConnection.isGuestSession()
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-
- def logoff(self):
- try:
- return self._SMBConnection.logoff()
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-
-
-@@ -376,14 +376,14 @@ class SMBConnection:
- share = '\\\\' + self.getRemoteHost() + '\\' + share
- try:
- return self._SMBConnection.connect_tree(share)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-
-
- def disconnectTree(self, treeId):
- try:
- return self._SMBConnection.disconnect_tree(treeId)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-
-
-@@ -416,7 +416,7 @@ class SMBConnection:
-
- try:
- return self._SMBConnection.list_path(shareName, path, password)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-
- def createFile(self, treeId, pathName, desiredAccess=GENERIC_ALL,
-@@ -460,14 +460,14 @@ class SMBConnection:
-
- try:
- return self._SMBConnection.nt_create_andx(treeId, pathName, cmd = ntCreate)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
- else:
- try:
- return self._SMBConnection.create(treeId, pathName, desiredAccess, shareMode, creationOption,
- creationDisposition, fileAttributes, impersonationLevel,
- securityFlags, oplockLevel, createContexts)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-
- def openFile(self, treeId, pathName, desiredAccess=FILE_READ_DATA | FILE_WRITE_DATA, shareMode=FILE_SHARE_READ,
-@@ -510,14 +510,14 @@ class SMBConnection:
-
- try:
- return self._SMBConnection.nt_create_andx(treeId, pathName, cmd = ntCreate)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
- else:
- try:
- return self._SMBConnection.create(treeId, pathName, desiredAccess, shareMode, creationOption,
- creationDisposition, fileAttributes, impersonationLevel,
- securityFlags, oplockLevel, createContexts)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-
- def writeFile(self, treeId, fileId, data, offset=0):
-@@ -533,7 +533,7 @@ class SMBConnection:
- """
- try:
- return self._SMBConnection.writeFile(treeId, fileId, data, offset)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-
-
-@@ -560,7 +560,7 @@ class SMBConnection:
- toRead = remainingBytesToRead
- try:
- bytesRead = self._SMBConnection.read_andx(treeId, fileId, offset, toRead)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- if e.get_error_code() == nt_errors.STATUS_END_OF_FILE:
- toRead = ''
- break
-@@ -593,7 +593,7 @@ class SMBConnection:
- """
- try:
- return self._SMBConnection.close(treeId, fileId)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-
- def deleteFile(self, shareName, pathName):
-@@ -608,7 +608,7 @@ class SMBConnection:
- """
- try:
- return self._SMBConnection.remove(shareName, pathName)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-
- def queryInfo(self, treeId, fileId):
-@@ -627,7 +627,7 @@ class SMBConnection:
- else:
- res = self._SMBConnection.queryInfo(treeId, fileId)
- return smb.SMBQueryFileStandardInfo(res)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-
- def createDirectory(self, shareName, pathName ):
-@@ -642,7 +642,7 @@ class SMBConnection:
- """
- try:
- return self._SMBConnection.mkdir(shareName, pathName)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-
- def deleteDirectory(self, shareName, pathName):
-@@ -657,7 +657,7 @@ class SMBConnection:
- """
- try:
- return self._SMBConnection.rmdir(shareName, pathName)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-
- def waitNamedPipe(self, treeId, pipeName, timeout = 5):
-@@ -673,7 +673,7 @@ class SMBConnection:
- """
- try:
- return self._SMBConnection.waitNamedPipe(treeId, pipeName, timeout = timeout)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-
- def transactNamedPipe(self, treeId, fileId, data, waitAnswer = True):
-@@ -690,7 +690,7 @@ class SMBConnection:
- """
- try:
- return self._SMBConnection.TransactNamedPipe(treeId, fileId, data, waitAnswer = waitAnswer)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-
-
-@@ -703,7 +703,7 @@ class SMBConnection:
- """
- try:
- return self._SMBConnection.TransactNamedPipeRecv()
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-
- def writeNamedPipe(self, treeId, fileId, data, waitAnswer = True):
-@@ -723,7 +723,7 @@ class SMBConnection:
- return self._SMBConnection.write_andx(treeId, fileId, data, wait_answer = waitAnswer, write_pipe_mode = True)
- else:
- return self.writeFile(treeId, fileId, data, 0)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-
-
-@@ -741,7 +741,7 @@ class SMBConnection:
-
- try:
- return self.readFile(treeId, fileId, bytesToRead = bytesToRead, singleCall = True)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-
-
-@@ -762,7 +762,7 @@ class SMBConnection:
- return self._SMBConnection.retr_file(shareName, pathName, callback)
- else:
- return self._SMBConnection.retr_file(shareName, pathName, callback, shareAccessMode=shareAccessMode)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-
- def putFile(self, shareName, pathName, callback, shareAccessMode = None):
-@@ -782,7 +782,7 @@ class SMBConnection:
- return self._SMBConnection.stor_file(shareName, pathName, callback)
- else:
- return self._SMBConnection.stor_file(shareName, pathName, callback, shareAccessMode)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-
- def rename(self, shareName, oldPath, newPath):
-@@ -799,7 +799,7 @@ class SMBConnection:
-
- try:
- return self._SMBConnection.rename(shareName, oldPath, newPath)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-
- def reconnect(self):
-@@ -823,7 +823,7 @@ class SMBConnection:
- def setTimeout(self, timeout):
- try:
- return self._SMBConnection.set_timeout(timeout)
-- except (smb.SessionError, smb3.SessionError), e:
-+ except (smb.SessionError, smb3.SessionError) as e:
- raise SessionError(e.get_error_code(), e.get_error_packet())
-
- def getSessionKey(self):
-@@ -871,7 +871,7 @@ class SessionError(Exception):
- return nt_errors.ERROR_MESSAGES[self.error]
-
- def __str__( self ):
-- if nt_errors.ERROR_MESSAGES.has_key(self.error):
-+ if self.error in nt_errors.ERROR_MESSAGES:
- return 'SMB SessionError: %s(%s)' % (nt_errors.ERROR_MESSAGES[self.error])
- else:
- return 'SMB SessionError: 0x%x' % self.error
---- impacket/smbserver.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/smbserver.py
-@@ -20,14 +20,14 @@
- # [ ] Hence.. implement locking
- # estamos en la B
-
--from __future__ import with_statement
-+
- import calendar
- import socket
- import time
- import datetime
- import struct
--import ConfigParser
--import SocketServer
-+import configparser
-+import socketserver
- import threading
- import logging
- import logging.config
-@@ -144,7 +144,7 @@ def outputToJohnFormat(challenge, username, domain, lm
- else:
- # NTLMv1
- ret_value = {'hash_string':'%s::%s:%s:%s:%s' % (username, domain, hexlify(lmresponse), hexlify(ntresponse), hexlify(challenge)), 'hash_version':'ntlm'}
-- except Exception, e:
-+ except Exception as e:
- LOG.error("outputToJohnFormat: %s" % e)
- pass
-
-@@ -247,7 +247,7 @@ def openFile(path,fileName, accessMode, fileAttributes
- if sys.platform == 'win32':
- mode |= os.O_BINARY
- fid = os.open(pathName, mode)
-- except Exception, e:
-+ except Exception as e:
- LOG.error("openFile: %s,%s" % (pathName, mode) ,e)
- fid = 0
- errorCode = STATUS_ACCESS_DENIED
-@@ -256,7 +256,7 @@ def openFile(path,fileName, accessMode, fileAttributes
-
- def queryFsInformation(path, filename, level=0):
-
-- if isinstance(filename,unicode):
-+ if isinstance(filename,str):
- encoding = 'utf-16le'
- flags = smb.SMB.FLAGS2_UNICODE
- else:
-@@ -311,7 +311,7 @@ def findFirst2(path, fileName, level, searchAttributes
- #print "FindFirs2 path:%s, filename:%s" % (path, fileName)
- fileName = os.path.normpath(fileName.replace('\\','/'))
- # Let's choose the right encoding depending on the request
-- if isinstance(fileName,unicode):
-+ if isinstance(fileName,str):
- encoding = 'utf-16le'
- flags = smb.SMB.FLAGS2_UNICODE
- else:
-@@ -506,7 +506,7 @@ def queryPathInformation(path, filename, level):
- else:
- # NOT FOUND
- return None, STATUS_OBJECT_NAME_NOT_FOUND
-- except Exception, e:
-+ except Exception as e:
- LOG.error('queryPathInfo: %s' % e)
- raise
-
-@@ -550,7 +550,7 @@ class TRANSCommands:
- # (beto) If offset == 0 it crashes explorer.exe on windows 7
- entry['RemarkOffsetLow'] = 20 * len(shares) + len(tailData)
- respData += entry.getData()
-- if shares[i].has_key('comment'):
-+ if 'comment' in shares[i]:
- tailData += shares[i]['comment'] + '\x00'
- else:
- tailData += '\x00'
-@@ -575,7 +575,7 @@ class TRANSCommands:
- shareInfo['NetworkName'] = request['ShareName'].upper() + '\x00'
- shareInfo['Type'] = int(share['share type'])
- respData = shareInfo.getData()
-- if share.has_key('comment'):
-+ if 'comment' in share:
- shareInfo['RemarkOffsetLow'] = len(respData)
- respData += share['comment'] + '\x00'
- respParameters['TotalBytesAvailable'] = len(respData)
-@@ -602,7 +602,7 @@ class TRANSCommands:
- # Extract the FID
- fid = struct.unpack('<H', transParameters['Setup'][2:])[0]
-
-- if connData['OpenedFiles'].has_key(fid):
-+ if fid in connData['OpenedFiles']:
- fileHandle = connData['OpenedFiles'][fid]['FileHandle']
- if fileHandle != PIPE_FILE_DESCRIPTOR:
- os.write(fileHandle,data)
-@@ -630,7 +630,7 @@ class TRANS2Commands:
- respData = ''
- errorCode = STATUS_SUCCESS
- setPathInfoParameters = smb.SMBSetPathInformation_Parameters(flags = recvPacket['Flags2'], data = parameters)
-- if connData['ConnectedShares'].has_key(recvPacket['Tid']):
-+ if recvPacket['Tid'] in connData['ConnectedShares']:
- path = connData['ConnectedShares'][recvPacket['Tid']]['path']
- fileName = decodeSMBString(recvPacket['Flags2'], setPathInfoParameters['FileName'])
- fileName = os.path.normpath(fileName.replace('\\','/'))
-@@ -683,8 +683,8 @@ class TRANS2Commands:
- errorCode = STATUS_SUCCESS
- setFileInfoParameters = smb.SMBSetFileInformation_Parameters(parameters)
-
-- if connData['ConnectedShares'].has_key(recvPacket['Tid']):
-- if connData['OpenedFiles'].has_key(setFileInfoParameters['FID']):
-+ if recvPacket['Tid'] in connData['ConnectedShares']:
-+ if setFileInfoParameters['FID'] in connData['OpenedFiles']:
- fileName = connData['OpenedFiles'][setFileInfoParameters['FID']]['FileName']
- informationLevel = setFileInfoParameters['InformationLevel']
- if informationLevel == smb.SMB_SET_FILE_DISPOSITION_INFO:
-@@ -739,8 +739,8 @@ class TRANS2Commands:
-
- queryFileInfoParameters = smb.SMBQueryFileInformation_Parameters(parameters)
-
-- if connData['ConnectedShares'].has_key(recvPacket['Tid']):
-- if connData['OpenedFiles'].has_key(queryFileInfoParameters['FID']):
-+ if recvPacket['Tid'] in connData['ConnectedShares']:
-+ if queryFileInfoParameters['FID'] in connData['OpenedFiles']:
- fileName = connData['OpenedFiles'][queryFileInfoParameters['FID']]['FileName']
-
- infoRecord, errorCode = queryFileInformation('', fileName, queryFileInfoParameters['InformationLevel'])
-@@ -768,11 +768,11 @@ class TRANS2Commands:
-
- queryPathInfoParameters = smb.SMBQueryPathInformation_Parameters(flags = recvPacket['Flags2'], data = parameters)
-
-- if connData['ConnectedShares'].has_key(recvPacket['Tid']):
-+ if recvPacket['Tid'] in connData['ConnectedShares']:
- path = connData['ConnectedShares'][recvPacket['Tid']]['path']
- try:
- infoRecord, errorCode = queryPathInformation(path, decodeSMBString(recvPacket['Flags2'], queryPathInfoParameters['FileName']), queryPathInfoParameters['InformationLevel'])
-- except Exception, e:
-+ except Exception as e:
- smbServer.log("queryPathInformation: %s" % e,logging.ERROR)
-
- if infoRecord is not None:
-@@ -790,7 +790,7 @@ class TRANS2Commands:
- connData = smbServer.getConnectionData(connId)
- errorCode = 0
- # Get the Tid associated
-- if connData['ConnectedShares'].has_key(recvPacket['Tid']):
-+ if recvPacket['Tid'] in connData['ConnectedShares']:
- data = queryFsInformation(connData['ConnectedShares'][recvPacket['Tid']]['path'], '', struct.unpack('<H',parameters)[0])
-
- smbServer.setConnectionData(connId, connData)
-@@ -808,8 +808,8 @@ class TRANS2Commands:
- findNext2Parameters = smb.SMBFindNext2_Parameters(flags = recvPacket['Flags2'], data = parameters)
-
- sid = findNext2Parameters['SID']
-- if connData['ConnectedShares'].has_key(recvPacket['Tid']):
-- if connData['SIDs'].has_key(sid):
-+ if recvPacket['Tid'] in connData['ConnectedShares']:
-+ if sid in connData['SIDs']:
- searchResult = connData['SIDs'][sid]
- respParameters = smb.SMBFindNext2Response_Parameters()
- endOfSearch = 1
-@@ -854,7 +854,7 @@ class TRANS2Commands:
- respData = ''
- findFirst2Parameters = smb.SMBFindFirst2_Parameters( recvPacket['Flags2'], data = parameters)
-
-- if connData['ConnectedShares'].has_key(recvPacket['Tid']):
-+ if recvPacket['Tid'] in connData['ConnectedShares']:
- path = connData['ConnectedShares'][recvPacket['Tid']]['path']
-
- searchResult, searchCount, errorCode = findFirst2(path,
-@@ -878,7 +878,7 @@ class TRANS2Commands:
- if len(connData['SIDs']) == 0:
- sid = 1
- else:
-- sid = connData['SIDs'].keys()[-1] + 1
-+ sid = list(connData['SIDs'].keys())[-1] + 1
- # Store the remaining search results in the ConnData SID
- connData['SIDs'][sid] = searchResult[i[0]:]
- respParameters['LastNameOffset'] = totalData
-@@ -945,7 +945,7 @@ class SMBCommands:
- else:
- command = struct.unpack('<H', transParameters['Setup'][:2])[0]
-
-- if transCommands.has_key(command):
-+ if command in transCommands:
- # Call the TRANS subcommand
- setup = ''
- parameters = ''
-@@ -957,7 +957,7 @@ class SMBCommands:
- transData['Trans_Parameters'],
- transData['Trans_Data'],
- transParameters['MaxDataCount'])
-- except Exception, e:
-+ except Exception as e:
- #print 'Transaction: %s' % e,e
- smbServer.log('Transaction: (%r,%s)' % (command, e), logging.ERROR)
- errorCode = STATUS_ACCESS_DENIED
-@@ -1082,7 +1082,7 @@ class SMBCommands:
-
- # Call the handler for this TRANSACTION
- command = NTTransParameters['Function']
-- if transCommands.has_key(command):
-+ if command in transCommands:
- # Call the NT TRANS subcommand
- setup = ''
- parameters = ''
-@@ -1094,7 +1094,7 @@ class SMBCommands:
- NTTransData['NT_Trans_Parameters'],
- NTTransData['NT_Trans_Data'],
- NTTransParameters['MaxDataCount'])
-- except Exception, e:
-+ except Exception as e:
- smbServer.log('NTTransaction: (0x%x,%s)' % (command, e), logging.ERROR)
- errorCode = STATUS_ACCESS_DENIED
- #raise
-@@ -1221,7 +1221,7 @@ class SMBCommands:
-
- # Call the handler for this TRANSACTION
- command = struct.unpack('<H', trans2Parameters['Setup'])[0]
-- if transCommands.has_key(command):
-+ if command in transCommands:
- # Call the TRANS2 subcommand
- try:
- setup, parameters, data, errorCode = transCommands[command](connId,
-@@ -1230,7 +1230,7 @@ class SMBCommands:
- trans2Data['Trans_Parameters'],
- trans2Data['Trans_Data'],
- trans2Parameters['MaxDataCount'])
-- except Exception, e:
-+ except Exception as e:
- smbServer.log('Transaction2: (0x%x,%s)' % (command, e), logging.ERROR)
- #import traceback
- #traceback.print_exc()
-@@ -1346,7 +1346,7 @@ class SMBCommands:
-
- comClose = smb.SMBClose_Parameters(SMBCommand['Parameters'])
-
-- if connData['OpenedFiles'].has_key(comClose['FID']):
-+ if comClose['FID'] in connData['OpenedFiles']:
- errorCode = STATUS_SUCCESS
- fileHandle = connData['OpenedFiles'][comClose['FID']]['FileHandle']
- try:
-@@ -1354,7 +1354,7 @@ class SMBCommands:
- connData['OpenedFiles'][comClose['FID']]['Socket'].close()
- elif fileHandle != VOID_FILE_DESCRIPTOR:
- os.close(fileHandle)
-- except Exception, e:
-+ except Exception as e:
- smbServer.log("comClose %s" % e, logging.ERROR)
- errorCode = STATUS_ACCESS_DENIED
- else:
-@@ -1362,7 +1362,7 @@ class SMBCommands:
- if connData['OpenedFiles'][comClose['FID']]['DeleteOnClose'] is True:
- try:
- os.remove(connData['OpenedFiles'][comClose['FID']]['FileName'])
-- except Exception, e:
-+ except Exception as e:
- smbServer.log("comClose %s" % e, logging.ERROR)
- errorCode = STATUS_ACCESS_DENIED
- del(connData['OpenedFiles'][comClose['FID']])
-@@ -1390,7 +1390,7 @@ class SMBCommands:
- comWriteParameters = smb.SMBWrite_Parameters(SMBCommand['Parameters'])
- comWriteData = smb.SMBWrite_Data(SMBCommand['Data'])
-
-- if connData['OpenedFiles'].has_key(comWriteParameters['Fid']):
-+ if comWriteParameters['Fid'] in connData['OpenedFiles']:
- fileHandle = connData['OpenedFiles'][comWriteParameters['Fid']]['FileHandle']
- errorCode = STATUS_SUCCESS
- try:
-@@ -1404,7 +1404,7 @@ class SMBCommands:
- sock = connData['OpenedFiles'][comWriteParameters['Fid']]['Socket']
- sock.send(comWriteData['Data'])
- respParameters['Count'] = comWriteParameters['Count']
-- except Exception, e:
-+ except Exception as e:
- smbServer.log('smbComWrite: %s' % e, logging.ERROR)
- errorCode = STATUS_ACCESS_DENIED
- else:
-@@ -1431,12 +1431,12 @@ class SMBCommands:
-
- comFlush = smb.SMBFlush_Parameters(SMBCommand['Parameters'])
-
-- if connData['OpenedFiles'].has_key(comFlush['FID']):
-+ if comFlush['FID'] in connData['OpenedFiles']:
- errorCode = STATUS_SUCCESS
- fileHandle = connData['OpenedFiles'][comFlush['FID']]['FileHandle']
- try:
- os.fsync(fileHandle)
-- except Exception, e:
-+ except Exception as e:
- smbServer.log("comFlush %s" % e, logging.ERROR)
- errorCode = STATUS_ACCESS_DENIED
- else:
-@@ -1464,7 +1464,7 @@ class SMBCommands:
- comCreateDirectoryData= smb.SMBCreateDirectory_Data(flags = recvPacket['Flags2'], data = SMBCommand['Data'])
-
- # Get the Tid associated
-- if connData['ConnectedShares'].has_key(recvPacket['Tid']):
-+ if recvPacket['Tid'] in connData['ConnectedShares']:
- errorCode = STATUS_SUCCESS
- path = connData['ConnectedShares'][recvPacket['Tid']]['path']
- fileName = os.path.normpath(decodeSMBString(recvPacket['Flags2'],comCreateDirectoryData['DirectoryName']).replace('\\','/'))
-@@ -1481,7 +1481,7 @@ class SMBCommands:
- else:
- try:
- os.mkdir(pathName)
-- except Exception, e:
-+ except Exception as e:
- smbServer.log("smbComCreateDirectory: %s" % e, logging.ERROR)
- errorCode = STATUS_ACCESS_DENIED
- else:
-@@ -1508,7 +1508,7 @@ class SMBCommands:
-
- comRenameData = smb.SMBRename_Data(flags = recvPacket['Flags2'], data = SMBCommand['Data'])
- # Get the Tid associated
-- if connData['ConnectedShares'].has_key(recvPacket['Tid']):
-+ if recvPacket['Tid'] in connData['ConnectedShares']:
- errorCode = STATUS_SUCCESS
- path = connData['ConnectedShares'][recvPacket['Tid']]['path']
- oldFileName = os.path.normpath(decodeSMBString(recvPacket['Flags2'],comRenameData['OldFileName']).replace('\\','/'))
-@@ -1530,7 +1530,7 @@ class SMBCommands:
- else:
- try:
- os.rename(oldPathName,newPathName)
-- except OSError, e:
-+ except OSError as e:
- smbServer.log("smbComRename: %s" % e, logging.ERROR)
- errorCode = STATUS_ACCESS_DENIED
- else:
-@@ -1558,7 +1558,7 @@ class SMBCommands:
- comDeleteData = smb.SMBDelete_Data(flags = recvPacket['Flags2'], data = SMBCommand['Data'])
-
- # Get the Tid associated
-- if connData['ConnectedShares'].has_key(recvPacket['Tid']):
-+ if recvPacket['Tid'] in connData['ConnectedShares']:
- errorCode = STATUS_SUCCESS
- path = connData['ConnectedShares'][recvPacket['Tid']]['path']
- fileName = os.path.normpath(decodeSMBString(recvPacket['Flags2'],comDeleteData['FileName']).replace('\\','/'))
-@@ -1574,7 +1574,7 @@ class SMBCommands:
- else:
- try:
- os.remove(pathName)
-- except OSError, e:
-+ except OSError as e:
- smbServer.log("smbComDelete: %s" % e, logging.ERROR)
- errorCode = STATUS_ACCESS_DENIED
- else:
-@@ -1602,7 +1602,7 @@ class SMBCommands:
- comDeleteDirectoryData= smb.SMBDeleteDirectory_Data(flags = recvPacket['Flags2'], data = SMBCommand['Data'])
-
- # Get the Tid associated
-- if connData['ConnectedShares'].has_key(recvPacket['Tid']):
-+ if recvPacket['Tid'] in connData['ConnectedShares']:
- errorCode = STATUS_SUCCESS
- path = connData['ConnectedShares'][recvPacket['Tid']]['path']
- fileName = os.path.normpath(decodeSMBString(recvPacket['Flags2'],comDeleteDirectoryData['DirectoryName']).replace('\\','/'))
-@@ -1618,7 +1618,7 @@ class SMBCommands:
- else:
- try:
- os.rmdir(pathName)
-- except OSError, e:
-+ except OSError as e:
- smbServer.log("smbComDeleteDirectory: %s" % e,logging.ERROR)
- if e.errno == errno.ENOTEMPTY:
- errorCode = STATUS_DIRECTORY_NOT_EMPTY
-@@ -1657,13 +1657,13 @@ class SMBCommands:
- writeAndXData.fromString(SMBCommand['Data'])
-
-
-- if connData['OpenedFiles'].has_key(writeAndX['Fid']):
-+ if writeAndX['Fid'] in connData['OpenedFiles']:
- fileHandle = connData['OpenedFiles'][writeAndX['Fid']]['FileHandle']
- errorCode = STATUS_SUCCESS
- try:
- if fileHandle != PIPE_FILE_DESCRIPTOR:
- offset = writeAndX['Offset']
-- if writeAndX.fields.has_key('HighOffset'):
-+ if 'HighOffset' in writeAndX.fields:
- offset += (writeAndX['HighOffset'] << 32)
- # If we're trying to write past the file end we just skip the write call (Vista does this)
- if os.lseek(fileHandle, 0, 2) >= offset:
-@@ -1675,7 +1675,7 @@ class SMBCommands:
-
- respParameters['Count'] = writeAndX['DataLength']
- respParameters['Available']= 0xff
-- except Exception, e:
-+ except Exception as e:
- smbServer.log('smbComWriteAndx: %s' % e, logging.ERROR)
- errorCode = STATUS_ACCESS_DENIED
- else:
-@@ -1701,7 +1701,7 @@ class SMBCommands:
-
- comReadParameters = smb.SMBRead_Parameters(SMBCommand['Parameters'])
-
-- if connData['OpenedFiles'].has_key(comReadParameters['Fid']):
-+ if comReadParameters['Fid'] in connData['OpenedFiles']:
- fileHandle = connData['OpenedFiles'][comReadParameters['Fid']]['FileHandle']
- errorCode = STATUS_SUCCESS
- try:
-@@ -1715,7 +1715,7 @@ class SMBCommands:
- respParameters['Count'] = len(content)
- respData['DataLength'] = len(content)
- respData['Data'] = content
-- except Exception, e:
-+ except Exception as e:
- smbServer.log('smbComRead: %s ' % e, logging.ERROR)
- errorCode = STATUS_ACCESS_DENIED
- else:
-@@ -1744,13 +1744,13 @@ class SMBCommands:
- else:
- readAndX = smb.SMBReadAndX_Parameters(SMBCommand['Parameters'])
-
-- if connData['OpenedFiles'].has_key(readAndX['Fid']):
-+ if readAndX['Fid'] in connData['OpenedFiles']:
- fileHandle = connData['OpenedFiles'][readAndX['Fid']]['FileHandle']
- errorCode = 0
- try:
- if fileHandle != PIPE_FILE_DESCRIPTOR:
- offset = readAndX['Offset']
-- if readAndX.fields.has_key('HighOffset'):
-+ if 'HighOffset' in readAndX.fields:
- offset += (readAndX['HighOffset'] << 32)
- os.lseek(fileHandle,offset,0)
- content = os.read(fileHandle,readAndX['MaxCount'])
-@@ -1762,7 +1762,7 @@ class SMBCommands:
- respParameters['DataOffset'] = 59
- respParameters['DataCount_Hi'] = 0
- respData = content
-- except Exception, e:
-+ except Exception as e:
- smbServer.log('smbComReadAndX: %s ' % e, logging.ERROR)
- errorCode = STATUS_ACCESS_DENIED
- else:
-@@ -1789,7 +1789,7 @@ class SMBCommands:
- queryInformation= smb.SMBQueryInformation_Data(flags = recvPacket['Flags2'], data = SMBCommand['Data'])
-
- # Get the Tid associated
-- if connData['ConnectedShares'].has_key(recvPacket['Tid']):
-+ if recvPacket['Tid'] in connData['ConnectedShares']:
- fileSize, lastWriteTime, fileAttributes = queryFsInformation(
- connData['ConnectedShares'][recvPacket['Tid']]['path'],
- decodeSMBString(recvPacket['Flags2'],queryInformation['FileName']))
-@@ -1819,7 +1819,7 @@ class SMBCommands:
- respData = ''
-
- # Get the Tid associated
-- if connData['ConnectedShares'].has_key(recvPacket['Tid']):
-+ if recvPacket['Tid'] in connData['ConnectedShares']:
- totalUnits, freeUnits = queryDiskInformation(
- connData['ConnectedShares'][recvPacket['Tid']]['path'])
-
-@@ -1871,7 +1871,7 @@ class SMBCommands:
- respParameters = ''
- respData = ''
-
-- if connData['ConnectedShares'].has_key(recvPacket['Tid']):
-+ if recvPacket['Tid'] in connData['ConnectedShares']:
- smbServer.log("Disconnecting Share(%d:%s)" % (recvPacket['Tid'],connData['ConnectedShares'][recvPacket['Tid']]['shareName']))
- del(connData['ConnectedShares'][recvPacket['Tid']])
- errorCode = STATUS_SUCCESS
-@@ -1919,7 +1919,7 @@ class SMBCommands:
-
- queryInformation2 = smb.SMBQueryInformation2_Parameters(SMBCommand['Parameters'])
- errorCode = 0xFF
-- if connData['OpenedFiles'].has_key(queryInformation2['Fid']):
-+ if queryInformation2['Fid'] in connData['OpenedFiles']:
- errorCode = STATUS_SUCCESS
- pathName = connData['OpenedFiles'][queryInformation2['Fid']]['FileName']
- try:
-@@ -1938,7 +1938,7 @@ class SMBCommands:
- if os.path.isfile(pathName):
- attribs = smb.SMB_FILE_ATTRIBUTE_NORMAL
- respParameters['FileAttributes'] = attribs
-- except Exception, e:
-+ except Exception as e:
- smbServer.log('smbComQueryInformation2 %s' % e,logging.ERROR)
- errorCode = STATUS_ACCESS_DENIED
-
-@@ -1969,14 +1969,14 @@ class SMBCommands:
- # respParameters['VolumeGUID'] = '\x00'
-
- # Get the Tid associated
-- if connData['ConnectedShares'].has_key(recvPacket['Tid']):
-+ if recvPacket['Tid'] in connData['ConnectedShares']:
- # If we have a rootFid, the path is relative to that fid
- errorCode = STATUS_SUCCESS
- if ntCreateAndXParameters['RootFid'] > 0:
- path = connData['OpenedFiles'][ntCreateAndXParameters['RootFid']]['FileName']
- LOG.debug("RootFid present %s!" % path)
- else:
-- if connData['ConnectedShares'][recvPacket['Tid']].has_key('path'):
-+ if 'path' in connData['ConnectedShares'][recvPacket['Tid']]:
- path = connData['ConnectedShares'][recvPacket['Tid']]['path']
- else:
- path = 'NONE'
-@@ -2012,7 +2012,7 @@ class SMBCommands:
- else:
- mode |= os.O_CREAT
- elif createDisposition & smb.FILE_OPEN == smb.FILE_OPEN:
-- if os.path.exists(pathName) is not True and smbServer.getRegisteredNamedPipes().has_key(unicode(pathName)) is not True:
-+ if os.path.exists(pathName) is not True and (str(pathName) in smbServer.getRegisteredNamedPipes()) is not True:
- errorCode = STATUS_NO_SUCH_FILE
-
- if errorCode == STATUS_SUCCESS:
-@@ -2034,7 +2034,7 @@ class SMBCommands:
- # Let's create the directory
- os.mkdir(pathName)
- mode = os.O_RDONLY
-- except Exception, e:
-+ except Exception as e:
- smbServer.log("NTCreateAndX: %s,%s,%s" % (pathName,mode,e),logging.ERROR)
- errorCode = STATUS_ACCESS_DENIED
- if createOptions & smb.FILE_NON_DIRECTORY_FILE == smb.FILE_NON_DIRECTORY_FILE:
-@@ -2054,13 +2054,13 @@ class SMBCommands:
- else:
- if sys.platform == 'win32':
- mode |= os.O_BINARY
-- if smbServer.getRegisteredNamedPipes().has_key(unicode(pathName)):
-+ if str(pathName) in smbServer.getRegisteredNamedPipes():
- fid = PIPE_FILE_DESCRIPTOR
- sock = socket.socket()
-- sock.connect(smbServer.getRegisteredNamedPipes()[unicode(pathName)])
-+ sock.connect(smbServer.getRegisteredNamedPipes()[str(pathName)])
- else:
- fid = os.open(pathName, mode)
-- except Exception, e:
-+ except Exception as e:
- smbServer.log("NTCreateAndX: %s,%s,%s" % (pathName,mode,e),logging.ERROR)
- #print e
- fid = 0
-@@ -2073,7 +2073,7 @@ class SMBCommands:
- if len(connData['OpenedFiles']) == 0:
- fakefid = 1
- else:
-- fakefid = connData['OpenedFiles'].keys()[-1] + 1
-+ fakefid = list(connData['OpenedFiles'].keys())[-1] + 1
- respParameters['Fid'] = fakefid
- respParameters['CreateAction'] = createDisposition
- if fid == PIPE_FILE_DESCRIPTOR:
-@@ -2139,7 +2139,7 @@ class SMBCommands:
- openAndXData = smb.SMBOpenAndX_Data( flags = recvPacket['Flags2'], data = SMBCommand['Data'])
-
- # Get the Tid associated
-- if connData['ConnectedShares'].has_key(recvPacket['Tid']):
-+ if recvPacket['Tid'] in connData['ConnectedShares']:
- path = connData['ConnectedShares'][recvPacket['Tid']]['path']
- openedFile, mode, pathName, errorCode = openFile(path,
- decodeSMBString(recvPacket['Flags2'],openAndXData['FileName']),
-@@ -2155,7 +2155,7 @@ class SMBCommands:
- if len(connData['OpenedFiles']) == 0:
- fid = 1
- else:
-- fid = connData['OpenedFiles'].keys()[-1] + 1
-+ fid = list(connData['OpenedFiles'].keys())[-1] + 1
- respParameters['Fid'] = fid
- if mode & os.O_CREAT:
- # File did not exist and was created
-@@ -2228,7 +2228,7 @@ class SMBCommands:
- if len(connData['ConnectedShares']) == 0:
- tid = 1
- else:
-- tid = connData['ConnectedShares'].keys()[-1] + 1
-+ tid = list(connData['ConnectedShares'].keys())[-1] + 1
- connData['ConnectedShares'][tid] = share
- connData['ConnectedShares'][tid]['shareName'] = path
- resp['Tid'] = tid
-@@ -2292,7 +2292,7 @@ class SMBCommands:
- mechType = blob['MechTypes'][0]
- if mechType != TypesMech['NTLMSSP - Microsoft NTLM Security Support Provider']:
- # Nope, do we know it?
-- if MechTypes.has_key(mechType):
-+ if mechType in MechTypes:
- mechStr = MechTypes[mechType]
- else:
- mechStr = hexlify(mechType)
-@@ -2402,7 +2402,7 @@ class SMBCommands:
- if len(smbServer.getCredentials()) > 0:
- identity = authenticateMessage['user_name'].decode('utf-16le')
- # Do we have this user's credentials?
-- if smbServer.getCredentials().has_key(identity):
-+ if identity in smbServer.getCredentials():
- # Process data:
- # Let's parse some data and keep it to ourselves in case it is asked
- uid, lmhash, nthash = smbServer.getCredentials()[identity]
-@@ -2525,7 +2525,7 @@ class SMBCommands:
- _dialects_parameters = smb.SMBNTLMDialect_Parameters()
- _dialects_data= smb.SMBNTLMDialect_Data()
- _dialects_data['Payload'] = ''
-- if connData.has_key('EncryptionKey'):
-+ if 'EncryptionKey' in connData:
- _dialects_data['Challenge'] = connData['EncryptionKey']
- _dialects_parameters['ChallengeLength'] = len(str(_dialects_data))
- else:
-@@ -2558,7 +2558,7 @@ class SMBCommands:
- connData['_dialects_data'] = _dialects_data
- connData['_dialects_parameters'] = _dialects_parameters
-
-- except Exception, e:
-+ except Exception as e:
- # No NTLM throw an error
- smbServer.log('smbComNegotiate: %s' % e, logging.ERROR)
- respSMBCommand['Data'] = struct.pack('<H',0xffff)
-@@ -2665,7 +2665,7 @@ class SMB2Commands:
- mechType = blob['MechTypes'][0]
- if mechType != TypesMech['NTLMSSP - Microsoft NTLM Security Support Provider']:
- # Nope, do we know it?
-- if MechTypes.has_key(mechType):
-+ if mechType in MechTypes:
- mechStr = MechTypes[mechType]
- else:
- mechStr = hexlify(mechType)
-@@ -2773,7 +2773,7 @@ class SMB2Commands:
- isGuest = False
- identity = authenticateMessage['user_name'].decode('utf-16le')
- # Do we have this user's credentials?
-- if smbServer.getCredentials().has_key(identity):
-+ if identity in smbServer.getCredentials():
- # Process data:
- # Let's parse some data and keep it to ourselves in case it is asked
- uid, lmhash, nthash = smbServer.getCredentials()[identity]
-@@ -2874,7 +2874,7 @@ class SMB2Commands:
- if len(connData['ConnectedShares']) == 0:
- tid = 1
- else:
-- tid = connData['ConnectedShares'].keys()[-1] + 1
-+ tid = list(connData['ConnectedShares'].keys())[-1] + 1
- connData['ConnectedShares'][tid] = share
- connData['ConnectedShares'][tid]['shareName'] = path
- respPacket['TreeID'] = tid
-@@ -2914,10 +2914,10 @@ class SMB2Commands:
-
- respSMBCommand['Buffer'] = '\x00'
- # Get the Tid associated
-- if connData['ConnectedShares'].has_key(recvPacket['TreeID']):
-+ if recvPacket['TreeID'] in connData['ConnectedShares']:
- # If we have a rootFid, the path is relative to that fid
- errorCode = STATUS_SUCCESS
-- if connData['ConnectedShares'][recvPacket['TreeID']].has_key('path'):
-+ if 'path' in connData['ConnectedShares'][recvPacket['TreeID']]:
- path = connData['ConnectedShares'][recvPacket['TreeID']]['path']
- else:
- path = 'NONE'
-@@ -2953,7 +2953,7 @@ class SMB2Commands:
- else:
- mode |= os.O_CREAT
- elif createDisposition & smb2.FILE_OPEN == smb2.FILE_OPEN:
-- if os.path.exists(pathName) is not True and smbServer.getRegisteredNamedPipes().has_key(unicode(pathName)) is not True:
-+ if os.path.exists(pathName) is not True and (str(pathName) in smbServer.getRegisteredNamedPipes()) is not True:
- errorCode = STATUS_NO_SUCH_FILE
-
- if errorCode == STATUS_SUCCESS:
-@@ -2975,7 +2975,7 @@ class SMB2Commands:
- # Let's create the directory
- os.mkdir(pathName)
- mode = os.O_RDONLY
-- except Exception, e:
-+ except Exception as e:
- smbServer.log("SMB2_CREATE: %s,%s,%s" % (pathName,mode,e),logging.ERROR)
- errorCode = STATUS_ACCESS_DENIED
- if createOptions & smb2.FILE_NON_DIRECTORY_FILE == smb2.FILE_NON_DIRECTORY_FILE:
-@@ -2995,13 +2995,13 @@ class SMB2Commands:
- else:
- if sys.platform == 'win32':
- mode |= os.O_BINARY
-- if smbServer.getRegisteredNamedPipes().has_key(unicode(pathName)):
-+ if str(pathName) in smbServer.getRegisteredNamedPipes():
- fid = PIPE_FILE_DESCRIPTOR
- sock = socket.socket()
-- sock.connect(smbServer.getRegisteredNamedPipes()[unicode(pathName)])
-+ sock.connect(smbServer.getRegisteredNamedPipes()[str(pathName)])
- else:
- fid = os.open(pathName, mode)
-- except Exception, e:
-+ except Exception as e:
- smbServer.log("SMB2_CREATE: %s,%s,%s" % (pathName,mode,e),logging.ERROR)
- #print e
- fid = 0
-@@ -3072,14 +3072,14 @@ class SMB2Commands:
-
- if str(closeRequest['FileID']) == '\xff'*16:
- # Let's take the data from the lastRequest
-- if connData['LastRequest'].has_key('SMB2_CREATE'):
-+ if 'SMB2_CREATE' in connData['LastRequest']:
- fileID = connData['LastRequest']['SMB2_CREATE']['FileID']
- else:
- fileID = str(closeRequest['FileID'])
- else:
- fileID = str(closeRequest['FileID'])
-
-- if connData['OpenedFiles'].has_key(fileID):
-+ if fileID in connData['OpenedFiles']:
- errorCode = STATUS_SUCCESS
- fileHandle = connData['OpenedFiles'][fileID]['FileHandle']
- pathName = connData['OpenedFiles'][fileID]['FileName']
-@@ -3090,7 +3090,7 @@ class SMB2Commands:
- elif fileHandle != VOID_FILE_DESCRIPTOR:
- os.close(fileHandle)
- infoRecord, errorCode = queryFileInformation(os.path.dirname(pathName), os.path.basename(pathName), smb2.SMB2_FILE_NETWORK_OPEN_INFO)
-- except Exception, e:
-+ except Exception as e:
- smbServer.log("SMB2_CLOSE %s" % e, logging.ERROR)
- errorCode = STATUS_INVALID_HANDLE
- else:
-@@ -3101,7 +3101,7 @@ class SMB2Commands:
- shutil.rmtree(connData['OpenedFiles'][fileID]['FileName'])
- else:
- os.remove(connData['OpenedFiles'][fileID]['FileName'])
-- except Exception, e:
-+ except Exception as e:
- smbServer.log("SMB2_CLOSE %s" % e, logging.ERROR)
- errorCode = STATUS_ACCESS_DENIED
-
-@@ -3137,15 +3137,15 @@ class SMB2Commands:
-
- if str(queryInfo['FileID']) == '\xff'*16:
- # Let's take the data from the lastRequest
-- if connData['LastRequest'].has_key('SMB2_CREATE'):
-+ if 'SMB2_CREATE' in connData['LastRequest']:
- fileID = connData['LastRequest']['SMB2_CREATE']['FileID']
- else:
- fileID = str(queryInfo['FileID'])
- else:
- fileID = str(queryInfo['FileID'])
-
-- if connData['ConnectedShares'].has_key(recvPacket['TreeID']):
-- if connData['OpenedFiles'].has_key(fileID):
-+ if recvPacket['TreeID'] in connData['ConnectedShares']:
-+ if fileID in connData['OpenedFiles']:
- fileName = connData['OpenedFiles'][fileID]['FileName']
-
- if queryInfo['InfoType'] == smb2.SMB2_0_INFO_FILE:
-@@ -3188,16 +3188,16 @@ class SMB2Commands:
-
- if str(setInfo['FileID']) == '\xff'*16:
- # Let's take the data from the lastRequest
-- if connData['LastRequest'].has_key('SMB2_CREATE'):
-+ if 'SMB2_CREATE' in connData['LastRequest']:
- fileID = connData['LastRequest']['SMB2_CREATE']['FileID']
- else:
- fileID = str(setInfo['FileID'])
- else:
- fileID = str(setInfo['FileID'])
-
-- if connData['ConnectedShares'].has_key(recvPacket['TreeID']):
-+ if recvPacket['TreeID'] in connData['ConnectedShares']:
- path = connData['ConnectedShares'][recvPacket['TreeID']]['path']
-- if connData['OpenedFiles'].has_key(fileID):
-+ if fileID in connData['OpenedFiles']:
- pathName = connData['OpenedFiles'][fileID]['FileName']
-
- if setInfo['InfoType'] == smb2.SMB2_0_INFO_FILE:
-@@ -3237,7 +3237,7 @@ class SMB2Commands:
- try:
- os.rename(pathName,newPathName)
- connData['OpenedFiles'][fileID]['FileName'] = newPathName
-- except Exception, e:
-+ except Exception as e:
- smbServer.log("smb2SetInfo: %s" % e, logging.ERROR)
- errorCode = STATUS_ACCESS_DENIED
- else:
-@@ -3278,14 +3278,14 @@ class SMB2Commands:
-
- if str(writeRequest['FileID']) == '\xff'*16:
- # Let's take the data from the lastRequest
-- if connData['LastRequest'].has_key('SMB2_CREATE'):
-+ if 'SMB2_CREATE' in connData['LastRequest']:
- fileID = connData['LastRequest']['SMB2_CREATE']['FileID']
- else:
- fileID = str(writeRequest['FileID'])
- else:
- fileID = str(writeRequest['FileID'])
-
-- if connData['OpenedFiles'].has_key(fileID):
-+ if fileID in connData['OpenedFiles']:
- fileHandle = connData['OpenedFiles'][fileID]['FileHandle']
- errorCode = STATUS_SUCCESS
- try:
-@@ -3301,7 +3301,7 @@ class SMB2Commands:
-
- respSMBCommand['Count'] = writeRequest['Length']
- respSMBCommand['Remaining']= 0xff
-- except Exception, e:
-+ except Exception as e:
- smbServer.log('SMB2_WRITE: %s' % e, logging.ERROR)
- errorCode = STATUS_ACCESS_DENIED
- else:
-@@ -3321,14 +3321,14 @@ class SMB2Commands:
-
- if str(readRequest['FileID']) == '\xff'*16:
- # Let's take the data from the lastRequest
-- if connData['LastRequest'].has_key('SMB2_CREATE'):
-+ if 'SMB2_CREATE' in connData['LastRequest']:
- fileID = connData['LastRequest']['SMB2_CREATE']['FileID']
- else:
- fileID = str(readRequest['FileID'])
- else:
- fileID = str(readRequest['FileID'])
-
-- if connData['OpenedFiles'].has_key(fileID):
-+ if fileID in connData['OpenedFiles']:
- fileHandle = connData['OpenedFiles'][fileID]['FileHandle']
- errorCode = 0
- try:
-@@ -3344,7 +3344,7 @@ class SMB2Commands:
- respSMBCommand['DataLength'] = len(content)
- respSMBCommand['DataRemaining']= 0
- respSMBCommand['Buffer'] = content
-- except Exception, e:
-+ except Exception as e:
- smbServer.log('SMB2_READ: %s ' % e, logging.ERROR)
- errorCode = STATUS_ACCESS_DENIED
- else:
-@@ -3360,12 +3360,12 @@ class SMB2Commands:
- respSMBCommand = smb2.SMB2Flush_Response()
- flushRequest = smb2.SMB2Flush(recvPacket['Data'])
-
-- if connData['OpenedFiles'].has_key(str(flushRequest['FileID'])):
-+ if str(flushRequest['FileID']) in connData['OpenedFiles']:
- fileHandle = connData['OpenedFiles'][str(flushRequest['FileID'])]['FileHandle']
- errorCode = STATUS_SUCCESS
- try:
- os.fsync(fileHandle)
-- except Exception, e:
-+ except Exception as e:
- smbServer.log("SMB2_FLUSH %s" % e, logging.ERROR)
- errorCode = STATUS_ACCESS_DENIED
- else:
-@@ -3384,21 +3384,21 @@ class SMB2Commands:
- respSMBCommand['Buffer'] = '\x00'
-
- # The server MUST locate the tree connection, as specified in section 3.3.5.2.11.
-- if connData['ConnectedShares'].has_key(recvPacket['TreeID']) is False:
-+ if (recvPacket['TreeID'] in connData['ConnectedShares']) is False:
- return [smb2.SMB2Error()], None, STATUS_NETWORK_NAME_DELETED
-
- # Next, the server MUST locate the open for the directory to be queried
- # If no open is found, the server MUST fail the request with STATUS_FILE_CLOSED
- if str(queryDirectoryRequest['FileID']) == '\xff'*16:
- # Let's take the data from the lastRequest
-- if connData['LastRequest'].has_key('SMB2_CREATE'):
-+ if 'SMB2_CREATE' in connData['LastRequest']:
- fileID = connData['LastRequest']['SMB2_CREATE']['FileID']
- else:
- fileID = str(queryDirectoryRequest['FileID'])
- else:
- fileID = str(queryDirectoryRequest['FileID'])
-
-- if connData['OpenedFiles'].has_key(fileID) is False:
-+ if (fileID in connData['OpenedFiles']) is False:
- return [smb2.SMB2Error()], None, STATUS_FILE_CLOSED
-
- # If the open is not an open to a directory, the request MUST be failed
-@@ -3516,7 +3516,7 @@ class SMB2Commands:
-
- respSMBCommand = smb2.SMB2TreeDisconnect_Response()
-
-- if connData['ConnectedShares'].has_key(recvPacket['TreeID']):
-+ if recvPacket['TreeID'] in connData['ConnectedShares']:
- smbServer.log("Disconnecting Share(%d:%s)" % (recvPacket['TreeID'],connData['ConnectedShares'][recvPacket['TreeID']]['shareName']))
- del(connData['ConnectedShares'][recvPacket['TreeID']])
- errorCode = STATUS_SUCCESS
-@@ -3554,7 +3554,7 @@ class SMB2Commands:
- ioctlRequest = smb2.SMB2Ioctl(recvPacket['Data'])
-
- ioctls = smbServer.getIoctls()
-- if ioctls.has_key(ioctlRequest['CtlCode']):
-+ if ioctlRequest['CtlCode'] in ioctls:
- outputData, errorCode = ioctls[ioctlRequest['CtlCode']](connId, smbServer, ioctlRequest)
- if errorCode == STATUS_SUCCESS:
- respSMBCommand['CtlCode'] = ioctlRequest['CtlCode']
-@@ -3609,7 +3609,7 @@ class Ioctls:
-
- ioctlResponse = ''
-
-- if connData['OpenedFiles'].has_key(str(ioctlRequest['FileID'])):
-+ if str(ioctlRequest['FileID']) in connData['OpenedFiles']:
- fileHandle = connData['OpenedFiles'][str(ioctlRequest['FileID'])]['FileHandle']
- errorCode = STATUS_SUCCESS
- try:
-@@ -3619,7 +3619,7 @@ class Ioctls:
- sock = connData['OpenedFiles'][str(ioctlRequest['FileID'])]['Socket']
- sock.sendall(ioctlRequest['Buffer'])
- ioctlResponse = sock.recv(ioctlRequest['MaxOutputResponse'])
-- except Exception, e:
-+ except Exception as e:
- smbServer.log('fsctlPipeTransceive: %s ' % e, logging.ERROR)
- errorCode = STATUS_ACCESS_DENIED
- else:
-@@ -3645,7 +3645,7 @@ class Ioctls:
- return validateNegotiateInfoResponse.getData(), errorCode
-
-
--class SMBSERVERHandler(SocketServer.BaseRequestHandler):
-+class SMBSERVERHandler(socketserver.BaseRequestHandler):
- def __init__(self, request, client_address, server, select_poll = False):
- self.__SMB = server
- # In case of AF_INET6 the client_address contains 4 items, ignore the last 2
-@@ -3655,7 +3655,7 @@ class SMBSERVERHandler(SocketServer.BaseRequestHandler
- self.__timeOut = 60*5
- self.__select_poll = select_poll
- #self.__connId = os.getpid()
-- SocketServer.BaseRequestHandler.__init__(self, request, client_address, server)
-+ socketserver.BaseRequestHandler.__init__(self, request, client_address, server)
-
- def handle(self):
- self.__SMB.log("Incoming connection (%s,%d)" % (self.__ip, self.__port))
-@@ -3687,7 +3687,7 @@ class SMBSERVERHandler(SocketServer.BaseRequestHandler
- # a single packet
- for i in resp:
- session.send_packet(str(i))
-- except Exception, e:
-+ except Exception as e:
- self.__SMB.log("Handle: %s" % e)
- #import traceback
- #traceback.print_exc()
-@@ -3697,13 +3697,13 @@ class SMBSERVERHandler(SocketServer.BaseRequestHandler
- # Thread/process is dying, we should tell the main SMB thread to remove all this thread data
- self.__SMB.log("Closing down connection (%s,%d)" % (self.__ip, self.__port))
- self.__SMB.removeConnection(self.__connId)
-- return SocketServer.BaseRequestHandler.finish(self)
-+ return socketserver.BaseRequestHandler.finish(self)
-
--class SMBSERVER(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
-+class SMBSERVER(socketserver.ThreadingMixIn, socketserver.TCPServer):
- #class SMBSERVER(SocketServer.ForkingMixIn, SocketServer.TCPServer):
- def __init__(self, server_address, handler_class=SMBSERVERHandler, config_parser = None):
-- SocketServer.TCPServer.allow_reuse_address = True
-- SocketServer.TCPServer.__init__(self, server_address, handler_class)
-+ socketserver.TCPServer.allow_reuse_address = True
-+ socketserver.TCPServer.__init__(self, server_address, handler_class)
-
- # Server name and OS to be presented whenever is necessary
- self.__serverName = ''
-@@ -3842,7 +3842,7 @@ smb.SMB.TRANS_TRANSACT_NMPIPE :self.__smbTran
- del(self.__activeConnections[name])
- except:
- pass
-- self.log("Remaining connections %s" % self.__activeConnections.keys())
-+ self.log("Remaining connections %s" % list(self.__activeConnections.keys()))
-
- def addConnection(self, name, ip, port):
- self.__activeConnections[name] = {}
-@@ -3874,7 +3874,7 @@ smb.SMB.TRANS_TRANSACT_NMPIPE :self.__smbTran
- def getConnectionData(self, connId, checkStatus = True):
- conn = self.__activeConnections[connId]
- if checkStatus is True:
-- if conn.has_key('Authenticated') is not True:
-+ if ('Authenticated' in conn) is not True:
- # Can't keep going further
- raise Exception("User not Authenticated!")
- return conn
-@@ -3883,17 +3883,17 @@ smb.SMB.TRANS_TRANSACT_NMPIPE :self.__smbTran
- return self.__registeredNamedPipes
-
- def registerNamedPipe(self, pipeName, address):
-- self.__registeredNamedPipes[unicode(pipeName)] = address
-+ self.__registeredNamedPipes[str(pipeName)] = address
- return True
-
- def unregisterNamedPipe(self, pipeName):
-- if self.__registeredNamedPipes.has_key(pipeName):
-- del(self.__registeredNamedPipes[unicode(pipeName)])
-+ if pipeName in self.__registeredNamedPipes:
-+ del(self.__registeredNamedPipes[str(pipeName)])
- return True
- return False
-
- def unregisterTransaction(self, transCommand):
-- if self.__smbTransCommands.has_key(transCommand):
-+ if transCommand in self.__smbTransCommands:
- del(self.__smbTransCommands[transCommand])
-
- def hookTransaction(self, transCommand, callback):
-@@ -3928,7 +3928,7 @@ smb.SMB.TRANS_TRANSACT_NMPIPE :self.__smbTran
- # respData: the data response of the transaction
- # errorCode: the NT error code
-
-- if self.__smbTransCommands.has_key(transCommand):
-+ if transCommand in self.__smbTransCommands:
- originalCommand = self.__smbTransCommands[transCommand]
- else:
- originalCommand = None
-@@ -3937,13 +3937,13 @@ smb.SMB.TRANS_TRANSACT_NMPIPE :self.__smbTran
- return originalCommand
-
- def unregisterTransaction2(self, transCommand):
-- if self.__smbTrans2Commands.has_key(transCommand):
-+ if transCommand in self.__smbTrans2Commands:
- del(self.__smbTrans2Commands[transCommand])
-
- def hookTransaction2(self, transCommand, callback):
- # Here we should add to __smbTrans2Commands
- # Same description as Transaction
-- if self.__smbTrans2Commands.has_key(transCommand):
-+ if transCommand in self.__smbTrans2Commands:
- originalCommand = self.__smbTrans2Commands[transCommand]
- else:
- originalCommand = None
-@@ -3952,13 +3952,13 @@ smb.SMB.TRANS_TRANSACT_NMPIPE :self.__smbTran
- return originalCommand
-
- def unregisterNTTransaction(self, transCommand):
-- if self.__smbNTTransCommands.has_key(transCommand):
-+ if transCommand in self.__smbNTTransCommands:
- del(self.__smbNTTransCommands[transCommand])
-
- def hookNTTransaction(self, transCommand, callback):
- # Here we should add to __smbNTTransCommands
- # Same description as Transaction
-- if self.__smbNTTransCommands.has_key(transCommand):
-+ if transCommand in self.__smbNTTransCommands:
- originalCommand = self.__smbNTTransCommands[transCommand]
- else:
- originalCommand = None
-@@ -3967,7 +3967,7 @@ smb.SMB.TRANS_TRANSACT_NMPIPE :self.__smbTran
- return originalCommand
-
- def unregisterSmbCommand(self, smbCommand):
-- if self.__smbCommands.has_key(smbCommand):
-+ if smbCommand in self.__smbCommands:
- del(self.__smbCommands[smbCommand])
-
- def hookSmbCommand(self, smbCommand, callback):
-@@ -4006,7 +4006,7 @@ smb.SMB.TRANS_TRANSACT_NMPIPE :self.__smbTran
- # transCommands: a list of transaction subcommands already registered
- #
-
-- if self.__smbCommands.has_key(smbCommand):
-+ if smbCommand in self.__smbCommands:
- originalCommand = self.__smbCommands[smbCommand]
- else:
- originalCommand = None
-@@ -4015,11 +4015,11 @@ smb.SMB.TRANS_TRANSACT_NMPIPE :self.__smbTran
- return originalCommand
-
- def unregisterSmb2Command(self, smb2Command):
-- if self.__smb2Commands.has_key(smb2Command):
-+ if smb2Command in self.__smb2Commands:
- del(self.__smb2Commands[smb2Command])
-
- def hookSmb2Command(self, smb2Command, callback):
-- if self.__smb2Commands.has_key(smb2Command):
-+ if smb2Command in self.__smb2Commands:
- originalCommand = self.__smb2Commands[smb2Command]
- else:
- originalCommand = None
-@@ -4158,13 +4158,13 @@ smb.SMB.TRANS_TRANSACT_NMPIPE :self.__smbTran
- packet,
- self.__smbTransCommands)
- else:
-- if self.__smbCommands.has_key(packet['Command']):
-+ if packet['Command'] in self.__smbCommands:
- if self.__SMB2Support is True:
- if packet['Command'] == smb.SMB.SMB_COM_NEGOTIATE:
- try:
- respCommands, respPackets, errorCode = self.__smb2Commands[smb2.SMB2_NEGOTIATE](connId, self, packet, True)
- isSMB2 = True
-- except Exception, e:
-+ except Exception as e:
- self.log('SMB2_NEGOTIATE: %s' % e, logging.ERROR)
- # If something went wrong, let's fallback to SMB1
- respCommands, respPackets, errorCode = self.__smbCommands[packet['Command']](
-@@ -4204,7 +4204,7 @@ smb.SMB.TRANS_TRANSACT_NMPIPE :self.__smbTran
- else:
- done = False
- while not done:
-- if self.__smb2Commands.has_key(packet['Command']):
-+ if packet['Command'] in self.__smb2Commands:
- if self.__SMB2Support is True:
- respCommands, respPackets, errorCode = self.__smb2Commands[packet['Command']](
- connId,
-@@ -4223,7 +4223,7 @@ smb.SMB.TRANS_TRANSACT_NMPIPE :self.__smbTran
- else:
- done = True
-
-- except Exception, e:
-+ except Exception as e:
- #import traceback
- #traceback.print_exc()
- # Something wen't wrong, defaulting to Bad user ID
-@@ -4330,7 +4330,7 @@ smb.SMB.TRANS_TRANSACT_NMPIPE :self.__smbTran
- if self.__serverConfig is None:
- if configFile is None:
- configFile = 'smb.conf'
-- self.__serverConfig = ConfigParser.ConfigParser()
-+ self.__serverConfig = configparser.ConfigParser()
- self.__serverConfig.read(configFile)
-
- self.__serverName = self.__serverConfig.get('global','server_name')
-@@ -4454,7 +4454,7 @@ class SRVSServer(DCERPCServer):
-
- def processConfigFile(self, configFile=None):
- if configFile is not None:
-- self.__serverConfig = ConfigParser.ConfigParser()
-+ self.__serverConfig = configparser.ConfigParser()
- self.__serverConfig.read(configFile)
- sections = self.__serverConfig.sections()
- # Let's check the log file
-@@ -4477,7 +4477,7 @@ class SRVSServer(DCERPCServer):
-
- s = request['NetName'][:-1].upper()
- answer = NetrShareGetInfoResponse()
-- if self._shares.has_key(s):
-+ if s in self._shares:
- share = self._shares[s]
-
- answer['InfoStruct']['tag'] = 1
-@@ -4543,7 +4543,7 @@ class SimpleSMBServer:
- self.__smbConfig = None
- else:
- # Here we write a mini config for the server
-- self.__smbConfig = ConfigParser.ConfigParser()
-+ self.__smbConfig = configparser.ConfigParser()
- self.__smbConfig.add_section('global')
- self.__smbConfig.set('global','server_name',''.join([random.choice(string.letters) for _ in range(8)]))
- self.__smbConfig.set('global','server_os',''.join([random.choice(string.letters) for _ in range(8)])
---- impacket/spnego.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/spnego.py
-@@ -32,7 +32,7 @@ MechTypes = {
- '\x2b\x06\x01\x04\x01\x82\x37\x02\x02\x1e': 'NEGOEX - SPNEGO Extended Negotiation Security Mechanism'
- }
-
--TypesMech = dict((v,k) for k, v in MechTypes.iteritems())
-+TypesMech = dict((v,k) for k, v in MechTypes.items())
-
- def asn1encode(data = ''):
- #res = asn1.SEQUENCE(str).encode()
-@@ -76,7 +76,7 @@ def asn1decode(data = ''):
- data = data[pad:]
- ans = data[:len2]
- # 1 byte length, string <= 0x7F
-- else:
-+ else:
- pad = 0
- ans = data[:len1]
- return ans, len(ans)+pad+1
-@@ -131,8 +131,8 @@ class GSSAPI:
- #pass
-
- def dump(self):
-- for i in self.fields.keys():
-- print "%s: {%r}" % (i,self[i])
-+ for i in list(self.fields.keys()):
-+ print("%s: {%r}" % (i,self[i]))
-
- def getData(self):
- ans = pack('B',ASN1_AID)
-@@ -246,12 +246,12 @@ class SPNEGO_NegTokenResp:
- self['ResponseToken'] = decode_data
-
- def dump(self):
-- for i in self.fields.keys():
-- print "%s: {%r}" % (i,self[i])
-+ for i in list(self.fields.keys()):
-+ print("%s: {%r}" % (i,self[i]))
-
- def getData(self):
- ans = pack('B',SPNEGO_NegTokenResp.SPNEGO_NEG_TOKEN_RESP)
-- if self.fields.has_key('NegResult') and self.fields.has_key('SupportedMech'):
-+ if 'NegResult' in self.fields and 'SupportedMech' in self.fields:
- # Server resp
- ans += asn1encode(
- pack('B', ASN1_SEQUENCE) +
-@@ -267,7 +267,7 @@ class SPNEGO_NegTokenResp:
- pack('B',ASN1_RESPONSE_TOKEN ) +
- asn1encode(
- pack('B', ASN1_OCTET_STRING) + asn1encode(self['ResponseToken']))))
-- elif self.fields.has_key('NegResult'):
-+ elif 'NegResult' in self.fields:
- # Server resp
- ans += asn1encode(
- pack('B', ASN1_SEQUENCE) +
-@@ -304,7 +304,7 @@ class SPNEGO_NegTokenInit(GSSAPI):
- payload = payload[1:]
- decode_data, total_bytes = asn1decode(payload)
- # Now we should have a SEQUENCE Tag
-- next_byte = unpack('B', decode_data[:1])[0]
-+ next_byte = unpack('B', decode_data[:1])[0]
- if next_byte != ASN1_SEQUENCE:
- raise Exception('SEQUENCE tag not found %x' % next_byte)
- decode_data = decode_data[1:]
-@@ -354,7 +354,7 @@ class SPNEGO_NegTokenInit(GSSAPI):
-
- mechToken = ''
- # Do we have tokens to send?
-- if self.fields.has_key('MechToken'):
-+ if 'MechToken' in self.fields:
- mechToken = pack('B', ASN1_MECH_TOKEN) + asn1encode(
- pack('B', ASN1_OCTET_STRING) + asn1encode(
- self['MechToken']))
---- impacket/tds.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/tds.py
-@@ -44,7 +44,7 @@ except:
- # The rest it processed through the standard impacket logging mech.
- class DummyPrint:
- def logMessage(self,message):
-- print message
-+ print(message)
-
- # MC-SQLR Constants and Structures
- SQLR_PORT = 1434
-@@ -521,7 +521,7 @@ class MSSQL:
-
- def encryptPassword(self, password ):
-
-- return ''.join(map(lambda x: chr(((ord(x) & 0x0f) << 4) + ((ord(x) & 0xf0) >> 4) ^ 0xa5) , password))
-+ return ''.join([chr(((ord(x) & 0x0f) << 4) + ((ord(x) & 0xf0) >> 4) ^ 0xa5) for x in password])
-
- def connect(self):
- af, socktype, proto, canonname, sa = socket.getaddrinfo(self.server, self.port, 0, socket.SOCK_STREAM)[0]
-@@ -767,7 +767,7 @@ class MSSQL:
- if TGS is None:
- try:
- tgt, cipher, oldSessionKey, sessionKey = getKerberosTGT(userName, password, domain, lmhash, nthash, aesKey, kdcHost)
-- except KerberosError, e:
-+ except KerberosError as e:
- if e.getErrorCode() == constants.ErrorCodes.KDC_ERR_ETYPE_NOSUPP.value:
- # We might face this if the target does not support AES
- # So, if that's the case we'll force using RC4 by converting
-@@ -802,7 +802,7 @@ class MSSQL:
- serverName = Principal('MSSQLSvc/%s.%s:%d' % (self.server.split('.')[0], domain, self.port), type=constants.PrincipalNameType.NT_SRV_INST.value)
- try:
- tgs, cipher, oldSessionKey, sessionKey = getKerberosTGS(serverName, domain, kdcHost, tgt, cipher, sessionKey)
-- except KerberosError, e:
-+ except KerberosError as e:
- if e.getErrorCode() == constants.ErrorCodes.KDC_ERR_ETYPE_NOSUPP.value:
- # We might face this if the target does not support AES
- # So, if that's the case we'll force using RC4 by converting
-@@ -886,7 +886,7 @@ class MSSQL:
-
- self.replies = self.parseReply(tds['Data'])
-
-- if self.replies.has_key(TDS_LOGINACK_TOKEN):
-+ if TDS_LOGINACK_TOKEN in self.replies:
- return True
- else:
- return False
-@@ -974,7 +974,7 @@ class MSSQL:
-
- self.replies = self.parseReply(tds['Data'])
-
-- if self.replies.has_key(TDS_LOGINACK_TOKEN):
-+ if TDS_LOGINACK_TOKEN in self.replies:
- return True
- else:
- return False
-@@ -1040,7 +1040,7 @@ class MSSQL:
- self.__rowsPrinter.logMessage(col['Format'] % row[col['Name']] + self.COL_SEPARATOR)
-
- def printReplies(self):
-- for keys in self.replies.keys():
-+ for keys in list(self.replies.keys()):
- for i, key in enumerate(self.replies[keys]):
- if key['TokenType'] == TDS_ERROR_TOKEN:
- error = "ERROR(%s): Line %d: %s" % (key['ServerName'].decode('utf-16le'), key['LineNumber'], key['MsgText'].decode('utf-16le'))
-@@ -1512,7 +1512,7 @@ class MSSQL:
- LOG.error("Unknown Token %x" % tokenID)
- return replies
-
-- if replies.has_key(tokenID) is not True:
-+ if (tokenID in replies) is not True:
- replies[tokenID] = list()
-
- replies[tokenID].append(token)
---- impacket/uuid.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/uuid.py
-@@ -19,7 +19,7 @@ from struct import pack, unpack
-
- def generate():
- # UHm... crappy Python has an maximum integer of 2**31-1.
-- top = (1L<<31)-1
-+ top = (1<<31)-1
- return pack("IIII", randrange(top), randrange(top), randrange(top), randrange(top))
-
- def bin_to_string(uuid):
-@@ -29,7 +29,7 @@ def bin_to_string(uuid):
-
- def string_to_bin(uuid):
- matches = re.match('([\dA-Fa-f]{8})-([\dA-Fa-f]{4})-([\dA-Fa-f]{4})-([\dA-Fa-f]{4})-([\dA-Fa-f]{4})([\dA-Fa-f]{8})', uuid)
-- (uuid1, uuid2, uuid3, uuid4, uuid5, uuid6) = map(lambda x: long(x, 16), matches.groups())
-+ (uuid1, uuid2, uuid3, uuid4, uuid5, uuid6) = [int(x, 16) for x in matches.groups()]
- uuid = pack('<LHH', uuid1, uuid2, uuid3)
- uuid += pack('>HHL', uuid4, uuid5, uuid6)
- return uuid
---- impacket/winregistry.py.orig 2022-05-21 20:29:42 UTC
-+++ impacket/winregistry.py
-@@ -204,7 +204,7 @@ class Registry:
- return None
- else:
- block = REG_HBINBLOCK(data)
-- if StructMappings.has_key(block['Data'][:2]):
-+ if block['Data'][:2] in StructMappings:
- return StructMappings[block['Data'][:2]](block['Data'])
- else:
- LOG.debug("Unknown type 0x%s" % block['Data'][:2])
-@@ -242,7 +242,7 @@ class Registry:
- block.fromString(data)
- blockLen = len(block)
-
-- if StructMappings.has_key(block['Data'][:2]):
-+ if block['Data'][:2] in StructMappings:
- block = StructMappings[block['Data'][:2]](block['Data'])
-
- res.append(block)
-@@ -318,7 +318,7 @@ class Registry:
- def __walkSubNodes(self, rec):
- nk = self.__getBlock(rec['OffsetNk'])
- if isinstance(nk, REG_NK):
-- print "%s%s" % (self.indent, nk['KeyName'])
-+ print("%s%s" % (self.indent, nk['KeyName']))
- self.indent += ' '
- if nk['OffsetSubKeyLf'] < 0:
- self.indent = self.indent[:-2]
-@@ -381,29 +381,29 @@ class Registry:
- def printValue(self, valueType, valueData):
- if valueType == REG_SZ or valueType == REG_EXPAND_SZ:
- if type(valueData) is int:
-- print 'NULL'
-+ print('NULL')
- else:
-- print "%s" % (valueData.decode('utf-16le'))
-+ print("%s" % (valueData.decode('utf-16le')))
- elif valueType == REG_BINARY:
-- print ''
-+ print('')
- hexdump(valueData, self.indent)
- elif valueType == REG_DWORD:
-- print "%d" % valueData
-+ print("%d" % valueData)
- elif valueType == REG_QWORD:
-- print "%d" % (unpack('<Q',valueData)[0])
-+ print("%d" % (unpack('<Q',valueData)[0]))
- elif valueType == REG_NONE:
- try:
- if len(valueData) > 1:
-- print ''
-+ print('')
- hexdump(valueData, self.indent)
- else:
-- print " NULL"
-+ print(" NULL")
- except:
-- print " NULL"
-+ print(" NULL")
- elif valueType == REG_MULTISZ:
-- print "%s" % (valueData.decode('utf-16le'))
-+ print("%s" % (valueData.decode('utf-16le')))
- else:
-- print "Unknown Type 0x%x!" % valueType
-+ print("Unknown Type 0x%x!" % valueType)
- hexdump(valueData)
-
- def enumKey(self, parentKey):
-@@ -490,16 +490,16 @@ def hexdump(data, indent = ''):
- strLen = len(x)
- i = 0
- while i < strLen:
-- print indent,
-- print "%04x " % i,
-+ print(indent, end=' ')
-+ print("%04x " % i, end=' ')
- for j in range(16):
- if i+j < strLen:
-- print "%02X" % ord(x[i+j]),
-+ print("%02X" % ord(x[i+j]), end=' ')
- else:
-- print " ",
-+ print(" ", end=' ')
- if j%16 == 7:
-- print "",
-- print " ",
-- print ''.join(pretty_print(x) for x in x[i:i+16] )
-+ print("", end=' ')
-+ print(" ", end=' ')
-+ print(''.join(pretty_print(x) for x in x[i:i+16] ))
- i += 16
-
diff --git a/net/py-impacket/files/patch-setup.py b/net/py-impacket/files/patch-setup.py
index 366adb529041..a51310c57088 100644
--- a/net/py-impacket/files/patch-setup.py
+++ b/net/py-impacket/files/patch-setup.py
@@ -1,22 +1,23 @@
---- setup.py.orig 2022-05-21 20:29:42 UTC
-+++ setup.py
-@@ -10,11 +10,6 @@ from setuptools import setup
-
- PACKAGE_NAME = "impacket"
+--- setup.py.orig 2023-09-21 00:08:28.427651000 -0500
++++ setup.py 2023-09-21 00:09:29.055566000 -0500
+@@ -39,12 +39,6 @@
+ except Exception:
+ VER_LOCAL = ""
-if platform.system() != 'Darwin':
- data_files = [(os.path.join('share', 'doc', PACKAGE_NAME), ['README.md', 'LICENSE']+glob.glob('doc/*'))]
-else:
- data_files = []
-
+-
def read(fname):
return open(os.path.join(os.path.dirname(__file__), fname)).read()
-@@ -36,7 +31,6 @@ setup(name = PACKAGE_NAME,
- 'impacket.examples.ntlmrelayx.servers.socksplugins', 'impacket.examples.ntlmrelayx.utils',
- 'impacket.examples.ntlmrelayx.attacks'],
- scripts = glob.glob(os.path.join('examples', '*.py')),
-- data_files = data_files,
- install_requires=['pyasn1>=0.2.3', 'pycrypto>=2.6.1', 'pyOpenSSL>=0.13.1', 'six', 'ldap3>=2.5.0', 'ldapdomaindump', 'flask'],
- extras_require={
- 'pyreadline:sys_platform=="win32"': [],
+@@ -66,7 +60,6 @@
+ 'impacket.examples.ntlmrelayx.servers.socksplugins', 'impacket.examples.ntlmrelayx.utils',
+ 'impacket.examples.ntlmrelayx.attacks', 'impacket.examples.ntlmrelayx.attacks.httpattacks'],
+ scripts=glob.glob(os.path.join('examples', '*.py')),
+- data_files=data_files,
+ install_requires=['pyasn1>=0.2.3', 'pycryptodomex', 'pyOpenSSL>=21.0.0', 'six', 'ldap3>=2.5,!=2.5.2,!=2.5.0,!=2.6',
+ 'ldapdomaindump>=0.9.0', 'flask>=1.0', 'future', 'charset_normalizer', 'dsinternals'],
+ extras_require={'pyreadline:sys_platform=="win32"': [],