Files
metasploit-gs/lib/msf/core/auxiliary/wmap_module.rb
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

128 lines
2.1 KiB
Ruby
Raw Normal View History

# -*- coding: binary -*-
module Msf
###
#
# This module provides methods for WMAP-enabled modules
#
###
module Auxiliary::WmapModule
2008-10-19 20:32:14 +00:00
attr_accessor :orderid
attr_accessor :requiredids
2013-08-30 16:28:33 -05:00
#
# Initializes an instance of a WMAP module
#
def initialize(info = {})
super
self.orderid = 0xFFFFFF
self.requiredids = {}
end
2013-08-30 16:28:33 -05:00
def register_wmap_options(options)
if options.has_key?('OrderID')
self.orderid = options['OrderID']
end
2013-08-30 16:28:33 -05:00
if options.has_key?('Require')
self.requiredids = options['Require']
end
end
2013-08-30 16:28:33 -05:00
def wmap_enabled
#enabled by default
true
end
2013-08-30 16:28:33 -05:00
def wmap_getoid
2012-05-24 16:28:20 -06:00
self.orderid
end
2013-08-30 16:28:33 -05:00
def wmap_setoid(oid)
self.orderid = oid
end
2013-08-30 16:28:33 -05:00
def wmap_type
#default type
nil
end
2013-08-30 16:28:33 -05:00
def wmap_target_host
datastore['RHOST']
end
2013-08-30 16:28:33 -05:00
def wmap_target_port
datastore['RPORT']
end
2013-08-30 16:28:33 -05:00
def wmap_target_ssl
datastore['SSL']
end
2013-08-30 16:28:33 -05:00
2011-02-04 05:57:26 +00:00
def wmap_target_vhost
datastore['VHOST']
end
2013-08-30 16:28:33 -05:00
def wmap_base_url
res = (ssl ? "https://" : "http://")
if datastore['VHOST'].nil?
res << wmap_target_host
else
res << datastore['VHOST']
end
res << ":" + wmap_target_port.to_s
res
end
2013-08-30 16:28:33 -05:00
#
# Modified from CGI.rb as we dont use arrays
#
def headersparse(qheaders)
params = Hash.new()
2013-08-30 16:28:33 -05:00
2011-11-20 12:05:14 +11:00
qheaders.split(/[&;]/n).each do |pairs|
key, value = pairs.split(':',2)
if params.has_key?(key)
#Error
2011-11-20 12:05:14 +11:00
else
params[key] = value
2011-11-20 12:05:14 +11:00
end
end
params
end
2013-08-30 16:28:33 -05:00
2008-10-19 20:32:14 +00:00
#modified from CGI.rb as we dont use arrays
def queryparse(query)
params = Hash.new()
2013-08-30 16:28:33 -05:00
2011-11-20 12:05:14 +11:00
query.split(/[&;]/n).each do |pairs|
key, value = pairs.split('=',2)
if params.has_key?(key)
#Error
2011-11-20 12:05:14 +11:00
else
params[key] = value
2011-11-20 12:05:14 +11:00
end
end
params
end
2013-08-30 16:28:33 -05:00
2011-11-20 12:05:14 +11:00
# Levenshtein distance algorithm (slow, huge mem consuption)
def distance(a, b)
case
when a.empty?
2008-09-23 15:41:13 +00:00
b.length
2011-11-20 12:05:14 +11:00
when b.empty?
2008-09-23 15:41:13 +00:00
a.length
2011-11-20 12:05:14 +11:00
else
2008-09-23 15:41:13 +00:00
[(a[0] == b[0] ? 0 : 1) + distance(a[1..-1], b[1..-1]),
1 + distance(a[1..-1], b),
2 + distance(a, b[1..-1])].min
2011-11-20 12:05:14 +11:00
end
end
end
end