258 lines
8.2 KiB
Python
258 lines
8.2 KiB
Python
|
|
# Values for Command field in SMB message header
|
|
SMB_COM_CREATE_DIRECTORY = 0x00
|
|
SMB_COM_DELETE_DIRECTORY = 0x01
|
|
SMB_COM_CLOSE = 0x04
|
|
SMB_COM_DELETE = 0x06
|
|
SMB_COM_RENAME = 0x07
|
|
SMB_COM_TRANSACTION = 0x25
|
|
SMB_COM_ECHO = 0x2B
|
|
SMB_COM_OPEN_ANDX = 0x2D
|
|
SMB_COM_READ_ANDX = 0x2E
|
|
SMB_COM_WRITE_ANDX = 0x2F
|
|
SMB_COM_TRANSACTION2 = 0x32
|
|
SMB_COM_NEGOTIATE = 0x72
|
|
SMB_COM_SESSION_SETUP_ANDX = 0x73
|
|
SMB_COM_TREE_CONNECT_ANDX = 0x75
|
|
SMB_COM_NT_TRANSACT = 0xA0
|
|
SMB_COM_NT_CREATE_ANDX = 0xA2
|
|
|
|
SMB_COMMAND_NAMES = {
|
|
0x00: 'SMB_COM_CREATE_DIRECTORY',
|
|
0x01: 'SMB_COM_DELETE_DIRECTORY',
|
|
0x04: 'SMB_COM_CLOSE',
|
|
0x06: 'SMB_COM_DELETE',
|
|
0x25: 'SMB_COM_TRANSACTION',
|
|
0x2B: 'SMB_COM_ECHO',
|
|
0x2D: 'SMB_COM_OPEN_ANDX',
|
|
0x2E: 'SMB_COM_READ_ANDX',
|
|
0x2F: 'SMB_COM_WRITE_ANDX',
|
|
0x32: 'SMB_COM_TRANSACTION2',
|
|
0x72: 'SMB_COM_NEGOTIATE',
|
|
0x73: 'SMB_COM_SESSION_SETUP_ANDX',
|
|
0x75: 'SMB_COM_TREE_CONNECT_ANDX',
|
|
0xA0: 'SMB_COM_NT_TRANSACT',
|
|
0xA2: 'SMB_COM_NT_CREATE_ANDX',
|
|
}
|
|
|
|
# Bitmask for Flags field in SMB message header
|
|
SMB_FLAGS_LOCK_AND_READ_OK = 0x01 # LANMAN1.0
|
|
SMB_FLAGS_BUF_AVAIL = 0x02 # LANMAN1.0, Obsolete
|
|
SMB_FLAGS_CASE_INSENSITIVE = 0x08 # LANMAN1.0, Obsolete
|
|
SMB_FLAGS_CANONICALIZED_PATHS = 0x10 # LANMAN1.0, Obsolete
|
|
SMB_FLAGS_OPLOCK = 0x20 # LANMAN1.0, Obsolete
|
|
SMB_FLAGS_OPBATCH = 0x40 # LANMAN1.0, Obsolete
|
|
SMB_FLAGS_REPLY = 0x80 # LANMAN1.0
|
|
|
|
# Bitmask for Flags2 field in SMB message header
|
|
SMB_FLAGS2_LONG_NAMES = 0x0001 # LANMAN2.0
|
|
SMB_FLAGS2_EAS = 0x0002 # LANMAN1.2
|
|
SMB_FLAGS2_SMB_SECURITY_SIGNATURE = 0x0004 # NT LANMAN
|
|
SMB_FLAGS2_IS_LONG_NAME = 0x0040 # NT LANMAN
|
|
SMB_FLAGS2_DFS = 0x1000 # NT LANMAN
|
|
SMB_FLAGS2_REPARSE_PATH = 0x0400 #
|
|
SMB_FLAGS2_EXTENDED_SECURITY = 0x0800 #
|
|
SMB_FLAGS2_PAGING_IO = 0x2000 # NT LANMAN
|
|
SMB_FLAGS2_NT_STATUS = 0x4000 # NT LANMAN
|
|
SMB_FLAGS2_UNICODE = 0x8000 # NT LANMAN
|
|
|
|
# Bitmask for Capabilities field in SMB_COM_SESSION_SETUP_ANDX response
|
|
# [MS-SMB]: 2.2.4.5.2.1 (Capabilities field)
|
|
CAP_RAW_MODE = 0x01
|
|
CAP_MPX_MODE = 0x02
|
|
CAP_UNICODE = 0x04
|
|
CAP_LARGE_FILES = 0x08
|
|
CAP_NT_SMBS = 0x10
|
|
CAP_RPC_REMOTE_APIS = 0x20
|
|
CAP_STATUS32 = 0x40
|
|
CAP_LEVEL_II_OPLOCKS = 0x80
|
|
CAP_LOCK_AND_READ = 0x0100
|
|
CAP_NT_FIND = 0x0200
|
|
CAP_DFS = 0x1000
|
|
CAP_INFOLEVEL_PASSTHRU = 0x2000
|
|
CAP_LARGE_READX = 0x4000
|
|
CAP_LARGE_WRITEX = 0x8000
|
|
CAP_LWIO = 0x010000
|
|
CAP_UNIX = 0x800000
|
|
CAP_COMPRESSED = 0x02000000
|
|
CAP_DYNAMIC_REAUTH = 0x20000000
|
|
CAP_PERSISTENT_HANDLES = 0x40000000
|
|
CAP_EXTENDED_SECURITY = 0x80000000
|
|
|
|
# Value for Action field in SMB_COM_SESSION_SETUP_ANDX response
|
|
SMB_SETUP_GUEST = 0x0001
|
|
SMB_SETUP_USE_LANMAN_KEY = 0X0002
|
|
|
|
# Bitmask for SecurityMode field in SMB_COM_NEGOTIATE response
|
|
NEGOTIATE_USER_SECURITY = 0x01
|
|
NEGOTIATE_ENCRYPT_PASSWORDS = 0x02
|
|
NEGOTIATE_SECURITY_SIGNATURES_ENABLE = 0x04
|
|
NEGOTIATE_SECURITY_SIGNATURES_REQUIRE = 0x08
|
|
|
|
# Available constants for Service field in SMB_COM_TREE_CONNECT_ANDX request
|
|
# [MS-CIFS]: 2.2.4.55.1 (Service field)
|
|
SERVICE_PRINTER = 'LPT1:'
|
|
SERVICE_NAMED_PIPE = 'IPC'
|
|
SERVICE_COMM = 'COMM'
|
|
SERVICE_ANY = '?????'
|
|
|
|
# Bitmask for Flags field in SMB_COM_NT_CREATE_ANDX request
|
|
# [MS-CIFS]: 2.2.4.64.1
|
|
# [MS-SMB]: 2.2.4.9.1
|
|
NT_CREATE_REQUEST_OPLOCK = 0x02
|
|
NT_CREATE_REQUEST_OPBATCH = 0x04
|
|
NT_CREATE_OPEN_TARGET_DIR = 0x08
|
|
NT_CREATE_REQUEST_EXTENDED_RESPONSE = 0x10 # Defined in [MS-SMB]: 2.2.4.9.1
|
|
|
|
# Bitmask for DesiredAccess field in SMB_COM_NT_CREATE_ANDX request
|
|
# and SMB2CreateRequest class
|
|
# Also used for MaximalAccess field in SMB2TreeConnectResponse class
|
|
# [MS-CIFS]: 2.2.4.64.1
|
|
# [MS-SMB2]: 2.2.13.1.1
|
|
FILE_READ_DATA = 0x01
|
|
FILE_WRITE_DATA = 0X02
|
|
FILE_APPEND_DATA = 0x04
|
|
FILE_READ_EA = 0x08
|
|
FILE_WRITE_EA = 0x10
|
|
FILE_EXECUTE = 0x20
|
|
FILE_DELETE_CHILD = 0x40
|
|
FILE_READ_ATTRIBUTES = 0x80
|
|
FILE_WRITE_ATTRIBUTES = 0x0100
|
|
DELETE = 0x010000
|
|
READ_CONTROL = 0x020000
|
|
WRITE_DAC = 0x040000
|
|
WRITE_OWNER = 0x080000
|
|
SYNCHRONIZE = 0x100000
|
|
ACCESS_SYSTEM_SECURITY = 0x01000000
|
|
MAXIMUM_ALLOWED = 0x02000000
|
|
GENERIC_ALL = 0x10000000
|
|
GENERIC_EXECUTE = 0x20000000
|
|
GENERIC_WRITE = 0x40000000
|
|
GENERIC_READ = 0x80000000L
|
|
|
|
# SMB_EXT_FILE_ATTR bitmask ([MS-CIFS]: 2.2.1.2.3)
|
|
# Includes extensions defined in [MS-SMB] 2.2.1.2.1
|
|
# Bitmask for FileAttributes field in SMB_COM_NT_CREATE_ANDX request ([MS-CIFS]: 2.2.4.64.1)
|
|
# Also used for FileAttributes field in SMB2CreateRequest class ([MS-SMB2]: 2.2.13)
|
|
ATTR_READONLY = 0x01
|
|
ATTR_HIDDEN = 0x02
|
|
ATTR_SYSTEM = 0x04
|
|
ATTR_DIRECTORY = 0x10
|
|
ATTR_ARCHIVE = 0x20
|
|
ATTR_NORMAL = 0x80
|
|
ATTR_TEMPORARY = 0x0100
|
|
ATTR_SPARSE = 0x0200
|
|
ATTR_REPARSE_POINT = 0x0400
|
|
ATTR_COMPRESSED = 0x0800
|
|
ATTR_OFFLINE = 0x1000
|
|
ATTR_NOT_CONTENT_INDEXED = 0x2000
|
|
ATTR_ENCRYPTED = 0x4000
|
|
POSIX_SEMANTICS = 0x01000000
|
|
BACKUP_SEMANTICS = 0x02000000
|
|
DELETE_ON_CLOSE = 0x04000000
|
|
SEQUENTIAL_SCAN = 0x08000000
|
|
RANDOM_ACCESS = 0x10000000
|
|
NO_BUFFERING = 0x20000000
|
|
WRITE_THROUGH = 0x80000000
|
|
|
|
# Bitmask for ShareAccess field in SMB_COM_NT_CREATE_ANDX request
|
|
# and SMB2CreateRequest class
|
|
# [MS-CIFS]: 2.2.4.64.1
|
|
# [MS-SMB2]: 2.2.13
|
|
FILE_SHARE_NONE = 0x00
|
|
FILE_SHARE_READ = 0x01
|
|
FILE_SHARE_WRITE = 0x02
|
|
FILE_SHARE_DELETE = 0x04
|
|
|
|
# Values for CreateDisposition field in SMB_COM_NT_CREATE_ANDX request
|
|
# and SMB2CreateRequest class
|
|
# [MS-CIFS]: 2.2.4.64.1
|
|
# [MS-SMB2]: 2.2.13
|
|
FILE_SUPERSEDE = 0x00
|
|
FILE_OPEN = 0x01
|
|
FILE_CREATE = 0x02
|
|
FILE_OPEN_IF = 0x03
|
|
FILE_OVERWRITE = 0x04
|
|
FILE_OVERWRITE_IF = 0x05
|
|
|
|
# Bitmask for CreateOptions field in SMB_COM_NT_CREATE_ANDX request
|
|
# and SMB2CreateRequest class
|
|
# [MS-CIFS]: 2.2.4.64.1
|
|
# [MS-SMB2]: 2.2.13
|
|
FILE_DIRECTORY_FILE = 0x01
|
|
FILE_WRITE_THROUGH = 0x02
|
|
FILE_SEQUENTIAL_ONLY = 0x04
|
|
FILE_NO_INTERMEDIATE_BUFFERING = 0x08
|
|
FILE_SYNCHRONOUS_IO_ALERT = 0x10
|
|
FILE_SYNCHRONOUS_IO_NONALERT = 0x20
|
|
FILE_NON_DIRECTORY_FILE = 0x40
|
|
FILE_CREATE_TREE_CONNECTION = 0x80
|
|
FILE_COMPLETE_IF_OPLOCKED = 0x0100
|
|
FILE_NO_EA_KNOWLEDGE = 0x0200
|
|
FILE_OPEN_FOR_RECOVERY = 0x0400
|
|
FILE_RANDOM_ACCESS = 0x0800
|
|
FILE_DELETE_ON_CLOSE = 0x1000
|
|
FILE_OPEN_BY_FILE_ID = 0x2000
|
|
FILE_OPEN_FOR_BACKUP_INTENT = 0x4000
|
|
FILE_NO_COMPRESSION = 0x8000
|
|
FILE_RESERVE_OPFILTER = 0x100000
|
|
FILE_OPEN_NO_RECALL = 0x400000
|
|
FILE_OPEN_FOR_FREE_SPACE_QUERY = 0x800000
|
|
|
|
# Values for ImpersonationLevel field in SMB_COM_NT_CREATE_ANDX request
|
|
# and SMB2CreateRequest class
|
|
# For interpretations about these values, refer to [MS-WSO] and [MSDN-IMPERS]
|
|
# [MS-CIFS]: 2.2.4.64.1
|
|
# [MS-SMB]: 2.2.4.9.1
|
|
# [MS-SMB2]: 2.2.13
|
|
SEC_ANONYMOUS = 0x00
|
|
SEC_IDENTIFY = 0x01
|
|
SEC_IMPERSONATE = 0x02
|
|
SEC_DELEGATION = 0x03 # Defined in [MS-SMB]: 2.2.4.9.1
|
|
|
|
# Values for SecurityFlags field in SMB_COM_NT_CREATE_ANDX request
|
|
# [MS-CIFS]: 2.2.4.64.1
|
|
SMB_SECURITY_CONTEXT_TRACKING = 0x01
|
|
SMB_SECURITY_EFFECTIVE_ONLY = 0x02
|
|
|
|
# Bitmask for Flags field in SMB_COM_TRANSACTION2 request
|
|
# [MS-CIFS]: 2.2.4.46.1
|
|
DISCONNECT_TID = 0x01
|
|
NO_RESPONSE = 0x02
|
|
|
|
# Bitmask for basic file attributes
|
|
# [MS-CIFS]: 2.2.1.2.4
|
|
SMB_FILE_ATTRIBUTE_NORMAL = 0x00
|
|
SMB_FILE_ATTRIBUTE_READONLY = 0x01
|
|
SMB_FILE_ATTRIBUTE_HIDDEN = 0x02
|
|
SMB_FILE_ATTRIBUTE_SYSTEM = 0x04
|
|
SMB_FILE_ATTRIBUTE_VOLUME = 0x08 # Unsupported for listPath() operations
|
|
SMB_FILE_ATTRIBUTE_DIRECTORY = 0x10
|
|
SMB_FILE_ATTRIBUTE_ARCHIVE = 0x20
|
|
# SMB_FILE_ATTRIBUTE_INCL_NORMAL is a special placeholder to include normal files for
|
|
# with other search attributes for listPath() operations. It is not defined in the MS-CIFS specs.
|
|
SMB_FILE_ATTRIBUTE_INCL_NORMAL = 0x10000
|
|
# Do not use the following values for listPath() operations as they are not supported for SMB2
|
|
SMB_SEARCH_ATTRIBUTE_READONLY = 0x0100
|
|
SMB_SEARCH_ATTRIBUTE_HIDDEN = 0x0200
|
|
SMB_SEARCH_ATTRIBUTE_SYSTEM = 0x0400
|
|
SMB_SEARCH_ATTRIBUTE_DIRECTORY = 0x1000
|
|
SMB_SEARCH_ATTRIBUTE_ARCHIVE = 0x2000
|
|
|
|
# Bitmask for OptionalSupport field in SMB_COM_TREE_CONNECT_ANDX response
|
|
SMB_TREE_CONNECTX_SUPPORT_SEARCH = 0x0001
|
|
SMB_TREE_CONNECTX_SUPPORT_DFS = 0x0002
|
|
|
|
# Bitmask for security information fields, specified as
|
|
# AdditionalInformation in SMB2
|
|
# [MS-SMB]: 2.2.7.4
|
|
# [MS-SMB2]: 2.2.37
|
|
OWNER_SECURITY_INFORMATION = 0x00000001
|
|
GROUP_SECURITY_INFORMATION = 0x00000002
|
|
DACL_SECURITY_INFORMATION = 0x00000004
|
|
SACL_SECURITY_INFORMATION = 0x00000008
|
|
LABEL_SECURITY_INFORMATION = 0x00000010
|
|
ATTRIBUTE_SECURITY_INFORMATION = 0x00000020
|
|
SCOPE_SECURITY_INFORMATION = 0x00000040
|
|
BACKUP_SECURITY_INFORMATION = 0x00010000
|