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: ParameterBlock
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, from_hex, #packet_smb_version, read, #status_code, #valid?, walk_fields
Instance Method Details
#initialize_instance ⇒ Object
53 54 55 56 57 |
# File 'lib/ruby_smb/smb1/packet/trans2/find_first2_response.rb', line 53 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.
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/ruby_smb/smb1/packet/trans2/find_first2_response.rb', line 66 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 |