diff options
Diffstat (limited to 'tests/python_dependencies/impacket/smb3structs.py')
-rw-r--r-- | tests/python_dependencies/impacket/smb3structs.py | 1363 |
1 files changed, 0 insertions, 1363 deletions
diff --git a/tests/python_dependencies/impacket/smb3structs.py b/tests/python_dependencies/impacket/smb3structs.py deleted file mode 100644 index ddc8a9084..000000000 --- a/tests/python_dependencies/impacket/smb3structs.py +++ /dev/null @@ -1,1363 +0,0 @@ -# Copyright (c) 2003-2016 CORE Security Technologies -# -# This software is provided under under a slightly modified version -# of the Apache Software License. See the accompanying LICENSE file -# for more information. -# -# Author: Alberto Solino (@agsolino) -# -# Description: -# SMB 2 and 3 Protocol Structures and constants [MS-SMB2] -# - -from impacket.structure import Structure - -# Constants - -# SMB Packet -SMB2_PACKET_SIZE = 64 - -# SMB Commands -SMB2_NEGOTIATE = 0x0000 # -SMB2_SESSION_SETUP = 0x0001 # -SMB2_LOGOFF = 0x0002 # -SMB2_TREE_CONNECT = 0x0003 # -SMB2_TREE_DISCONNECT = 0x0004 # -SMB2_CREATE = 0x0005 # -SMB2_CLOSE = 0x0006 # -SMB2_FLUSH = 0x0007 # -SMB2_READ = 0x0008 # -SMB2_WRITE = 0x0009 # -SMB2_LOCK = 0x000A # -SMB2_IOCTL = 0x000B # -SMB2_CANCEL = 0x000C # -SMB2_ECHO = 0x000D # -SMB2_QUERY_DIRECTORY = 0x000E # -SMB2_CHANGE_NOTIFY = 0x000F -SMB2_QUERY_INFO = 0x0010 # -SMB2_SET_INFO = 0x0011 -SMB2_OPLOCK_BREAK = 0x0012 - -# SMB Flags -SMB2_FLAGS_SERVER_TO_REDIR = 0x00000001 -SMB2_FLAGS_ASYNC_COMMAND = 0x00000002 -SMB2_FLAGS_RELATED_OPERATIONS = 0x00000004 -SMB2_FLAGS_SIGNED = 0x00000008 -SMB2_FLAGS_DFS_OPERATIONS = 0x10000000 -SMB2_FLAGS_REPLAY_OPERATION = 0x80000000 - -# SMB Error SymLink Flags -SYMLINK_FLAG_ABSOLUTE = 0x0 -SYMLINK_FLAG_RELATIVE = 0x1 - -# SMB2_NEGOTIATE -# Security Modes -SMB2_NEGOTIATE_SIGNING_ENABLED = 0x1 -SMB2_NEGOTIATE_SIGNING_REQUIRED = 0x2 - -# Capabilities -SMB2_GLOBAL_CAP_DFS = 0x01 -SMB2_GLOBAL_CAP_LEASING = 0x02 -SMB2_GLOBAL_CAP_LARGE_MTU = 0x04 -SMB2_GLOBAL_CAP_MULTI_CHANNEL = 0x08 -SMB2_GLOBAL_CAP_PERSISTENT_HANDLES = 0x10 -SMB2_GLOBAL_CAP_DIRECTORY_LEASING = 0x20 -SMB2_GLOBAL_CAP_ENCRYPTION = 0x40 - -# Dialects -SMB2_DIALECT_002 = 0x0202 -SMB2_DIALECT_21 = 0x0210 -SMB2_DIALECT_30 = 0x0300 -SMB2_DIALECT_WILDCARD = 0x02FF - -# SMB2_SESSION_SETUP -# Flags -SMB2_SESSION_FLAG_BINDING = 0x01 -SMB2_SESSION_FLAG_IS_GUEST = 0x01 -SMB2_SESSION_FLAG_IS_NULL = 0x02 -SMB2_SESSION_FLAG_ENCRYPT_DATA = 0x04 - -# SMB2_TREE_CONNECT -# Types -SMB2_SHARE_TYPE_DISK = 0x1 -SMB2_SHARE_TYPE_PIPE = 0x2 -SMB2_SHARE_TYPE_PRINT = 0x3 - -# Share Flags -SMB2_SHAREFLAG_MANUAL_CACHING = 0x00000000 -SMB2_SHAREFLAG_AUTO_CACHING = 0x00000010 -SMB2_SHAREFLAG_VDO_CACHING = 0x00000020 -SMB2_SHAREFLAG_NO_CACHING = 0x00000030 -SMB2_SHAREFLAG_DFS = 0x00000001 -SMB2_SHAREFLAG_DFS_ROOT = 0x00000002 -SMB2_SHAREFLAG_RESTRICT_EXCLUSIVE_OPENS = 0x00000100 -SMB2_SHAREFLAG_FORCE_SHARED_DELETE = 0x00000200 -SMB2_SHAREFLAG_ALLOW_NAMESPACE_CACHING = 0x00000400 -SMB2_SHAREFLAG_ACCESS_BASED_DIRECTORY_ENUM = 0x00000800 -SMB2_SHAREFLAG_FORCE_LEVELII_OPLOCK = 0x00001000 -SMB2_SHAREFLAG_ENABLE_HASH_V1 = 0x00002000 -SMB2_SHAREFLAG_ENABLE_HASH_V2 = 0x00004000 -SMB2_SHAREFLAG_ENCRYPT_DATA = 0x00008000 - -# Capabilities -SMB2_SHARE_CAP_DFS = 0x00000008 -SMB2_SHARE_CAP_CONTINUOUS_AVAILABILITY = 0x00000010 -SMB2_SHARE_CAP_SCALEOUT = 0x00000020 -SMB2_SHARE_CAP_CLUSTER = 0x00000040 - -# SMB_CREATE -# Oplocks -SMB2_OPLOCK_LEVEL_NONE = 0x00 -SMB2_OPLOCK_LEVEL_II = 0x01 -SMB2_OPLOCK_LEVEL_EXCLUSIVE = 0x08 -SMB2_OPLOCK_LEVEL_BATCH = 0x09 -SMB2_OPLOCK_LEVEL_LEASE = 0xFF - -# Impersonation Level -SMB2_IL_ANONYMOUS = 0x00000000 -SMB2_IL_IDENTIFICATION = 0x00000001 -SMB2_IL_IMPERSONATION = 0x00000002 -SMB2_IL_DELEGATE = 0x00000003 - -# File Attributes -FILE_ATTRIBUTE_ARCHIVE = 0x00000020 -FILE_ATTRIBUTE_COMPRESSED = 0x00000800 -FILE_ATTRIBUTE_DIRECTORY = 0x00000010 -FILE_ATTRIBUTE_ENCRYPTED = 0x00004000 -FILE_ATTRIBUTE_HIDDEN = 0x00000002 -FILE_ATTRIBUTE_NORMAL = 0x00000080 -FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000 -FILE_ATTRIBUTE_OFFLINE = 0x00001000 -FILE_ATTRIBUTE_READONLY = 0x00000001 -FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400 -FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200 -FILE_ATTRIBUTE_SYSTEM = 0x00000004 -FILE_ATTRIBUTE_TEMPORARY = 0x00000100 -FILE_ATTRIBUTE_INTEGRITY_STREAM = 0x00000800 -FILE_ATTRIBUTE_NO_SCRUB_DATA = 0x00020000 - -# Share Access -FILE_SHARE_READ = 0x00000001 -FILE_SHARE_WRITE = 0x00000002 -FILE_SHARE_DELETE = 0x00000004 - -# Create Disposition -FILE_SUPERSEDE = 0x00000000 -FILE_OPEN = 0x00000001 -FILE_CREATE = 0x00000002 -FILE_OPEN_IF = 0x00000003 -FILE_OVERWRITE = 0x00000004 -FILE_OVERWRITE_IF = 0x00000005 - -# Create Options -FILE_DIRECTORY_FILE = 0x00000001 -FILE_WRITE_THROUGH = 0x00000002 -FILE_SEQUENTIAL_ONLY = 0x00000004 -FILE_NO_INTERMEDIATE_BUFFERING = 0x00000008 -FILE_SYNCHRONOUS_IO_ALERT = 0x00000010 -FILE_SYNCHRONOUS_IO_NONALERT = 0x00000020 -FILE_NON_DIRECTORY_FILE = 0x00000040 -FILE_COMPLETE_IF_OPLOCKED = 0x00000100 -FILE_NO_EA_KNOWLEDGE = 0x00000200 -FILE_RANDOM_ACCESS = 0x00000800 -FILE_DELETE_ON_CLOSE = 0x00001000 -FILE_OPEN_BY_FILE_ID = 0x00002000 -FILE_OPEN_FOR_BACKUP_INTENT = 0x00004000 -FILE_NO_COMPRESSION = 0x00008000 -FILE_RESERVE_OPFILTER = 0x00100000 -FILE_OPEN_REPARSE_POINT = 0x00200000 -FILE_OPEN_NO_RECALL = 0x00400000 -FILE_OPEN_FOR_FREE_SPACE_QUERY = 0x00800000 - -# File Access Mask / Desired Access -FILE_READ_DATA = 0x00000001 -FILE_WRITE_DATA = 0x00000002 -FILE_APPEND_DATA = 0x00000004 -FILE_READ_EA = 0x00000008 -FILE_WRITE_EA = 0x00000010 -FILE_EXECUTE = 0x00000020 -FILE_READ_ATTRIBUTES = 0x00000080 -FILE_WRITE_ATTRIBUTES = 0x00000100 -DELETE = 0x00010000 -READ_CONTROL = 0x00020000 -WRITE_DAC = 0x00040000 -WRITE_OWNER = 0x00080000 -SYNCHRONIZE = 0x00100000 -ACCESS_SYSTEM_SECURITY = 0x01000000 -MAXIMUM_ALLOWED = 0x02000000 -GENERIC_ALL = 0x10000000 -GENERIC_EXECUTE = 0x20000000 -GENERIC_WRITE = 0x40000000 -GENERIC_READ = 0x80000000 - -# Directory Access Mask -FILE_LIST_DIRECTORY = 0x00000001 -FILE_ADD_FILE = 0x00000002 -FILE_ADD_SUBDIRECTORY = 0x00000004 -FILE_TRAVERSE = 0x00000020 -FILE_DELETE_CHILD = 0x00000040 - -# Create Contexts -SMB2_CREATE_EA_BUFFER = 0x45787441 -SMB2_CREATE_SD_BUFFER = 0x53656344 -SMB2_CREATE_DURABLE_HANDLE_REQUEST = 0x44486e51 -SMB2_CREATE_DURABLE_HANDLE_RECONNECT = 0x44486e43 -SMB2_CREATE_ALLOCATION_SIZE = 0x416c5369 -SMB2_CREATE_QUERY_MAXIMAL_ACCESS_REQUEST = 0x4d784163 -SMB2_CREATE_TIMEWARP_TOKEN = 0x54577270 -SMB2_CREATE_QUERY_ON_DISK_ID = 0x51466964 -SMB2_CREATE_REQUEST = 0x52714c73 -SMB2_CREATE_REQUEST_LEASE_V2 = 0x52714c73 -SMB2_CREATE_DURABLE_HANDLE_REQUEST_V2 = 0x44483251 -SMB2_CREATE_DURABLE_HANDLE_RECONNECT_V2 = 0x44483243 -SMB2_CREATE_APP_INSTANCE_ID = 0x45BCA66AEFA7F74A9008FA462E144D74 - -# Flags -SMB2_CREATE_FLAG_REPARSEPOINT = 0x1 -FILE_NEED_EA = 0x80 - -# CreateAction -FILE_SUPERSEDED = 0x00000000 -FILE_OPENED = 0x00000001 -FILE_CREATED = 0x00000002 -FILE_OVERWRITTEN = 0x00000003 - -# SMB2_CREATE_REQUEST_LEASE states -SMB2_LEASE_NONE = 0x00 -SMB2_LEASE_READ_CACHING = 0x01 -SMB2_LEASE_HANDLE_CACHING = 0x02 -SMB2_LEASE_WRITE_CACHING = 0x04 - -# SMB2_CREATE_REQUEST_LEASE_V2 Flags -SMB2_LEASE_FLAG_PARENT_LEASE_KEY_SET = 0x4 - -# SMB2_CREATE_DURABLE_HANDLE_REQUEST_V2 Flags -SMB2_DHANDLE_FLAG_PERSISTENT = 0x02 - -# SMB2_CLOSE -# Flags -SMB2_CLOSE_FLAG_POSTQUERY_ATTRIB = 0x0001 - -# SMB2_READ -# Channel -SMB2_CHANNEL_NONE = 0x00 -SMB2_CHANNEL_RDMA_V1 = 0x01 - -# SMB2_WRITE -# Flags -SMB2_WRITEFLAG_WRITE_THROUGH = 0x01 - -# Lease Break Notification -SMB2_NOTIFY_BREAK_LEASE_FLAG_ACK_REQUIRED = 0x01 - -# SMB_LOCK -# Flags -SMB2_LOCKFLAG_SHARED_LOCK = 0x01 -SMB2_LOCKFLAG_EXCLUSIVE_LOCK = 0x02 -SMB2_LOCKFLAG_UNLOCK = 0x04 -SMB2_LOCKFLAG_FAIL_IMMEDIATELY = 0x10 - -# SMB IOCTL -# Control Codes -FSCTL_DFS_GET_REFERRALS = 0x00060194 -FSCTL_PIPE_PEEK = 0x0011400C -FSCTL_PIPE_WAIT = 0x00110018 -FSCTL_PIPE_TRANSCEIVE = 0x0011C017 -FSCTL_SRV_COPYCHUNK = 0x001440F2 -FSCTL_SRV_ENUMERATE_SNAPSHOTS = 0x00144064 -FSCTL_SRV_REQUEST_RESUME_KEY = 0x00140078 -FSCTL_SRV_READ_HASH = 0x001441bb -FSCTL_SRV_COPYCHUNK_WRITE = 0x001480F2 -FSCTL_LMR_REQUEST_RESILIENCY = 0x001401D4 -FSCTL_QUERY_NETWORK_INTERFACE_INFO = 0x001401FC -FSCTL_SET_REPARSE_POINT = 0x000900A4 -FSCTL_DFS_GET_REFERRALS_EX = 0x000601B0 -FSCTL_FILE_LEVEL_TRIM = 0x00098208 -FSCTL_VALIDATE_NEGOTIATE_INFO = 0x00140204 - -# Flags -SMB2_0_IOCTL_IS_FSCTL = 0x1 - -# SRV_READ_HASH -# Type -SRV_HASH_TYPE_PEER_DIST = 0x01 - -# Version -SRV_HASH_VER_1 = 0x1 -SRV_HASH_VER_2 = 0x2 - -# Retrieval Type -SRV_HASH_RETRIEVE_HASH_BASED = 0x01 -SRV_HASH_RETRIEVE_FILE_BASED = 0x02 - -# NETWORK_INTERFACE_INFO -# Capabilities -RSS_CAPABLE = 0x01 -RDMA_CAPABLE = 0x02 - -# SMB2_QUERY_DIRECTORIES -# Information Class -FILE_DIRECTORY_INFORMATION = 0x01 -FILE_FULL_DIRECTORY_INFORMATION = 0x02 -FILEID_FULL_DIRECTORY_INFORMATION = 0x26 -FILE_BOTH_DIRECTORY_INFORMATION = 0x03 -FILEID_BOTH_DIRECTORY_INFORMATION = 0x25 -FILENAMES_INFORMATION = 0x0C - -# Flags -SMB2_RESTART_SCANS = 0x01 -SMB2_RETURN_SINGLE_ENTRY = 0x02 -SMB2_INDEX_SPECIFIED = 0x04 -SMB2_REOPEN = 0x10 - -# SMB2_CHANGE_NOTIFY -# Flags -SMB2_WATCH_TREE = 0x01 - -# Filters -FILE_NOTIFY_CHANGE_FILE_NAME = 0x00000001 -FILE_NOTIFY_CHANGE_DIR_NAME = 0x00000002 -FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x00000004 -FILE_NOTIFY_CHANGE_SIZE = 0x00000008 -FILE_NOTIFY_CHANGE_LAST_WRITE = 0x00000010 -FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x00000020 -FILE_NOTIFY_CHANGE_CREATION = 0x00000040 -FILE_NOTIFY_CHANGE_EA = 0x00000080 -FILE_NOTIFY_CHANGE_SECURITY = 0x00000100 -FILE_NOTIFY_CHANGE_STREAM_NAME = 0x00000200 -FILE_NOTIFY_CHANGE_STREAM_SIZE = 0x00000400 -FILE_NOTIFY_CHANGE_STREAM_WRITE = 0x00000800 - -# FILE_NOTIFY_INFORMATION -# Actions -FILE_ACTION_ADDED = 0x00000001 -FILE_ACTION_REMOVED = 0x00000002 -FILE_ACTION_MODIFIED = 0x00000003 -FILE_ACTION_RENAMED_OLD_NAME = 0x00000004 -FILE_ACTION_RENAMED_NEW_NAME = 0x00000005 - -# SMB2_QUERY_INFO -# InfoTypes -SMB2_0_INFO_FILE = 0x01 -SMB2_0_INFO_FILESYSTEM = 0x02 -SMB2_0_INFO_SECURITY = 0x03 -SMB2_0_INFO_QUOTA = 0x04 - -# File Information Classes -SMB2_FILE_ACCESS_INFO = 8 -SMB2_FILE_ALIGNMENT_INFO = 17 -SMB2_FILE_ALL_INFO = 18 -SMB2_FILE_ALLOCATION_INFO = 19 -SMB2_FILE_ALTERNATE_NAME_INFO = 21 -SMB2_ATTRIBUTE_TAG_INFO = 35 -SMB2_FILE_BASIC_INFO = 4 -SMB2_FILE_BOTH_DIRECTORY_INFO = 3 -SMB2_FILE_COMPRESSION_INFO = 28 -SMB2_FILE_DIRECTORY_INFO = 1 -SMB2_FILE_DISPOSITION_INFO = 13 -SMB2_FILE_EA_INFO = 7 -SMB2_FILE_END_OF_FILE_INFO = 20 -SMB2_FULL_DIRECTORY_INFO = 2 -SMB2_FULL_EA_INFO = 15 -SMB2_FILE_HARDLINK_INFO = 46 -SMB2_FILE_ID_BOTH_DIRECTORY_INFO = 37 -SMB2_FILE_ID_FULL_DIRECTORY_INFO = 38 -SMB2_FILE_ID_GLOBAL_TX_DIRECTORY_INFO = 50 -SMB2_FILE_INTERNAL_INFO = 6 -SMB2_FILE_LINK_INFO = 11 -SMB2_FILE_MAILSLOT_QUERY_INFO = 26 -SMB2_FILE_MAILSLOT_SET_INFO = 27 -SMB2_FILE_MODE_INFO = 16 -SMB2_FILE_MOVE_CLUSTER_INFO = 31 -SMB2_FILE_NAME_INFO = 9 -SMB2_FILE_NAMES_INFO = 12 -SMB2_FILE_NETWORK_OPEN_INFO = 34 -SMB2_FILE_NORMALIZED_NAME_INFO = 48 -SMB2_FILE_OBJECT_ID_INFO = 29 -SMB2_FILE_PIPE_INFO = 23 -SMB2_FILE_PIPE_LOCAL_INFO = 24 -SMB2_FILE_PIPE_REMOTE_INFO = 25 -SMB2_FILE_POSITION_INFO = 14 -SMB2_FILE_QUOTA_INFO = 32 -SMB2_FILE_RENAME_INFO = 10 -SMB2_FILE_REPARSE_POINT_INFO = 33 -SMB2_FILE_SFIO_RESERVE_INFO = 44 -SMB2_FILE_SHORT_NAME_INFO = 45 -SMB2_FILE_STANDARD_INFO = 5 -SMB2_FILE_STANDARD_LINK_INFO = 54 -SMB2_FILE_STREAM_INFO = 22 -SMB2_FILE_TRACKING_INFO = 36 -SMB2_FILE_VALID_DATA_LENGTH_INFO = 39 - -# File System Information Classes -SMB2_FILESYSTEM_VOLUME_INFO = 1 -SMB2_FILESYSTEM_LABEL_INFO = 2 -SMB2_FILESYSTEM_SIZE_INFO = 3 -SMB2_FILESYSTEM_DEVICE_INFO = 4 -SMB2_FILESYSTEM_ATTRIBUTE_INFO = 5 -SMB2_FILESYSTEM_CONTROL_INFO = 6 -SMB2_FILESYSTEM_FULL_SIZE_INFO = 7 -SMB2_FILESYSTEM_OBJECT_ID_INFO = 8 -SMB2_FILESYSTEM_DRIVER_PATH_INFO = 9 -SMB2_FILESYSTEM_SECTOR_SIZE_INFO = 11 - -# Additional information -OWNER_SECURITY_INFORMATION = 0x00000001 -GROUP_SECURITY_INFORMATION = 0x00000002 -DACL_SECURITY_INFORMATION = 0x00000004 -SACL_SECURITY_INFORMATION = 0x00000008 -LABEL_SECURITY_INFORMATION = 0x00000010 - -# Flags -SL_RESTART_SCAN = 0x00000001 -SL_RETURN_SINGLE_ENTRY = 0x00000002 -SL_INDEX_SPECIFIED = 0x00000004 - -# TRANSFORM_HEADER -SMB2_ENCRYPTION_AES128_CCM = 0x0001 - - -# STRUCtures -# Represents a SMB2/3 Packet -class SMBPacketBase(Structure): - def addCommand(self,command): - # Pad to 8 bytes and put the offset of another SMBPacket - raise 'Implement This!' - - def isValidAnswer(self, status): - if self['Status'] != status: - import smb3 - raise smb3.SessionError(self['Status'], self) - return True - - def __init__(self, data = None): - Structure.__init__(self,data) - if data is None: - self['TreeID'] = 0 - - -class SMB2PacketAsync(SMBPacketBase): - structure = ( - ('ProtocolID','"\xfeSMB'), - ('StructureSize','<H=64'), - ('CreditCharge','<H=0'), - ('Status','<L=0'), - ('Command','<H=0'), - ('CreditRequestResponse','<H=0'), - ('Flags','<L=0'), - ('NextCommand','<L=0'), - ('MessageID','<Q=0'), - ('AsyncID','<Q=0'), - ('SessionID','<Q=0'), - ('Signature','16s=""'), - ('Data',':=""'), - ) - -class SMB3PacketAsync(SMBPacketBase): - structure = ( - ('ProtocolID','"\xfeSMB'), - ('StructureSize','<H=64'), - ('CreditCharge','<H=0'), - ('ChannelSequence','<H=0'), - ('Reserved','<H=0'), - ('Command','<H=0'), - ('CreditRequestResponse','<H=0'), - ('Flags','<L=0'), - ('NextCommand','<L=0'), - ('MessageID','<Q=0'), - ('AsyncID','<Q=0'), - ('SessionID','<Q=0'), - ('Signature','16s=""'), - ('Data',':=""'), - ) - -class SMB2Packet(SMBPacketBase): - structure = ( - ('ProtocolID','"\xfeSMB'), - ('StructureSize','<H=64'), - ('CreditCharge','<H=0'), - ('Status','<L=0'), - ('Command','<H=0'), - ('CreditRequestResponse','<H=0'), - ('Flags','<L=0'), - ('NextCommand','<L=0'), - ('MessageID','<Q=0'), - ('Reserved','<L=0'), - ('TreeID','<L=0'), - ('SessionID','<Q=0'), - ('Signature','16s=""'), - ('Data',':=""'), - ) - -class SMB3Packet(SMBPacketBase): - structure = ( - ('ProtocolID','"\xfeSMB'), - ('StructureSize','<H=64'), - ('CreditCharge','<H=0'), - ('ChannelSequence','<H=0'), - ('Reserved','<H=0'), - ('Command','<H=0'), - ('CreditRequestResponse','<H=0'), - ('Flags','<L=0'), - ('NextCommand','<L=0'), - ('MessageID','<Q=0'), - ('Reserved','<L=0'), - ('TreeID','<L=0'), - ('SessionID','<Q=0'), - ('Signature','16s=""'), - ('Data',':=""'), - ) - -class SMB2Error(Structure): - structure = ( - ('StructureSize','<H=9'), - ('Reserved','<H=0'), - ('ByteCount','<L=0'), - ('_ErrorData','_-ErrorData','self["ByteCount"]'), - ('ErrorData','"\xff'), - ) - -class SMB2ErrorSymbolicLink(Structure): - structure = ( - ('SymLinkLength','<L=0'), - ('SymLinkErrorTag','<L=0'), - ('ReparseTag','<L=0'), - ('ReparseDataLenght','<H=0'), - ('UnparsedPathLength','<H=0'), - ('SubstituteNameOffset','<H=0'), - ('SubstituteNameLength','<H=0'), - ('PrintNameOffset','<H=0'), - ('PrintNameLength','<H=0'), - ('Flags','<L=0'), - ('PathBuffer',':'), - ) - -# SMB2_NEGOTIATE -class SMB2Negotiate(Structure): - structure = ( - ('StructureSize','<H=36'), - ('DialectCount','<H=0'), - ('SecurityMode','<H=0'), - ('Reserved','<H=0'), - ('Capabilities','<L=0'), - ('ClientGuid','16s=""'), - ('ClientStartTime','<Q=0'), - ('Dialects','*<H'), - ) - -class SMB2Negotiate_Response(Structure): - structure = ( - ('StructureSize','<H=65'), - ('SecurityMode','<H=0'), - ('DialectRevision','<H=0'), - ('Reserved','<H=0'), - ('ServerGuid','16s=""'), - ('Capabilities','<L=0'), - ('MaxTransactSize','<L=0'), - ('MaxReadSize','<L=0'), - ('MaxWriteSize','<L=0'), - ('SystemTime','<Q=0'), - ('ServerStartTime','<Q=0'), - ('SecurityBufferOffset','<H=0'), - ('SecurityBufferLength','<H=0'), - ('Reserved2','<L=0'), - ('_AlignPad','_-AlignPad','self["SecurityBufferOffset"] - (64 + self["StructureSize"] - 1)'), - ('AlignPad',':=""'), - ('_Buffer','_-Buffer','self["SecurityBufferLength"]'), - ('Buffer',':'), - ) - -# SMB2_SESSION_SETUP -class SMB2SessionSetup(Structure): - SIZE = 24 - structure = ( - ('StructureSize','<H=25'), - ('Flags','<B=0'), - ('SecurityMode','<B=0'), - ('Capabilities','<L=0'), - ('Channel','<L=0'), - ('SecurityBufferOffset','<H=(self.SIZE + 64 + len(self["AlignPad"]))'), - ('SecurityBufferLength','<H=0'), - ('PreviousSessionId','<Q=0'), - ('_AlignPad','_-AlignPad','self["SecurityBufferOffset"] - (64 + self["StructureSize"] - 1)'), - ('AlignPad',':=""'), - ('_Buffer','_-Buffer','self["SecurityBufferLength"]'), - ('Buffer',':'), - ) - - def __init__(self, data = None): - Structure.__init__(self,data) - if data is None: - self['AlignPad'] = '' - - def getData(self): - #self['AlignPad'] = '\x00' * ((8 - ((24 + SMB2_PACKET_SIZE) & 7)) & 7) - #self['SecurityBufferOffset'] = 24 + SMB2_PACKET_SIZE +len(self['AlignPad']) - #self['SecurityBufferLength'] += len(self['AlignPad']) - return Structure.getData(self) - - -class SMB2SessionSetup_Response(Structure): - structure = ( - ('StructureSize','<H=9'), - ('SessionFlags','<H=0'), - ('SecurityBufferOffset','<H=0'), - ('SecurityBufferLength','<H=0'), - ('_AlignPad','_-AlignPad','self["SecurityBufferOffset"] - (64 + self["StructureSize"] - 1)'), - ('AlignPad',':=""'), - ('_Buffer','_-Buffer','self["SecurityBufferLength"]'), - ('Buffer',':'), - ) - -# SMB2_LOGOFF -class SMB2Logoff(Structure): - structure = ( - ('StructureSize','<H=4'), - ('Reserved','<H=0'), - ) - - -class SMB2Logoff_Response(Structure): - structure = ( - ('StructureSize','<H=4'), - ('Reserved','<H=0'), - ) - -# SMB2_TREE_CONNECT -class SMB2TreeConnect(Structure): - SIZE = 8 - structure = ( - ('StructureSize','<H=9'), - ('Reserved','<H=0'), - ('PathOffset','<H=(self.SIZE + 64 + len(self["AlignPad"]))'), - ('PathLength','<H=0'), - ('_AlignPad','_-AlignPad','self["PathOffset"] - (64 + self.SIZE - 1)'), - ('AlignPad',':=""'), - ('_Buffer','_-Buffer','self["PathLength"]'), - ('Buffer',':'), - ) - def __init__(self, data = None): - Structure.__init__(self,data) - if data is None: - self['AlignPad'] = '' - -class SMB2TreeConnect_Response(Structure): - structure = ( - ('StructureSize','<H=16'), - ('ShareType','<B=0'), - ('Reserved','<B=0'), - ('ShareFlags','<L=0'), - ('Capabilities','<L=0'), - ('MaximalAccess','<L=0'), - ) - -# SMB2_TREE_DISCONNECT -class SMB2TreeDisconnect(Structure): - structure = ( - ('StructureSize','<H=4'), - ('Reserved','<H=0'), - ) - -class SMB2TreeDisconnect_Response(Structure): - structure = ( - ('StructureSize','<H=4'), - ('Reserved','<H=0'), - ) - -# SMB2_CREATE -class SMB2Create(Structure): - SIZE = 56 - structure = ( - ('StructureSize','<H=57'), - ('SecurityFlags','<B=0'), - ('RequestedOplockLevel','<B=0'), - ('ImpersonationLevel','<L=0'), - ('SmbCreateFlags','<Q=0'), - ('Reserved','<Q=0'), - ('DesiredAccess','<L=0'), - ('FileAttributes','<L=0'), - ('ShareAccess','<L=0'), - ('CreateDisposition','<L=0'), - ('CreateOptions','<L=0'), - ('NameOffset','<H=(self.SIZE + 64 + len(self["AlignPad"]))'), - ('NameLength','<H=0'), - ('CreateContextsOffset','<L=0'), - ('CreateContextsLength','<L=0'), - ('_AlignPad','_-AlignPad','self["NameOffset"] - (64 + self["StructureSize"] - 1)'), - ('AlignPad',':=""'), - ('_Buffer','_-Buffer','self["CreateContextsLength"]+self["NameLength"]'), - ('Buffer',':'), - ) - def __init__(self, data = None): - Structure.__init__(self,data) - if data is None: - self['AlignPad'] = '' - -class SMB2CreateContext(Structure): - structure = ( - ('Next','<L=0'), - ('NameOffset','<H=0'), - ('NameLength','<H=0'), - ('Reserved','<H=0'), - ('DataOffset','<H=0'), - ('DataLength','<L=0'), - ('_Buffer','_-Buffer','self["DataLength"]+self["NameLength"]'), - ('Buffer',':'), - ) - -class SMB2_FILEID(Structure): - structure = ( - ('Persistent','<Q=0'), - ('Volatile','<Q=0'), - ) - -class SMB2Create_Response(Structure): - structure = ( - ('StructureSize','<H=89'), - ('OplockLevel','<B=0'), - ('Flags','<B=0'), - ('CreateAction','<L=0'), - ('CreationTime','<Q=0'), - ('LastAccessTime','<Q=0'), - ('LastWriteTime','<Q=0'), - ('ChangeTime','<Q=0'), - ('AllocationSize','<Q=0'), - ('EndOfFile','<Q=0'), - ('FileAttributes','<L=0'), - ('Reserved2','<L=0'), - ('FileID',':',SMB2_FILEID), - ('CreateContextsOffset','<L=0'), - ('CreateContextsLength','<L=0'), - ('_AlignPad','_-AlignPad','self["CreateContextsOffset"] - (64 + self["StructureSize"] - 1)'), - ('AlignPad',':=""'), - ('_Buffer','_-Buffer','self["CreateContextsLength"]'), - ('Buffer',':'), - ) - -class FILE_FULL_EA_INFORMATION(Structure): - structure = ( - ('NextEntryOffset','<L=0'), - ('Flags','<B=0'), - ('EaNameLength','<B=0'), - ('EaValueLength','<H=0'), - ('_EaName','_-EaName','self["EaNameLength"]'), - ('EaName',':'), - ('_EaValue','_-EaValue','self["EaValue"]'), - ('EaValue',':'), - ) - - -class SMB2_CREATE_DURABLE_HANDLE_RECONNECT(Structure): - structure = ( - ('Data',':',SMB2_FILEID), - ) - -class SMB2_CREATE_DURABLE_HANDLE_REQUEST(Structure): - structure = ( - ('DurableRequest','16s=""'), - ) - -class SMB2_CREATE_DURABLE_HANDLE_RESPONSE(Structure): - structure = ( - ('Reserved','<Q=0'), - ) - -class SMB2_CREATE_QUERY_MAXIMAL_ACCESS_REQUEST(Structure): - structure = ( - ('Timestamp','<Q=0'), - ) - -class SMB2_CREATE_QUERY_MAXIMAL_ACCESS_RESPONSE(Structure): - structure = ( - ('QueryStatus','<L=0'), - ('MaximalAccess','<L=0'), - ) - -class SMB2_CREATE_ALLOCATION_SIZE(Structure): - structure = ( - ('AllocationSize','<Q=0'), - ) - -class SMB2_CREATE_TIMEWARP_TOKEN(Structure): - structure = ( - ('AllocationSize','<Q=0'), - ) - -class SMB2_CREATE_REQUEST_LEASE(Structure): - structure = ( - ('LeaseKey','16s=""'), - ('LeaseState','<L=0'), - ('LeaseFlags','<L=0'), - ('LeaseDuration','<Q=0'), - ) - -SMB2_CREATE_RESPONSE_LEASE = SMB2_CREATE_REQUEST_LEASE - -class SMB2_CREATE_REQUEST_LEASE_V2(Structure): - structure = ( - ('LeaseKey','16s=""'), - ('LeaseState','<L=0'), - ('Flags','<L=0'), - ('LeaseDuration','<Q=0'), - ('ParentLeaseKey','16s=""'), - ('Epoch','<H=0'), - ('Reserved','<H=0'), - ) - -SMB2_CREATE_RESPONSE_LEASE_V2 = SMB2_CREATE_REQUEST_LEASE_V2 - -class SMB2_CREATE_DURABLE_HANDLE_REQUEST_V2(Structure): - structure = ( - ('Timeout','<L=0'), - ('Flags','<L=0'), - ('Reserved','8s=""'), - ('CreateGuid','16s=""'), - ) - -class SMB2_CREATE_DURABLE_HANDLE_RESPONSE_V2(Structure): - structure = ( - ('Timeout','<L=0'), - ('Flags','<L=0'), - ) - -class SMB2_CREATE_DURABLE_HANDLE_RECONNECT_V2(Structure): - structure = ( - ('FileID',':', SMB2_FILEID), - ('CreateGuid','16s=""'), - ('Flags','<L=0'), - ) - -class SMB2_CREATE_APP_INSTANCE_ID(Structure): - structure = ( - ('StructureSize','<H=0'), - ('Reserved','<H=0'), - ('AppInstanceId','16s=""'), - ) - -class SMB2_CREATE_QUERY_ON_DISK_ID(Structure): - structure = ( - ('DiskIDBuffer','32s=""'), - ) - -# Todo: Add Classes for -#SMB2_CREATE_SD_BUFFER - -# SMB2_CLOSE -class SMB2Close(Structure): - structure = ( - ('StructureSize','<H=24'), - ('Flags','<H=0'), - ('Reserved','<L=0'), - ('FileID',':', SMB2_FILEID), - ) - -class SMB2Close_Response(Structure): - structure = ( - ('StructureSize','<H=60'), - ('Flags','<H=0'), - ('Reserved','<L=0'), - ('CreationTime','<Q=0'), - ('LastAccessTime','<Q=0'), - ('LastWriteTime','<Q=0'), - ('ChangeTime','<Q=0'), - ('AllocationSize','<Q=0'), - ('EndofFile','<Q=0'), - ('FileAttributes','<L=0'), - ) - -# SMB2_FLUSH -class SMB2Flush(Structure): - structure = ( - ('StructureSize','<H=24'), - ('Reserved1','<H=0'), - ('Reserved2','<L=0'), - ('FileID',':',SMB2_FILEID), - ) - -class SMB2Flush_Response(Structure): - structure = ( - ('StructureSize','<H=4'), - ('Reserved','<H=0'), - ) - -# SMB2_READ -class SMB2Read(Structure): - SIZE = 48 - structure = ( - ('StructureSize','<H=49'), - ('Padding','<B=0'), - ('Reserved','<B=0'), - ('Length','<L=0'), - ('Offset','<Q=0'), - ('FileID',':',SMB2_FILEID), - ('MinimumCount','<L=0'), - ('Channel','<L=0'), - ('RemainingBytes','<L=0'), - ('ReadChannelInfoOffset','<H=0'), - ('ReadChannelInfoLength','<H=0'), - ('_AlignPad','_-AlignPad','self["ReadChannelInfoOffset"] - (64 + self["StructureSize"] - 1)'), - ('AlignPad',':=""'), - ('_Buffer','_-Buffer','self["ReadChannelInfoLength"]'), - ('Buffer',':=0'), - ) - def __init__(self, data = None): - Structure.__init__(self,data) - if data is None: - self['AlignPad'] = '' - - -class SMB2Read_Response(Structure): - structure = ( - ('StructureSize','<H=17'), - ('DataOffset','<B=0'), - ('Reserved','<B=0'), - ('DataLength','<L=0'), - ('DataRemaining','<L=0'), - ('Reserved2','<L=0'), - ('_AlignPad','_-AlignPad','self["DataOffset"] - (64 + self["StructureSize"] - 1)'), - ('AlignPad',':=""'), - ('_Buffer','_-Buffer','self["DataLength"]'), - ('Buffer',':'), - ) - -# SMB2_WRITE -class SMB2Write(Structure): - SIZE = 48 - structure = ( - ('StructureSize','<H=49'), - ('DataOffset','<H=(self.SIZE + 64 + len(self["AlignPad"]))'), - ('Length','<L=0'), - ('Offset','<Q=0'), - ('FileID',':',SMB2_FILEID), - ('Channel','<L=0'), - ('RemainingBytes','<L=0'), - ('WriteChannelInfoOffset','<H=0'), - ('WriteChannelInfoLength','<H=0'), - ('_AlignPad','_-AlignPad','self["DataOffset"] + self["WriteChannelInfoOffset"] - (64 + self["StructureSize"] - 1)'), - ('AlignPad',':=""'), - ('Flags','<L=0'), - ('_Buffer','_-Buffer','self["Length"]+self["WriteChannelInfoLength"]'), - ('Buffer',':'), - ) - def __init__(self, data = None): - Structure.__init__(self,data) - if data is None: - self['AlignPad'] = '' - - -class SMB2Write_Response(Structure): - structure = ( - ('StructureSize','<H=17'), - ('Reserved','<H=0'), - ('Count','<L=0'), - ('Remaining','<L=0'), - ('WriteChannelInfoOffset','<H=0'), - ('WriteChannelInfoLength','<H=0'), - ) - -class SMB2OplockBreakNotification(Structure): - structure = ( - ('StructureSize','<H=24'), - ('OplockLevel','<B=0'), - ('Reserved','<B=0'), - ('Reserved2','<L=0'), - ('FileID',':',SMB2_FILEID), - ) - -SMB2OplockBreakAcknowledgment = SMB2OplockBreakNotification -SMB2OplockBreakResponse = SMB2OplockBreakNotification - -class SMB2LeaseBreakNotification(Structure): - structure = ( - ('StructureSize','<H=44'), - ('NewEpoch','<H=0'), - ('Flags','<L=0'), - ('LeaseKey','16s=""'), - ('CurrentLeaseState','<L=0'), - ('NewLeaseState','<L=0'), - ('BreakReason','<L=0'), - ('AccessMaskHint','<L=0'), - ('ShareMaskHint','<L=0'), - ) - -class SMB2LeaseBreakAcknowledgement(Structure): - structure = ( - ('StructureSize','<H=36'), - ('Reserved','<H=0'), - ('Flags','<L=0'), - ('LeaseKey','16s=""'), - ('LeaseState','<L=0'), - ('LeaseDuration','<Q=0'), - ) - -SMB2LeaseBreakResponse = SMB2LeaseBreakAcknowledgement - -# SMB2_LOCK -class SMB2_LOCK_ELEMENT(Structure): - structure = ( - ('Offset','<Q=0'), - ('Length','<Q=0'), - ('Flags','<L=0'), - ('Reserved','<L=0'), - ) - -class SMB2Lock(Structure): - structure = ( - ('StructureSize','<H=48'), - ('LockCount','<H=0'), - ('LockSequence','<L=0'), - ('FileID',':',SMB2_FILEID), - ('_Locks','_-Locks','self["LockCount"]*24'), - ('Locks',':'), - ) - -class SMB2Lock_Response(Structure): - structure = ( - ('StructureSize','<H=4'), - ('Reserved','<H=0'), - ) - - -# SMB2_ECHO -class SMB2Echo(Structure): - structure = ( - ('StructureSize','<H=4'), - ('Reserved','<H=0'), - ) - -SMB2Echo_Response = SMB2Echo - -# SMB2_CANCEL` -class SMB2Cancel(Structure): - structure = ( - ('StructureSize','<H=4'), - ('Reserved','<H=0'), - ) - -# SMB2_IOCTL -class SMB2Ioctl(Structure): - SIZE = 56 - structure = ( - ('StructureSize','<H=57'), - ('Reserved','<H=0'), - ('CtlCode','<L=0'), - ('FileID',':',SMB2_FILEID), - ('InputOffset','<L=(self.SIZE + 64 + len(self["AlignPad"]))'), - ('InputCount','<L=0'), - ('MaxInputResponse','<L=0'), - ('OutputOffset','<L=(self.SIZE + 64 + len(self["AlignPad"]) + self["InputCount"])'), - ('OutputCount','<L=0'), - ('MaxOutputResponse','<L=0'), - ('Flags','<L=0'), - ('Reserved2','<L=0'), - #('_AlignPad','_-AlignPad','self["InputOffset"] + self["OutputOffset"] - (64 + self["StructureSize"] - 1)'), - #('AlignPad',':=""'), - ('_Buffer','_-Buffer','self["InputCount"]+self["OutputCount"]'), - ('Buffer',':'), - ) - def __init__(self, data = None): - Structure.__init__(self,data) - if data is None: - self['AlignPad'] = '' - -class FSCTL_PIPE_WAIT_STRUCTURE(Structure): - structure = ( - ('Timeout','<q=0'), - ('NameLength','<L=0'), - ('TimeoutSpecified','<B=0'), - ('Padding','<B=0'), - ('_Name','_-Name','self["NameLength"]'), - ('Name',':'), - ) - -class SRV_COPYCHUNK_COPY(Structure): - structure = ( - ('SourceKey','24s=""'), - ('ChunkCount','<L=0'), - ('Reserved','<L=0'), - ('_Chunks','_-Chunks', 'self["ChunkCount"]*len(SRV_COPYCHUNK)'), - ('Chunks',':'), - ) - -class SRV_COPYCHUNK(Structure): - structure = ( - ('SourceOffset','<Q=0'), - ('TargetOffset','<Q=0'), - ('Length','<L=0'), - ('Reserved','<L=0'), - ) - -class SRV_COPYCHUNK_RESPONSE(Structure): - structure = ( - ('ChunksWritten','<L=0'), - ('ChunkBytesWritten','<L=0'), - ('TotalBytesWritten','<L=0'), - ) - -class SRV_READ_HASH(Structure): - structure = ( - ('HashType','<L=0'), - ('HashVersion','<L=0'), - ('HashRetrievalType','<L=0'), - ('Length','<L=0'), - ('Offset','<Q=0'), - ) - -class NETWORK_RESILIENCY_REQUEST(Structure): - structure = ( - ('Timeout','<L=0'), - ('Reserved','<L=0'), - ) - -class VALIDATE_NEGOTIATE_INFO(Structure): - structure = ( - ('Capabilities','<L=0'), - ('Guid','16s=""'), - ('SecurityMode','<H=0'), - #('DialectCount','<H=0'), - ('Dialects','<H*<H'), - ) - -class SRV_SNAPSHOT_ARRAY(Structure): - structure = ( - ('NumberOfSnapShots','<L=0'), - ('NumberOfSnapShotsReturned','<L=0'), - ('SnapShotArraySize','<L=0'), - ('_SnapShots','_-SnapShots','self["SnapShotArraySize"]'), - ('SnapShots',':'), - ) - -class SRV_REQUEST_RESUME_KEY(Structure): - structure = ( - ('ResumeKey','24s=""'), - ('ContextLength','<L=0'), - ('_Context','_-Context','self["ContextLength"]'), - ('Context',':'), - ) - -class HASH_HEADER(Structure): - structure = ( - ('HashType','<L=0'), - ('HashVersion','<L=0'), - ('SourceFileChangeTime','<Q=0'), - ('SourceFileSize','<Q=0'), - ('HashBlobLength','<L=0'), - ('HashBlobOffset','<L=0'), - ('Dirty','<H=0'), - ('SourceFileNameLength','<L=0'), - ('_SourceFileName','_-SourceFileName','self["SourceFileNameLength"]',), - ('SourceFileName',':'), - ) - -class SRV_HASH_RETRIEVE_HASH_BASED(Structure): - structure = ( - ('Offset','<Q=0'), - ('BufferLength','<L=0'), - ('Reserved','<L=0'), - ('_Buffer','_-Buffer','self["BufferLength"]'), - ('Buffer',':'), - ) - -class SRV_HASH_RETRIEVE_FILE_BASED(Structure): - structure = ( - ('FileDataOffset','<Q=0'), - ('FileDataLength','<Q=0'), - ('BufferLength','<L=0'), - ('Reserved','<L=0'), - ('_Buffer','_-Buffer','self["BufferLength"]'), - ('Buffer',':'), - ) - -class NETWORK_INTERFACE_INFO(Structure): - structure = ( - ('Next','<L=0'), - ('IfIndex','<L=0'), - ('Capability','<L=0'), - ('Reserved','<L=0'), - ('LinkSpeed','<Q=0'), - ('SockAddr_Storage','128s=""'), - ) - -class SMB2Ioctl_Response(Structure): - structure = ( - ('StructureSize','<H=49'), - ('Reserved','<H=0'), - ('CtlCode','<L=0'), - ('FileID',':',SMB2_FILEID), - ('InputOffset','<L=0'), - ('InputCount','<L=0'), - ('OutputOffset','<L=0'), - ('OutputCount','<L=0'), - ('Flags','<L=0'), - ('Reserved2','<L=0'), - ('_AlignPad','_-AlignPad','self["OutputOffset"] - (64 + self["StructureSize"] - 1)'), - ('AlignPad',':=""'), - ('_Buffer','_-Buffer','self["InputCount"]+self["OutputCount"]'), - ('Buffer',':'), - ) - -# SMB2_QUERY_DIRECTORY -class SMB2QueryDirectory(Structure): - SIZE = 32 - structure = ( - ('StructureSize','<H=33'), - ('FileInformationClass','<B=0'), - ('Flags','<B=0'), - ('FileIndex','<L=0'), - ('FileID',':',SMB2_FILEID), - ('FileNameOffset','<H=(self.SIZE + 64 + len(self["AlignPad"]))'), - ('FileNameLength','<H=0'), - ('OutputBufferLength','<L=0'), - ('_AlignPad','_-AlignPad','self["FileNameOffset"] - (64 + self["StructureSize"] - 1)'), - ('AlignPad',':=""'), - ('_Buffer','_-Buffer','self["FileNameLength"]'), - ('Buffer',':'), - ) - def __init__(self, data = None): - Structure.__init__(self,data) - if data is None: - self['AlignPad'] = '' - -class SMB2QueryDirectory_Response(Structure): - structure = ( - ('StructureSize','<H=9'), - ('OutputBufferOffset','<H=0'), - ('OutputBufferLength','<L=0'), - ('_AlignPad','_-AlignPad','self["OutputBufferOffset"] - (64 + self["StructureSize"] - 1)'), - ('AlignPad',':=""'), - ('_Buffer','_-Buffer','self["OutputBufferLength"]'), - ('Buffer',':'), - ) - -# SMB2_CHANGE_NOTIFY -class SMB2ChangeNotify(Structure): - structure = ( - ('StructureSize','<H=32'), - ('Flags','<H=0'), - ('OutputBufferLength','<L=0'), - ('FileID',':',SMB2_FILEID), - ('CompletionFilter','<L=0'), - ('Reserved','<L=0'), - ) - -class SMB2ChangeNotify_Response(Structure): - structure = ( - ('StructureSize','<H=9'), - ('OutputBufferOffset','<H=0'), - ('OutputBufferLength','<L=0'), - ('_AlignPad','_-AlignPad','self["OutputBufferOffset"] - (64 + self["StructureSize"] - 1)'), - ('AlignPad',':=""'), - ('_Buffer','_-Buffer','self["OutputBufferLength"]'), - ('Buffer',':'), - ) - -class FILE_NOTIFY_INFORMATION(Structure): - structure = ( - ('NextEntryOffset','<L=0'), - ('Action','<L=0'), - ('FileNameLength','<L=0'), - ('_FileName','_-FileName','self["FileNameLength"]',), - ('FileName',':'), - ) - -# SMB2_QUERY_INFO -class SMB2QueryInfo(Structure): - SIZE = 40 - structure = ( - ('StructureSize','<H=41'), - ('InfoType','<B=0'), - ('FileInfoClass','<B=0'), - ('OutputBufferLength','<L=0'), - ('InputBufferOffset','<H=(self.SIZE + 64 + len(self["AlignPad"]))'), - ('Reserved','<H=0'), - ('InputBufferLength','<L=0'), - ('AdditionalInformation','<L=0'), - ('Flags','<L=0'), - ('FileID',':',SMB2_FILEID), - ('_AlignPad','_-AlignPad','self["InputBufferOffset"] - (64 + self["StructureSize"] - 1)'), - ('AlignPad',':=""'), - ('_Buffer','_-Buffer','self["InputBufferLength"]'), - ('Buffer',':'), - ) - def __init__(self, data = None): - Structure.__init__(self,data) - if data is None: - self['AlignPad'] = '' - - -class SMB2_QUERY_QUOTA_INFO(Structure): - structure = ( - ('ReturnSingle','<B=0'), - ('RestartScan','<B=0'), - ('Reserved','<H=0'), - ('SidListLength','<L=0'), - ('StartSidLength','<L=0'), - ('StartSidOffset','<L=0'), - # ToDo: Check 2.2.37.1 here - ('SidBuffer',':'), - ) - -class SMB2QueryInfo_Response(Structure): - structure = ( - ('StructureSize','<H=9'), - ('OutputBufferOffset','<H=0'), - ('OutputBufferLength','<L=0'), - ('_AlignPad','_-AlignPad','self["OutputBufferOffset"] - (64 + self["StructureSize"] - 1)'), - ('AlignPad',':=""'), - ('_Buffer','_-Buffer','self["OutputBufferLength"]'), - ('Buffer',':'), - ) - -# SMB2_SET_INFO -class SMB2SetInfo(Structure): - SIZE = 32 - structure = ( - ('StructureSize','<H=33'), - ('InfoType','<B=0'), - ('FileInfoClass','<B=0'), - ('BufferLength','<L=0'), - ('BufferOffset','<H=(self.SIZE + 64 + len(self["AlignPad"]))'), - ('Reserved','<H=0'), - ('AdditionalInformation','<L=0'), - ('FileID',':',SMB2_FILEID), - ('_AlignPad','_-AlignPad','self["BufferOffset"] - (64 + self["StructureSize"] - 1)'), - ('AlignPad',':=""'), - ('_Buffer','_-Buffer','self["BufferLength"]'), - ('Buffer',':'), - ) - def __init__(self, data = None): - Structure.__init__(self,data) - if data is None: - self['AlignPad'] = '' - -class SMB2SetInfo_Response(Structure): - structure = ( - ('StructureSize','<H=2'), - ) - -class FILE_RENAME_INFORMATION_TYPE_2(Structure): - structure = ( - ('ReplaceIfExists','<B=0'), - ('Reserved','7s=""'), - ('RootDirectory','<Q=0'), - ('FileNameLength','<L=0'), - ('_FileName','_-FileName','self["FileNameLength"]'), - ('FileName',':'), - ) - -class SMB2_TRANSFORM_HEADER(Structure): - structure = ( - ('ProtocolID','"\xfdSMB'), - ('Signature','16s=""'), - ('Nonce','16s=""'), - ('OriginalMessageSize','<L=0'), - ('Reserved','<H=0'), - ('EncryptionAlgorithm','<H=0'), - ('SessionID','<Q=0'), - ) - -# SMB2_FILE_INTERNAL_INFO -class FileInternalInformation(Structure): - structure = ( - ('IndexNumber','<q=0'), - ) |