Class: RubySMB::SMB1::Packet::Trans2::FindFirst2Response
- Inherits:
-
GenericPacket
- Object
- BinData::Record
- GenericPacket
- RubySMB::SMB1::Packet::Trans2::FindFirst2Response
- 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
Constant Summary collapse
- COMMAND =
RubySMB::SMB1::Commands::SMB_COM_TRANSACTION2
Instance Method Summary collapse
- #initialize_instance ⇒ Object
-
#results(klass, unicode:) ⇒ array<BinData::Record>
Returns the File Information in an array of appropriate structs for the given FileInformationClass.
Methods inherited from GenericPacket
describe, #display, fields_hashed, format_field, #packet_smb_version, read, #status_code, #valid?, walk_fields
Instance Method Details
#initialize_instance ⇒ Object
54 55 56 57 58 |
# File 'lib/ruby_smb/smb1/packet/trans2/find_first2_response.rb', line 54 def initialize_instance super 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.
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/ruby_smb/smb1/packet/trans2/find_first2_response.rb', line 67 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 begin information_classes << file_info.read(data) rescue IOError raise RubySMB::Error::InvalidPacket, "Invalid #{klass} File Information packet in the string buffer" end end information_classes end |