lib/rex/registry/valuekey.rb in librex-0.0.68 vs lib/rex/registry/valuekey.rb in librex-0.0.70
- old
+ new
@@ -2,66 +2,66 @@
module Rex
module Registry
class ValueKey
- attr_accessor :name_length, :length_of_data, :data_offset, :full_path
- attr_accessor :value_type, :readable_value_type, :name, :value
+ attr_accessor :name_length, :length_of_data, :data_offset, :full_path
+ attr_accessor :value_type, :readable_value_type, :name, :value
- def initialize(hive, offset)
- offset = offset + 4
+ def initialize(hive, offset)
+ offset = offset + 4
- vk_header = hive[offset, 2]
+ vk_header = hive[offset, 2]
- if vk_header !~ /vk/
- puts "no vk at offset #{offset}"
- return
- end
+ if vk_header !~ /vk/
+ puts "no vk at offset #{offset}"
+ return
+ end
- @name_length = hive[offset+0x02, 2].unpack('c').first
- @length_of_data = hive[offset+0x04, 4].unpack('l').first
- @data_offset = hive[offset+ 0x08, 4].unpack('l').first
- @value_type = hive[offset+0x0C, 4].unpack('c').first
+ @name_length = hive[offset+0x02, 2].unpack('c').first
+ @length_of_data = hive[offset+0x04, 4].unpack('l').first
+ @data_offset = hive[offset+ 0x08, 4].unpack('l').first
+ @value_type = hive[offset+0x0C, 4].unpack('c').first
- if @value_type == 1
- @readable_value_type = "Unicode character string"
- elsif @value_type == 2
- @readable_value_type = "Unicode string with %VAR% expanding"
- elsif @value_type == 3
- @readable_value_type = "Raw binary value"
- elsif @value_type == 4
- @readable_value_type = "Dword"
- elsif @value_type == 7
- @readable_value_type = "Multiple unicode strings separated with '\\x00'"
- end
+ if @value_type == 1
+ @readable_value_type = "Unicode character string"
+ elsif @value_type == 2
+ @readable_value_type = "Unicode string with %VAR% expanding"
+ elsif @value_type == 3
+ @readable_value_type = "Raw binary value"
+ elsif @value_type == 4
+ @readable_value_type = "Dword"
+ elsif @value_type == 7
+ @readable_value_type = "Multiple unicode strings separated with '\\x00'"
+ end
- flag = hive[offset+0x10, 2].unpack('c').first
+ flag = hive[offset+0x10, 2].unpack('c').first
- if flag == 0
- @name = "Default"
- else
- @name = hive[offset+0x14, @name_length].to_s
- end
+ if flag == 0
+ @name = "Default"
+ else
+ @name = hive[offset+0x14, @name_length].to_s
+ end
- @value = ValueKeyData.new(hive, @data_offset, @length_of_data, @value_type, offset)
- end
+ @value = ValueKeyData.new(hive, @data_offset, @length_of_data, @value_type, offset)
+ end
end
class ValueKeyData
- attr_accessor :data
+ attr_accessor :data
- def initialize(hive, offset, length, datatype, parent_offset)
- offset = offset + 4
+ def initialize(hive, offset, length, datatype, parent_offset)
+ offset = offset + 4
- #If the data-size is lower than 5, the data-offset value is used to store
- #the data itself!
- if length < 5
- @data = hive[parent_offset + 0x08, 4]
- else
- @data = hive[offset + 0x1000, length]
- end
- end
+ #If the data-size is lower than 5, the data-offset value is used to store
+ #the data itself!
+ if length < 5
+ @data = hive[parent_offset + 0x08, 4]
+ else
+ @data = hive[offset + 0x1000, length]
+ end
+ end
end
end
end