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,34 +1,38 @@ 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 LICENSE= APACHE11 ZLIB 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 NO_ARCH= yes PORTDOCS= * OPTIONS_DEFINE= DOCS post-install-DOCS-on: @${MKDIR} ${STAGEDIR}${DOCSDIR} ${INSTALL_DATA} ${WRKSRC}/README.md ${STAGEDIR}${DOCSDIR} cd ${WRKSRC} && ${COPYTREE_SHARE} tests ${STAGEDIR}${DOCSDIR} .include 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('= off+4: - status_code = unpack(" 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('> 13 - valueOffset = unpack('=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', ' %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('> 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('= 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('> 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('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(' 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"': [],