Class: RubySMB::SMB1::Packet::Trans2::FindNext2Response
- Inherits:
-
GenericPacket
- Object
- BinData::Record
- GenericPacket
- RubySMB::SMB1::Packet::Trans2::FindNext2Response
- Defined in:
- lib/ruby_smb/smb1/packet/trans2/find_next2_response.rb
Overview
This class represents an SMB1 Trans2 FIND_NEXT2 Response Packet as defined in 2.2.6.3.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
52 53 54 55 56 |
# File 'lib/ruby_smb/smb1/packet/trans2/find_next2_response.rb', line 52 def initialize_instance super parameter_block.setup << RubySMB::SMB1::Packet::Trans2::Subcommands::FIND_NEXT2 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 83 84 85 86 |
# File 'lib/ruby_smb/smb1/packet/trans2/find_next2_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 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 |