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:



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

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

#buffer_lengthInteger

The length of the #buffer field.

Returns:

  • (Integer)


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

define_field :buffer_length, PacketGen::Types::Int16le

#buffer_offsetInteger

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

Returns:

  • (Integer)


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

define_field :buffer_offset, PacketGen::Types::Int16le, default: SMB2::HEADER_SIZE + 6 * 4

#cap_dfsBoolean

Indicates if Distributed File system (DFS) is supported

Returns:

  • (Boolean)


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

define_bit_fields_on :capabilities, :cap_rsv, 31, :cap_dfs

#cap_rsvBoolean

31-bit reserved field

Returns:

  • (Boolean)


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

define_bit_fields_on :capabilities, :cap_rsv, 31, :cap_dfs

#capabilitiesInteger

32-bit capabilities field.

Returns:

  • (Integer)


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

define_field :capabilities, PacketGen::Types::Int32le

#channelInteger

32-bit reserved field

Returns:

  • (Integer)


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

define_field :channel, PacketGen::Types::Int32le

#flagsInteger

8-bit flags for SMB 3 dialect.

Returns:

  • (Integer)


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

define_field :flags, PacketGen::Types::Int8

#flags_binding?Boolean

Returns:

  • (Boolean)


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

define_bit_fields_on :flags, :flags_rsv, 7, :flags_binding

#flags_rsvInteger

Returns:

  • (Integer)


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

define_bit_fields_on :flags, :flags_rsv, 7, :flags_binding

#prev_session_idInteger

64-bit previously established session id

Returns:

  • (Integer)


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

define_field :prev_session_id, PacketGen::Types::Int64le

#security_modeInteger

16-bit security mode field.

Returns:

  • (Integer)


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

define_field :security_mode, PacketGen::Types::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_field :structure_size, PacketGen::Types::Int16le, default: 25

Class Method Details

.protocol_nameString

Protocol name

Returns:

  • (String)


97
98
99
# File 'lib/packetgen/plugin/smb2/session_setup/request.rb', line 97

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.



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

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