Class: PacketGen::Plugin::SMB2::SessionSetup::Request

Inherits:
Base
  • Object
show all
Defined in:
lib/packetgen/plugin/smb2/session_setup/request.rb

Overview

SMB2 SessionSetup request structure 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | StructureSize | Flags | SecurityMode | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Capabilities | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Channel | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | BufferOffset | BufferLength | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | PreviousSessionId |

  •                                                           +
    
    | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Buffer (variable) |

  •                                                           +
    

| ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Author:

  • Sylvain Daubert

Constant Summary collapse

SECURITY_MODES =

Security modes

Negotiate::Request::SECURITY_MODES

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

define_smb2_pad_field

Instance Attribute Details

#buffer ⇒ GSSAPI

Returns:



80
# File 'lib/packetgen/plugin/smb2/session_setup/request.rb', line 80

define_attr :buffer, GSSAPI, token: :response, optional: ->(h) { h.buffer_offset.positive? }

#buffer_length ⇒ Integer

The length of the #buffer field.

Returns:

  • (Integer)


73
# File 'lib/packetgen/plugin/smb2/session_setup/request.rb', line 73

define_attr :buffer_length, BinStruct::Int16le

#buffer_offset ⇒ Integer

The offset, from the beginning of the SMB2 header of the #buffer.

Returns:

  • (Integer)


69
# File 'lib/packetgen/plugin/smb2/session_setup/request.rb', line 69

define_attr :buffer_offset, BinStruct::Int16le, default: SMB2::HEADER_SIZE + (6 * 4)

#cap_dfs ⇒ Boolean

Indicates if Distributed File system (DFS) is supported

Returns:

  • (Boolean)


61
# File 'lib/packetgen/plugin/smb2/session_setup/request.rb', line 61

define_bit_attr :capabilities, endian: :little, cap_rsv: 31, cap_dfs: 1

#cap_rsv ⇒ Boolean

31-bit reserved field

Returns:

  • (Boolean)


61
# File 'lib/packetgen/plugin/smb2/session_setup/request.rb', line 61

define_bit_attr :capabilities, endian: :little, cap_rsv: 31, cap_dfs: 1

#capabilities ⇒ Integer

32-bit capabilities field.

Returns:

  • (Integer)


61
# File 'lib/packetgen/plugin/smb2/session_setup/request.rb', line 61

define_bit_attr :capabilities, endian: :little, cap_rsv: 31, cap_dfs: 1

#channel ⇒ Integer

32-bit reserved field

Returns:

  • (Integer)


65
# File 'lib/packetgen/plugin/smb2/session_setup/request.rb', line 65

define_attr :channel, BinStruct::Int32le

#flags ⇒ Integer

8-bit flags for SMB 3 dialect.

Returns:

  • (Integer)


47
# File 'lib/packetgen/plugin/smb2/session_setup/request.rb', line 47

define_bit_attr :flags, flags_rsv: 7, flags_binding: 1

#flags_binding? ⇒ Boolean

Returns:

  • (Boolean)


47
# File 'lib/packetgen/plugin/smb2/session_setup/request.rb', line 47

define_bit_attr :flags, flags_rsv: 7, flags_binding: 1

#flags_rsv ⇒ Integer

Returns:

  • (Integer)


47
# File 'lib/packetgen/plugin/smb2/session_setup/request.rb', line 47

define_bit_attr :flags, flags_rsv: 7, flags_binding: 1

#prev_session_id ⇒ Integer

64-bit previously established session id

Returns:

  • (Integer)


77
# File 'lib/packetgen/plugin/smb2/session_setup/request.rb', line 77

define_attr :prev_session_id, BinStruct::Int64le

#security_mode ⇒ Integer

16-bit security mode field.

Returns:

  • (Integer)


51
# File 'lib/packetgen/plugin/smb2/session_setup/request.rb', line 51

define_attr :security_mode, BinStruct::Int8Enum, enum: SECURITY_MODES

#structure_size ⇒ Integer

16-bit session setup request structure size. Should be 25.

Returns:

  • (Integer)


39
# File 'lib/packetgen/plugin/smb2/session_setup/request.rb', line 39

define_attr :structure_size, BinStruct::Int16le, default: 25

Class Method Details

.protocol_name ⇒ String

Protocol name

Returns:

  • (String)


95
96
97
# File 'lib/packetgen/plugin/smb2/session_setup/request.rb', line 95

def self.protocol_name
  'SMB2::SessionSetup::Request'
end

Instance Method Details

#calc_length ⇒ void

This method returns an undefined value.

Calculate and set #buffer_length and #buffer_offset fields.



84
85
86
87
88
89
90
91
# File 'lib/packetgen/plugin/smb2/session_setup/request.rb', line 84

def calc_length
  self.buffer_length = self[:buffer].sz
  self.buffer_offset = if self.buffer_length.zero?
                         0
                       else
                         SMB2.new.sz + offset_of(:buffer)
                       end
end