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