See #624. Adds the module ranking to all text-base displays, this may be enough to close the ticket

git-svn-id: file:///home/svn/framework3/trunk@7725 4d416f70-5f16-0410-b530-b9f4589650da
unstable
HD Moore 2009-12-06 14:35:16 +00:00
parent ff83f1cd2f
commit 8df719e7a8
2 changed files with 48 additions and 23 deletions

View File

@ -43,12 +43,12 @@ class ReadableText
'Header' => h,
'Columns' =>
[
'Id',
'Id',
'Name',
])
mod.targets.each_with_index { |target, idx|
tbl << [ idx.to_s, target.name || 'All' ]
tbl << [ idx.to_s, target.name || 'All' ]
}
tbl.to_s + "\n"
@ -63,7 +63,7 @@ class ReadableText
'Header' => h,
'Columns' =>
[
'Id',
'Id',
'Name',
])
@ -71,7 +71,7 @@ class ReadableText
tbl.to_s + "\n"
end
#
# Dumps an auxiliary's actions
#
@ -86,12 +86,12 @@ class ReadableText
])
mod.actions.each_with_index { |target, idx|
tbl << [ target.name || 'All' , target.description || '' ]
tbl << [ target.name || 'All' , target.description || '' ]
}
tbl.to_s + "\n"
end
#
# Dumps the table of payloads that are compatible with the supplied
# exploit.
@ -102,7 +102,7 @@ class ReadableText
'Header' => h,
'Columns' =>
[
'Name',
'Name',
'Description',
])
@ -123,6 +123,7 @@ class ReadableText
output << " Platform: #{mod.platform_to_s}\n"
output << " Privileged: " + (mod.privileged? ? "Yes" : "No") + "\n"
output << " License: #{mod.license}\n"
output << " Rank: #{mod.rank_to_s.capitalize}\n"
output << "\n"
# Authors
@ -135,14 +136,14 @@ class ReadableText
# Targets
output << "Available targets:\n"
output << dump_exploit_targets(mod, indent)
# Options
if (mod.options.has_options?)
output << "Basic options:\n"
output << dump_options(mod, indent)
output << "\n"
end
# Payload information
if (mod.payload_info.length)
output << "Payload information:\n"
@ -154,7 +155,7 @@ class ReadableText
end
output << "\n"
end
# Description
output << "Description:\n"
output << word_wrap(Rex::Text.compress(mod.description))
@ -168,7 +169,7 @@ class ReadableText
}
output << "\n"
end
return output
end
@ -181,6 +182,7 @@ class ReadableText
output << " Name: #{mod.name}\n"
output << " Version: #{mod.version}\n"
output << " License: #{mod.license}\n"
output << " Rank: #{mod.rank_to_s.capitalize}\n"
output << "\n"
# Authors
@ -196,7 +198,7 @@ class ReadableText
output << dump_options(mod, indent)
output << "\n"
end
# Description
output << "Description:\n"
output << word_wrap(Rex::Text.compress(mod.description))
@ -210,11 +212,11 @@ class ReadableText
}
output << "\n"
end
return output
end
#
#
# Dumps information about a payload module.
#
def self.dump_payload_module(mod, indent = '')
@ -226,6 +228,7 @@ class ReadableText
output << " Arch: #{mod.arch_to_s}\n"
output << "Needs Admin: " + (mod.privileged? ? "Yes" : "No") + "\n"
output << " Total size: #{mod.size}\n"
output << " Rank: #{mod.rank_to_s.capitalize}\n"
output << "\n"
# Authors
@ -246,7 +249,7 @@ class ReadableText
output << "Description:\n"
output << word_wrap(Rex::Text.compress(mod.description))
output << "\n\n"
return output
end
@ -260,6 +263,7 @@ class ReadableText
output << " Version: #{mod.version}\n"
output << " Platform: #{mod.platform_to_s}\n"
output << " Arch: #{mod.arch_to_s}\n"
output << " Rank: #{mod.rank_to_s.capitalize}\n"
output << "\n"
# Authors
@ -268,12 +272,12 @@ class ReadableText
output << indent + author.to_s + "\n"
}
output << "\n"
# Description
output << "Description:\n"
output << word_wrap(Rex::Text.compress(mod.description))
output << "\n\n"
return output
end
@ -290,7 +294,7 @@ class ReadableText
'Indent' => indent.length,
'Columns' =>
[
'Name',
'Name',
'Current Setting',
'Required',
'Description'
@ -301,7 +305,7 @@ class ReadableText
next if (opt.advanced?)
next if (opt.evasion?)
val = mod.datastore[name] || opt.default.to_s
tbl << [ name, val.to_s, opt.required? ? "yes" : "no", opt.desc ]
@ -347,7 +351,7 @@ class ReadableText
next if (!opt.evasion?)
val = mod.datastore[name] || opt.default || ''
desc = word_wrap(opt.desc, indent.length + 3)
desc = desc.slice(indent.length + 3, desc.length)
@ -358,7 +362,7 @@ class ReadableText
return output
end
#
# Dumps the contents of a datastore.
#
@ -368,7 +372,7 @@ class ReadableText
'Header' => name,
'Columns' =>
[
'Name',
'Name',
'Value'
])
@ -383,7 +387,7 @@ class ReadableText
# Dumps the list of active sessions.
#
def self.dump_sessions(framework, verbose = false, indent = DefaultIndent, col = DefaultColumnWrap)
columns =
columns =
[
'Id',
'Description',
@ -458,3 +462,4 @@ class ReadableText
end
end end

View File

@ -54,6 +54,12 @@ class Module
RankingName[rank]
end
#
# Returns this module's ranking as a string for display.
#
def rank_to_h
rank_to_s.gsub('Rank', '').downcase
end
#
# The module's name that is assigned it it by the framework
# or derived from the path that the module is loaded from.
@ -195,6 +201,20 @@ class Module
return self.class.rank
end
#
# Returns the module's rank in string format.
#
def rank_to_s
return self.class.rank_to_s
end
#
# Returns the module's rank in display format.
#
def rank_to_h
return self.class.rank_to_h
end
#
# Returns the module's framework short name. This is a
# possibly conflicting name used for things like console