Sha256: cbb48eefbdeb53a8fe21e2d3f9ecc1ad17c0527b8845766a60daf74abb09c873

Contents?: true

Size: 1.92 KB

Versions: 51

Compression:

Stored size: 1.92 KB

Contents

module RubySMB
  module SMB1
    module Packet
      # A SMB1 SMB_COM_SESSION_SETUP_ANDX Response Packet as defined in
      # [2.2.4.6.2](https://msdn.microsoft.com/en-us/library/cc246329.aspx)
      class SessionSetupResponse < RubySMB::GenericPacket
        COMMAND = RubySMB::SMB1::Commands::SMB_COM_SESSION_SETUP_ANDX

        # A SMB1 Parameter Block as defined by the {SessionSetupResponse}
        class ParameterBlock < RubySMB::SMB1::ParameterBlock
          and_x_block   :andx_block
          uint16        :action,       label: 'Action'
          uint16        :security_blob_length, label: 'Security Blob Length'
        end

        # Represents the specific layout of the DataBlock for a {SessionSetupResponse} Packet.
        class DataBlock < RubySMB::SMB1::DataBlock
          string      :security_blob,  label: 'Security Blob (GSS-API)', length: -> { parent.parameter_block.security_blob_length }
          stringz     :native_os,      label: 'Native OS'
          stringz     :native_lan_man, label: 'Native LAN Manager'
        end

        smb_header        :smb_header
        parameter_block   :parameter_block
        data_block        :data_block

        def initialize_instance
          super
          smb_header.flags.reply = 1
        end

        # Takes an NTLM Type 2 Message and creates the GSS Security Blob
        # for it and sets it in the {RubySMB::SMB1::Packet::SessionSetupRequest::DataBlock#security_blob}
        # field. It also automaticaly sets the length in
        # {RubySMB::SMB1::Packet::SessionSetupRequest::ParameterBlock#security_blob_length}
        #
        # @param type2_message [String] the serialized Type 2 NTLM message
        # @return [void]
        def set_type2_blob(type2_message)
          gss_blob = RubySMB::Gss.gss_type2(type2_message)
          data_block.security_blob = gss_blob
          parameter_block.security_blob_length = gss_blob.length
        end
      end
    end
  end
end

Version data entries

51 entries across 51 versions & 1 rubygems

Version Path
ruby_smb-3.3.13 lib/ruby_smb/smb1/packet/session_setup_response.rb
ruby_smb-3.3.12 lib/ruby_smb/smb1/packet/session_setup_response.rb
ruby_smb-3.3.11 lib/ruby_smb/smb1/packet/session_setup_response.rb
ruby_smb-3.3.10 lib/ruby_smb/smb1/packet/session_setup_response.rb
ruby_smb-3.3.9 lib/ruby_smb/smb1/packet/session_setup_response.rb
ruby_smb-3.3.7 lib/ruby_smb/smb1/packet/session_setup_response.rb
ruby_smb-3.3.6 lib/ruby_smb/smb1/packet/session_setup_response.rb
ruby_smb-3.3.5 lib/ruby_smb/smb1/packet/session_setup_response.rb
ruby_smb-3.3.4 lib/ruby_smb/smb1/packet/session_setup_response.rb
ruby_smb-3.3.3 lib/ruby_smb/smb1/packet/session_setup_response.rb
ruby_smb-3.3.2 lib/ruby_smb/smb1/packet/session_setup_response.rb
ruby_smb-3.3.1 lib/ruby_smb/smb1/packet/session_setup_response.rb
ruby_smb-3.3.0 lib/ruby_smb/smb1/packet/session_setup_response.rb
ruby_smb-3.2.8 lib/ruby_smb/smb1/packet/session_setup_response.rb
ruby_smb-3.2.7 lib/ruby_smb/smb1/packet/session_setup_response.rb
ruby_smb-3.2.6 lib/ruby_smb/smb1/packet/session_setup_response.rb
ruby_smb-3.2.5 lib/ruby_smb/smb1/packet/session_setup_response.rb
ruby_smb-3.2.4 lib/ruby_smb/smb1/packet/session_setup_response.rb
ruby_smb-3.2.3 lib/ruby_smb/smb1/packet/session_setup_response.rb
ruby_smb-3.2.2 lib/ruby_smb/smb1/packet/session_setup_response.rb