def __init__(self): create_con_req = smbprotocol.create_contexts.SMB2CreateContextRequest self.fields = OrderedDict([ ('structure_size', IntField(size=2, default=89)), ('oplock_level', EnumField(size=1, enum_type=RequestedOplockLevel)), ('flag', FlagField(size=1, flag_type=FileFlags)), ('create_action', EnumField(size=4, enum_type=CreateAction)), ('creation_time', DateTimeField(size=8)), ('last_access_time', DateTimeField(size=8)), ('last_write_time', DateTimeField(size=8)), ('change_time', DateTimeField(size=8)), ('allocation_size', IntField(size=8)), ('end_of_file', IntField(size=8)), ('file_attributes', FlagField(size=4, flag_type=FileAttributes)), ('reserved2', IntField(size=4)), ('file_id', BytesField(size=16)), ('create_contexts_offset', IntField(size=4, default=lambda s: self._create_contexts_offset(s))), ('create_contexts_length', IntField(size=4, default=lambda s: len(s['buffer']))), ('buffer', ListField( size=lambda s: s['create_contexts_length'].get_value(), list_type=StructureField(structure_type=create_con_req), unpack_func=lambda s, d: self._buffer_context_list(s, d))) ]) super(SMB2CreateResponse, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('version_number', IntField(size=2, default=3)), ('size', IntField(size=2)), ('server_type', FlagField(size=2, flag_type=DFSServerTypes, flag_strict=False)), ('referral_entry_flags', FlagField(size=2, flag_type=DFSReferralEntryFlags, flag_strict=False)), ('time_to_live', IntField(size=4)), # The follow fields depend on the ReferralEntryFlags, the actual field names are when the entry is not a # NameListReferral. ('dfs_path_offset', IntField(size=2)), # SpecialNameOffset ('dfs_alternate_path_offset', IntField(size=2)), # NumberOfExpandedNames ('network_address_offset', IntField(size=2)), # ExpandedNameOffset ('service_site_guid', BytesField(size=lambda s: s['size'].get_value() - 18)), # Padding ]) self.dfs_path = None self.dfs_alternate_path = None self.network_address = None super(DFSReferralEntryV3, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('ace_type', EnumField( size=1, default=AceType.SYSTEM_AUDIT_ACE_TYPE, enum_type=AceType )), ('ace_flags', FlagField( size=1, flag_type=AceFlags )), ('ace_size', IntField( size=2, default=lambda s: 8 + len(s['sid']) )), ('mask', FlagField( size=4, flag_type=AccessMask, flag_strict=False )), ('sid', StructureField( structure_type=SIDPacket )) ]) super(SystemAuditAce, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('structure_size', IntField(size=2, default=49)), ( 'data_offset', IntField( # offset to the buffer field size=2, default=0x70 # seems to be hardcoded to this value )), ('length', IntField(size=4, default=lambda s: len(s['buffer']))), ('offset', IntField(size=8)), # the offset in the file of the data ('file_id', BytesField(size=16)), ('channel', FlagField(size=4, flag_type=ReadWriteChannel)), ('remaining_bytes', IntField(size=4)), ('write_channel_info_offset', IntField( size=2, default=lambda s: self._get_write_channel_info_offset(s))), ('write_channel_info_length', IntField(size=2, default=lambda s: len(s['buffer_channel_info']))), ('flags', FlagField(size=4, flag_type=WriteFlags)), ('buffer', BytesField(size=lambda s: s['length'].get_value())), ('buffer_channel_info', BytesField( size=lambda s: s['write_channel_info_length'].get_value())) ]) super(SMB2WriteRequest, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('lease_key', BytesField(size=16)), ('lease_state', FlagField(size=4, flag_type=LeaseState)), ('lease_flags', FlagField(size=4, flag_type=LeaseResponseFlags)), ('lease_duration', IntField(size=8)) ]) super(SMB2CreateResponseLease, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('lease_key', BytesField(size=16)), ('lease_state', FlagField(size=4, flag_type=LeaseState)), ('lease_flags', FlagField(size=4, flag_type=LeaseRequestFlags)), ('lease_duration', IntField(size=8)), ('parent_lease_key', BytesField(size=16)), ('epoch', BytesField(size=2)), ('reserved', IntField(size=2)) ]) super(SMB2CreateRequestLeaseV2, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('service_type', FlagField(size=4, flag_type=ServiceType, flag_strict=False)), ('current_state', EnumField(size=4, enum_type=CurrentState)), ('controls_accepted', FlagField(size=4, flag_type=ControlsAccepted, flag_strict=False)), ('win32_exit_code', IntField(size=4)), ('service_specified_exit_code', IntField(size=4)), ('check_point', IntField(size=4)), ('wait_hint', IntField(size=4)) ]) super(ServiceStatus, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('structure_size', IntField(size=2, default=60)), ('flags', FlagField(size=2, flag_type=CloseFlags)), ('reserved', IntField(size=4)), ('creation_time', DateTimeField()), ('last_access_time', DateTimeField()), ('last_write_time', DateTimeField()), ('change_time', DateTimeField()), ('allocation_size', IntField(size=8)), ('end_of_file', IntField(size=8)), ('file_attributes', FlagField(size=4, flag_type=FileAttributes)) ]) super(SMB2CloseResponse, self).__init__()
def __init__(self): # pep 80 char issues force me to define this here create_con_req = smbprotocol.create_contexts.SMB2CreateContextRequest self.fields = OrderedDict([ ('structure_size', IntField( size=2, default=57, )), ('security_flags', IntField(size=1)), ('requested_oplock_level', EnumField(size=1, enum_type=RequestedOplockLevel)), ('impersonation_level', EnumField(size=4, enum_type=ImpersonationLevel)), ('smb_create_flags', IntField(size=8)), ('reserved', IntField(size=8)), ('desired_access', IntField(size=4)), ('file_attributes', IntField(size=4)), ('share_access', FlagField(size=4, flag_type=ShareAccess)), ('create_disposition', EnumField(size=4, enum_type=CreateDisposition)), ('create_options', FlagField(size=4, flag_type=CreateOptions)), ( 'name_offset', IntField( size=2, default=120 # (header size 64) + (structure size 56) )), ('name_length', IntField(size=2, default=lambda s: self._name_length(s))), ('create_contexts_offset', IntField(size=4, default=lambda s: self._create_contexts_offset(s))), ('create_contexts_length', IntField(size=4, default=lambda s: len(s['buffer_contexts']))), # Technically these are all under buffer but we split it to make # things easier ('buffer_path', BytesField(size=lambda s: self._buffer_path_size(s), )), ('padding', BytesField(size=lambda s: self._padding_size(s), default=lambda s: b"\x00" * self._padding_size(s))), ('buffer_contexts', ListField( size=lambda s: s['create_contexts_length'].get_value(), list_type=StructureField(structure_type=create_con_req), unpack_func=lambda s, d: self._buffer_context_list(s, d))) ]) super(SMB2CreateRequest, self).__init__()
def __init__(self): self.fields = OrderedDict([ # 0 if no more entries, otherwise offset after ea_value ('next_entry_offset', IntField(size=4)), ('flags', FlagField( size=1, flag_type=EAFlags )), ('ea_name_length', IntField( size=1, default=lambda s: len(s['ea_name']) - 1 # minus \x00 )), ('ea_value_length', IntField( size=2, default=lambda s: len(s['ea_value']) )), # ea_name is ASCII byte encoded and needs a null terminator '\x00' ('ea_name', BytesField( size=lambda s: s['ea_name_length'].get_value() + 1 )), ('ea_value', BytesField( size=lambda s: s['ea_value_length'].get_value() )), # not actually a field but each list entry must start at the 4 byte # alignment ('padding', BytesField( size=lambda s: self._padding_size(s), default=lambda s: b"\x00" * self._padding_size(s) )) ]) super(SMB2CreateEABuffer, self).__init__()
def __init__(self): self.fields = OrderedDict([('file_id', BytesField(size=16)), ('create_guid', UuidField(size=16)), ('flags', FlagField(size=4, flag_type=DurableHandleFlags))]) super(SMB2CreateDurableHandleReconnectV2, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('rpc_vers', IntField(size=1, default=5)), ('rpc_vers_minor', IntField(size=1, default=0)), ('ptype', EnumField(size=1, enum_type=PType, default=PType.BIND)), ('pfx_flags', FlagField(size=1, flag_type=PFlags)), ('packed_drep', StructureField(size=4, structure_type=DataRepresentationFormat)), ('frag_length', IntField(size=2, default=lambda s: len(s))), ('auth_length', IntField(size=2, default=lambda s: len(s['auth_verifier']))), ('call_id', IntField(size=4)), ('max_xmit_frag', IntField(size=2, default=4280)), ('max_recv_frag', IntField(size=2, default=4280)), ('assoc_group_id', IntField(size=4)), # p_context_list_t ('n_context_elem', IntField(size=1, default=lambda s: len(s['context_elems'].get_value()))), ('reserved', IntField(size=1)), ('reserved2', IntField(size=2)), ('context_elems', ListField( list_count=lambda s: s['n_context_elem'].get_value(), list_type=StructureField(structure_type=ContextElement), unpack_func=lambda s, d: self._unpack_context_elems(s, d))), ('auth_verifier', BytesField(size=lambda s: s['auth_length'].get_value())) ]) super(BindPDU, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('max_referral_level', IntField(size=2, default=4)), ('request_flags', FlagField(size=2, flag_type=DFSReferralRequestFlags)), ('request_data_length', IntField( size=4, default=lambda s: 4 + s['request_file_name_length'].get_value( ) + s['site_name_length'].get_value(), )), ('request_file_name_length', IntField( size=2, default=lambda s: len(s['request_file_name']), )), ('request_file_name', TextField( null_terminated=True, size=lambda s: s['request_file_name_length'].get_value(), )), ('site_name_length', IntField( size=2, default=lambda s: len(s['site_name']), )), ('site_name', TextField( null_terminated=True, size=lambda s: s['site_name_length'].get_value(), )), ]) super(DFSReferralRequestEx, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('protocol_id', BytesField( size=4, default=b"\xfeSMB", )), ('structure_size', IntField( size=2, default=64, )), ('credit_charge', IntField(size=2)), ('channel_sequence', IntField(size=2)), ('reserved', IntField(size=2)), ('command', EnumField( size=2, enum_type=Commands )), ('credit_request', IntField(size=2)), ('flags', FlagField( size=4, flag_type=Smb2Flags, )), ('next_command', IntField(size=4)), ('message_id', IntField(size=8)), ('process_id', IntField(size=4)), ('tree_id', IntField(size=4)), ('session_id', IntField(size=8)), ('signature', BytesField( size=16, default=b"\x00" * 16, )), ('data', BytesField()) ]) super(SMB2HeaderRequest, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('structure_size', IntField( size=2, default=33 )), ('file_information_class', EnumField( size=1, enum_type=FileInformationClass )), ('flags', FlagField( size=1, flag_type=QueryDirectoryFlags )), ('file_index', IntField(size=4)), ('file_id', BytesField(size=16)), ('file_name_offset', IntField( size=2, default=lambda s: 0 if len(s['buffer']) == 0 else 96 )), ('file_name_length', IntField( size=2, default=lambda s: len(s['buffer']) )), ('output_buffer_length', IntField(size=4)), # UTF-16-LE encoded search pattern ('buffer', BytesField( size=lambda s: s['file_name_length'].get_value() )) ]) super(SMB2QueryDirectoryRequest, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('structure_size', IntField( size=2, default=9, )), ('session_flags', FlagField( size=2, flag_type=SessionFlags, )), ( 'security_buffer_offset', IntField( size=2, default=72, # (header size 64) + (response size 8) )), ('security_buffer_length', IntField( size=2, default=lambda s: len(s['buffer']), )), ('buffer', BytesField( size=lambda s: s['security_buffer_length'].get_value(), )) ]) super(SMB2SessionSetupResponse, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('structure_size', IntField( size=2, default=25, )), ('flags', IntField(size=1)), ('security_mode', EnumField( size=1, enum_type=SecurityMode, )), ('capabilities', FlagField( size=4, flag_type=Capabilities, )), ('channel', IntField(size=4)), ( 'security_buffer_offset', IntField( size=2, default=88, # (header size 64) + (response size 24) )), ('security_buffer_length', IntField( size=2, default=lambda s: len(s['buffer']), )), ('previous_session_id', IntField(size=8)), ('buffer', BytesField( size=lambda s: s['security_buffer_length'].get_value(), )), ]) super(SMB2SessionSetupRequest, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('next_entry_offset', IntField(size=4)), ('file_index', IntField(size=4)), ('creation_time', DateTimeField(size=8)), ('last_access_time', DateTimeField(size=8)), ('last_write_time', DateTimeField(size=8)), ('change_time', DateTimeField(size=8)), ('end_of_file', IntField(size=8)), ('allocation_size', IntField(size=8)), ('file_attributes', FlagField(size=4, flag_type=FileAttributes)), ('file_name_length', IntField(size=4, default=lambda s: len(s['file_name']))), ('ea_size', IntField(size=4)), ('short_name_length', IntField(size=1, default=lambda s: len(s['short_name']))), ('reserved1', IntField(size=1)), ('short_name', BytesField(size=lambda s: s['short_name_length'].get_value())), ('short_name_padding', BytesField(size=lambda s: 24 - len(s['short_name']), default=lambda s: b"\x00" * (24 - len(s['short_name'])))), ('reserved2', IntField(size=2)), ('file_id', IntField(size=8)), ('file_name', BytesField(size=lambda s: s['file_name_length'].get_value())) ]) super(FileIdBothDirectoryInformation, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('structure_size', IntField(size=2, default=24)), ('flags', FlagField(size=2, flag_type=CloseFlags)), ('reserved', IntField(size=4)), ('file_id', BytesField(size=16)) ]) super(SMB2CloseRequest, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('structure_size', IntField(size=2, default=16)), ('share_type', EnumField( size=1, enum_type=ShareType, )), ('reserved', IntField(size=1)), ('share_flags', FlagField( size=4, flag_type=ShareFlags, )), ('capabilities', FlagField( size=4, flag_type=ShareCapabilities, )), ('maximal_access', IntField(size=4)) ]) super(SMB2TreeConnectResponse, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('mode', FlagField( size=4, flag_type=ModeInformation, )), ]) super(FileModeInformation, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('version_number', IntField(size=2, default=2)), ('size', IntField(size=2)), ('server_type', FlagField(size=2, flag_type=DFSServerTypes)), ('referral_entry_flags', FlagField(size=2, flag_type=DFSReferralEntryFlags)), ('proximity', IntField(size=4)), ('time_to_live', IntField(size=4)), ('dfs_path_offset', IntField(size=2)), ('dfs_alternate_path_offset', IntField(size=2)), ('network_address_offset', IntField(size=2)), ]) self.dfs_path = None self.dfs_alternate_path = None self.network_address = None super(DFSReferralEntryV2, self).__init__()
def __init__(self): self.fields = OrderedDict([ # timeout in milliseconds ('timeout', IntField(size=4)), ('flags', FlagField(size=4, flag_type=DurableHandleFlags)), ('reserved', IntField(size=8)), ('create_guid', UuidField(size=16)) ]) super(SMB2CreateDurableHandleRequestV2, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('timeout', IntField(size=4)), ('flags', FlagField( size=4, flag_type=DurableHandleFlags )) ]) super(SMB2CreateDurableHandleResponseV2, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('field', FlagField(size=4, flag_type=Capabilities, default=Capabilities.SMB2_GLOBAL_CAP_LEASING | Capabilities.SMB2_GLOBAL_CAP_ENCRYPTION)), ]) super(TestFlagField.StructureTest, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('structure_size', IntField( size=2, default=32, )), ('flags', FlagField( size=2, flag_type=ChangeNotifyFlags, )), ('output_buffer_length', IntField(size=4)), ('file_id', BytesField(size=16)), ('completion_filter', FlagField( size=4, flag_type=CompletionFilter, )), ('reserved', IntField(size=4)), ]) super(SMB2ChangeNotifyRequest, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('version_number', IntField(size=2, default=1)), ('size', IntField(size=2)), ('server_type', EnumField(size=2, enum_type=DFSServerTypes)), ('referral_entry_flags', FlagField(size=2, flag_type=DFSReferralEntryFlags)), ('share_name', TextField(null_terminated=True)), ]) super(DFSReferralEntryV1, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('capabilities', FlagField( size=4, flag_type=Capabilities, )), ('guid', UuidField()), ('security_mode', EnumField(size=2, enum_type=SecurityMode, enum_strict=False)), ('dialect', EnumField(size=2, enum_type=Dialects)) ]) super(SMB2ValidateNegotiateInfoResponse, self).__init__()
def __init__(self): self.fields = OrderedDict([ # 0 if no more network interfaces ('next', IntField(size=4)), ('if_index', IntField(size=4)), ('capability', FlagField(size=4, flag_type=IfCapability)), ('reserved', IntField(size=4)), ('link_speed', IntField(size=8)), ('sock_addr_storage', StructureField(size=128, structure_type=SockAddrStorage)) ]) super(SMB2NetworkInterfaceInfo, self).__init__()
def __init__(self): self.fields = OrderedDict([ ('structure_size', IntField( size=2, default=49 )), ('padding', IntField(size=1)), ('flags', FlagField( size=1, flag_type=ReadFlags )), ('length', IntField( size=4 )), ('offset', IntField( size=8 )), ('file_id', BytesField(size=16)), ('minimum_count', IntField( size=4 )), ('channel', FlagField( size=4, flag_type=ReadWriteChannel )), ('remaining_bytes', IntField(size=4)), ('read_channel_info_offset', IntField( size=2, default=lambda s: self._get_read_channel_info_offset(s) )), ('read_channel_info_length', IntField( size=2, default=lambda s: self._get_read_channel_info_length(s) )), ('buffer', BytesField( size=lambda s: self._get_buffer_length(s), default=b"\x00" )) ]) super(SMB2ReadRequest, self).__init__()