Class: PacketGen::Plugin::SMB2::SessionSetup::Response

Inherits:
Base
  • Object
show all
Defined in:
lib/packetgen/plugin/smb2/session_setup/response.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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | BufferOffset | BufferLength | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Buffer (variable) |

  •                                                           +
    

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

Author:

  • Sylvain Daubert

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:



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

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

#buffer_length ⇒ Integer

The length of the #buffer field.

Returns:

  • (Integer)


49
# File 'lib/packetgen/plugin/smb2/session_setup/response.rb', line 49

define_attr :buffer_length, BinStruct::Int16le

#buffer_offset ⇒ Integer

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

Returns:

  • (Integer)


45
# File 'lib/packetgen/plugin/smb2/session_setup/response.rb', line 45

define_attr :buffer_offset, BinStruct::Int16le, default: SMB2::HEADER_SIZE + 8

#flags ⇒ Integer

16-bit session flags

Returns:

  • (Integer)


41
# File 'lib/packetgen/plugin/smb2/session_setup/response.rb', line 41

define_bit_attr :flags, endian: :little, flags_rsv: 13, flags_encrypt_data: 1, lags_is_null: 1, flags_is_guest: 1

#flags_encrypt_data? ⇒ Boolean

Returns:

  • (Boolean)


41
# File 'lib/packetgen/plugin/smb2/session_setup/response.rb', line 41

define_bit_attr :flags, endian: :little, flags_rsv: 13, flags_encrypt_data: 1, lags_is_null: 1, flags_is_guest: 1

#flags_is_guest? ⇒ Boolean

Returns:

  • (Boolean)


41
# File 'lib/packetgen/plugin/smb2/session_setup/response.rb', line 41

define_bit_attr :flags, endian: :little, flags_rsv: 13, flags_encrypt_data: 1, lags_is_null: 1, flags_is_guest: 1

#flags_is_null? ⇒ Boolean

Returns:

  • (Boolean)


41
# File 'lib/packetgen/plugin/smb2/session_setup/response.rb', line 41

define_bit_attr :flags, endian: :little, flags_rsv: 13, flags_encrypt_data: 1, lags_is_null: 1, flags_is_guest: 1

#flags_rsv ⇒ Integer

13-bit reserved field

Returns:

  • (Integer)


41
# File 'lib/packetgen/plugin/smb2/session_setup/response.rb', line 41

define_bit_attr :flags, endian: :little, flags_rsv: 13, flags_encrypt_data: 1, lags_is_null: 1, flags_is_guest: 1

#structure_size ⇒ Integer

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

Returns:

  • (Integer)


28
# File 'lib/packetgen/plugin/smb2/session_setup/response.rb', line 28

define_attr :structure_size, BinStruct::Int16le, default: 9

Class Method Details

.protocol_name ⇒ String

Protocol name

Returns:

  • (String)


67
68
69
# File 'lib/packetgen/plugin/smb2/session_setup/response.rb', line 67

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

Instance Method Details

#calc_length ⇒ void

This method returns an undefined value.

Calculate and set #buffer_length and #buffer_offset fields.



56
57
58
59
60
61
62
63
# File 'lib/packetgen/plugin/smb2/session_setup/response.rb', line 56

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