Files
metasploit-gs/api/Msf/Exploit.html
T
jenkins-metasploit c3f5bd3de2 Reboot gh-pages
2026-05-08 17:08:43 +00:00

7857 lines
330 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
Class: Msf::Exploit
&mdash; Documentation by YARD 0.9.37
</title>
<link rel="stylesheet" href="../css/style.css" type="text/css" />
<link rel="stylesheet" href="../css/common.css" type="text/css" />
<script type="text/javascript">
pathId = "Msf::Exploit";
relpath = '../';
</script>
<script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
</head>
<body>
<div class="nav_wrap">
<iframe id="nav" src="../class_list.html?1"></iframe>
<div id="resizer"></div>
</div>
<div id="main" tabindex="-1">
<div id="header">
<div id="menu">
<a href="../_index.html">Index (E)</a> &raquo;
<span class='title'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span>
&raquo;
<span class="title">Exploit</span>
</div>
<div id="search">
<a class="full_list_link" id="class_list_link"
href="../class_list.html">
<svg width="24" height="24">
<rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
<rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
<rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
</svg>
</a>
</div>
<div class="clear"></div>
</div>
<div id="content"><h1>Class: Msf::Exploit
</h1>
<div class="box_info">
<dl>
<dt>Inherits:</dt>
<dd>
<span class="inheritName"><span class='object_link'><a href="Module.html" title="Msf::Module (class)">Module</a></span></span>
<ul class="fullTree">
<li>Object</li>
<li class="next"><span class='object_link'><a href="Module.html" title="Msf::Module (class)">Module</a></span></li>
<li class="next">Msf::Exploit</li>
</ul>
<a href="#" class="inheritanceTree">show all</a>
</dd>
</dl>
<dl>
<dt>Defined in:</dt>
<dd>lib/msf/core/exploit.rb<span class="defines">,<br />
lib/msf/core/exploit/capture.rb,<br /> lib/msf/core/exploit/remote/unirpc.rb,<br /> lib/msf/core/exploit/remote/http/nifi.rb,<br /> lib/msf/core/exploit/remote/http/sccm.rb,<br /> lib/msf/core/exploit/format/webarchive.rb,<br /> lib/msf/core/exploit/remote/http/gitea.rb,<br /> lib/msf/core/exploit/remote/http/jboss.rb,<br /> lib/msf/core/exploit/remote/http/typo3.rb,<br /> lib/msf/core/exploit/remote/http/gitlab.rb,<br /> lib/msf/core/exploit/remote/http/joomla.rb,<br /> lib/msf/core/exploit/remote/http/moodle.rb,<br /> lib/msf/core/exploit/remote/http/pihole.rb,<br /> lib/msf/core/exploit/remote/http/splunk.rb,<br /> lib/msf/core/exploit/remote/http/webmin.rb,<br /> lib/msf/core/exploit/remote/http/flowise.rb,<br /> lib/msf/core/exploit/remote/http/freepbx.rb,<br /> lib/msf/core/exploit/remote/http/jenkins.rb,<br /> lib/msf/core/exploit/remote/http/pretalx.rb,<br /> lib/msf/core/exploit/remote/http/exchange.rb,<br /> lib/msf/core/exploit/remote/java/rmi/util.rb,<br /> lib/msf/core/exploit/remote/http/nagios_xi.rb,<br /> lib/msf/core/exploit/remote/http/wordpress.rb,<br /> lib/msf/core/exploit/remote/http/sharepoint.rb,<br /> lib/msf/core/exploit/remote/java/rmi/client.rb,<br /> lib/msf/core/exploit/remote/kerberos/client.rb,<br /> lib/msf/core/exploit/remote/kerberos/ticket.rb,<br /> lib/msf/core/exploit/remote/http/apache_solr.rb,<br /> lib/msf/core/exploit/remote/http/beyondtrust.rb,<br /> lib/msf/core/exploit/remote/http/http_cookie.rb,<br /> lib/msf/core/exploit/remote/http/sitecore_xp.rb,<br /> lib/msf/core/exploit/remote/http/smartermail.rb,<br /> lib/msf/core/exploit/remote/java/rmi/builder.rb,<br /> lib/msf/core/exploit/remote/http/complete_pbx.rb,<br /> lib/msf/core/exploit/remote/http/flask_unsign.rb,<br /> lib/msf/core/exploit/remote/http/web_enrollment.rb,<br /> lib/msf/core/exploit/remote/java/rmi/client/jmx.rb,<br /> lib/msf/core/exploit/remote/kerberos/client/pac.rb,<br /> lib/msf/core/exploit/remote/http/http_cookie_jar.rb,<br /> lib/msf/core/exploit/remote/kerberos/client/base.rb,<br /> lib/msf/core/exploit/remote/http/kubernetes/error.rb,<br /> lib/msf/core/exploit/remote/http/php_filter_chain.rb,<br /> lib/msf/core/exploit/remote/http/kubernetes/client.rb,<br /> lib/msf/core/exploit/remote/kerberos/client/pkinit.rb,<br /> lib/msf/core/exploit/remote/java/rmi/client/registry.rb,<br /> lib/msf/core/exploit/format/rar_symlink_path_traversal.rb,<br /> lib/msf/core/exploit/remote/java/rmi/client/jmx/server.rb,<br /> lib/msf/core/exploit/remote/kerberos/client/ap_request.rb,<br /> lib/msf/core/exploit/remote/kerberos/client/as_request.rb,<br /> lib/msf/core/exploit/remote/kerberos/client/as_response.rb,<br /> lib/msf/core/exploit/remote/kerberos/client/tgs_request.rb,<br /> lib/msf/core/exploit/remote/kerberos/client/tgs_response.rb,<br /> lib/msf/core/exploit/remote/java/rmi/client/jmx/connection.rb,<br /> lib/msf/core/exploit/remote/http/manage_engine_adaudit_plus.rb,<br /> lib/msf/core/exploit/remote/java/rmi/client/registry/parser.rb,<br /> lib/msf/core/exploit/remote/java/rmi/client/registry/builder.rb,<br /> lib/msf/core/exploit/remote/java/rmi/client/jmx/server/parser.rb,<br /> lib/msf/core/exploit/remote/java/rmi/client/jmx/server/builder.rb,<br /> lib/msf/core/exploit/remote/java/rmi/client/jmx/connection/builder.rb</span>
</dd>
</dl>
</div>
<h2>Overview</h2><div class="docstring">
<div class="discussion">
<p>This module provides methods for sending and receiving raw packets. It should be preferred over the soon-to-be deprecated Rex::Socket::Ip and Msf::Exploit::Remote::Ip mixins.</p>
<p>Please see the pcaprub documentation for more information on how to use capture objects.</p>
</div>
</div>
<div class="tags">
</div><div id="subclasses">
<h2>Direct Known Subclasses</h2>
<p class="children"><span class='object_link'><a href="Exploit/Local.html" title="Msf::Exploit::Local (class)">Local</a></span>, <span class='object_link'><a href="Exploit/Remote.html" title="Msf::Exploit::Remote (class)">Remote</a></span></p>
</div>
<h2>Defined Under Namespace</h2>
<p class="children">
<strong class="modules">Modules:</strong> <span class='object_link'><a href="Exploit/Android.html" title="Msf::Exploit::Android (module)">Android</a></span>, <span class='object_link'><a href="Exploit/AutoTarget.html" title="Msf::Exploit::AutoTarget (module)">AutoTarget</a></span>, <span class='object_link'><a href="Exploit/Brute.html" title="Msf::Exploit::Brute (module)">Brute</a></span>, <span class='object_link'><a href="Exploit/BruteTargets.html" title="Msf::Exploit::BruteTargets (module)">BruteTargets</a></span>, <span class='object_link'><a href="Exploit/Cacti.html" title="Msf::Exploit::Cacti (module)">Cacti</a></span>, <span class='object_link'><a href="Exploit/Capture.html" title="Msf::Exploit::Capture (module)">Capture</a></span>, <span class='object_link'><a href="Exploit/CmdStager.html" title="Msf::Exploit::CmdStager (module)">CmdStager</a></span>, <span class='object_link'><a href="Exploit/CompatDefaults.html" title="Msf::Exploit::CompatDefaults (module)">CompatDefaults</a></span>, <span class='object_link'><a href="Exploit/DECT_COA.html" title="Msf::Exploit::DECT_COA (module)">DECT_COA</a></span>, <span class='object_link'><a href="Exploit/DHCPServer.html" title="Msf::Exploit::DHCPServer (module)">DHCPServer</a></span>, <span class='object_link'><a href="Exploit/EXE.html" title="Msf::Exploit::EXE (module)">EXE</a></span>, <span class='object_link'><a href="Exploit/Egghunter.html" title="Msf::Exploit::Egghunter (module)">Egghunter</a></span>, <span class='object_link'><a href="Exploit/FILEFORMAT.html" title="Msf::Exploit::FILEFORMAT (module)">FILEFORMAT</a></span>, <span class='object_link'><a href="Exploit/FileDropper.html" title="Msf::Exploit::FileDropper (module)">FileDropper</a></span>, <span class='object_link'><a href="Exploit/Format.html" title="Msf::Exploit::Format (module)">Format</a></span>, <span class='object_link'><a href="Exploit/FormatString.html" title="Msf::Exploit::FormatString (module)">FormatString</a></span>, <span class='object_link'><a href="Exploit/Git.html" title="Msf::Exploit::Git (module)">Git</a></span>, <span class='object_link'><a href="Exploit/HTTP.html" title="Msf::Exploit::HTTP (module)">HTTP</a></span>, <span class='object_link'><a href="Exploit/JSObfu.html" title="Msf::Exploit::JSObfu (module)">JSObfu</a></span>, <span class='object_link'><a href="Exploit/Java.html" title="Msf::Exploit::Java (module)">Java</a></span>, <span class='object_link'><a href="Exploit/JavaDeserialization.html" title="Msf::Exploit::JavaDeserialization (module)">JavaDeserialization</a></span>, <span class='object_link'><a href="Exploit/KernelMode.html" title="Msf::Exploit::KernelMode (module)">KernelMode</a></span>, <span class='object_link'><a href="Exploit/LaravelCryptoKiller.html" title="Msf::Exploit::LaravelCryptoKiller (module)">LaravelCryptoKiller</a></span>, <span class='object_link'><a href="Exploit/NTLM.html" title="Msf::Exploit::NTLM (module)">NTLM</a></span>, <span class='object_link'><a href="Exploit/ORACLE.html" title="Msf::Exploit::ORACLE (module)">ORACLE</a></span>, <span class='object_link'><a href="Exploit/Omelet.html" title="Msf::Exploit::Omelet (module)">Omelet</a></span>, <span class='object_link'><a href="Exploit/PDF.html" title="Msf::Exploit::PDF (module)">PDF</a></span>, <span class='object_link'><a href="Exploit/PDF_Parse.html" title="Msf::Exploit::PDF_Parse (module)">PDF_Parse</a></span>, <span class='object_link'><a href="Exploit/PgAdmin.html" title="Msf::Exploit::PgAdmin (module)">PgAdmin</a></span>, <span class='object_link'><a href="Exploit/PhpEXE.html" title="Msf::Exploit::PhpEXE (module)">PhpEXE</a></span>, <span class='object_link'><a href="Exploit/Powershell.html" title="Msf::Exploit::Powershell (module)">Powershell</a></span>, <span class='object_link'><a href="Exploit/RIFF.html" title="Msf::Exploit::RIFF (module)">RIFF</a></span>, <span class='object_link'><a href="Exploit/Retry.html" title="Msf::Exploit::Retry (module)">Retry</a></span>, <span class='object_link'><a href="Exploit/RopDb.html" title="Msf::Exploit::RopDb (module)">RopDb</a></span>, <span class='object_link'><a href="Exploit/RubyDeserialization.html" title="Msf::Exploit::RubyDeserialization (module)">RubyDeserialization</a></span>, <span class='object_link'><a href="Exploit/SMB.html" title="Msf::Exploit::SMB (module)">SMB</a></span>, <span class='object_link'><a href="Exploit/SQLi.html" title="Msf::Exploit::SQLi (module)">SQLi</a></span>, <span class='object_link'><a href="Exploit/Seh.html" title="Msf::Exploit::Seh (module)">Seh</a></span>, <span class='object_link'><a href="Exploit/Stance.html" title="Msf::Exploit::Stance (module)">Stance</a></span>, <span class='object_link'><a href="Exploit/TFTPServer.html" title="Msf::Exploit::TFTPServer (module)">TFTPServer</a></span>, <span class='object_link'><a href="Exploit/Type.html" title="Msf::Exploit::Type (module)">Type</a></span>, <span class='object_link'><a href="Exploit/VBSObfuscate.html" title="Msf::Exploit::VBSObfuscate (module)">VBSObfuscate</a></span>, <span class='object_link'><a href="Exploit/ViewState.html" title="Msf::Exploit::ViewState (module)">ViewState</a></span>, <span class='object_link'><a href="Exploit/WbemExec.html" title="Msf::Exploit::WbemExec (module)">WbemExec</a></span>, <span class='object_link'><a href="Exploit/Windows_Constants.html" title="Msf::Exploit::Windows_Constants (module)">Windows_Constants</a></span>
<strong class="classes">Classes:</strong> <span class='object_link'><a href="Exploit/CheckCode.html" title="Msf::Exploit::CheckCode (class)">CheckCode</a></span>, <span class='object_link'><a href="Exploit/Complete.html" title="Msf::Exploit::Complete (class)">Complete</a></span>, <span class='object_link'><a href="Exploit/Failed.html" title="Msf::Exploit::Failed (class)">Failed</a></span>, <span class='object_link'><a href="Exploit/Local.html" title="Msf::Exploit::Local (class)">Local</a></span>, <span class='object_link'><a href="Exploit/Remote.html" title="Msf::Exploit::Remote (class)">Remote</a></span>
</p>
<h2>Constant Summary</h2>
<h3 class="inherited">Constants inherited
from <span class='object_link'><a href="Module.html" title="Msf::Module (class)">Module</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module.html#REPLICANT_EXTENSION_DS_KEY-constant" title="Msf::Module::REPLICANT_EXTENSION_DS_KEY (constant)">Module::REPLICANT_EXTENSION_DS_KEY</a></span></p>
<h3 class="inherited">Constants included
from <span class='object_link'><a href="Module/ModuleInfo.html" title="Msf::Module::ModuleInfo (module)">Module::ModuleInfo</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/ModuleInfo.html#ReferencesWithOptionalThirdElement-constant" title="Msf::Module::ModuleInfo::ReferencesWithOptionalThirdElement (constant)">Module::ModuleInfo::ReferencesWithOptionalThirdElement</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#UpdateableOptions-constant" title="Msf::Module::ModuleInfo::UpdateableOptions (constant)">Module::ModuleInfo::UpdateableOptions</a></span></p>
<h3 class="inherited">Constants included
from <span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Module::Failure</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/Failure.html#BadConfig-constant" title="Msf::Module::Failure::BadConfig (constant)">Module::Failure::BadConfig</a></span>, <span class='object_link'><a href="Module/Failure.html#Disconnected-constant" title="Msf::Module::Failure::Disconnected (constant)">Module::Failure::Disconnected</a></span>, <span class='object_link'><a href="Module/Failure.html#NoAccess-constant" title="Msf::Module::Failure::NoAccess (constant)">Module::Failure::NoAccess</a></span>, <span class='object_link'><a href="Module/Failure.html#NoTarget-constant" title="Msf::Module::Failure::NoTarget (constant)">Module::Failure::NoTarget</a></span>, <span class='object_link'><a href="Module/Failure.html#None-constant" title="Msf::Module::Failure::None (constant)">Module::Failure::None</a></span>, <span class='object_link'><a href="Module/Failure.html#NotFound-constant" title="Msf::Module::Failure::NotFound (constant)">Module::Failure::NotFound</a></span>, <span class='object_link'><a href="Module/Failure.html#NotVulnerable-constant" title="Msf::Module::Failure::NotVulnerable (constant)">Module::Failure::NotVulnerable</a></span>, <span class='object_link'><a href="Module/Failure.html#PayloadFailed-constant" title="Msf::Module::Failure::PayloadFailed (constant)">Module::Failure::PayloadFailed</a></span>, <span class='object_link'><a href="Module/Failure.html#TimeoutExpired-constant" title="Msf::Module::Failure::TimeoutExpired (constant)">Module::Failure::TimeoutExpired</a></span>, <span class='object_link'><a href="Module/Failure.html#UnexpectedReply-constant" title="Msf::Module::Failure::UnexpectedReply (constant)">Module::Failure::UnexpectedReply</a></span>, <span class='object_link'><a href="Module/Failure.html#Unknown-constant" title="Msf::Module::Failure::Unknown (constant)">Module::Failure::Unknown</a></span>, <span class='object_link'><a href="Module/Failure.html#Unreachable-constant" title="Msf::Module::Failure::Unreachable (constant)">Module::Failure::Unreachable</a></span>, <span class='object_link'><a href="Module/Failure.html#UserInterrupt-constant" title="Msf::Module::Failure::UserInterrupt (constant)">Module::Failure::UserInterrupt</a></span></p>
<h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
<ul class="summary">
<li class="protected ">
<span class="summary_signature">
<a href="#active_timeout-instance_method" title="#active_timeout (instance method)">#<strong>active_timeout</strong> &#x21d2; Object </a>
</span>
<span class="note title protected">protected</span>
<span class="summary_desc"><div class='inline'>
<p>Maximum number of seconds for active handlers.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#default_target-instance_method" title="#default_target (instance method)">#<strong>default_target</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>The default target.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#fail_detail-instance_method" title="#fail_detail (instance method)">#<strong>fail_detail</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Detailed exception string indicating why the exploit was not successful.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#fail_reason-instance_method" title="#fail_reason (instance method)">#<strong>fail_reason</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>The reason why the exploit was not successful (one of Msf::Module::Failure).</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#last_vuln_attempt-instance_method" title="#last_vuln_attempt (instance method)">#<strong>last_vuln_attempt</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>The VulnAttempt object created during this run, or nil/false if none was recorded.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#needs_cleanup-instance_method" title="#needs_cleanup (instance method)">#<strong>needs_cleanup</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Returns the value of attribute needs_cleanup.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#payload-instance_method" title="#payload (instance method)">#<strong>payload</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>The encoded payload instance.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#payload_info-instance_method" title="#payload_info (instance method)">#<strong>payload_info</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>The payload requirement hash.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#payload_instance-instance_method" title="#payload_instance (instance method)">#<strong>payload_instance</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>The active payload instance.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#session_count-instance_method" title="#session_count (instance method)">#<strong>session_count</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>The number of active sessions created by this instance.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#successful-instance_method" title="#successful (instance method)">#<strong>successful</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>The boolean indicating whether the exploit succeeded.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#targets-instance_method" title="#targets (instance method)">#<strong>targets</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>The list of targets.</p>
</div></span>
</li>
</ul>
<h3 class="inherited">Attributes inherited from <span class='object_link'><a href="Module.html" title="Msf::Module (class)">Module</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module.html#error-instance_method" title="Msf::Module#error (method)">#error</a></span>, <span class='object_link'><a href="Module.html#job_id-instance_method" title="Msf::Module#job_id (method)">#job_id</a></span>, <span class='object_link'><a href="Module.html#license-instance_method" title="Msf::Module#license (method)">#license</a></span>, <span class='object_link'><a href="Module.html#platform-instance_method" title="Msf::Module#platform (method)">#platform</a></span>, <span class='object_link'><a href="Module.html#privileged=-instance_method" title="Msf::Module#privileged= (method)">#privileged</a></span>, <span class='object_link'><a href="Module.html#references-instance_method" title="Msf::Module#references (method)">#references</a></span>, <span class='object_link'><a href="Module.html#user_data-instance_method" title="Msf::Module#user_data (method)">#user_data</a></span></p>
<h3 class="inherited">Attributes included from <span class='object_link'><a href="Framework/Offspring.html" title="Msf::Framework::Offspring (module)">Framework::Offspring</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Framework/Offspring.html#framework-instance_method" title="Msf::Framework::Offspring#framework (method)">#framework</a></span></p>
<h3 class="inherited">Attributes included from <span class='object_link'><a href="Module/UUID.html" title="Msf::Module::UUID (module)">Module::UUID</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/UUID.html#uuid-instance_method" title="Msf::Module::UUID#uuid (method)">#uuid</a></span></p>
<h3 class="inherited">Attributes included from <span class='object_link'><a href="../Rex/Ui/Subscriber/Input.html" title="Rex::Ui::Subscriber::Input (module)">Rex::Ui::Subscriber::Input</a></span></h3>
<p class="inherited"><span class='object_link'><a href="../Rex/Ui/Subscriber/Input.html#user_input-instance_method" title="Rex::Ui::Subscriber::Input#user_input (method)">#user_input</a></span></p>
<h3 class="inherited">Attributes included from <span class='object_link'><a href="../Rex/Ui/Subscriber/Output.html" title="Rex::Ui::Subscriber::Output (module)">Rex::Ui::Subscriber::Output</a></span></h3>
<p class="inherited"><span class='object_link'><a href="../Rex/Ui/Subscriber/Output.html#user_output-instance_method" title="Rex::Ui::Subscriber::Output#user_output (method)">#user_output</a></span></p>
<h3 class="inherited">Attributes included from <span class='object_link'><a href="Module/Privileged.html" title="Msf::Module::Privileged (module)">Module::Privileged</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/Privileged.html#priveli=-instance_method" title="Msf::Module::Privileged#priveli= (method)">#priveli</a></span>, <span class='object_link'><a href="Module/Privileged.html#privileged-instance_method" title="Msf::Module::Privileged#privileged (method)">#privileged</a></span></p>
<h3 class="inherited">Attributes included from <span class='object_link'><a href="Module/Options.html" title="Msf::Module::Options (module)">Module::Options</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/Options.html#options-instance_method" title="Msf::Module::Options#options (method)">#options</a></span></p>
<h3 class="inherited">Attributes included from <span class='object_link'><a href="Module/ModuleStore.html" title="Msf::Module::ModuleStore (module)">Module::ModuleStore</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/ModuleStore.html#module_store-instance_method" title="Msf::Module::ModuleStore#module_store (method)">#module_store</a></span></p>
<h3 class="inherited">Attributes included from <span class='object_link'><a href="Module/ModuleInfo.html" title="Msf::Module::ModuleInfo (module)">Module::ModuleInfo</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/ModuleInfo.html#module_info-instance_method" title="Msf::Module::ModuleInfo#module_info (method)">#module_info</a></span></p>
<h3 class="inherited">Attributes included from <span class='object_link'><a href="Module/FullName.html" title="Msf::Module::FullName (module)">Module::FullName</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/FullName.html#aliased_as-instance_method" title="Msf::Module::FullName#aliased_as (method)">#aliased_as</a></span></p>
<h3 class="inherited">Attributes included from <span class='object_link'><a href="Module/DataStore.html" title="Msf::Module::DataStore (module)">Module::DataStore</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/DataStore.html#datastore-instance_method" title="Msf::Module::DataStore#datastore (method)">#datastore</a></span></p>
<h3 class="inherited">Attributes included from <span class='object_link'><a href="Module/Author.html" title="Msf::Module::Author (module)">Module::Author</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/Author.html#author-instance_method" title="Msf::Module::Author#author (method)">#author</a></span></p>
<h3 class="inherited">Attributes included from <span class='object_link'><a href="Module/Arch.html" title="Msf::Module::Arch (module)">Module::Arch</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/Arch.html#arch-instance_method" title="Msf::Module::Arch#arch (method)">#arch</a></span></p>
<h3 class="inherited">Attributes included from <span class='object_link'><a href="Module/Alert.html" title="Msf::Module::Alert (module)">Module::Alert</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/Alert.html#alerts-instance_method" title="Msf::Module::Alert#alerts (method)">#alerts</a></span>, <span class='object_link'><a href="Module/Alert.html#you_have_been_warned-instance_method" title="Msf::Module::Alert#you_have_been_warned (method)">#you_have_been_warned</a></span></p>
<h2>
Class Method Summary
<small><a href="#" class="summary_toggle">collapse</a></small>
</h2>
<ul class="summary">
<li class="public ">
<span class="summary_signature">
<a href="#mixins-class_method" title="mixins (class method)">.<strong>mixins</strong> &#x21d2; Array </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Returns an array of all of the exploit mixins.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#type-class_method" title="type (class method)">.<strong>type</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Returns MODULE_EXPLOIT to indicate that this is an exploit module.</p>
</div></span>
</li>
</ul>
<h2>
Instance Method Summary
<small><a href="#" class="summary_toggle">collapse</a></small>
</h2>
<ul class="summary">
<li class="public ">
<span class="summary_signature">
<a href="#add_handler-instance_method" title="#add_handler (instance method)">#<strong>add_handler</strong>(opts = {}) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Allows the payload handler to spawn a new monitor.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#aggressive%3F-instance_method" title="#aggressive? (instance method)">#<strong>aggressive?</strong> &#x21d2; Boolean </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Returns true if the exploit has an aggressive stance.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#autofilter-instance_method" title="#autofilter (instance method)">#<strong>autofilter</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Performs last-minute sanity checking of exploit parameters.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#autofilter_ports-instance_method" title="#autofilter_ports (instance method)">#<strong>autofilter_ports</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Provides a list of ports that can be used for matching this module against target systems.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#autofilter_services-instance_method" title="#autofilter_services (instance method)">#<strong>autofilter_services</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Provides a list of services that can be used for matching this module against target systems.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#cleanup-instance_method" title="#cleanup (instance method)">#<strong>cleanup</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Performs any cleanup that may be necessary, such as disconnecting connections and any other such fun things.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#compatible_encoders-instance_method" title="#compatible_encoders (instance method)">#<strong>compatible_encoders</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Returns a list of compatible encoders based on architecture.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#compatible_payloads-instance_method" title="#compatible_payloads (instance method)">#<strong>compatible_payloads</strong>(excluded_platforms: [], excluded_archs: []) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Returns a list of compatible payloads based on platform, architecture, and size requirements.</p>
</div></span>
</li>
<li class="protected ">
<span class="summary_signature">
<a href="#define_context_encoding_reqs-instance_method" title="#define_context_encoding_reqs (instance method)">#<strong>define_context_encoding_reqs</strong>(reqs) &#x21d2; Object </a>
</span>
<span class="note title protected">protected</span>
<span class="summary_desc"><div class='inline'>
<p>Gets the memory map file and other context information that is required when wanting to support context keyed encoding.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#encode_begin-instance_method" title="#encode_begin (instance method)">#<strong>encode_begin</strong>(real_payload, reqs) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Called prior to encoding a payload.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#encode_end-instance_method" title="#encode_end (instance method)">#<strong>encode_end</strong>(real_payload, reqs, encoded) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Called after an encoded payload has been generated.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#encode_shellcode_stub-instance_method" title="#encode_shellcode_stub (instance method)">#<strong>encode_shellcode_stub</strong>(code, badchars = payload_badchars) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Allows arbitrary shellcode to be encoded from within an exploit.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#exploit-instance_method" title="#exploit (instance method)">#<strong>exploit</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Kicks off the actual exploit.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#exploit_type-instance_method" title="#exploit_type (instance method)">#<strong>exploit_type</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>If we dont know the exploit type, then I guess its omnipresent!.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#fail_with-instance_method" title="#fail_with (instance method)">#<strong>fail_with</strong>(reason, msg = nil) &#x21d2; void </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Raises a Msf::Exploit::Failed exception.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#generate_payload-instance_method" title="#generate_payload (instance method)">#<strong>generate_payload</strong>(pinst = nil) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Generates the encoded version of the supplied payload using the payload requirements specific to this exploit.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#generate_single_payload-instance_method" title="#generate_single_payload (instance method)">#<strong>generate_single_payload</strong>(pinst = nil, platform = nil, arch = nil, explicit_target = nil) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>This method generates a non-cached payload which is typically useful for passive exploits that will have more than one client.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#handle_exception-instance_method" title="#handle_exception (instance method)">#<strong>handle_exception</strong>(e) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Handle the exception.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#handler-instance_method" title="#handler (instance method)">#<strong>handler</strong>(*args) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Passes the connection to the associated payload handler to see if the exploit succeeded and a connection has been established.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#handler_bind%3F-instance_method" title="#handler_bind? (instance method)">#<strong>handler_bind?</strong> &#x21d2; Boolean </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>If the payload uses a bind handler.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#handler_enabled%3F-instance_method" title="#handler_enabled? (instance method)">#<strong>handler_enabled?</strong> &#x21d2; Boolean </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Allow the user to disable the payload handler.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#has_auto_target%3F-instance_method" title="#has_auto_target? (instance method)">#<strong>has_auto_target?</strong>(targets = []) &#x21d2; Boolean </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="protected ">
<span class="summary_signature">
<a href="#init_compat-instance_method" title="#init_compat (instance method)">#<strong>init_compat</strong> &#x21d2; Object </a>
</span>
<span class="note title protected">protected</span>
<span class="summary_desc"><div class='inline'>
<p>Overrides the base class method and serves to initialize default compatibilities for exploits.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(info = {}) &#x21d2; Exploit </a>
</span>
<span class="note title constructor">constructor</span>
<span class="summary_desc"><div class='inline'>
<p>Creates an instance of the exploit module.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#interrupt_handler-instance_method" title="#interrupt_handler (instance method)">#<strong>interrupt_handler</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#is_payload_compatible%3F-instance_method" title="#is_payload_compatible? (instance method)">#<strong>is_payload_compatible?</strong>(name) &#x21d2; Boolean </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Returns whether the requested payload is compatible with the module.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#make_fast_nops-instance_method" title="#make_fast_nops (instance method)">#<strong>make_fast_nops</strong>(count) &#x21d2; String </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Generates a NOP sled using the #make_nops method.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#make_nops-instance_method" title="#make_nops (instance method)">#<strong>make_nops</strong>(count) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Generates a nop sled of a supplied length and returns it to the caller.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#nop_generator-instance_method" title="#nop_generator (instance method)">#<strong>nop_generator</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Returns the first compatible NOP generator for this exploits payload instance.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#nop_save_registers-instance_method" title="#nop_save_registers (instance method)">#<strong>nop_save_registers</strong>(explicit_target = nil) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Returns the list of registers that the NOP generator should save, if any.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#normalize_platform_arch-instance_method" title="#normalize_platform_arch (instance method)">#<strong>normalize_platform_arch</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#on_new_session-instance_method" title="#on_new_session (instance method)">#<strong>on_new_session</strong>(session) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>This is called by the payload when a new session is created.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#passive%3F-instance_method" title="#passive? (instance method)">#<strong>passive?</strong> &#x21d2; Boolean </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Returns if the exploit has a passive stance.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#pattern_create-instance_method" title="#pattern_create (instance method)">#<strong>pattern_create</strong>(length, sets = nil) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Generate a non-repeating static random string.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#payload_append-instance_method" title="#payload_append (instance method)">#<strong>payload_append</strong>(explicit_target = nil) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Return any text that should be appended to the payload.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#payload_append_encoder-instance_method" title="#payload_append_encoder (instance method)">#<strong>payload_append_encoder</strong>(explicit_target = nil) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Return any text that should be appended to the encoder of the payload.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#payload_badchars-instance_method" title="#payload_badchars (instance method)">#<strong>payload_badchars</strong>(explicit_target = nil) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Returns the bad characters that cannot be in any payload used by this exploit.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#payload_disable_nops-instance_method" title="#payload_disable_nops (instance method)">#<strong>payload_disable_nops</strong>(explicit_target = nil) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Whether NOP generation should be enabled or disabled.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#payload_encoder-instance_method" title="#payload_encoder (instance method)">#<strong>payload_encoder</strong>(explicit_target = nil) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Returns the payload encoder that is associated with either the current target or the exploit in general.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#payload_encoder_options-instance_method" title="#payload_encoder_options (instance method)">#<strong>payload_encoder_options</strong>(explicit_target = nil) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Returns the payload encoder option hash that is used to initialize the datastore of the encoder that is selected when generating an encoded payload.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#payload_encoder_type-instance_method" title="#payload_encoder_type (instance method)">#<strong>payload_encoder_type</strong>(explicit_target = nil) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Returns the payload encoder type that is associated with either the current target or the exploit in general.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#payload_extended_options-instance_method" title="#payload_extended_options (instance method)">#<strong>payload_extended_options</strong>(explicit_target = nil) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Returns the payload extended options hash which is used to provide a location to store extended information that may be useful to a particular type of payload or mixin.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#payload_max_nops-instance_method" title="#payload_max_nops (instance method)">#<strong>payload_max_nops</strong>(explicit_target = nil) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Maximum number of nops to use as a hint to the framework.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#payload_min_nops-instance_method" title="#payload_min_nops (instance method)">#<strong>payload_min_nops</strong>(explicit_target = nil) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Minimum number of nops to use as a hint to the framework.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#payload_nop-instance_method" title="#payload_nop (instance method)">#<strong>payload_nop</strong>(explicit_target = nil) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Returns the payload NOP generator that is associated with either the current target or the exploit in general.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#payload_prepend-instance_method" title="#payload_prepend (instance method)">#<strong>payload_prepend</strong>(explicit_target = nil) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Return any text that should be prepended to the payload.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#payload_prepend_encoder-instance_method" title="#payload_prepend_encoder (instance method)">#<strong>payload_prepend_encoder</strong>(explicit_target = nil) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Return any text that should be prepended to the encoder of the payload.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#payload_space-instance_method" title="#payload_space (instance method)">#<strong>payload_space</strong>(explicit_target = nil) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Returns the maximum amount of room the exploit has for a payload.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#rand_char-instance_method" title="#rand_char (instance method)">#<strong>rand_char</strong>(bad = payload_badchars) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Generate a random character avoiding the exploits bad characters.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#rand_text-instance_method" title="#rand_text (instance method)">#<strong>rand_text</strong>(length, bad = payload_badchars) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Generate random text characters avoiding the exploits bad characters.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#rand_text_alpha-instance_method" title="#rand_text_alpha (instance method)">#<strong>rand_text_alpha</strong>(length, bad = payload_badchars) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Generate random alpha characters avoiding the exploits bad characters.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#rand_text_alpha_lower-instance_method" title="#rand_text_alpha_lower (instance method)">#<strong>rand_text_alpha_lower</strong>(length, bad = payload_badchars) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Generate random alpha lower characters avoiding the exploits bad characters.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#rand_text_alpha_upper-instance_method" title="#rand_text_alpha_upper (instance method)">#<strong>rand_text_alpha_upper</strong>(length, bad = payload_badchars) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Generate random alpha upper characters avoiding the exploits bad characters.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#rand_text_alphanumeric-instance_method" title="#rand_text_alphanumeric (instance method)">#<strong>rand_text_alphanumeric</strong>(length, bad = payload_badchars) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Generate random alphanumeric characters avoiding the exploits bad characters.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#rand_text_debug-instance_method" title="#rand_text_debug (instance method)">#<strong>rand_text_debug</strong>(length, char = &#39;A&#39;) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Utility methods for generating random text that implicitly uses the exploits bad character set.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#rand_text_english-instance_method" title="#rand_text_english (instance method)">#<strong>rand_text_english</strong>(length, bad = payload_badchars) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Generate random english-like avoiding the exploits bad characters.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#rand_text_hex-instance_method" title="#rand_text_hex (instance method)">#<strong>rand_text_hex</strong>(length, bad = payload_badchars) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Generate random hexadecimal characters avoiding the exploits bad characters.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#rand_text_highascii-instance_method" title="#rand_text_highascii (instance method)">#<strong>rand_text_highascii</strong>(length, bad = payload_badchars) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Generate random high ascii characters avoiding the exploits bad characters.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#rand_text_numeric-instance_method" title="#rand_text_numeric (instance method)">#<strong>rand_text_numeric</strong>(length, bad = payload_badchars) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Generate random numeric characters avoiding the exploits bad characters.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#regenerate_payload-instance_method" title="#regenerate_payload (instance method)">#<strong>regenerate_payload</strong>(platform = nil, arch = nil, explicit_target = nil) &#x21d2; Object </a>
(also: #exploit_regenerate_payload)
</span>
<span class="summary_desc"><div class='inline'>
<p>Re-generates an encoded payload, typically called after something in the datastore has changed.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#register_autofilter_ports-instance_method" title="#register_autofilter_ports (instance method)">#<strong>register_autofilter_ports</strong>(ports = []) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Adds a port into the list of ports.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#register_autofilter_services-instance_method" title="#register_autofilter_services (instance method)">#<strong>register_autofilter_services</strong>(services = []) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#reset_session_counts-instance_method" title="#reset_session_counts (instance method)">#<strong>reset_session_counts</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Reset the session counter to zero (which occurs during set up of the exploit prior to calling exploit).</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#session_created%3F-instance_method" title="#session_created? (instance method)">#<strong>session_created?</strong> &#x21d2; Boolean </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>A boolean for whether a session has been created yet.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#setup-instance_method" title="#setup (instance method)">#<strong>setup</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Prepares the module for exploitation, initializes any state, and starts the payload handler.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#setup_fail_detail_from_exception-instance_method" title="#setup_fail_detail_from_exception (instance method)">#<strong>setup_fail_detail_from_exception</strong>(e) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#stack_adjustment-instance_method" title="#stack_adjustment (instance method)">#<strong>stack_adjustment</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>This method returns the encoded instruction(s) required to adjust the stack pointer prior to executing any code.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#stance-instance_method" title="#stance (instance method)">#<strong>stance</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Generally, all exploits take an aggressive stance.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#target-instance_method" title="#target (instance method)">#<strong>target</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Returns the active target for this exploit.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#target_arch-instance_method" title="#target_arch (instance method)">#<strong>target_arch</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Returns the targets architecture, or the one assigned to the module itself.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#target_index-instance_method" title="#target_index (instance method)">#<strong>target_index</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>The target index that has been selected.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#target_platform-instance_method" title="#target_platform (instance method)">#<strong>target_platform</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Returns the targets platform, or the one assigned to the module itself.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#type-instance_method" title="#type (instance method)">#<strong>type</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Returns MODULE_EXPLOIT to indicate that this is an exploit module.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#wfs_delay-instance_method" title="#wfs_delay (instance method)">#<strong>wfs_delay</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>The minimum “wait for session” delay is 3 seconds for all exploits, the WfsDelay configuration option is added on top of this.</p>
</div></span>
</li>
</ul>
<h3 class="inherited">Methods inherited from <span class='object_link'><a href="Module.html" title="Msf::Module (class)">Module</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module.html#adapted_refname-instance_method" title="Msf::Module#adapted_refname (method)">#adapted_refname</a></span>, <span class='object_link'><a href="Module.html#adapter_refname-instance_method" title="Msf::Module#adapter_refname (method)">#adapter_refname</a></span>, <span class='object_link'><a href="Module.html#black_listed_auth_filenames-instance_method" title="Msf::Module#black_listed_auth_filenames (method)">#black_listed_auth_filenames</a></span>, <span class='object_link'><a href="Module.html#cached%3F-class_method" title="Msf::Module.cached? (method)">cached?</a></span>, <span class='object_link'><a href="Module.html#debugging%3F-instance_method" title="Msf::Module#debugging? (method)">#debugging?</a></span>, <span class='object_link'><a href="Module.html#default_cred%3F-instance_method" title="Msf::Module#default_cred? (method)">#default_cred?</a></span>, <span class='object_link'><a href="Module.html#default_options-instance_method" title="Msf::Module#default_options (method)">#default_options</a></span>, <span class='object_link'><a href="Module.html#file_path-instance_method" title="Msf::Module#file_path (method)">#file_path</a></span>, <span class='object_link'><a href="Module.html#framework-instance_method" title="Msf::Module#framework (method)">#framework</a></span>, <span class='object_link'><a href="Module.html#has_check%3F-instance_method" title="Msf::Module#has_check? (method)">#has_check?</a></span>, <span class='object_link'><a href="Module.html#merge_module_info_with_target_info-instance_method" title="Msf::Module#merge_module_info_with_target_info (method)">#merge_module_info_with_target_info</a></span>, <span class='object_link'><a href="Module.html#orig_cls-instance_method" title="Msf::Module#orig_cls (method)">#orig_cls</a></span>, <span class='object_link'><a href="Module.html#owner-instance_method" title="Msf::Module#owner (method)">#owner</a></span>, <span class='object_link'><a href="Module.html#perform_extensions-instance_method" title="Msf::Module#perform_extensions (method)">#perform_extensions</a></span>, <span class='object_link'><a href="Module.html#platform%3F-instance_method" title="Msf::Module#platform? (method)">#platform?</a></span>, <span class='object_link'><a href="Module.html#platform_to_s-instance_method" title="Msf::Module#platform_to_s (method)">#platform_to_s</a></span>, <span class='object_link'><a href="Module.html#post_auth%3F-instance_method" title="Msf::Module#post_auth? (method)">#post_auth?</a></span>, <span class='object_link'><a href="Module.html#register_extensions-instance_method" title="Msf::Module#register_extensions (method)">#register_extensions</a></span>, <span class='object_link'><a href="Module.html#register_parent-instance_method" title="Msf::Module#register_parent (method)">#register_parent</a></span>, <span class='object_link'><a href="Module.html#replicant-instance_method" title="Msf::Module#replicant (method)">#replicant</a></span>, <span class='object_link'><a href="Module.html#required_cred_options-instance_method" title="Msf::Module#required_cred_options (method)">#required_cred_options</a></span>, <span class='object_link'><a href="Module.html#set_defaults-instance_method" title="Msf::Module#set_defaults (method)">#set_defaults</a></span>, <span class='object_link'><a href="Module.html#stage_refname-instance_method" title="Msf::Module#stage_refname (method)">#stage_refname</a></span>, <span class='object_link'><a href="Module.html#stager_refname-instance_method" title="Msf::Module#stager_refname (method)">#stager_refname</a></span>, <span class='object_link'><a href="Module.html#workspace-instance_method" title="Msf::Module#workspace (method)">#workspace</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Reliability.html" title="Msf::Module::Reliability (module)">Module::Reliability</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/Reliability.html#reliability-instance_method" title="Msf::Module::Reliability#reliability (method)">#reliability</a></span>, <span class='object_link'><a href="Module/Reliability.html#reliability_to_s-instance_method" title="Msf::Module::Reliability#reliability_to_s (method)">#reliability_to_s</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Stability.html" title="Msf::Module::Stability (module)">Module::Stability</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/Stability.html#stability-instance_method" title="Msf::Module::Stability#stability (method)">#stability</a></span>, <span class='object_link'><a href="Module/Stability.html#stability_to_s-instance_method" title="Msf::Module::Stability#stability_to_s (method)">#stability_to_s</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/SideEffects.html" title="Msf::Module::SideEffects (module)">Module::SideEffects</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/SideEffects.html#side_effects-instance_method" title="Msf::Module::SideEffects#side_effects (method)">#side_effects</a></span>, <span class='object_link'><a href="Module/SideEffects.html#side_effects_to_s-instance_method" title="Msf::Module::SideEffects#side_effects_to_s (method)">#side_effects_to_s</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/UI.html" title="Msf::Module::UI (module)">Module::UI</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/UI.html#init_ui-instance_method" title="Msf::Module::UI#init_ui (method)">#init_ui</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/UI/Message.html" title="Msf::Module::UI::Message (module)">Module::UI::Message</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/UI/Message.html#print_error-instance_method" title="Msf::Module::UI::Message#print_error (method)">#print_error</a></span>, <span class='object_link'><a href="Module/UI/Message.html#print_good-instance_method" title="Msf::Module::UI::Message#print_good (method)">#print_good</a></span>, <span class='object_link'><a href="Module/UI/Message.html#print_prefix-instance_method" title="Msf::Module::UI::Message#print_prefix (method)">#print_prefix</a></span>, <span class='object_link'><a href="Module/UI/Message.html#print_status-instance_method" title="Msf::Module::UI::Message#print_status (method)">#print_status</a></span>, <span class='object_link'><a href="Module/UI/Message.html#print_warning-instance_method" title="Msf::Module::UI::Message#print_warning (method)">#print_warning</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/UI/Message/Verbose.html" title="Msf::Module::UI::Message::Verbose (module)">Module::UI::Message::Verbose</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/UI/Message/Verbose.html#vprint_error-instance_method" title="Msf::Module::UI::Message::Verbose#vprint_error (method)">#vprint_error</a></span>, <span class='object_link'><a href="Module/UI/Message/Verbose.html#vprint_good-instance_method" title="Msf::Module::UI::Message::Verbose#vprint_good (method)">#vprint_good</a></span>, <span class='object_link'><a href="Module/UI/Message/Verbose.html#vprint_status-instance_method" title="Msf::Module::UI::Message::Verbose#vprint_status (method)">#vprint_status</a></span>, <span class='object_link'><a href="Module/UI/Message/Verbose.html#vprint_warning-instance_method" title="Msf::Module::UI::Message::Verbose#vprint_warning (method)">#vprint_warning</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/UI/Line.html" title="Msf::Module::UI::Line (module)">Module::UI::Line</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/UI/Line.html#print_line-instance_method" title="Msf::Module::UI::Line#print_line (method)">#print_line</a></span>, <span class='object_link'><a href="Module/UI/Line.html#print_line_prefix-instance_method" title="Msf::Module::UI::Line#print_line_prefix (method)">#print_line_prefix</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/UI/Line/Verbose.html" title="Msf::Module::UI::Line::Verbose (module)">Module::UI::Line::Verbose</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/UI/Line/Verbose.html#vprint_line-instance_method" title="Msf::Module::UI::Line::Verbose#vprint_line (method)">#vprint_line</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="../Rex/Ui/Subscriber.html" title="Rex::Ui::Subscriber (module)">Rex::Ui::Subscriber</a></span></h3>
<p class="inherited"><span class='object_link'><a href="../Rex/Ui/Subscriber.html#copy_ui-instance_method" title="Rex::Ui::Subscriber#copy_ui (method)">#copy_ui</a></span>, <span class='object_link'><a href="../Rex/Ui/Subscriber.html#init_ui-instance_method" title="Rex::Ui::Subscriber#init_ui (method)">#init_ui</a></span>, <span class='object_link'><a href="../Rex/Ui/Subscriber.html#reset_ui-instance_method" title="Rex::Ui::Subscriber#reset_ui (method)">#reset_ui</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="../Rex/Ui/Subscriber/Input.html" title="Rex::Ui::Subscriber::Input (module)">Rex::Ui::Subscriber::Input</a></span></h3>
<p class="inherited"><span class='object_link'><a href="../Rex/Ui/Subscriber/Input.html#gets-instance_method" title="Rex::Ui::Subscriber::Input#gets (method)">#gets</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="../Rex/Ui/Subscriber/Output.html" title="Rex::Ui::Subscriber::Output (module)">Rex::Ui::Subscriber::Output</a></span></h3>
<p class="inherited"><span class='object_link'><a href="../Rex/Ui/Subscriber/Output.html#flush-instance_method" title="Rex::Ui::Subscriber::Output#flush (method)">#flush</a></span>, <span class='object_link'><a href="../Rex/Ui/Subscriber/Output.html#print-instance_method" title="Rex::Ui::Subscriber::Output#print (method)">#print</a></span>, <span class='object_link'><a href="../Rex/Ui/Subscriber/Output.html#print_blank_line-instance_method" title="Rex::Ui::Subscriber::Output#print_blank_line (method)">#print_blank_line</a></span>, <span class='object_link'><a href="../Rex/Ui/Subscriber/Output.html#print_error-instance_method" title="Rex::Ui::Subscriber::Output#print_error (method)">#print_error</a></span>, <span class='object_link'><a href="../Rex/Ui/Subscriber/Output.html#print_good-instance_method" title="Rex::Ui::Subscriber::Output#print_good (method)">#print_good</a></span>, <span class='object_link'><a href="../Rex/Ui/Subscriber/Output.html#print_line-instance_method" title="Rex::Ui::Subscriber::Output#print_line (method)">#print_line</a></span>, <span class='object_link'><a href="../Rex/Ui/Subscriber/Output.html#print_status-instance_method" title="Rex::Ui::Subscriber::Output#print_status (method)">#print_status</a></span>, <span class='object_link'><a href="../Rex/Ui/Subscriber/Output.html#print_warning-instance_method" title="Rex::Ui::Subscriber::Output#print_warning (method)">#print_warning</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Type.html" title="Msf::Module::Type (module)">Module::Type</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/Type.html#auxiliary%3F-instance_method" title="Msf::Module::Type#auxiliary? (method)">#auxiliary?</a></span>, <span class='object_link'><a href="Module/Type.html#encoder%3F-instance_method" title="Msf::Module::Type#encoder? (method)">#encoder?</a></span>, <span class='object_link'><a href="Module/Type.html#evasion%3F-instance_method" title="Msf::Module::Type#evasion? (method)">#evasion?</a></span>, <span class='object_link'><a href="Module/Type.html#exploit%3F-instance_method" title="Msf::Module::Type#exploit? (method)">#exploit?</a></span>, <span class='object_link'><a href="Module/Type.html#nop%3F-instance_method" title="Msf::Module::Type#nop? (method)">#nop?</a></span>, <span class='object_link'><a href="Module/Type.html#payload%3F-instance_method" title="Msf::Module::Type#payload? (method)">#payload?</a></span>, <span class='object_link'><a href="Module/Type.html#post%3F-instance_method" title="Msf::Module::Type#post? (method)">#post?</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Ranking.html" title="Msf::Module::Ranking (module)">Module::Ranking</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/Ranking.html#rank-instance_method" title="Msf::Module::Ranking#rank (method)">#rank</a></span>, <span class='object_link'><a href="Module/Ranking.html#rank_to_h-instance_method" title="Msf::Module::Ranking#rank_to_h (method)">#rank_to_h</a></span>, <span class='object_link'><a href="Module/Ranking.html#rank_to_s-instance_method" title="Msf::Module::Ranking#rank_to_s (method)">#rank_to_s</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Privileged.html" title="Msf::Module::Privileged (module)">Module::Privileged</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/Privileged.html#privileged%3F-instance_method" title="Msf::Module::Privileged#privileged? (method)">#privileged?</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Options.html" title="Msf::Module::Options (module)">Module::Options</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/Options.html#deregister_option_group-instance_method" title="Msf::Module::Options#deregister_option_group (method)">#deregister_option_group</a></span>, <span class='object_link'><a href="Module/Options.html#deregister_options-instance_method" title="Msf::Module::Options#deregister_options (method)">#deregister_options</a></span>, <span class='object_link'><a href="Module/Options.html#register_advanced_options-instance_method" title="Msf::Module::Options#register_advanced_options (method)">#register_advanced_options</a></span>, <span class='object_link'><a href="Module/Options.html#register_evasion_options-instance_method" title="Msf::Module::Options#register_evasion_options (method)">#register_evasion_options</a></span>, <span class='object_link'><a href="Module/Options.html#register_option_group-instance_method" title="Msf::Module::Options#register_option_group (method)">#register_option_group</a></span>, <span class='object_link'><a href="Module/Options.html#register_options-instance_method" title="Msf::Module::Options#register_options (method)">#register_options</a></span>, <span class='object_link'><a href="Module/Options.html#validate-instance_method" title="Msf::Module::Options#validate (method)">#validate</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Network.html" title="Msf::Module::Network (module)">Module::Network</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/Network.html#comm-instance_method" title="Msf::Module::Network#comm (method)">#comm</a></span>, <span class='object_link'><a href="Module/Network.html#support_ipv6%3F-instance_method" title="Msf::Module::Network#support_ipv6? (method)">#support_ipv6?</a></span>, <span class='object_link'><a href="Module/Network.html#target_host-instance_method" title="Msf::Module::Network#target_host (method)">#target_host</a></span>, <span class='object_link'><a href="Module/Network.html#target_port-instance_method" title="Msf::Module::Network#target_port (method)">#target_port</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/ModuleStore.html" title="Msf::Module::ModuleStore (module)">Module::ModuleStore</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/ModuleStore.html#[]-instance_method" title="Msf::Module::ModuleStore#[] (method)">#[]</a></span>, <span class='object_link'><a href="Module/ModuleStore.html#[]=-instance_method" title="Msf::Module::ModuleStore#[]= (method)">#[]=</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/ModuleInfo.html" title="Msf::Module::ModuleInfo (module)">Module::ModuleInfo</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/ModuleInfo.html#alias-instance_method" title="Msf::Module::ModuleInfo#alias (method)">#alias</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#description-instance_method" title="Msf::Module::ModuleInfo#description (method)">#description</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#disclosure_date-instance_method" title="Msf::Module::ModuleInfo#disclosure_date (method)">#disclosure_date</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#info_fixups-instance_method" title="Msf::Module::ModuleInfo#info_fixups (method)">#info_fixups</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#merge_check_key-instance_method" title="Msf::Module::ModuleInfo#merge_check_key (method)">#merge_check_key</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#merge_info-instance_method" title="Msf::Module::ModuleInfo#merge_info (method)">#merge_info</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#merge_info_advanced_options-instance_method" title="Msf::Module::ModuleInfo#merge_info_advanced_options (method)">#merge_info_advanced_options</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#merge_info_alias-instance_method" title="Msf::Module::ModuleInfo#merge_info_alias (method)">#merge_info_alias</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#merge_info_description-instance_method" title="Msf::Module::ModuleInfo#merge_info_description (method)">#merge_info_description</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#merge_info_evasion_options-instance_method" title="Msf::Module::ModuleInfo#merge_info_evasion_options (method)">#merge_info_evasion_options</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#merge_info_name-instance_method" title="Msf::Module::ModuleInfo#merge_info_name (method)">#merge_info_name</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#merge_info_options-instance_method" title="Msf::Module::ModuleInfo#merge_info_options (method)">#merge_info_options</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#merge_info_string-instance_method" title="Msf::Module::ModuleInfo#merge_info_string (method)">#merge_info_string</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#merge_info_version-instance_method" title="Msf::Module::ModuleInfo#merge_info_version (method)">#merge_info_version</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#name-instance_method" title="Msf::Module::ModuleInfo#name (method)">#name</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#notes-instance_method" title="Msf::Module::ModuleInfo#notes (method)">#notes</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#update_info-instance_method" title="Msf::Module::ModuleInfo#update_info (method)">#update_info</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/FullName.html" title="Msf::Module::FullName (module)">Module::FullName</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/FullName.html#aliases-instance_method" title="Msf::Module::FullName#aliases (method)">#aliases</a></span>, <span class='object_link'><a href="Module/FullName.html#fullname-instance_method" title="Msf::Module::FullName#fullname (method)">#fullname</a></span>, <span class='object_link'><a href="Module/FullName.html#promptname-instance_method" title="Msf::Module::FullName#promptname (method)">#promptname</a></span>, <span class='object_link'><a href="Module/FullName.html#realname-instance_method" title="Msf::Module::FullName#realname (method)">#realname</a></span>, <span class='object_link'><a href="Module/FullName.html#refname-instance_method" title="Msf::Module::FullName#refname (method)">#refname</a></span>, <span class='object_link'><a href="Module/FullName.html#shortname-instance_method" title="Msf::Module::FullName#shortname (method)">#shortname</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Module::Failure</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/Failure.html#fail_reason_from_check_code-class_method" title="Msf::Module::Failure.fail_reason_from_check_code (method)">fail_reason_from_check_code</a></span>, <span class='object_link'><a href="Module/Failure.html#report_failure-instance_method" title="Msf::Module::Failure#report_failure (method)">#report_failure</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/DataStore.html" title="Msf::Module::DataStore (module)">Module::DataStore</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/DataStore.html#import_defaults-instance_method" title="Msf::Module::DataStore#import_defaults (method)">#import_defaults</a></span>, <span class='object_link'><a href="Module/DataStore.html#import_target_defaults-instance_method" title="Msf::Module::DataStore#import_target_defaults (method)">#import_target_defaults</a></span>, <span class='object_link'><a href="Module/DataStore.html#share_datastore-instance_method" title="Msf::Module::DataStore#share_datastore (method)">#share_datastore</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Compatibility.html" title="Msf::Module::Compatibility (module)">Module::Compatibility</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/Compatibility.html#compat-instance_method" title="Msf::Module::Compatibility#compat (method)">#compat</a></span>, <span class='object_link'><a href="Module/Compatibility.html#compatible%3F-instance_method" title="Msf::Module::Compatibility#compatible? (method)">#compatible?</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Author.html" title="Msf::Module::Author (module)">Module::Author</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/Author.html#author_to_s-instance_method" title="Msf::Module::Author#author_to_s (method)">#author_to_s</a></span>, <span class='object_link'><a href="Module/Author.html#each_author-instance_method" title="Msf::Module::Author#each_author (method)">#each_author</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Auth.html" title="Msf::Module::Auth (module)">Module::Auth</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/Auth.html#store_valid_credential-instance_method" title="Msf::Module::Auth#store_valid_credential (method)">#store_valid_credential</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Arch.html" title="Msf::Module::Arch (module)">Module::Arch</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/Arch.html#arch%3F-instance_method" title="Msf::Module::Arch#arch? (method)">#arch?</a></span>, <span class='object_link'><a href="Module/Arch.html#arch_to_s-instance_method" title="Msf::Module::Arch#arch_to_s (method)">#arch_to_s</a></span>, <span class='object_link'><a href="Module/Arch.html#each_arch-instance_method" title="Msf::Module::Arch#each_arch (method)">#each_arch</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Alert.html" title="Msf::Module::Alert (module)">Module::Alert</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Module/Alert.html#add_alert-instance_method" title="Msf::Module::Alert#add_alert (method)">#add_alert</a></span>, <span class='object_link'><a href="Module/Alert.html#add_error-instance_method" title="Msf::Module::Alert#add_error (method)">#add_error</a></span>, <span class='object_link'><a href="Module/Alert.html#add_info-instance_method" title="Msf::Module::Alert#add_info (method)">#add_info</a></span>, <span class='object_link'><a href="Module/Alert.html#add_warning-instance_method" title="Msf::Module::Alert#add_warning (method)">#add_warning</a></span>, <span class='object_link'><a href="Module/Alert.html#alert_user-instance_method" title="Msf::Module::Alert#alert_user (method)">#alert_user</a></span>, <span class='object_link'><a href="Module/Alert.html#errors-instance_method" title="Msf::Module::Alert#errors (method)">#errors</a></span>, <span class='object_link'><a href="Module/Alert.html#get_alerts-instance_method" title="Msf::Module::Alert#get_alerts (method)">#get_alerts</a></span>, <span class='object_link'><a href="Module/Alert.html#included-class_method" title="Msf::Module::Alert.included (method)">included</a></span>, <span class='object_link'><a href="Module/Alert.html#infos-instance_method" title="Msf::Module::Alert#infos (method)">#infos</a></span>, <span class='object_link'><a href="Module/Alert.html#is_usable%3F-instance_method" title="Msf::Module::Alert#is_usable? (method)">#is_usable?</a></span>, <span class='object_link'><a href="Module/Alert.html#warnings-instance_method" title="Msf::Module::Alert#warnings (method)">#warnings</a></span>, <span class='object_link'><a href="Module/Alert.html#without_prompt-instance_method" title="Msf::Module::Alert#without_prompt (method)">#without_prompt</a></span></p>
<div id="constructor_details" class="method_details_list">
<h2>Constructor Details</h2>
<div class="method_details first">
<h3 class="signature first" id="initialize-instance_method">
#<strong>initialize</strong>(info = {}) &#x21d2; <tt><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></tt>
</h3><div class="docstring">
<div class="discussion">
<p>Creates an instance of the exploit module. Mad skillz.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 249</span>
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_info'>info</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
<span class='comment'># Ghetto compat mirroring for payload compatibilities. This mirrors
</span> <span class='comment'>#
</span> <span class='comment'># Payload =&gt; Compat =&gt; xyz
</span> <span class='comment'>#
</span> <span class='comment'># to
</span> <span class='comment'>#
</span> <span class='comment'># Compat =&gt; Payload =&gt; xyz
</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Payload</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='kw'>and</span> <span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Payload</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Compat</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='rparen'>)</span>
<span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Compat</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='const'>Hash</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Compat</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Compat</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Payload</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='const'>Hash</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Compat</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Payload</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Compat</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Payload</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_update'>update</span><span class='lparen'>(</span><span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Payload</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Compat</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='comment'># Call the parent constructor after making any necessary modifications
</span> <span class='comment'># to the information hash.
</span> <span class='kw'>super</span><span class='lparen'>(</span><span class='id identifier rubyid_info'>info</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_info'>info</span><span class='period'>.</span><span class='id identifier rubyid_key?'>key?</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>DefaultTarget</span><span class='tstring_end'>&#39;</span></span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_default_target'>default_target</span> <span class='op'>=</span> <span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>DefaultTarget</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='kw'>else</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_default_target'>default_target</span> <span class='op'>=</span> <span class='int'>0</span>
<span class='comment'># Add an auto-target to the exploit if it doesn&#39;t have one
</span> <span class='kw'>if</span> <span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Targets</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Targets</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_count'>count</span> <span class='op'>&gt;</span> <span class='int'>1</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_has_auto_target?'>has_auto_target?</span><span class='lparen'>(</span><span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Targets</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='rparen'>)</span>
<span class='comment'># Finally, only add the target if there is a remote host option
</span> <span class='kw'>if</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:rhost</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:auto_targeted_index</span><span class='rparen'>)</span>
<span class='id identifier rubyid_auto'>auto</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Automatic</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='lbrace'>{</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>AutoGenerated</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span><span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Targets</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_default_target'>default_target</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='rbracket'>]</span>
<span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Targets</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_unshift'>unshift</span><span class='lparen'>(</span><span class='id identifier rubyid_auto'>auto</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>end</span>
<span class='kw'>end</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_targets'>targets</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Rex/Transformer.html" title="Rex::Transformer (class)">Transformer</a></span></span><span class='period'>.</span><span class='id identifier rubyid_transform'><span class='object_link'><a href="../Rex/Transformer.html#transform-class_method" title="Rex::Transformer.transform (method)">transform</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Targets</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='const'>Array</span><span class='comma'>,</span> <span class='lbracket'>[</span> <span class='const'><span class='object_link'><a href="Module/Target.html" title="Msf::Module::Target (class)">Target</a></span></span> <span class='rbracket'>]</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Targets</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_payload_info'>payload_info</span> <span class='op'>=</span> <span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Payload</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_successful'>successful</span> <span class='op'>=</span> <span class='kw'>false</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_session_count'>session_count</span> <span class='op'>=</span> <span class='int'>0</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_active_timeout'>active_timeout</span> <span class='op'>=</span> <span class='int'>120</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#None-constant" title="Msf::Module::Failure::None (constant)">None</a></span></span>
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Payload</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='kw'>and</span> <span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Payload</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>ActiveTimeout</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='rparen'>)</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_active_timeout'>active_timeout</span> <span class='op'>=</span> <span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Payload</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>ActiveTimeout</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
<span class='kw'>end</span>
<span class='comment'># Initialize exploit datastore with target information
</span> <span class='id identifier rubyid_import_target_defaults'>import_target_defaults</span>
<span class='comment'># All exploits can increase the delay when waiting for a session.
</span> <span class='comment'># However, this only applies to aggressive exploits.
</span> <span class='kw'>if</span> <span class='id identifier rubyid_aggressive?'>aggressive?</span>
<span class='id identifier rubyid_register_advanced_options'>register_advanced_options</span><span class='lparen'>(</span>
<span class='lbracket'>[</span>
<span class='const'><span class='object_link'><a href="OptInt.html" title="Msf::OptInt (class)">OptInt</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="OptBase.html#initialize-instance_method" title="Msf::OptBase#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>WfsDelay</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='lbracket'>[</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Additional delay in seconds to wait for a session</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='int'>2</span> <span class='rbracket'>]</span><span class='rparen'>)</span>
<span class='rbracket'>]</span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_register_advanced_options'>register_advanced_options</span><span class='lparen'>(</span>
<span class='lbracket'>[</span>
<span class='comment'># Allow all exploits to leverage context keyed encoding
</span> <span class='const'><span class='object_link'><a href="OptBool.html" title="Msf::OptBool (class)">OptBool</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="OptBool.html#initialize-instance_method" title="Msf::OptBool#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>EnableContextEncoding</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='lbracket'>[</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Use transient context when encoding payloads</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='kw'>false</span> <span class='rbracket'>]</span><span class='rparen'>)</span><span class='comma'>,</span>
<span class='const'><span class='object_link'><a href="OptPath.html" title="Msf::OptPath (class)">OptPath</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="OptBase.html#initialize-instance_method" title="Msf::OptBase#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>ContextInformationFile</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='lbracket'>[</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>The information file that contains context information</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='kw'>nil</span> <span class='rbracket'>]</span><span class='rparen'>)</span><span class='comma'>,</span>
<span class='comment'># Allow all exploits to disable their payload handlers
</span> <span class='const'><span class='object_link'><a href="OptBool.html" title="Msf::OptBool (class)">OptBool</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="OptBool.html#initialize-instance_method" title="Msf::OptBool#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>DisablePayloadHandler</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='lbracket'>[</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Disable the handler code for the selected payload</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='kw'>false</span> <span class='rbracket'>]</span><span class='rparen'>)</span>
<span class='rbracket'>]</span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
</div>
<div id="instance_attr_details" class="attr_details">
<h2>Instance Attribute Details</h2>
<span id="active_timeout=-instance_method"></span>
<div class="method_details first">
<h3 class="signature first" id="active_timeout-instance_method">
#<strong>active_timeout</strong> &#x21d2; <tt>Object</tt> <span class="extras">(protected)</span>
</h3><div class="docstring">
<div class="discussion">
<p>Maximum number of seconds for active handlers</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1557
1558
1559</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1557</span>
<span class='kw'>def</span> <span class='id identifier rubyid_active_timeout'>active_timeout</span>
<span class='ivar'>@active_timeout</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="default_target=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="default_target-instance_method">
#<strong>default_target</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>The default target.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1510
1511
1512</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1510</span>
<span class='kw'>def</span> <span class='id identifier rubyid_default_target'>default_target</span>
<span class='ivar'>@default_target</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="fail_detail=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="fail_detail-instance_method">
#<strong>fail_detail</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Detailed exception string indicating why the exploit was not successful</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1494
1495
1496</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1494</span>
<span class='kw'>def</span> <span class='id identifier rubyid_fail_detail'>fail_detail</span>
<span class='ivar'>@fail_detail</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="fail_reason=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="fail_reason-instance_method">
#<strong>fail_reason</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>The reason why the exploit was not successful (one of Msf::Module::Failure)</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1489
1490
1491</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1489</span>
<span class='kw'>def</span> <span class='id identifier rubyid_fail_reason'>fail_reason</span>
<span class='ivar'>@fail_reason</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="last_vuln_attempt=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="last_vuln_attempt-instance_method">
#<strong>last_vuln_attempt</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>The VulnAttempt object created during this run, or nil/false if none was recorded. Used to prevent duplicate attempts when report_failure is called later and to enrich the attempt with check code details.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1501
1502
1503</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1501</span>
<span class='kw'>def</span> <span class='id identifier rubyid_last_vuln_attempt'>last_vuln_attempt</span>
<span class='ivar'>@last_vuln_attempt</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="needs_cleanup=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="needs_cleanup-instance_method">
#<strong>needs_cleanup</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns the value of attribute needs_cleanup.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
244
245
246</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 244</span>
<span class='kw'>def</span> <span class='id identifier rubyid_needs_cleanup'>needs_cleanup</span>
<span class='ivar'>@needs_cleanup</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="payload=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="payload-instance_method">
#<strong>payload</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>The encoded payload instance. An instance of an EncodedPayload object.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1523
1524
1525</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1523</span>
<span class='kw'>def</span> <span class='id identifier rubyid_payload'>payload</span>
<span class='ivar'>@payload</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="payload_info=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="payload_info-instance_method">
#<strong>payload_info</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>The payload requirement hash.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1514
1515
1516</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1514</span>
<span class='kw'>def</span> <span class='id identifier rubyid_payload_info'>payload_info</span>
<span class='ivar'>@payload_info</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="payload_instance=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="payload_instance-instance_method">
#<strong>payload_instance</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>The active payload instance.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1518
1519
1520</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1518</span>
<span class='kw'>def</span> <span class='id identifier rubyid_payload_instance'>payload_instance</span>
<span class='ivar'>@payload_instance</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="session_count=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="session_count-instance_method">
#<strong>session_count</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>The number of active sessions created by this instance</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1528
1529
1530</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1528</span>
<span class='kw'>def</span> <span class='id identifier rubyid_session_count'>session_count</span>
<span class='ivar'>@session_count</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="successful=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="successful-instance_method">
#<strong>successful</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>The boolean indicating whether the exploit succeeded</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1533
1534
1535</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1533</span>
<span class='kw'>def</span> <span class='id identifier rubyid_successful'>successful</span>
<span class='ivar'>@successful</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="targets=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="targets-instance_method">
#<strong>targets</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>The list of targets.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1506
1507
1508</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1506</span>
<span class='kw'>def</span> <span class='id identifier rubyid_targets'>targets</span>
<span class='ivar'>@targets</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
</div>
<div id="class_method_details" class="method_details_list">
<h2>Class Method Details</h2>
<div class="method_details first">
<h3 class="signature first" id="mixins-class_method">
.<strong>mixins</strong> &#x21d2; <tt>Array</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns an array of all of the exploit mixins. Lame algorithm right now. We search the Msf::Exploit namespace for all modules that do not have any constants in them. In the future we can replace this with a better algorithm. Its just important that it returns an array of all of the mixin modules.</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>Array</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 212</span>
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_mixins'>mixins</span>
<span class='id identifier rubyid_mixins'>mixins</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
<span class='id identifier rubyid_wl'>wl</span> <span class='op'>=</span> <span class='lbracket'>[</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span> <span class='rbracket'>]</span>
<span class='id identifier rubyid_visited'>visited</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
<span class='kw'>until</span> <span class='id identifier rubyid_wl'>wl</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>0</span>
<span class='id identifier rubyid_wl'>wl</span><span class='period'>.</span><span class='id identifier rubyid_delete_if'>delete_if</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_mod'>mod</span><span class='op'>|</span>
<span class='id identifier rubyid_mod'>mod</span><span class='period'>.</span><span class='id identifier rubyid_constants'>constants</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_const'>const</span><span class='op'>|</span>
<span class='id identifier rubyid_child'>child</span> <span class='op'>=</span> <span class='id identifier rubyid_mod'>mod</span><span class='period'>.</span><span class='id identifier rubyid_const_get'>const_get</span><span class='lparen'>(</span><span class='id identifier rubyid_const'>const</span><span class='rparen'>)</span>
<span class='kw'>next</span> <span class='kw'>if</span> <span class='id identifier rubyid_child'>child</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>!~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^Msf::Exploit</span><span class='regexp_end'>/</span></span>
<span class='kw'>next</span> <span class='kw'>if</span> <span class='id identifier rubyid_visited'>visited</span><span class='lbracket'>[</span><span class='id identifier rubyid_child'>child</span><span class='rbracket'>]</span>
<span class='kw'>next</span> <span class='kw'>if</span> <span class='id identifier rubyid_child'>child</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Module</span><span class='rparen'>)</span> <span class='op'>==</span> <span class='kw'>false</span>
<span class='id identifier rubyid_visited'>visited</span><span class='lbracket'>[</span><span class='id identifier rubyid_child'>child</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='kw'>true</span>
<span class='kw'>if</span> <span class='id identifier rubyid_child'>child</span><span class='period'>.</span><span class='id identifier rubyid_constants'>constants</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>&gt;</span> <span class='int'>0</span>
<span class='id identifier rubyid_wl'>wl</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_child'>child</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_mixins'>mixins</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_child'>child</span>
<span class='kw'>end</span>
<span class='rbrace'>}</span>
<span class='kw'>true</span>
<span class='rbrace'>}</span>
<span class='kw'>end</span>
<span class='kw'>return</span> <span class='id identifier rubyid_mixins'>mixins</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="type-class_method">
.<strong>type</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns MODULE_EXPLOIT to indicate that this is an exploit module.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
592
593
594</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 592</span>
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span>
<span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Msf.html#MODULE_EXPLOIT-constant" title="Msf::MODULE_EXPLOIT (constant)">MODULE_EXPLOIT</a></span></span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
</div>
<div id="instance_method_details" class="method_details_list">
<h2>Instance Method Details</h2>
<div class="method_details first">
<h3 class="signature first" id="add_handler-instance_method">
#<strong>add_handler</strong>(opts = {}) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Allows the payload handler to spawn a new monitor</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
471
472
473
474
475</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 471</span>
<span class='kw'>def</span> <span class='id identifier rubyid_add_handler'>add_handler</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='op'>=</span><span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
<span class='kw'>return</span> <span class='kw'>if</span> <span class='kw'>not</span> <span class='id identifier rubyid_payload_instance'>payload_instance</span>
<span class='kw'>return</span> <span class='kw'>if</span> <span class='kw'>not</span> <span class='id identifier rubyid_handler_enabled?'>handler_enabled?</span>
<span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_add_handler'>add_handler</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="aggressive?-instance_method">
#<strong>aggressive?</strong> &#x21d2; <tt>Boolean</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns true if the exploit has an aggressive stance.</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>Boolean</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
620
621
622</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 620</span>
<span class='kw'>def</span> <span class='id identifier rubyid_aggressive?'>aggressive?</span>
<span class='id identifier rubyid_stance'>stance</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Exploit/Stance.html" title="Msf::Exploit::Stance (module)">Stance</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exploit/Stance.html#Aggressive-constant" title="Msf::Exploit::Stance::Aggressive (constant)">Aggressive</a></span></span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="autofilter-instance_method">
#<strong>autofilter</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Performs last-minute sanity checking of exploit parameters. This method is called during automated exploitation attempts and allows an exploit to filter bad targets, obtain more information, and choose better targets based on the available data. Returning anything that evaluates to “false” will cause this specific exploit attempt to be skipped. This method can and will change datastore values and may interact with the backend database.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
353
354
355</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 353</span>
<span class='kw'>def</span> <span class='id identifier rubyid_autofilter'>autofilter</span>
<span class='kw'>true</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="autofilter_ports-instance_method">
#<strong>autofilter_ports</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Provides a list of ports that can be used for matching this module against target systems.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
361
362
363</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 361</span>
<span class='kw'>def</span> <span class='id identifier rubyid_autofilter_ports'>autofilter_ports</span>
<span class='ivar'>@autofilter_ports</span> <span class='op'>||</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="autofilter_services-instance_method">
#<strong>autofilter_services</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Provides a list of services that can be used for matching this module against target systems.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
369
370
371</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 369</span>
<span class='kw'>def</span> <span class='id identifier rubyid_autofilter_services'>autofilter_services</span>
<span class='ivar'>@autofilter_services</span> <span class='op'>||</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="cleanup-instance_method">
#<strong>cleanup</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Performs any cleanup that may be necessary, such as disconnecting connections and any other such fun things. If a payload is active then its handler cleanup routines are called as well.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
423
424
425
426
427
428</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 423</span>
<span class='kw'>def</span> <span class='id identifier rubyid_cleanup'>cleanup</span>
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_payload_instance'>payload_instance</span> <span class='kw'>and</span> <span class='id identifier rubyid_handler_enabled?'>handler_enabled?</span><span class='rparen'>)</span>
<span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_cleanup_handler'>cleanup_handler</span>
<span class='kw'>end</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_abort_sockets'>abort_sockets</span> <span class='kw'>if</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:abort_sockets</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="compatible_encoders-instance_method">
#<strong>compatible_encoders</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns a list of compatible encoders based on architecture</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
755
756
757
758
759
760
761
762
763
764
765
766</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 755</span>
<span class='kw'>def</span> <span class='id identifier rubyid_compatible_encoders'>compatible_encoders</span>
<span class='id identifier rubyid_encoders'>encoders</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
<span class='id identifier rubyid_c_platform'>c_platform</span><span class='comma'>,</span> <span class='id identifier rubyid_c_arch'>c_arch</span> <span class='op'>=</span> <span class='id identifier rubyid_normalize_platform_arch'>normalize_platform_arch</span>
<span class='id identifier rubyid_framework'>framework</span><span class='period'>.</span><span class='id identifier rubyid_encoders'>encoders</span><span class='period'>.</span><span class='id identifier rubyid_each_module_ranked'>each_module_ranked</span><span class='lparen'>(</span>
<span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Arch</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_c_arch'>c_arch</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Platform</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_c_platform'>c_platform</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_mod'>mod</span><span class='op'>|</span>
<span class='id identifier rubyid_encoders'>encoders</span> <span class='op'>&lt;&lt;</span> <span class='lbracket'>[</span> <span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_mod'>mod</span> <span class='rbracket'>]</span>
<span class='rbrace'>}</span>
<span class='kw'>return</span> <span class='id identifier rubyid_encoders'>encoders</span><span class='semicolon'>;</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="compatible_payloads-instance_method">
#<strong>compatible_payloads</strong>(excluded_platforms: [], excluded_archs: []) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns a list of compatible payloads based on platform, architecture, and size requirements.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 731</span>
<span class='kw'>def</span> <span class='id identifier rubyid_compatible_payloads'>compatible_payloads</span><span class='lparen'>(</span><span class='label'>excluded_platforms:</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='label'>excluded_archs:</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span>
<span class='id identifier rubyid_payloads'>payloads</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
<span class='id identifier rubyid_c_platform'>c_platform</span><span class='comma'>,</span> <span class='id identifier rubyid_c_arch'>c_arch</span> <span class='op'>=</span> <span class='id identifier rubyid_normalize_platform_arch'>normalize_platform_arch</span>
<span class='comment'># The &quot;All&quot; platform name represents generic payloads
</span> <span class='id identifier rubyid_results'>results</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Modules.html" title="Msf::Modules (module)">Modules</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Modules/Metadata.html" title="Msf::Modules::Metadata (module)">Metadata</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Modules/Metadata/Cache.html" title="Msf::Modules::Metadata::Cache (class)">Cache</a></span></span><span class='period'>.</span><span class='id identifier rubyid_instance'>instance</span><span class='period'>.</span><span class='id identifier rubyid_find'>find</span><span class='lparen'>(</span>
<span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>type</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>payload</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rbracket'>]</span><span class='comma'>,</span>
<span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>platform</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='lbracket'>[</span><span class='op'>*</span><span class='id identifier rubyid_c_platform'>c_platform</span><span class='period'>.</span><span class='id identifier rubyid_names'>names</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>All</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_excluded_platforms'>excluded_platforms</span><span class='rbracket'>]</span><span class='comma'>,</span>
<span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>arch</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='id identifier rubyid_c_arch'>c_arch</span><span class='comma'>,</span> <span class='id identifier rubyid_excluded_archs'>excluded_archs</span><span class='rbracket'>]</span>
<span class='rparen'>)</span>
<span class='id identifier rubyid_results'>results</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_res'>res</span><span class='op'>|</span>
<span class='kw'>if</span> <span class='id identifier rubyid_is_payload_compatible?'>is_payload_compatible?</span><span class='lparen'>(</span><span class='id identifier rubyid_res'>res</span><span class='period'>.</span><span class='id identifier rubyid_ref_name'>ref_name</span><span class='rparen'>)</span>
<span class='id identifier rubyid_payloads'>payloads</span> <span class='op'>&lt;&lt;</span> <span class='lbracket'>[</span><span class='id identifier rubyid_res'>res</span><span class='period'>.</span><span class='id identifier rubyid_ref_name'>ref_name</span><span class='comma'>,</span> <span class='id identifier rubyid_framework'>framework</span><span class='period'>.</span><span class='id identifier rubyid_payloads'>payloads</span><span class='lbracket'>[</span><span class='id identifier rubyid_res'>res</span><span class='period'>.</span><span class='id identifier rubyid_ref_name'>ref_name</span><span class='rbracket'>]</span><span class='rbracket'>]</span>
<span class='kw'>end</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_payloads'>payloads</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="define_context_encoding_reqs-instance_method">
#<strong>define_context_encoding_reqs</strong>(reqs) &#x21d2; <tt>Object</tt> <span class="extras">(protected)</span>
</h3><div class="docstring">
<div class="discussion">
<p>Gets the memory map file and other context information that is required when wanting to support context keyed encoding</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1594</span>
<span class='kw'>def</span> <span class='id identifier rubyid_define_context_encoding_reqs'>define_context_encoding_reqs</span><span class='lparen'>(</span><span class='id identifier rubyid_reqs'>reqs</span><span class='rparen'>)</span>
<span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>EnableContextEncoding</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='comment'># At present, we don&#39;t support any automatic methods of obtaining
</span> <span class='comment'># context information. In the future, we might support obtaining
</span> <span class='comment'># temporal information remotely.
</span>
<span class='comment'># Pass along the information specified in our exploit datastore as
</span> <span class='comment'># encoder options
</span> <span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>EncoderOptions</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span> <span class='kw'>if</span> <span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>EncoderOptions</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>EncoderOptions</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>EnableContextEncoding</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>EnableContextEncoding</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>EncoderOptions</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>ContextInformationFile</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>ContextInformationFile</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="encode_begin-instance_method">
#<strong>encode_begin</strong>(real_payload, reqs) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Called prior to encoding a payload.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
570
571</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 570</span>
<span class='kw'>def</span> <span class='id identifier rubyid_encode_begin'>encode_begin</span><span class='lparen'>(</span><span class='id identifier rubyid_real_payload'>real_payload</span><span class='comma'>,</span> <span class='id identifier rubyid_reqs'>reqs</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="encode_end-instance_method">
#<strong>encode_end</strong>(real_payload, reqs, encoded) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Called after an encoded payload has been generated. This gives exploits or mixins a chance to alter the encoded payload.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
577
578
579</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 577</span>
<span class='kw'>def</span> <span class='id identifier rubyid_encode_end'>encode_end</span><span class='lparen'>(</span><span class='id identifier rubyid_real_payload'>real_payload</span><span class='comma'>,</span> <span class='id identifier rubyid_reqs'>reqs</span><span class='comma'>,</span> <span class='id identifier rubyid_encoded'>encoded</span><span class='rparen'>)</span>
<span class='id identifier rubyid_encoded'>encoded</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="encode_shellcode_stub-instance_method">
#<strong>encode_shellcode_stub</strong>(code, badchars = payload_badchars) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Allows arbitrary shellcode to be encoded from within an exploit</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 452</span>
<span class='kw'>def</span> <span class='id identifier rubyid_encode_shellcode_stub'>encode_shellcode_stub</span><span class='lparen'>(</span><span class='id identifier rubyid_code'>code</span><span class='comma'>,</span> <span class='id identifier rubyid_badchars'>badchars</span><span class='op'>=</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
<span class='id identifier rubyid_platform'>platform</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span>
<span class='kw'>if</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='rparen'>)</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_compatible_encoders'>compatible_encoders</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_mod'>mod</span><span class='op'>|</span>
<span class='kw'>begin</span>
<span class='id identifier rubyid_enc'>enc</span> <span class='op'>=</span> <span class='id identifier rubyid_framework'>framework</span><span class='period'>.</span><span class='id identifier rubyid_encoders'>encoders</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span>
<span class='id identifier rubyid_raw'>raw</span> <span class='op'>=</span> <span class='id identifier rubyid_enc'>enc</span><span class='period'>.</span><span class='id identifier rubyid_encode'>encode</span><span class='lparen'>(</span><span class='id identifier rubyid_code'>code</span><span class='comma'>,</span> <span class='id identifier rubyid_badchars'>badchars</span><span class='comma'>,</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_platform'>platform</span><span class='rparen'>)</span>
<span class='kw'>return</span> <span class='id identifier rubyid_raw'>raw</span> <span class='kw'>if</span> <span class='id identifier rubyid_raw'>raw</span>
<span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>Exception</span>
<span class='kw'>end</span>
<span class='kw'>end</span>
<span class='kw'>nil</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="exploit-instance_method">
#<strong>exploit</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Kicks off the actual exploit. Prior to this call, the framework will have validated the data store using the options associated with this exploit module. It will also pre-generate the desired payload, though exploits can re-generate the payload if necessary.</p>
<p>This method is designed to be overridden by exploit modules.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
341
342</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 341</span>
<span class='kw'>def</span> <span class='id identifier rubyid_exploit'>exploit</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="exploit_type-instance_method">
#<strong>exploit_type</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>If we dont know the exploit type, then I guess its omnipresent!</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
606
607
608</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 606</span>
<span class='kw'>def</span> <span class='id identifier rubyid_exploit_type'>exploit_type</span>
<span class='const'><span class='object_link'><a href="Exploit/Type.html" title="Msf::Exploit::Type (module)">Type</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exploit/Type.html#Omni-constant" title="Msf::Exploit::Type::Omni (constant)">Omni</a></span></span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="fail_with-instance_method">
#<strong>fail_with</strong>(reason, msg = nil) &#x21d2; <tt>void</tt>
</h3><div class="docstring">
<div class="discussion">
<p class="note returns_void">This method returns an undefined value.</p>
<p>Raises a Msf::Exploit::Failed exception. It overrides the fail_with method in lib/msf/core/module.rb</p>
</div>
</div>
<div class="tags">
<div class="examples">
<h4 class="tag_title">Examples:</h4>
<pre class="example code"><code><span class='id identifier rubyid_fail_with'>fail_with</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module.html" title="Msf::Module (class)">Module</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#NoAccess-constant" title="Msf::Module::Failure::NoAccess (constant)">NoAccess</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Unable to login to upload payload</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span></code></pre>
</div>
<p class="tag_title">Parameters:</p>
<ul class="param">
<li>
<span class='name'>reason</span>
<span class='type'>(<tt>String</tt>)</span>
&mdash;
<div class='inline'>
<p>A constant from Msf::Module::Failure. If the reason does not come from there, then it will default to Msf::Module::Failure::Unknown.</p>
</div>
</li>
<li>
<span class='name'>msg</span>
<span class='type'>(<tt>String</tt>)</span>
<em class="default">(defaults to: <tt>nil</tt>)</em>
&mdash;
<div class='inline'>
<p>(Optional) A message about the failure.</p>
</div>
</li>
</ul>
<p class="tag_title">Raises:</p>
<ul class="raise">
<li>
<span class='type'>(<tt><span class='object_link'><a href="Exploit/Failed.html" title="Msf::Exploit::Failed (class)">Msf::Exploit::Failed</a></span></tt>)</span>
&mdash;
<div class='inline'>
<p>A custom Msf::Exploit::Failed exception.</p>
</div>
</li>
</ul>
<p class="tag_title">See Also:</p>
<ul class="see">
<li><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Module::Failure</a></span></li>
<li><span class='object_link'><a href="Module.html#fail_with-instance_method" title="Msf::Module#fail_with (method)">Module#fail_with</a></span></li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1348</span>
<span class='kw'>def</span> <span class='id identifier rubyid_fail_with'>fail_with</span><span class='lparen'>(</span><span class='id identifier rubyid_reason'>reason</span><span class='comma'>,</span><span class='id identifier rubyid_msg'>msg</span><span class='op'>=</span><span class='kw'>nil</span><span class='rparen'>)</span>
<span class='comment'># The reason being registered here will be used later on, so it&#39;s important we don&#39;t actually
</span> <span class='comment'># provide a made-up one.
</span> <span class='id identifier rubyid_allowed_values'>allowed_values</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module.html" title="Msf::Module (class)">Module</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='period'>.</span><span class='id identifier rubyid_constants'>constants</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_e'>e</span><span class='op'>|</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module.html" title="Msf::Module (class)">Module</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='period'>.</span><span class='id identifier rubyid_const_get'>const_get</span><span class='lparen'>(</span><span class='id identifier rubyid_e'>e</span><span class='rparen'>)</span><span class='rbrace'>}</span>
<span class='kw'>if</span> <span class='id identifier rubyid_allowed_values'>allowed_values</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_reason'>reason</span><span class='rparen'>)</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='id identifier rubyid_reason'>reason</span>
<span class='kw'>else</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module.html" title="Msf::Module (class)">Module</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#Unknown-constant" title="Msf::Module::Failure::Unknown (constant)">Unknown</a></span></span>
<span class='kw'>end</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_detail'>fail_detail</span> <span class='op'>=</span> <span class='id identifier rubyid_msg'>msg</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exploit/Failed.html" title="Msf::Exploit::Failed (class)">Failed</a></span></span><span class='comma'>,</span> <span class='lparen'>(</span><span class='id identifier rubyid_msg'>msg</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>No failure message given</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="generate_payload-instance_method">
#<strong>generate_payload</strong>(pinst = nil) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Generates the encoded version of the supplied payload using the payload requirements specific to this exploit. The encoded instance is returned to the caller. This method is exposed in the manner that it is such that passive exploits and re-generate an encoded payload on the fly rather than having to use the pre-generated one.</p>
<p>The return value is an EncodedPayload instance.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
439
440
441
442
443
444
445
446
447</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 439</span>
<span class='kw'>def</span> <span class='id identifier rubyid_generate_payload'>generate_payload</span><span class='lparen'>(</span><span class='id identifier rubyid_pinst'>pinst</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='comment'># Set the encoded payload to the result of the encoding process
</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_payload'>payload</span> <span class='op'>=</span> <span class='id identifier rubyid_generate_single_payload'>generate_single_payload</span><span class='lparen'>(</span><span class='id identifier rubyid_pinst'>pinst</span><span class='rparen'>)</span>
<span class='comment'># Save the payload instance
</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_payload_instance'>payload_instance</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_pinst'>pinst</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_pinst'>pinst</span> <span class='op'>:</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_payload_instance'>payload_instance</span>
<span class='kw'>return</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_payload'>payload</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="generate_single_payload-instance_method">
#<strong>generate_single_payload</strong>(pinst = nil, platform = nil, arch = nil, explicit_target = nil) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>This method generates a non-cached payload which is typically useful for passive exploits that will have more than one client.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 481</span>
<span class='kw'>def</span> <span class='id identifier rubyid_generate_single_payload'>generate_single_payload</span><span class='lparen'>(</span><span class='id identifier rubyid_pinst'>pinst</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_platform'>platform</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_arch'>arch</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>==</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="MissingTargetError.html" title="Msf::MissingTargetError (class)">MissingTargetError</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>No target has been specified.</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
<span class='id identifier rubyid_caller'>caller</span>
<span class='kw'>end</span>
<span class='comment'># If a payload instance was supplied, use it, otherwise
</span> <span class='comment'># use the active payload instance
</span> <span class='id identifier rubyid_real_payload'>real_payload</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_pinst'>pinst</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_pinst'>pinst</span> <span class='op'>:</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_payload_instance'>payload_instance</span>
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_real_payload'>real_payload</span> <span class='op'>==</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="MissingPayloadError.html" title="Msf::MissingPayloadError (class)">MissingPayloadError</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>No payload has been selected.</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
<span class='id identifier rubyid_caller'>caller</span>
<span class='kw'>end</span>
<span class='comment'># If this is a generic payload, then we should specify the platform
</span> <span class='comment'># and architecture so that it knows how to pass things on.
</span> <span class='kw'>if</span> <span class='id identifier rubyid_real_payload'>real_payload</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Payload.html" title="Msf::Payload (class)">Payload</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Payload/Generic.html" title="Msf::Payload::Generic (module)">Generic</a></span></span><span class='rparen'>)</span>
<span class='comment'># Convert the architecture specified into an array.
</span> <span class='kw'>if</span> <span class='id identifier rubyid_arch'>arch</span> <span class='kw'>and</span> <span class='id identifier rubyid_arch'>arch</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span>
<span class='id identifier rubyid_arch'>arch</span> <span class='op'>=</span> <span class='lbracket'>[</span> <span class='id identifier rubyid_arch'>arch</span> <span class='rbracket'>]</span>
<span class='kw'>end</span>
<span class='comment'># Define the explicit platform and architecture information only if
</span> <span class='comment'># it&#39;s been specified.
</span> <span class='kw'>if</span> <span class='id identifier rubyid_platform'>platform</span>
<span class='id identifier rubyid_real_payload'>real_payload</span><span class='period'>.</span><span class='id identifier rubyid_explicit_platform'>explicit_platform</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module.html" title="Msf::Module (class)">Module</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/PlatformList.html" title="Msf::Module::PlatformList (class)">PlatformList</a></span></span><span class='period'>.</span><span class='id identifier rubyid_transform'><span class='object_link'><a href="Module/PlatformList.html#transform-class_method" title="Msf::Module::PlatformList.transform (method)">transform</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_platform'>platform</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>if</span> <span class='id identifier rubyid_arch'>arch</span>
<span class='id identifier rubyid_real_payload'>real_payload</span><span class='period'>.</span><span class='id identifier rubyid_explicit_arch'>explicit_arch</span> <span class='op'>=</span> <span class='id identifier rubyid_arch'>arch</span>
<span class='kw'>end</span>
<span class='comment'># Force it to reset so that it will find updated information.
</span> <span class='id identifier rubyid_real_payload'>real_payload</span><span class='period'>.</span><span class='id identifier rubyid_reset'>reset</span>
<span class='kw'>end</span>
<span class='comment'># Duplicate the exploit payload requirements
</span> <span class='id identifier rubyid_reqs'>reqs</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_payload_info'>payload_info</span><span class='period'>.</span><span class='id identifier rubyid_dup'>dup</span>
<span class='comment'># Pass save register requirements to the NOP generator
</span> <span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Space</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_space'>payload_space</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>SaveRegisters</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_nop_save_registers'>nop_save_registers</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Prepend</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_prepend'>payload_prepend</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>PrependEncoder</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_prepend_encoder'>payload_prepend_encoder</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>BadChars</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Append</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_append'>payload_append</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>AppendEncoder</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_append_encoder'>payload_append_encoder</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>DisableNops</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_disable_nops'>payload_disable_nops</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>MaxNops</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_max_nops'>payload_max_nops</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>MinNops</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_min_nops'>payload_min_nops</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Encoder</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>ENCODER</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='id identifier rubyid_payload_encoder'>payload_encoder</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Nop</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>NOP</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='id identifier rubyid_payload_nop'>payload_nop</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>EncoderType</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_encoder_type'>payload_encoder_type</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>EncoderOptions</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_encoder_options'>payload_encoder_options</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>ExtendedOptions</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_extended_options'>payload_extended_options</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Exploit</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='kw'>self</span>
<span class='comment'># Pass along the encoder don&#39;t fall through flag
</span> <span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>EncoderDontFallThrough</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>EncoderDontFallThrough</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='comment'># Incorporate any context encoding requirements that are needed
</span> <span class='id identifier rubyid_define_context_encoding_reqs'>define_context_encoding_reqs</span><span class='lparen'>(</span><span class='id identifier rubyid_reqs'>reqs</span><span class='rparen'>)</span>
<span class='comment'># Call the encode begin routine.
</span> <span class='id identifier rubyid_encode_begin'>encode_begin</span><span class='lparen'>(</span><span class='id identifier rubyid_real_payload'>real_payload</span><span class='comma'>,</span> <span class='id identifier rubyid_reqs'>reqs</span><span class='rparen'>)</span>
<span class='comment'># Generate the encoded payload.
</span> <span class='id identifier rubyid_encoded'>encoded</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="EncodedPayload.html" title="Msf::EncodedPayload (class)">EncodedPayload</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="EncodedPayload.html#create-class_method" title="Msf::EncodedPayload.create (method)">create</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_real_payload'>real_payload</span><span class='comma'>,</span> <span class='id identifier rubyid_reqs'>reqs</span><span class='rparen'>)</span>
<span class='comment'># Call the encode end routine which is expected to return the actual
</span> <span class='comment'># encoded payload instance.
</span> <span class='kw'>return</span> <span class='id identifier rubyid_encode_end'>encode_end</span><span class='lparen'>(</span><span class='id identifier rubyid_real_payload'>real_payload</span><span class='comma'>,</span> <span class='id identifier rubyid_reqs'>reqs</span><span class='comma'>,</span> <span class='id identifier rubyid_encoded'>encoded</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="handle_exception-instance_method">
#<strong>handle_exception</strong>(e) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Handle the exception</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1379</span>
<span class='kw'>def</span> <span class='id identifier rubyid_handle_exception'>handle_exception</span> <span class='id identifier rubyid_e'>e</span>
<span class='id identifier rubyid_msg'>msg</span> <span class='op'>=</span> <span class='id identifier rubyid_setup_fail_detail_from_exception'>setup_fail_detail_from_exception</span> <span class='id identifier rubyid_e'>e</span>
<span class='kw'>case</span> <span class='id identifier rubyid_e'>e</span>
<span class='kw'>when</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exploit/Complete.html" title="Msf::Exploit::Complete (class)">Complete</a></span></span>
<span class='comment'># Nothing to show in this case
</span> <span class='kw'>return</span>
<span class='kw'>when</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="OptionValidateError.html" title="Msf::OptionValidateError (class)">OptionValidateError</a></span></span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#BadConfig-constant" title="Msf::Module::Failure::BadConfig (constant)">BadConfig</a></span></span>
<span class='op'>::</span><span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Ui.html" title="Msf::Ui (module)">Ui</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Ui/Formatter.html" title="Msf::Ui::Formatter (module)">Formatter</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Ui/Formatter/OptionValidateError.html" title="Msf::Ui::Formatter::OptionValidateError (class)">OptionValidateError</a></span></span><span class='period'>.</span><span class='id identifier rubyid_print_error'><span class='object_link'><a href="Ui/Formatter/OptionValidateError.html#print_error-class_method" title="Msf::Ui::Formatter::OptionValidateError.print_error (method)">print_error</a></span></span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='id identifier rubyid_e'>e</span><span class='rparen'>)</span>
<span class='id identifier rubyid_elog'><span class='object_link'><a href="../top-level-namespace.html#elog-instance_method" title="#elog (method)">elog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Exploit failed (</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_refname'>refname</span><span class='embexpr_end'>}</span><span class='tstring_content'>): </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>error:</span> <span class='id identifier rubyid_e'>e</span><span class='rparen'>)</span>
<span class='kw'>when</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exploit/Failed.html" title="Msf::Exploit::Failed (class)">Failed</a></span></span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Exploit aborted due to failure: </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span><span class='embexpr_end'>}</span><span class='tstring_content'>: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='comment'># The caller should have already set self.fail_reason
</span> <span class='kw'>if</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#None-constant" title="Msf::Module::Failure::None (constant)">None</a></span></span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#Unknown-constant" title="Msf::Module::Failure::Unknown (constant)">Unknown</a></span></span>
<span class='kw'>end</span>
<span class='kw'>when</span> <span class='const'><span class='object_link'><a href="../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'>ConnectionError</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#Unreachable-constant" title="Msf::Module::Failure::Unreachable (constant)">Unreachable</a></span></span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Exploit failed [</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span><span class='embexpr_end'>}</span><span class='tstring_content'>]: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_elog'><span class='object_link'><a href="../top-level-namespace.html#elog-instance_method" title="#elog (method)">elog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Exploit failed (</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_refname'>refname</span><span class='embexpr_end'>}</span><span class='tstring_content'>): </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>error:</span> <span class='id identifier rubyid_e'>e</span><span class='rparen'>)</span>
<span class='kw'>when</span> <span class='const'><span class='object_link'><a href="../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'>BindFailed</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#BadConfig-constant" title="Msf::Module::Failure::BadConfig (constant)">BadConfig</a></span></span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Exploit failed [</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span><span class='embexpr_end'>}</span><span class='tstring_content'>]: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_elog'><span class='object_link'><a href="../top-level-namespace.html#elog-instance_method" title="#elog (method)">elog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Exploit failed (</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_refname'>refname</span><span class='embexpr_end'>}</span><span class='tstring_content'>): </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>error:</span> <span class='id identifier rubyid_e'>e</span><span class='rparen'>)</span>
<span class='kw'>when</span> <span class='const'>Timeout</span><span class='op'>::</span><span class='const'>Error</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#TimeoutExpired-constant" title="Msf::Module::Failure::TimeoutExpired (constant)">TimeoutExpired</a></span></span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Exploit failed [</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span><span class='embexpr_end'>}</span><span class='tstring_content'>]: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_elog'><span class='object_link'><a href="../top-level-namespace.html#elog-instance_method" title="#elog (method)">elog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Exploit failed (</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_refname'>refname</span><span class='embexpr_end'>}</span><span class='tstring_content'>): </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>error:</span> <span class='id identifier rubyid_e'>e</span><span class='rparen'>)</span>
<span class='kw'>when</span> <span class='op'>::</span><span class='const'>Interrupt</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#UserInterrupt-constant" title="Msf::Module::Failure::UserInterrupt (constant)">UserInterrupt</a></span></span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Exploit failed [</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span><span class='embexpr_end'>}</span><span class='tstring_content'>]: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_elog'><span class='object_link'><a href="../top-level-namespace.html#elog-instance_method" title="#elog (method)">elog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Exploit failed (</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_refname'>refname</span><span class='embexpr_end'>}</span><span class='tstring_content'>): </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>error:</span> <span class='id identifier rubyid_e'>e</span><span class='rparen'>)</span>
<span class='kw'>else</span>
<span class='comment'># Compare as a string since not all error classes may be loaded
</span> <span class='kw'>case</span> <span class='id identifier rubyid_msg'>msg</span>
<span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>access.denied|Login Failed</span><span class='regexp_end'>/i</span></span> <span class='comment'># Covers SMB as well as some generic errors
</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#NoAccess-constant" title="Msf::Module::Failure::NoAccess (constant)">NoAccess</a></span></span>
<span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>connection reset</span><span class='regexp_end'>/i</span></span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#Disconnected-constant" title="Msf::Module::Failure::Disconnected (constant)">Disconnected</a></span></span>
<span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>connection timed out|SSL_connect|unreachable|connection was refused</span><span class='regexp_end'>/i</span></span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#Unreachable-constant" title="Msf::Module::Failure::Unreachable (constant)">Unreachable</a></span></span>
<span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>unable.*target</span><span class='regexp_end'>/i</span></span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#NoTarget-constant" title="Msf::Module::Failure::NoTarget (constant)">NoTarget</a></span></span>
<span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>execution expired</span><span class='regexp_end'>/i</span></span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#TimeoutExpired-constant" title="Msf::Module::Failure::TimeoutExpired (constant)">TimeoutExpired</a></span></span>
<span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(doesn.t|not).*vulnerable|may.*patched</span><span class='regexp_end'>/i</span></span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#NotVulnerable-constant" title="Msf::Module::Failure::NotVulnerable (constant)">NotVulnerable</a></span></span>
<span class='kw'>end</span>
<span class='comment'># The caller should have already set self.fail_reason
</span> <span class='kw'>if</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#None-constant" title="Msf::Module::Failure::None (constant)">None</a></span></span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#Unknown-constant" title="Msf::Module::Failure::Unknown (constant)">Unknown</a></span></span>
<span class='kw'>end</span>
<span class='kw'>if</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#Unknown-constant" title="Msf::Module::Failure::Unknown (constant)">Unknown</a></span></span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Exploit failed: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>else</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Exploit failed [</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span><span class='embexpr_end'>}</span><span class='tstring_content'>]: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_elog'><span class='object_link'><a href="../top-level-namespace.html#elog-instance_method" title="#elog (method)">elog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Exploit failed (</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_refname'>refname</span><span class='embexpr_end'>}</span><span class='tstring_content'>): </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>error:</span> <span class='id identifier rubyid_e'>e</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='comment'># Record the error to various places
</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_framework'>framework</span><span class='period'>.</span><span class='id identifier rubyid_events'>events</span><span class='period'>.</span><span class='id identifier rubyid_on_module_error'>on_module_error</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='id identifier rubyid_msg'>msg</span><span class='rparen'>)</span>
<span class='comment'># Report the failure (and attempt) in the database
</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_report_failure'>report_failure</span>
<span class='comment'># Interrupt any session waiters in the handler
</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_interrupt_handler'>interrupt_handler</span>
<span class='kw'>return</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="handler-instance_method">
#<strong>handler</strong>(*args) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Passes the connection to the associated payload handler to see if the exploit succeeded and a connection has been established. The return value can be one of the Handler::constants.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1286
1287
1288
1289
1290</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1286</span>
<span class='kw'>def</span> <span class='id identifier rubyid_handler'>handler</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_payload_instance'>payload_instance</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_handler_enabled?'>handler_enabled?</span>
<span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_handler'>handler</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="handler_bind?-instance_method">
#<strong>handler_bind?</strong> &#x21d2; <tt>Boolean</tt>
</h3><div class="docstring">
<div class="discussion">
<p>If the payload uses a bind handler</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>Boolean</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1271
1272
1273</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1271</span>
<span class='kw'>def</span> <span class='id identifier rubyid_handler_bind?'>handler_bind?</span>
<span class='id identifier rubyid_payload_instance'>payload_instance</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_connection_type'>connection_type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>bind</span><span class='tstring_end'>&#39;</span></span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="handler_enabled?-instance_method">
#<strong>handler_enabled?</strong> &#x21d2; <tt>Boolean</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Allow the user to disable the payload handler</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>Boolean</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1264
1265
1266</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1264</span>
<span class='kw'>def</span> <span class='id identifier rubyid_handler_enabled?'>handler_enabled?</span>
<span class='op'>!</span><span class='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>DisablePayloadHandler</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="has_auto_target?-instance_method">
#<strong>has_auto_target?</strong>(targets = []) &#x21d2; <tt>Boolean</tt>
</h3><div class="docstring">
<div class="discussion">
</div>
</div>
<div class="tags">
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>Boolean</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
315
316
317
318
319
320
321</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 315</span>
<span class='kw'>def</span> <span class='id identifier rubyid_has_auto_target?'>has_auto_target?</span><span class='lparen'>(</span><span class='id identifier rubyid_targets'>targets</span><span class='op'>=</span><span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span>
<span class='id identifier rubyid_target_names'>target_names</span> <span class='op'>=</span> <span class='id identifier rubyid_targets'>targets</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_target'>target</span><span class='op'>|</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='rbrace'>}</span>
<span class='id identifier rubyid_target_names'>target_names</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_target'>target</span><span class='op'>|</span>
<span class='kw'>return</span> <span class='kw'>true</span> <span class='kw'>if</span> <span class='id identifier rubyid_target'>target</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>Automatic</span><span class='regexp_end'>/</span></span>
<span class='kw'>end</span>
<span class='kw'>return</span> <span class='kw'>false</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="init_compat-instance_method">
#<strong>init_compat</strong> &#x21d2; <tt>Object</tt> <span class="extras">(protected)</span>
</h3><div class="docstring">
<div class="discussion">
<p>Overrides the base class method and serves to initialize default compatibilities for exploits</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1569</span>
<span class='kw'>def</span> <span class='id identifier rubyid_init_compat'>init_compat</span>
<span class='kw'>super</span>
<span class='comment'>#
</span> <span class='comment'># Merge in payload compatible defaults
</span> <span class='comment'>#
</span> <span class='id identifier rubyid_p'>p</span> <span class='op'>=</span> <span class='id identifier rubyid_module_info'>module_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Compat</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Payload</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='const'><span class='object_link'><a href="Exploit/CompatDefaults.html" title="Msf::Exploit::CompatDefaults (module)">CompatDefaults</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exploit/CompatDefaults.html#Payload-constant" title="Msf::Exploit::CompatDefaults::Payload (constant)">Payload</a></span></span><span class='period'>.</span><span class='id identifier rubyid_each_pair'>each_pair</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_k'>k</span><span class='comma'>,</span><span class='id identifier rubyid_v'>v</span><span class='op'>|</span>
<span class='lparen'>(</span><span class='id identifier rubyid_p'>p</span><span class='lbracket'>[</span><span class='id identifier rubyid_k'>k</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_p'>p</span><span class='lbracket'>[</span><span class='id identifier rubyid_k'>k</span><span class='rbracket'>]</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_v'>v</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span> <span class='op'>:</span> <span class='id identifier rubyid_p'>p</span><span class='lbracket'>[</span><span class='id identifier rubyid_k'>k</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_v'>v</span>
<span class='rbrace'>}</span>
<span class='comment'>#
</span> <span class='comment'># Set the default save registers if none have been explicitly
</span> <span class='comment'># specified.
</span> <span class='comment'>#
</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_module_info'>module_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>SaveRegisters</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='id identifier rubyid_module_info'>module_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>SaveRegisters</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='lbracket'>[</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>esp</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>ebp</span><span class='tstring_end'>&#39;</span></span> <span class='rbracket'>]</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="interrupt_handler-instance_method">
#<strong>interrupt_handler</strong> &#x21d2; <tt>Object</tt>
</h3><table class="source_code">
<tr>
<td>
<pre class="lines">
1292
1293
1294
1295
1296</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1292</span>
<span class='kw'>def</span> <span class='id identifier rubyid_interrupt_handler'>interrupt_handler</span>
<span class='kw'>if</span> <span class='id identifier rubyid_payload_instance'>payload_instance</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_handler_enabled?'>handler_enabled?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:interrupt_wait_for_session</span><span class='rparen'>)</span>
<span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_interrupt_wait_for_session'>interrupt_wait_for_session</span><span class='lparen'>(</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="is_payload_compatible?-instance_method">
#<strong>is_payload_compatible?</strong>(name) &#x21d2; <tt>Boolean</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns whether the requested payload is compatible with the module.</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Parameters:</p>
<ul class="param">
<li>
<span class='name'>name</span>
<span class='type'>(<tt>String</tt>)</span>
&mdash;
<div class='inline'>
<p>The payload name</p>
</div>
</li>
</ul>
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>Boolean</tt>)</span>
&mdash;
<div class='inline'>
<p>True if the payload is compatible, False if it is not.</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 704</span>
<span class='kw'>def</span> <span class='id identifier rubyid_is_payload_compatible?'>is_payload_compatible?</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span>
<span class='id identifier rubyid_p'>p</span> <span class='op'>=</span> <span class='id identifier rubyid_framework'>framework</span><span class='period'>.</span><span class='id identifier rubyid_payloads'>payloads</span><span class='lbracket'>[</span><span class='id identifier rubyid_name'>name</span><span class='rbracket'>]</span>
<span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_p'>p</span>
<span class='comment'># Skip over payloads that are too big
</span> <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='id identifier rubyid_payload_space'>payload_space</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_p'>p</span><span class='period'>.</span><span class='id identifier rubyid_cached_size'>cached_size</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_p'>p</span><span class='period'>.</span><span class='id identifier rubyid_cached_size'>cached_size</span> <span class='op'>&gt;</span> <span class='id identifier rubyid_payload_space'>payload_space</span>
<span class='kw'>begin</span>
<span class='id identifier rubyid_pi'>pi</span> <span class='op'>=</span> <span class='id identifier rubyid_p'>p</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
<span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>Exception</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>LoadError</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
<span class='id identifier rubyid_wlog'><span class='object_link'><a href="../top-level-namespace.html#wlog-instance_method" title="#wlog (method)">wlog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Module </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'> failed to initialize payload when checking exploit compatibility: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>core</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="../Rex/Logging.html#LEV_0-constant" title="Rex::Logging::LEV_0 (constant)">LEV_0</a></span></span><span class='rparen'>)</span>
<span class='kw'>return</span> <span class='kw'>false</span>
<span class='kw'>end</span>
<span class='comment'># Are we compatible in terms of conventions and connections and
</span> <span class='comment'># what not?
</span> <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_compatible?'>compatible?</span><span class='lparen'>(</span><span class='id identifier rubyid_pi'>pi</span><span class='rparen'>)</span>
<span class='comment'># If the payload is privileged but the exploit does not give
</span> <span class='comment'># privileged access, then fail it.
</span> <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='op'>!</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_privileged'>privileged</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_pi'>pi</span><span class='period'>.</span><span class='id identifier rubyid_privileged'>privileged</span>
<span class='kw'>return</span> <span class='kw'>true</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="make_fast_nops-instance_method">
#<strong>make_fast_nops</strong>(count) &#x21d2; <tt>String</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Generates a NOP sled using the #make_nops method. The difference between this and #make_nops is this method is much faster, good for exploit developers that actually want huge chunks of NOPs. The downside of using this is the NOP sled is less randomized.</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Parameters:</p>
<ul class="param">
<li>
<span class='name'>count</span>
<span class='type'>(<tt>String</tt>)</span>
&mdash;
<div class='inline'>
<p>Number of NOPs to return.</p>
</div>
</li>
</ul>
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>String</tt>)</span>
&mdash;
<div class='inline'>
<p>NOPs</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1053</span>
<span class='kw'>def</span> <span class='id identifier rubyid_make_fast_nops'>make_fast_nops</span><span class='lparen'>(</span><span class='id identifier rubyid_count'>count</span><span class='rparen'>)</span>
<span class='id identifier rubyid_max_nop_chunk_size'>max_nop_chunk_size</span> <span class='op'>=</span> <span class='int'>100</span>
<span class='kw'>if</span> <span class='id identifier rubyid_count'>count</span> <span class='op'>&lt;</span> <span class='id identifier rubyid_max_nop_chunk_size'>max_nop_chunk_size</span>
<span class='kw'>return</span> <span class='id identifier rubyid_make_nops'>make_nops</span><span class='lparen'>(</span><span class='id identifier rubyid_count'>count</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_nops'>nops</span> <span class='op'>=</span> <span class='id identifier rubyid_make_nops'>make_nops</span><span class='lparen'>(</span><span class='id identifier rubyid_max_nop_chunk_size'>max_nop_chunk_size</span><span class='rparen'>)</span>
<span class='id identifier rubyid_nops'>nops</span> <span class='op'>+=</span> <span class='id identifier rubyid_nops'>nops</span> <span class='kw'>while</span> <span class='id identifier rubyid_nops'>nops</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>&lt;</span> <span class='id identifier rubyid_count'>count</span>
<span class='id identifier rubyid_nops'>nops</span><span class='lbracket'>[</span><span class='int'>0</span><span class='comma'>,</span> <span class='id identifier rubyid_count'>count</span><span class='rbracket'>]</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="make_nops-instance_method">
#<strong>make_nops</strong>(count) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Generates a nop sled of a supplied length and returns it to the caller.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1070</span>
<span class='kw'>def</span> <span class='id identifier rubyid_make_nops'>make_nops</span><span class='lparen'>(</span><span class='id identifier rubyid_count'>count</span><span class='rparen'>)</span>
<span class='comment'># If we&#39;re debugging, then make_nops will return a safe sled. We
</span> <span class='comment'># currently assume x86.
</span> <span class='kw'>if</span> <span class='id identifier rubyid_debugging?'>debugging?</span>
<span class='kw'>return</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\x90</span><span class='tstring_end'>&quot;</span></span> <span class='op'>*</span> <span class='id identifier rubyid_count'>count</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_nop_sled'>nop_sled</span> <span class='op'>=</span> <span class='kw'>nil</span>
<span class='comment'># If there is no payload instance then we can&#39;t succeed.
</span> <span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='op'>!</span><span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='rparen'>)</span>
<span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_compatible_nops'>compatible_nops</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_nopname'>nopname</span><span class='comma'>,</span> <span class='id identifier rubyid_nopmod'>nopmod</span><span class='op'>|</span>
<span class='comment'># Create an instance of the nop module
</span> <span class='id identifier rubyid_nop'>nop</span> <span class='op'>=</span> <span class='id identifier rubyid_nopmod'>nopmod</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
<span class='comment'># The list of save registers
</span> <span class='id identifier rubyid_save_regs'>save_regs</span> <span class='op'>=</span> <span class='id identifier rubyid_nop_save_registers'>nop_save_registers</span> <span class='op'>||</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_save_regs'>save_regs</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span> <span class='op'>==</span> <span class='kw'>true</span><span class='rparen'>)</span>
<span class='id identifier rubyid_save_regs'>save_regs</span> <span class='op'>=</span> <span class='kw'>nil</span>
<span class='kw'>end</span>
<span class='kw'>begin</span>
<span class='id identifier rubyid_nop'>nop</span><span class='period'>.</span><span class='id identifier rubyid_copy_ui'>copy_ui</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
<span class='id identifier rubyid_nop_sled'>nop_sled</span> <span class='op'>=</span> <span class='id identifier rubyid_nop'>nop</span><span class='period'>.</span><span class='id identifier rubyid_generate_sled'>generate_sled</span><span class='lparen'>(</span><span class='id identifier rubyid_count'>count</span><span class='comma'>,</span>
<span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>BadChars</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_payload_badchars'>payload_badchars</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span>
<span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>SaveRegisters</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_save_regs'>save_regs</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_nop_sled'>nop_sled</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_nop_sled'>nop_sled</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='id identifier rubyid_count'>count</span>
<span class='kw'>break</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_wlog'><span class='object_link'><a href="../top-level-namespace.html#wlog-instance_method" title="#wlog (method)">wlog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_refname'>refname</span><span class='embexpr_end'>}</span><span class='tstring_content'>: Nop generator </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_nop'>nop</span><span class='period'>.</span><span class='id identifier rubyid_refname'>refname</span><span class='embexpr_end'>}</span><span class='tstring_content'> failed to generate sled for exploit</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>core</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="../Rex/Logging.html#LEV_0-constant" title="Rex::Logging::LEV_0 (constant)">LEV_0</a></span></span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>rescue</span>
<span class='id identifier rubyid_wlog'><span class='object_link'><a href="../top-level-namespace.html#wlog-instance_method" title="#wlog (method)">wlog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_refname'>refname</span><span class='embexpr_end'>}</span><span class='tstring_content'>: Nop generator </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_nop'>nop</span><span class='period'>.</span><span class='id identifier rubyid_refname'>refname</span><span class='embexpr_end'>}</span><span class='tstring_content'> failed to generate sled for exploit: </span><span class='embexpr_beg'>#{</span><span class='gvar'>$!</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
<span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>core</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="../Rex/Logging.html#LEV_0-constant" title="Rex::Logging::LEV_0 (constant)">LEV_0</a></span></span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='rbrace'>}</span>
<span class='id identifier rubyid_nop_sled'>nop_sled</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="nop_generator-instance_method">
#<strong>nop_generator</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns the first compatible NOP generator for this exploits payload instance.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1035
1036
1037
1038
1039
1040
1041</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1035</span>
<span class='kw'>def</span> <span class='id identifier rubyid_nop_generator'>nop_generator</span>
<span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='op'>!</span><span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='rparen'>)</span>
<span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_compatible_nops'>compatible_nops</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_nopname'>nopname</span><span class='comma'>,</span> <span class='id identifier rubyid_nopmod'>nopmod</span><span class='op'>|</span>
<span class='kw'>return</span> <span class='id identifier rubyid_nopmod'>nopmod</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
<span class='rbrace'>}</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="nop_save_registers-instance_method">
#<strong>nop_save_registers</strong>(explicit_target = nil) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns the list of registers that the NOP generator should save, if any. It will use the current targets save registers in precedence over those defined globally for the exploit module.</p>
<p>If there are no save registers, nil is returned.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1021
1022
1023
1024
1025
1026
1027
1028
1029</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1021</span>
<span class='kw'>def</span> <span class='id identifier rubyid_nop_save_registers'>nop_save_registers</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_save_registers'>save_registers</span><span class='rparen'>)</span>
<span class='kw'>return</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_save_registers'>save_registers</span>
<span class='kw'>else</span>
<span class='kw'>return</span> <span class='id identifier rubyid_module_info'>module_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>SaveRegisters</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="normalize_platform_arch-instance_method">
#<strong>normalize_platform_arch</strong> &#x21d2; <tt>Object</tt>
</h3><table class="source_code">
<tr>
<td>
<pre class="lines">
691
692
693
694
695
696</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 691</span>
<span class='kw'>def</span> <span class='id identifier rubyid_normalize_platform_arch'>normalize_platform_arch</span>
<span class='id identifier rubyid_c_platform'>c_platform</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_target'>target</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>:</span> <span class='id identifier rubyid_platform'>platform</span>
<span class='id identifier rubyid_c_arch'>c_arch</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_target'>target</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_arch'>arch</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_arch'>arch</span> <span class='op'>:</span> <span class='lparen'>(</span><span class='id identifier rubyid_arch'>arch</span> <span class='op'>==</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='kw'>nil</span> <span class='op'>:</span> <span class='id identifier rubyid_arch'>arch</span>
<span class='id identifier rubyid_c_arch'>c_arch</span> <span class='op'>||=</span> <span class='lbracket'>[</span> <span class='const'>ARCH_X86</span> <span class='rbracket'>]</span>
<span class='kw'>return</span> <span class='id identifier rubyid_c_platform'>c_platform</span><span class='comma'>,</span> <span class='id identifier rubyid_c_arch'>c_arch</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="on_new_session-instance_method">
#<strong>on_new_session</strong>(session) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>This is called by the payload when a new session is created</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1307
1308
1309
1310</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1307</span>
<span class='kw'>def</span> <span class='id identifier rubyid_on_new_session'>on_new_session</span><span class='lparen'>(</span><span class='id identifier rubyid_session'>session</span><span class='rparen'>)</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_session_count'>session_count</span> <span class='op'>+=</span> <span class='int'>1</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_successful'>successful</span> <span class='op'>=</span> <span class='kw'>true</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="passive?-instance_method">
#<strong>passive?</strong> &#x21d2; <tt>Boolean</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns if the exploit has a passive stance. Aggressive exploits are always aggressive.</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>Boolean</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
627
628
629</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 627</span>
<span class='kw'>def</span> <span class='id identifier rubyid_passive?'>passive?</span>
<span class='id identifier rubyid_stance'>stance</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Exploit/Stance.html" title="Msf::Exploit::Stance (module)">Stance</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exploit/Stance.html#Passive-constant" title="Msf::Exploit::Stance::Passive (constant)">Passive</a></span></span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_stance'>stance</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Exploit/Stance.html" title="Msf::Exploit::Stance (module)">Stance</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exploit/Stance.html#Aggressive-constant" title="Msf::Exploit::Stance::Aggressive (constant)">Aggressive</a></span></span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="pattern_create-instance_method">
#<strong>pattern_create</strong>(length, sets = nil) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Generate a non-repeating static random string</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1248
1249
1250</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1248</span>
<span class='kw'>def</span> <span class='id identifier rubyid_pattern_create'>pattern_create</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_sets'>sets</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='const'><span class='object_link'><a href="../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'>Text</span><span class='period'>.</span><span class='id identifier rubyid_pattern_create'>pattern_create</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_sets'>sets</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="payload_append-instance_method">
#<strong>payload_append</strong>(explicit_target = nil) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Return any text that should be appended to the payload. The payload module is passed so that the exploit can take a guess at architecture and platform if its a multi exploit.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
820
821
822
823
824
825
826
827
828</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 820</span>
<span class='kw'>def</span> <span class='id identifier rubyid_payload_append'>payload_append</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_append'>payload_append</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_append'>payload_append</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Append</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="payload_append_encoder-instance_method">
#<strong>payload_append_encoder</strong>(explicit_target = nil) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Return any text that should be appended to the encoder of the payload. The payload module is passed so that the exploit can take a guess at architecture and platform if its a multi exploit.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
852
853
854
855
856
857
858
859
860
861
862</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 852</span>
<span class='kw'>def</span> <span class='id identifier rubyid_payload_append_encoder'>payload_append_encoder</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_append_encoder'>payload_append_encoder</span><span class='rparen'>)</span>
<span class='id identifier rubyid_p'>p</span> <span class='op'>=</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_append_encoder'>payload_append_encoder</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_p'>p</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>AppendEncoder</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span>
<span class='kw'>end</span>
<span class='id identifier rubyid_p'>p</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="payload_badchars-instance_method">
#<strong>payload_badchars</strong>(explicit_target = nil) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns the bad characters that cannot be in any payload used by this exploit.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
924
925
926
927
928
929
930
931
932</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 924</span>
<span class='kw'>def</span> <span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>BadChars</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="payload_disable_nops-instance_method">
#<strong>payload_disable_nops</strong>(explicit_target = nil) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Whether NOP generation should be enabled or disabled</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
867
868
869
870
871
872
873
874
875</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 867</span>
<span class='kw'>def</span> <span class='id identifier rubyid_payload_disable_nops'>payload_disable_nops</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_disable_nops'>payload_disable_nops</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_disable_nops'>payload_disable_nops</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>DisableNops</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="payload_encoder-instance_method">
#<strong>payload_encoder</strong>(explicit_target = nil) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns the payload encoder that is associated with either the current target or the exploit in general.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
938
939
940
941
942
943
944
945
946</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 938</span>
<span class='kw'>def</span> <span class='id identifier rubyid_payload_encoder'>payload_encoder</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_encoder'>payload_encoder</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_encoder'>payload_encoder</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Encoder</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="payload_encoder_options-instance_method">
#<strong>payload_encoder_options</strong>(explicit_target = nil) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns the payload encoder option hash that is used to initialize the datastore of the encoder that is selected when generating an encoded payload.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
981
982
983
984
985
986
987
988
989</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 981</span>
<span class='kw'>def</span> <span class='id identifier rubyid_payload_encoder_options'>payload_encoder_options</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_encoder_options'>payload_encoder_options</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_encoder_options'>payload_encoder_options</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>EncoderOptions</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="payload_encoder_type-instance_method">
#<strong>payload_encoder_type</strong>(explicit_target = nil) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns the payload encoder type that is associated with either the current target or the exploit in general.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
966
967
968
969
970
971
972
973
974</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 966</span>
<span class='kw'>def</span> <span class='id identifier rubyid_payload_encoder_type'>payload_encoder_type</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_encoder_type'>payload_encoder_type</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_encoder_type'>payload_encoder_type</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>EncoderType</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="payload_extended_options-instance_method">
#<strong>payload_extended_options</strong>(explicit_target = nil) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns the payload extended options hash which is used to provide a location to store extended information that may be useful to a particular type of payload or mixin.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
996
997
998
999
1000
1001
1002
1003
1004</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 996</span>
<span class='kw'>def</span> <span class='id identifier rubyid_payload_extended_options'>payload_extended_options</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
<span class='kw'>if</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_extended_options'>payload_extended_options</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_extended_options'>payload_extended_options</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>ExtendedOptions</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="payload_max_nops-instance_method">
#<strong>payload_max_nops</strong>(explicit_target = nil) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Maximum number of nops to use as a hint to the framework. Nil signifies that the framework should decide.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
881
882
883
884
885
886
887
888
889</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 881</span>
<span class='kw'>def</span> <span class='id identifier rubyid_payload_max_nops'>payload_max_nops</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_max_nops'>payload_max_nops</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_max_nops'>payload_max_nops</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>MaxNops</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='kw'>nil</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="payload_min_nops-instance_method">
#<strong>payload_min_nops</strong>(explicit_target = nil) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Minimum number of nops to use as a hint to the framework. Nil signifies that the framework should decide.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
895
896
897
898
899
900
901
902
903</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 895</span>
<span class='kw'>def</span> <span class='id identifier rubyid_payload_min_nops'>payload_min_nops</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_min_nops'>payload_min_nops</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_min_nops'>payload_min_nops</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>MinNops</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='kw'>nil</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="payload_nop-instance_method">
#<strong>payload_nop</strong>(explicit_target = nil) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns the payload NOP generator that is associated with either the current target or the exploit in general.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
952
953
954
955
956
957
958
959
960</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 952</span>
<span class='kw'>def</span> <span class='id identifier rubyid_payload_nop'>payload_nop</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_nop'>payload_nop</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_nop'>payload_nop</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Nop</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="payload_prepend-instance_method">
#<strong>payload_prepend</strong>(explicit_target = nil) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Return any text that should be prepended to the payload. The payload module is passed so that the exploit can take a guess at architecture and platform if its a multi exploit. This automatically takes into account any require stack adjustments.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
803
804
805
806
807
808
809
810
811
812
813</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 803</span>
<span class='kw'>def</span> <span class='id identifier rubyid_payload_prepend'>payload_prepend</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_prepend'>payload_prepend</span><span class='rparen'>)</span>
<span class='id identifier rubyid_p'>p</span> <span class='op'>=</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_prepend'>payload_prepend</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_p'>p</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Prepend</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span>
<span class='kw'>end</span>
<span class='id identifier rubyid_stack_adjustment'>stack_adjustment</span> <span class='op'>+</span> <span class='id identifier rubyid_p'>p</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="payload_prepend_encoder-instance_method">
#<strong>payload_prepend_encoder</strong>(explicit_target = nil) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Return any text that should be prepended to the encoder of the payload. The payload module is passed so that the exploit can take a guess at architecture and platform if its a multi exploit.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
835
836
837
838
839
840
841
842
843
844
845</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 835</span>
<span class='kw'>def</span> <span class='id identifier rubyid_payload_prepend_encoder'>payload_prepend_encoder</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_prepend_encoder'>payload_prepend_encoder</span><span class='rparen'>)</span>
<span class='id identifier rubyid_p'>p</span> <span class='op'>=</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_prepend_encoder'>payload_prepend_encoder</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_p'>p</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>PrependEncoder</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span>
<span class='kw'>end</span>
<span class='id identifier rubyid_p'>p</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="payload_space-instance_method">
#<strong>payload_space</strong>(explicit_target = nil) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns the maximum amount of room the exploit has for a payload.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
908
909
910
911
912
913
914
915
916
917
918</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 908</span>
<span class='kw'>def</span> <span class='id identifier rubyid_payload_space'>payload_space</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_space'>payload_space</span><span class='rparen'>)</span>
<span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_space'>payload_space</span>
<span class='kw'>elsif</span> <span class='lparen'>(</span><span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Space</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='rparen'>)</span>
<span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Space</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
<span class='kw'>else</span>
<span class='kw'>nil</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="rand_char-instance_method">
#<strong>rand_char</strong>(bad = payload_badchars) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Generate a random character avoiding the exploits bad characters.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1237
1238
1239
1240
1241
1242
1243</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1237</span>
<span class='kw'>def</span> <span class='id identifier rubyid_rand_char'>rand_char</span><span class='lparen'>(</span><span class='id identifier rubyid_bad'>bad</span><span class='op'>=</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_debugging?'>debugging?</span>
<span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>A</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>else</span>
<span class='const'><span class='object_link'><a href="../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'>Text</span><span class='period'>.</span><span class='id identifier rubyid_rand_char'>rand_char</span><span class='lparen'>(</span><span class='id identifier rubyid_bad'>bad</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="rand_text-instance_method">
#<strong>rand_text</strong>(length, bad = payload_badchars) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Generate random text characters avoiding the exploits bad characters.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1129
1130
1131
1132
1133
1134
1135</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1129</span>
<span class='kw'>def</span> <span class='id identifier rubyid_rand_text'>rand_text</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='op'>=</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_debugging?'>debugging?</span>
<span class='id identifier rubyid_rand_text_debug'>rand_text_debug</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='rparen'>)</span>
<span class='kw'>else</span>
<span class='const'><span class='object_link'><a href="../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'>Text</span><span class='period'>.</span><span class='id identifier rubyid_rand_text'>rand_text</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="rand_text_alpha-instance_method">
#<strong>rand_text_alpha</strong>(length, bad = payload_badchars) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Generate random alpha characters avoiding the exploits bad characters.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1165
1166
1167
1168
1169
1170
1171</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1165</span>
<span class='kw'>def</span> <span class='id identifier rubyid_rand_text_alpha'>rand_text_alpha</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='op'>=</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_debugging?'>debugging?</span>
<span class='id identifier rubyid_rand_text_debug'>rand_text_debug</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='rparen'>)</span>
<span class='kw'>else</span>
<span class='const'><span class='object_link'><a href="../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'>Text</span><span class='period'>.</span><span class='id identifier rubyid_rand_text_alpha'>rand_text_alpha</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="rand_text_alpha_lower-instance_method">
#<strong>rand_text_alpha_lower</strong>(length, bad = payload_badchars) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Generate random alpha lower characters avoiding the exploits bad characters.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1189
1190
1191
1192
1193
1194
1195</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1189</span>
<span class='kw'>def</span> <span class='id identifier rubyid_rand_text_alpha_lower'>rand_text_alpha_lower</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='op'>=</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_debugging?'>debugging?</span>
<span class='id identifier rubyid_rand_text_debug'>rand_text_debug</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>a</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
<span class='kw'>else</span>
<span class='const'><span class='object_link'><a href="../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'>Text</span><span class='period'>.</span><span class='id identifier rubyid_rand_text_alpha_lower'>rand_text_alpha_lower</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="rand_text_alpha_upper-instance_method">
#<strong>rand_text_alpha_upper</strong>(length, bad = payload_badchars) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Generate random alpha upper characters avoiding the exploits bad characters.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1177
1178
1179
1180
1181
1182
1183</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1177</span>
<span class='kw'>def</span> <span class='id identifier rubyid_rand_text_alpha_upper'>rand_text_alpha_upper</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='op'>=</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_debugging?'>debugging?</span>
<span class='id identifier rubyid_rand_text_debug'>rand_text_debug</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='rparen'>)</span>
<span class='kw'>else</span>
<span class='const'><span class='object_link'><a href="../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'>Text</span><span class='period'>.</span><span class='id identifier rubyid_rand_text_alpha_upper'>rand_text_alpha_upper</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="rand_text_alphanumeric-instance_method">
#<strong>rand_text_alphanumeric</strong>(length, bad = payload_badchars) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Generate random alphanumeric characters avoiding the exploits bad characters.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1201
1202
1203
1204
1205
1206
1207</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1201</span>
<span class='kw'>def</span> <span class='id identifier rubyid_rand_text_alphanumeric'>rand_text_alphanumeric</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='op'>=</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_debugging?'>debugging?</span>
<span class='id identifier rubyid_rand_text_debug'>rand_text_debug</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='rparen'>)</span>
<span class='kw'>else</span>
<span class='const'><span class='object_link'><a href="../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'>Text</span><span class='period'>.</span><span class='id identifier rubyid_rand_text_alphanumeric'>rand_text_alphanumeric</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="rand_text_debug-instance_method">
#<strong>rand_text_debug</strong>(length, char = &#39;A&#39;) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Utility methods for generating random text that implicitly uses the exploits bad character set.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1121
1122
1123</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1121</span>
<span class='kw'>def</span> <span class='id identifier rubyid_rand_text_debug'>rand_text_debug</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_char'>char</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>A</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_char'>char</span> <span class='op'>*</span> <span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span><span class='lparen'>(</span><span class='const'>Range</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_length'>length</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span> <span class='op'>:</span> <span class='id identifier rubyid_length'>length</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="rand_text_english-instance_method">
#<strong>rand_text_english</strong>(length, bad = payload_badchars) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Generate random english-like avoiding the exploits bad characters.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1141
1142
1143
1144
1145
1146
1147</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1141</span>
<span class='kw'>def</span> <span class='id identifier rubyid_rand_text_english'>rand_text_english</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='op'>=</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_debugging?'>debugging?</span>
<span class='id identifier rubyid_rand_text_debug'>rand_text_debug</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='rparen'>)</span>
<span class='kw'>else</span>
<span class='const'><span class='object_link'><a href="../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'>Text</span><span class='period'>.</span><span class='id identifier rubyid_rand_text_english'>rand_text_english</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="rand_text_hex-instance_method">
#<strong>rand_text_hex</strong>(length, bad = payload_badchars) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Generate random hexadecimal characters avoiding the exploits bad characters.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1225
1226
1227
1228
1229
1230
1231</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1225</span>
<span class='kw'>def</span> <span class='id identifier rubyid_rand_text_hex'>rand_text_hex</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='op'>=</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_debugging?'>debugging?</span>
<span class='id identifier rubyid_rand_text_debug'>rand_text_debug</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>0</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
<span class='kw'>else</span>
<span class='const'><span class='object_link'><a href="../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'>Text</span><span class='period'>.</span><span class='id identifier rubyid_rand_text_hex'>rand_text_hex</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="rand_text_highascii-instance_method">
#<strong>rand_text_highascii</strong>(length, bad = payload_badchars) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Generate random high ascii characters avoiding the exploits bad characters.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1153
1154
1155
1156
1157
1158
1159</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1153</span>
<span class='kw'>def</span> <span class='id identifier rubyid_rand_text_highascii'>rand_text_highascii</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='op'>=</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_debugging?'>debugging?</span>
<span class='id identifier rubyid_rand_text_debug'>rand_text_debug</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='rparen'>)</span>
<span class='kw'>else</span>
<span class='const'><span class='object_link'><a href="../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'>Text</span><span class='period'>.</span><span class='id identifier rubyid_rand_text_highascii'>rand_text_highascii</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="rand_text_numeric-instance_method">
#<strong>rand_text_numeric</strong>(length, bad = payload_badchars) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Generate random numeric characters avoiding the exploits bad characters.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1213
1214
1215
1216
1217
1218
1219</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1213</span>
<span class='kw'>def</span> <span class='id identifier rubyid_rand_text_numeric'>rand_text_numeric</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='op'>=</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_debugging?'>debugging?</span>
<span class='id identifier rubyid_rand_text_debug'>rand_text_debug</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>0</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
<span class='kw'>else</span>
<span class='const'><span class='object_link'><a href="../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'>Text</span><span class='period'>.</span><span class='id identifier rubyid_rand_text_numeric'>rand_text_numeric</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="regenerate_payload-instance_method">
#<strong>regenerate_payload</strong>(platform = nil, arch = nil, explicit_target = nil) &#x21d2; <tt>Object</tt>
<span class="aliases">Also known as:
<span class="names"><span id='exploit_regenerate_payload-instance_method'>exploit_regenerate_payload</span></span>
</span>
</h3><div class="docstring">
<div class="discussion">
<p>Re-generates an encoded payload, typically called after something in the datastore has changed. An optional platform and architecture can be supplied as well.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
563
564
565</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 563</span>
<span class='kw'>def</span> <span class='id identifier rubyid_regenerate_payload'>regenerate_payload</span><span class='lparen'>(</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_arch'>arch</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='id identifier rubyid_generate_single_payload'>generate_single_payload</span><span class='lparen'>(</span><span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_platform'>platform</span><span class='comma'>,</span> <span class='id identifier rubyid_arch'>arch</span><span class='comma'>,</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="register_autofilter_ports-instance_method">
#<strong>register_autofilter_ports</strong>(ports = []) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Adds a port into the list of ports</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
376
377
378
379
380
381</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 376</span>
<span class='kw'>def</span> <span class='id identifier rubyid_register_autofilter_ports'>register_autofilter_ports</span><span class='lparen'>(</span><span class='id identifier rubyid_ports'>ports</span><span class='op'>=</span><span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span>
<span class='ivar'>@autofilter_ports</span> <span class='op'>||=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
<span class='ivar'>@autofilter_ports</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_ports'>ports</span>
<span class='ivar'>@autofilter_ports</span><span class='period'>.</span><span class='id identifier rubyid_flatten!'>flatten!</span>
<span class='ivar'>@autofilter_ports</span><span class='period'>.</span><span class='id identifier rubyid_uniq!'>uniq!</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="register_autofilter_services-instance_method">
#<strong>register_autofilter_services</strong>(services = []) &#x21d2; <tt>Object</tt>
</h3><table class="source_code">
<tr>
<td>
<pre class="lines">
383
384
385
386
387
388</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 383</span>
<span class='kw'>def</span> <span class='id identifier rubyid_register_autofilter_services'>register_autofilter_services</span><span class='lparen'>(</span><span class='id identifier rubyid_services'>services</span><span class='op'>=</span><span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span>
<span class='ivar'>@autofilter_services</span> <span class='op'>||=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
<span class='ivar'>@autofilter_services</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_services'>services</span>
<span class='ivar'>@autofilter_services</span><span class='period'>.</span><span class='id identifier rubyid_flatten!'>flatten!</span>
<span class='ivar'>@autofilter_services</span><span class='period'>.</span><span class='id identifier rubyid_uniq!'>uniq!</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="reset_session_counts-instance_method">
#<strong>reset_session_counts</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Reset the session counter to zero (which occurs during set up of the exploit prior to calling exploit).</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1326
1327
1328</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1326</span>
<span class='kw'>def</span> <span class='id identifier rubyid_reset_session_counts'>reset_session_counts</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_session_count'>session_count</span> <span class='op'>=</span> <span class='int'>0</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="session_created?-instance_method">
#<strong>session_created?</strong> &#x21d2; <tt>Boolean</tt>
</h3><div class="docstring">
<div class="discussion">
<p>A boolean for whether a session has been created yet</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>Boolean</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1315
1316
1317
1318
1319
1320</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1315</span>
<span class='kw'>def</span> <span class='id identifier rubyid_session_created?'>session_created?</span>
<span class='comment'># Start bind handlers before checking session creation
</span> <span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_start_handler'>start_handler</span> <span class='kw'>if</span> <span class='id identifier rubyid_handler_bind?'>handler_bind?</span>
<span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_session_count'>session_count</span> <span class='op'>&gt;</span> <span class='int'>0</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='kw'>true</span> <span class='op'>:</span> <span class='kw'>false</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="setup-instance_method">
#<strong>setup</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Prepares the module for exploitation, initializes any state, and starts the payload handler.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 394</span>
<span class='kw'>def</span> <span class='id identifier rubyid_setup'>setup</span>
<span class='id identifier rubyid_alert_user'>alert_user</span>
<span class='comment'># Reset the session counts to zero.
</span> <span class='id identifier rubyid_reset_session_counts'>reset_session_counts</span>
<span class='kw'>return</span> <span class='kw'>if</span> <span class='kw'>not</span> <span class='id identifier rubyid_payload_instance'>payload_instance</span>
<span class='kw'>return</span> <span class='kw'>if</span> <span class='kw'>not</span> <span class='id identifier rubyid_handler_enabled?'>handler_enabled?</span>
<span class='comment'># Configure the payload handler
</span> <span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_exploit_config'>exploit_config</span> <span class='op'>=</span> <span class='lbrace'>{</span>
<span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>active_timeout</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_active_timeout'>active_timeout</span>
<span class='rbrace'>}</span>
<span class='comment'># Set up the payload handlers
</span> <span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_setup_handler'>setup_handler</span>
<span class='comment'># Defer starting bind handlers until after exploit completion
</span> <span class='kw'>return</span> <span class='kw'>if</span> <span class='id identifier rubyid_handler_bind?'>handler_bind?</span>
<span class='comment'># Start the payload handler
</span> <span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_start_handler'>start_handler</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="setup_fail_detail_from_exception-instance_method">
#<strong>setup_fail_detail_from_exception</strong>(e) &#x21d2; <tt>Object</tt>
</h3><table class="source_code">
<tr>
<td>
<pre class="lines">
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1362</span>
<span class='kw'>def</span> <span class='id identifier rubyid_setup_fail_detail_from_exception'>setup_fail_detail_from_exception</span> <span class='id identifier rubyid_e'>e</span>
<span class='comment'># Build a user-friendly error message
</span> <span class='id identifier rubyid_msg'>msg</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>unless</span> <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exploit/Failed.html" title="Msf::Exploit::Failed (class)">Failed</a></span></span>
<span class='id identifier rubyid_msg'>msg</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>end</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_error'>error</span> <span class='op'>=</span> <span class='id identifier rubyid_e'>e</span>
<span class='comment'># Record the detailed reason
</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_detail'>fail_detail</span> <span class='op'>||=</span> <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
<span class='id identifier rubyid_msg'>msg</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="stack_adjustment-instance_method">
#<strong>stack_adjustment</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>This method returns the encoded instruction(s) required to adjust the stack pointer prior to executing any code. The number of bytes to adjust is indicated to the routine through the payload StackAdjustment attribute or through a targets payload StackAdjustment attribute.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 774</span>
<span class='kw'>def</span> <span class='id identifier rubyid_stack_adjustment'>stack_adjustment</span>
<span class='kw'>if</span> <span class='id identifier rubyid_target'>target</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_payload_stack_adjustment'>payload_stack_adjustment</span>
<span class='id identifier rubyid_adj'>adj</span> <span class='op'>=</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_payload_stack_adjustment'>payload_stack_adjustment</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_adj'>adj</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>StackAdjustment</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='kw'>end</span>
<span class='kw'>return</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_adj'>adj</span>
<span class='comment'># Get the architecture for the current target or use the one specific to
</span> <span class='comment'># this exploit
</span> <span class='id identifier rubyid_arch'>arch</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_target'>target</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_arch'>arch</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_arch'>arch</span> <span class='op'>:</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_arch'>arch</span>
<span class='comment'># Default to x86 if we can&#39;t find a list of architectures
</span> <span class='kw'>if</span> <span class='id identifier rubyid_arch'>arch</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_arch'>arch</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
<span class='id identifier rubyid_arch'>arch</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_arch'>arch</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_flatten'>flatten</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>, </span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_arch'>arch</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>x86</span><span class='tstring_end'>&#39;</span></span>
<span class='kw'>end</span>
<span class='const'><span class='object_link'><a href="../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'>Arch</span><span class='op'>::</span><span class='id identifier rubyid_adjust_stack_pointer'>adjust_stack_pointer</span><span class='lparen'>(</span><span class='id identifier rubyid_arch'>arch</span><span class='comma'>,</span> <span class='id identifier rubyid_adj'>adj</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="stance-instance_method">
#<strong>stance</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Generally, all exploits take an aggressive stance.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
613
614
615</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 613</span>
<span class='kw'>def</span> <span class='id identifier rubyid_stance'>stance</span>
<span class='id identifier rubyid_module_info'>module_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Stance</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='const'><span class='object_link'><a href="Exploit/Stance.html" title="Msf::Exploit::Stance (module)">Stance</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exploit/Stance.html#Aggressive-constant" title="Msf::Exploit::Stance::Aggressive (constant)">Aggressive</a></span></span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="target-instance_method">
#<strong>target</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns the active target for this exploit. If not target has been defined, nil is returned. If no target was defined but there is a default target, that one will be automatically used.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 636</span>
<span class='kw'>def</span> <span class='id identifier rubyid_target'>target</span>
<span class='kw'>if</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:auto_targeted_index</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_auto_target?'>auto_target?</span>
<span class='id identifier rubyid_auto_idx'>auto_idx</span> <span class='op'>=</span> <span class='id identifier rubyid_auto_targeted_index'>auto_targeted_index</span>
<span class='kw'>if</span> <span class='id identifier rubyid_auto_idx'>auto_idx</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
<span class='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>TARGET</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_auto_idx'>auto_idx</span>
<span class='kw'>else</span>
<span class='comment'># If our inserted Automatic Target was selected but we failed to
</span> <span class='comment'># find a suitable target, we just grab the original first target.
</span> <span class='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>TARGET</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='int'>1</span>
<span class='kw'>end</span>
<span class='kw'>end</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_target_idx'>target_idx</span> <span class='op'>=</span> <span class='id identifier rubyid_target_index'>target_index</span>
<span class='kw'>return</span> <span class='lparen'>(</span><span class='id identifier rubyid_target_idx'>target_idx</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_targets'>targets</span><span class='lbracket'>[</span><span class='id identifier rubyid_target_idx'>target_idx</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span><span class='rbracket'>]</span> <span class='op'>:</span> <span class='kw'>nil</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="target_arch-instance_method">
#<strong>target_arch</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns the targets architecture, or the one assigned to the module itself.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
687
688
689</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 687</span>
<span class='kw'>def</span> <span class='id identifier rubyid_target_arch'>target_arch</span>
<span class='lparen'>(</span><span class='id identifier rubyid_target'>target</span> <span class='kw'>and</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_arch'>arch</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_arch'>arch</span> <span class='op'>:</span> <span class='lparen'>(</span><span class='id identifier rubyid_arch'>arch</span> <span class='op'>==</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='kw'>nil</span> <span class='op'>:</span> <span class='id identifier rubyid_arch'>arch</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="target_index-instance_method">
#<strong>target_index</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>The target index that has been selected.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 657</span>
<span class='kw'>def</span> <span class='id identifier rubyid_target_index'>target_index</span>
<span class='id identifier rubyid_target_idx'>target_idx</span> <span class='op'>=</span>
<span class='kw'>begin</span>
<span class='const'>Integer</span><span class='lparen'>(</span><span class='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>TARGET</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='rparen'>)</span>
<span class='kw'>rescue</span> <span class='const'>TypeError</span><span class='comma'>,</span> <span class='const'>ArgumentError</span>
<span class='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>TARGET</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_default_idx'>default_idx</span> <span class='op'>=</span> <span class='id identifier rubyid_default_target'>default_target</span> <span class='op'>||</span> <span class='int'>0</span>
<span class='comment'># Use the default target if one was not supplied.
</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_target_idx'>target_idx</span> <span class='op'>==</span> <span class='kw'>nil</span> <span class='kw'>and</span> <span class='id identifier rubyid_default_idx'>default_idx</span> <span class='kw'>and</span> <span class='id identifier rubyid_default_idx'>default_idx</span> <span class='op'>&gt;=</span> <span class='int'>0</span><span class='rparen'>)</span>
<span class='id identifier rubyid_target_idx'>target_idx</span> <span class='op'>=</span> <span class='id identifier rubyid_default_idx'>default_idx</span>
<span class='kw'>elsif</span> <span class='id identifier rubyid_target_idx'>target_idx</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span>
<span class='id identifier rubyid_target_idx'>target_idx</span> <span class='op'>=</span> <span class='id identifier rubyid_targets'>targets</span><span class='period'>.</span><span class='id identifier rubyid_index'>index</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_target'>target</span><span class='op'>|</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span> <span class='op'>==</span> <span class='id identifier rubyid_target_idx'>target_idx</span> <span class='rbrace'>}</span>
<span class='kw'>end</span>
<span class='kw'>return</span> <span class='lparen'>(</span><span class='id identifier rubyid_target_idx'>target_idx</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_target_idx'>target_idx</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span> <span class='op'>:</span> <span class='kw'>nil</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="target_platform-instance_method">
#<strong>target_platform</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns the targets platform, or the one assigned to the module itself.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
679
680
681</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 679</span>
<span class='kw'>def</span> <span class='id identifier rubyid_target_platform'>target_platform</span>
<span class='lparen'>(</span><span class='id identifier rubyid_target'>target</span> <span class='kw'>and</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>:</span> <span class='id identifier rubyid_platform'>platform</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="type-instance_method">
#<strong>type</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns MODULE_EXPLOIT to indicate that this is an exploit module.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
599
600
601</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 599</span>
<span class='kw'>def</span> <span class='id identifier rubyid_type'>type</span>
<span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Msf.html#MODULE_EXPLOIT-constant" title="Msf::MODULE_EXPLOIT (constant)">MODULE_EXPLOIT</a></span></span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="wfs_delay-instance_method">
#<strong>wfs_delay</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>The minimum “wait for session” delay is 3 seconds for all exploits, the WfsDelay configuration option is added on top of this. The delay allows time for the session handler to perform any session verification.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
1257
1258
1259</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1257</span>
<span class='kw'>def</span> <span class='id identifier rubyid_wfs_delay'>wfs_delay</span>
<span class='lparen'>(</span><span class='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>WfsDelay</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='int'>0</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span> <span class='op'>+</span> <span class='int'>3</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
</div>
</div>
<div id="footer">
Generated on Fri May 8 17:03:17 2026 by
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
0.9.37 (ruby-3.1.5).
</div>
</div>
</body>
</html>