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