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

#bufferGSSAPI

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_lengthInteger

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_offsetInteger

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_dfsBoolean

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_rsvBoolean

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

#capabilitiesInteger

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

#channelInteger

32-bit reserved field

Returns:

  • (Integer)


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

define_attr :channel, BinStruct::Int32le

#flagsInteger

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_rsvInteger

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_idInteger

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_modeInteger

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_sizeInteger

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_nameString

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_lengthvoid

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