class Net::NTLM::TargetInfo
Represents a list of AV_PAIR structures @see msdn.microsoft.com/en-us/library/cc236646.aspx
Constants
- MSV_AV_CHANNEL_BINDINGS
- MSV_AV_DNS_COMPUTER_NAME
- MSV_AV_DNS_DOMAIN_NAME
- MSV_AV_DNS_TREE_NAME
- MSV_AV_EOL
Allowed AvId values for an AV_PAIR
- MSV_AV_FLAGS
- MSV_AV_NB_COMPUTER_NAME
- MSV_AV_NB_DOMAIN_NAME
- MSV_AV_SINGLE_HOST
- MSV_AV_TARGET_NAME
- MSV_AV_TIMESTAMP
- VALID_PAIR_ID
Attributes
av_pairs[R]
Public Class Methods
new(av_pair_sequence)
click to toggle source
@param av_pair_sequence [String] AV_PAIR list from challenge message
# File lib/net/ntlm/target_info.rb, line 22 def initialize(av_pair_sequence) @av_pairs = read_pairs(av_pair_sequence) end
Public Instance Methods
to_s()
click to toggle source
# File lib/net/ntlm/target_info.rb, line 28 def to_s result = '' av_pairs.each do |k,v| result << k result << [v.length].pack('S') result << v end result << Net::NTLM::TargetInfo::MSV_AV_EOL result << [0].pack('S') result.force_encoding(Encoding::ASCII_8BIT) end
Private Instance Methods
read_pairs(av_pair_sequence)
click to toggle source
# File lib/net/ntlm/target_info.rb, line 56 def read_pairs(av_pair_sequence) offset = 0 result = {} return result if av_pair_sequence.nil? until offset >= av_pair_sequence.length id = av_pair_sequence[offset..offset+1] unless VALID_PAIR_ID.include?(id) raise Net::NTLM::InvalidTargetDataError.new( "Invalid AvId #{to_hex(id)} in AV_PAIR structure", av_pair_sequence ) end length = av_pair_sequence[offset+2..offset+3].unpack('S')[0].to_i if length > 0 value = av_pair_sequence[offset+4..offset+4+length-1] result[id] = value end offset += 4 + length end result end
to_hex(str)
click to toggle source
# File lib/net/ntlm/target_info.rb, line 83 def to_hex(str) return nil if str.nil? str.bytes.map {|b| '0x' + b.to_s(16).rjust(2,'0').upcase}.join('-') end