##
# $Id: browser_autopwn.rb 7876 2009-12-15 07:21:17Z egypt $
##

##
# This file is part of the Metasploit Framework and may be subject to 
# redistribution and commercial restrictions. Please see the Metasploit
# Framework web site for more information on licensing and terms of use.
# http://metasploit.com/projects/Framework/
##

require 'msf/core/auxiliary'

module Msf
module Exploit::Remote::BrowserAutopwn

	include Msf::Auxiliary::Report

	# this is the magic
	def self.included(base)
		base.extend(AutopwnClassMethods)
	end

	module AutopwnClassMethods
		def self.extended(base)
			if base.const_defined? "Rank"
				@@autopwn_rank = base.const_get("Rank")
			else
				@@autopwn_rank = RankingName.invert['manual']
			end
		end

		def autopwn_opts
			@autopwn_opts.dup
		end

		def autopwn_info(opts={})
			# prefix_html and postfix_html are only used for noscript exploits
			# vuln_test is only used for javascript exploits
			@autopwn_opts = {}
			@autopwn_opts[:ua_name]      = opts[:ua_name] || nil
			@autopwn_opts[:ua_minver]    = opts[:ua_minver]  || opts[:ua_minversion] || nil
			@autopwn_opts[:ua_maxver]    = opts[:ua_maxver]  || opts[:ua_maxversion] || nil
			@autopwn_opts[:ua_ver]       = opts[:ua_ver]  || opts[:ua_version] || nil
			@autopwn_opts[:classid]      = opts[:classid] || opts[:clsid] || nil
			@autopwn_opts[:javascript]   = (opts[:javascript].nil?) ? true : opts[:javascript]
			@autopwn_opts[:os_name]      = opts[:os_name] || nil
			@autopwn_opts[:os_ver]       = opts[:os_ver]  || opts[:os_version] || nil
			@autopwn_opts[:postfix_html] = opts[:postfix_html] || nil
			@autopwn_opts[:prefix_html]  = opts[:prefix_html]  || nil
			@autopwn_opts[:vuln_test]    = opts[:vuln_test] || opts[:vulntest] || ""

			@autopwn_opts[:rank]         = opts[:rank] || @@autopwn_rank
		end
	end

end
end

