84 lines
1.9 KiB
Ruby
Executable File
84 lines
1.9 KiB
Ruby
Executable File
#!/usr/bin/env ruby
|
|
|
|
##
|
|
# This module requires Metasploit: https://metasploit.com/download
|
|
# Current source: https://github.com/rapid7/metasploit-framework
|
|
##
|
|
|
|
# This script lists each payload module along with its length
|
|
# NOTE: No encoding or BadChar handling is performed
|
|
#
|
|
|
|
msfbase = __FILE__
|
|
while File.symlink?(msfbase)
|
|
msfbase = File.expand_path(File.readlink(msfbase), File.dirname(msfbase))
|
|
end
|
|
|
|
$:.unshift(File.expand_path(File.join(File.dirname(msfbase), '..', '..', 'lib')))
|
|
require 'msfenv'
|
|
|
|
$:.unshift(ENV['MSF_LOCAL_LIB']) if ENV['MSF_LOCAL_LIB']
|
|
|
|
require 'rex'
|
|
require 'msf/ui'
|
|
require 'msf/base'
|
|
|
|
Indent = ' '
|
|
|
|
# Initialize the simplified framework instance.
|
|
$framework = Msf::Simple::Framework.create(
|
|
:module_types => [ Msf::MODULE_PAYLOAD ],
|
|
'DisableDatabase' => true
|
|
)
|
|
|
|
# Process special var/val pairs...
|
|
Msf::Ui::Common.process_cli_arguments($framework, ARGV)
|
|
|
|
options = ARGV.join(',')
|
|
|
|
tbl = Rex::Text::Table.new(
|
|
'Header' => 'Payload Lengths',
|
|
'Indent' => Indent.length,
|
|
'Columns' => [ 'Payload', 'Length' ]
|
|
)
|
|
|
|
enc = nil
|
|
|
|
$framework.payloads.each_module { |payload_name, mod|
|
|
|
|
len = 'Error: Unknown error!'
|
|
|
|
begin
|
|
# Create the payload instance
|
|
payload = mod.new
|
|
raise "Invalid payload" if not payload
|
|
|
|
# Set the variables from the cmd line
|
|
payload.datastore.import_options_from_s(options)
|
|
|
|
# Skip non-specified architectures
|
|
if (ds_arch = payload.datastore['ARCH'])
|
|
next if not payload.arch?(ds_arch)
|
|
end
|
|
|
|
# Skip non-specified platforms
|
|
if (ds_plat = payload.datastore['PLATFORM'])
|
|
ds_plat = Msf::Module::PlatformList.transform(ds_plat)
|
|
next if not payload.platform.supports?(ds_plat)
|
|
end
|
|
|
|
len = payload.size
|
|
if len > 0
|
|
len = len.to_s
|
|
else
|
|
len = "Error: Empty payload"
|
|
end
|
|
rescue
|
|
len = "Error: #{$!}"
|
|
end
|
|
|
|
tbl << [ payload_name, len ]
|
|
}
|
|
|
|
puts tbl.to_s
|