Class: RubySMB::SMB1::Packet::Trans2::FindFirst2Response

Inherits:
GenericPacket
  • Object
show all
Defined in:
lib/ruby_smb/smb1/packet/trans2/find_first2_response.rb

Overview

This class represents an SMB1 Trans2 FIND_FIRST2 Response Packet as defined in 2.2.6.2.2 Response

Defined Under Namespace

Classes: DataBlock, ParameterBlock, Trans2Data, Trans2Parameters

Instance Method Summary collapse

Methods inherited from GenericPacket

describe, #display, fields_hashed, format_field, #packet_smb_version, read, #status_code, walk_fields

Instance Method Details

#initialize_instance ⇒ Object



52
53
54
55
56
57
# File 'lib/ruby_smb/smb1/packet/trans2/find_first2_response.rb', line 52

def initialize_instance
  super
  smb_header.command = RubySMB::SMB1::Commands::SMB_COM_TRANSACTION2
  parameter_block.setup << RubySMB::SMB1::Packet::Trans2::Subcommands::FIND_FIRST2
  smb_header.flags.reply = 1
end

#results(klass, unicode:) ⇒ array<BinData::Record>

Returns the File Information in an array of appropriate structs for the given FileInformationClass. Pulled out of the string buffer.



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/ruby_smb/smb1/packet/trans2/find_first2_response.rb', line 65

def results(klass, unicode:)
  information_classes = []
  blob = data_block.trans2_data.buffer.to_binary_s.dup
  until blob.empty?
    length = blob[0, 4].unpack('V').first

    data = if length.zero?
             blob.slice!(0, blob.length)
           else
             blob.slice!(0, length)
           end

    file_info = klass.new
    file_info.unicode = unicode
    information_classes << file_info.read(data)
  end
  information_classes
end