add #to_s to ntds account
added to_s method to the NTDS account for easy output MSP-12357bug/bundler_fix
parent
acb833bd09
commit
2bbae6b9c2
|
@ -91,8 +91,8 @@ module Metasploit
|
||||||
@logon_count = get_int(data)
|
@logon_count = get_int(data)
|
||||||
@nt_history_count = get_int(data)
|
@nt_history_count = get_int(data)
|
||||||
@lm_history_count = get_int(data)
|
@lm_history_count = get_int(data)
|
||||||
@expiry_data = get_string(data,30)
|
@expiry_date = get_string(data,30)
|
||||||
@logon_data = get_string(data,30)
|
@logon_date = get_string(data,30)
|
||||||
@logon_time = get_string(data,30)
|
@logon_time = get_string(data,30)
|
||||||
@pass_date = get_string(data,30)
|
@pass_date = get_string(data,30)
|
||||||
@pass_time = get_string(data,30)
|
@pass_time = get_string(data,30)
|
||||||
|
@ -103,6 +103,35 @@ module Metasploit
|
||||||
@sid = data
|
@sid = data
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# @return [String] String representation of the account data
|
||||||
|
def to_s
|
||||||
|
<<EOS
|
||||||
|
#{@name} (#{@description})
|
||||||
|
#{ntlm_hash}
|
||||||
|
Password Expires: #{@expiry_date}
|
||||||
|
Last Password Change: #{@pass_time} #{@pass_date}
|
||||||
|
Last Logon: #{@logon_time} #{@logon_date}
|
||||||
|
Logon Count: #{@logon_count}
|
||||||
|
#{uac_string}
|
||||||
|
Hash History:
|
||||||
|
#{hash_history}
|
||||||
|
EOS
|
||||||
|
end
|
||||||
|
|
||||||
|
# @return [String] the NTLM hash string for the current password
|
||||||
|
def ntlm_hash
|
||||||
|
"#{@name}:#{@rid}:#{@lm_hash}:#{@nt_hash}"
|
||||||
|
end
|
||||||
|
|
||||||
|
# @return [String] Each historical NTLM Hash on a new line
|
||||||
|
def hash_history
|
||||||
|
history_string = ''
|
||||||
|
@lm_history.each_with_index do | lm_hash, index|
|
||||||
|
history_string << "#{@name}:#{@rid}:#{lm_hash}:#{@nt_history[index]}\n"
|
||||||
|
end
|
||||||
|
history_string
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def get_boolean(data)
|
def get_boolean(data)
|
||||||
|
@ -123,6 +152,26 @@ module Metasploit
|
||||||
def get_string(data,length)
|
def get_string(data,length)
|
||||||
data.slice!(0,length).gsub(/\x00/,'')
|
data.slice!(0,length).gsub(/\x00/,'')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def uac_string
|
||||||
|
status_string = ''
|
||||||
|
if @disabled
|
||||||
|
status_string << " - Account Disabled\n"
|
||||||
|
end
|
||||||
|
if @expired
|
||||||
|
status_string << " - Password Expired\n"
|
||||||
|
end
|
||||||
|
if @locked
|
||||||
|
status_string << " - Account Locked Out\n"
|
||||||
|
end
|
||||||
|
if @no_expire
|
||||||
|
status_string << " - Password Never Expires\n"
|
||||||
|
end
|
||||||
|
if @no_pass
|
||||||
|
status_string << " - No Password Required\n"
|
||||||
|
end
|
||||||
|
status_string
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue