1869 lines
60 KiB
HTML
1869 lines
60 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>
|
||
Module: Msf::Handler
|
||
|
||
— 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::Handler";
|
||
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 (H)</a> »
|
||
<span class='title'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span>
|
||
»
|
||
<span class="title">Handler</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>Module: Msf::Handler
|
||
|
||
|
||
|
||
</h1>
|
||
<div class="box_info">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<dl>
|
||
<dt>Included in:</dt>
|
||
<dd><span class='object_link'><a href="Handler/BindAwsInstanceConnect.html" title="Msf::Handler::BindAwsInstanceConnect (module)">BindAwsInstanceConnect</a></span>, <span class='object_link'><a href="Handler/BindAwsSsm.html" title="Msf::Handler::BindAwsSsm (module)">BindAwsSsm</a></span>, <span class='object_link'><a href="Handler/BindNamedPipe.html" title="Msf::Handler::BindNamedPipe (module)">BindNamedPipe</a></span>, <span class='object_link'><a href="Handler/BindSctp.html" title="Msf::Handler::BindSctp (module)">BindSctp</a></span>, <span class='object_link'><a href="Handler/BindTcp.html" title="Msf::Handler::BindTcp (module)">BindTcp</a></span>, <span class='object_link'><a href="Handler/BindUdp.html" title="Msf::Handler::BindUdp (module)">BindUdp</a></span>, <span class='object_link'><a href="Handler/FindPort.html" title="Msf::Handler::FindPort (module)">FindPort</a></span>, <span class='object_link'><a href="Handler/Generic.html" title="Msf::Handler::Generic (module)">Generic</a></span>, <span class='object_link'><a href="Handler/None.html" title="Msf::Handler::None (module)">None</a></span>, <span class='object_link'><a href="Handler/ReverseHttp.html" title="Msf::Handler::ReverseHttp (module)">ReverseHttp</a></span>, <span class='object_link'><a href="Handler/ReverseNamedPipe.html" title="Msf::Handler::ReverseNamedPipe (module)">ReverseNamedPipe</a></span>, <span class='object_link'><a href="Handler/ReverseSctp.html" title="Msf::Handler::ReverseSctp (module)">ReverseSctp</a></span>, <span class='object_link'><a href="Handler/ReverseSsh.html" title="Msf::Handler::ReverseSsh (module)">ReverseSsh</a></span>, <span class='object_link'><a href="Handler/ReverseTcp.html" title="Msf::Handler::ReverseTcp (module)">ReverseTcp</a></span>, <span class='object_link'><a href="Handler/ReverseTcpDouble.html" title="Msf::Handler::ReverseTcpDouble (module)">ReverseTcpDouble</a></span>, <span class='object_link'><a href="Handler/ReverseTcpDoubleSSL.html" title="Msf::Handler::ReverseTcpDoubleSSL (module)">ReverseTcpDoubleSSL</a></span>, <span class='object_link'><a href="Handler/ReverseUdp.html" title="Msf::Handler::ReverseUdp (module)">ReverseUdp</a></span></dd>
|
||
</dl>
|
||
|
||
|
||
|
||
<dl>
|
||
<dt>Defined in:</dt>
|
||
<dd>lib/msf/core/handler.rb<span class="defines">,<br />
|
||
lib/msf/core/handler/none.rb,<br /> lib/msf/core/handler/generic.rb,<br /> lib/msf/core/handler/reverse.rb,<br /> lib/msf/core/handler/bind_tcp.rb,<br /> lib/msf/core/handler/bind_udp.rb,<br /> lib/msf/core/handler/find_tag.rb,<br /> lib/msf/core/handler/find_tty.rb,<br /> lib/msf/core/handler/bind_sctp.rb,<br /> lib/msf/core/handler/find_port.rb,<br /> lib/msf/core/handler/find_shell.rb,<br /> lib/msf/core/handler/reverse/ssl.rb,<br /> lib/msf/core/handler/reverse_ssh.rb,<br /> lib/msf/core/handler/reverse_tcp.rb,<br /> lib/msf/core/handler/reverse_udp.rb,<br /> lib/msf/core/handler/bind_aws_ssm.rb,<br /> lib/msf/core/handler/reverse/comm.rb,<br /> lib/msf/core/handler/reverse_http.rb,<br /> lib/msf/core/handler/reverse_sctp.rb,<br /> lib/msf/core/handler/reverse_https.rb,<br /> lib/msf/core/handler/bind_named_pipe.rb,<br /> lib/msf/core/handler/reverse_tcp_ssl.rb,<br /> lib/msf/core/handler/reverse_named_pipe.rb,<br /> lib/msf/core/handler/reverse_tcp_double.rb,<br /> lib/msf/core/handler/reverse_tcp_all_ports.rb,<br /> lib/msf/core/handler/reverse_tcp_double_ssl.rb,<br /> lib/msf/core/handler/bind_aws_instance_connect.rb</span>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
|
||
<h2>Overview</h2><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>This module acts as a base for all handler pseudo-modules. They aren’t really modules, so don’t get the wrong idea champs! They’re merely mixed into dynamically generated payloads to handle monitoring for a connection. Handlers are layered in between the base payload class and any other payload class. A super cool ASCII diagram would look something like this</p>
|
||
|
||
<pre class="code ruby"><code class="ruby"> Module
|
||
^
|
||
|
|
||
Payload
|
||
^
|
||
|
|
||
Handler
|
||
^
|
||
|
|
||
Stager
|
||
^
|
||
|
|
||
Stage
|
||
</code></pre>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><h2>Defined Under Namespace</h2>
|
||
<p class="children">
|
||
|
||
|
||
<strong class="modules">Modules:</strong> <span class='object_link'><a href="Handler/BindAwsInstanceConnect.html" title="Msf::Handler::BindAwsInstanceConnect (module)">BindAwsInstanceConnect</a></span>, <span class='object_link'><a href="Handler/BindAwsSsm.html" title="Msf::Handler::BindAwsSsm (module)">BindAwsSsm</a></span>, <span class='object_link'><a href="Handler/BindNamedPipe.html" title="Msf::Handler::BindNamedPipe (module)">BindNamedPipe</a></span>, <span class='object_link'><a href="Handler/BindSctp.html" title="Msf::Handler::BindSctp (module)">BindSctp</a></span>, <span class='object_link'><a href="Handler/BindTcp.html" title="Msf::Handler::BindTcp (module)">BindTcp</a></span>, <span class='object_link'><a href="Handler/BindUdp.html" title="Msf::Handler::BindUdp (module)">BindUdp</a></span>, <span class='object_link'><a href="Handler/FindPort.html" title="Msf::Handler::FindPort (module)">FindPort</a></span>, <span class='object_link'><a href="Handler/FindShell.html" title="Msf::Handler::FindShell (module)">FindShell</a></span>, <span class='object_link'><a href="Handler/FindTag.html" title="Msf::Handler::FindTag (module)">FindTag</a></span>, <span class='object_link'><a href="Handler/FindTty.html" title="Msf::Handler::FindTty (module)">FindTty</a></span>, <span class='object_link'><a href="Handler/Generic.html" title="Msf::Handler::Generic (module)">Generic</a></span>, <span class='object_link'><a href="Handler/None.html" title="Msf::Handler::None (module)">None</a></span>, <span class='object_link'><a href="Handler/Reverse.html" title="Msf::Handler::Reverse (module)">Reverse</a></span>, <span class='object_link'><a href="Handler/ReverseHttp.html" title="Msf::Handler::ReverseHttp (module)">ReverseHttp</a></span>, <span class='object_link'><a href="Handler/ReverseHttps.html" title="Msf::Handler::ReverseHttps (module)">ReverseHttps</a></span>, <span class='object_link'><a href="Handler/ReverseNamedPipe.html" title="Msf::Handler::ReverseNamedPipe (module)">ReverseNamedPipe</a></span>, <span class='object_link'><a href="Handler/ReverseSctp.html" title="Msf::Handler::ReverseSctp (module)">ReverseSctp</a></span>, <span class='object_link'><a href="Handler/ReverseSsh.html" title="Msf::Handler::ReverseSsh (module)">ReverseSsh</a></span>, <span class='object_link'><a href="Handler/ReverseTcp.html" title="Msf::Handler::ReverseTcp (module)">ReverseTcp</a></span>, <span class='object_link'><a href="Handler/ReverseTcpAllPorts.html" title="Msf::Handler::ReverseTcpAllPorts (module)">ReverseTcpAllPorts</a></span>, <span class='object_link'><a href="Handler/ReverseTcpDouble.html" title="Msf::Handler::ReverseTcpDouble (module)">ReverseTcpDouble</a></span>, <span class='object_link'><a href="Handler/ReverseTcpDoubleSSL.html" title="Msf::Handler::ReverseTcpDoubleSSL (module)">ReverseTcpDoubleSSL</a></span>, <span class='object_link'><a href="Handler/ReverseTcpSsl.html" title="Msf::Handler::ReverseTcpSsl (module)">ReverseTcpSsl</a></span>, <span class='object_link'><a href="Handler/ReverseUdp.html" title="Msf::Handler::ReverseUdp (module)">ReverseUdp</a></span>
|
||
|
||
|
||
|
||
|
||
</p>
|
||
|
||
|
||
<h2>
|
||
Constant Summary
|
||
<small><a href="#" class="constants_summary_toggle">collapse</a></small>
|
||
</h2>
|
||
|
||
<dl class="constants">
|
||
|
||
<dt id="Claimed-constant" class="">Claimed =
|
||
<div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returned by handlers to indicate that a socket has been claimed for use by the payload.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div>
|
||
</dt>
|
||
<dd><pre class="code"><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>claimed</span><span class='tstring_end'>"</span></span></pre></dd>
|
||
|
||
<dt id="Unused-constant" class="">Unused =
|
||
<div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returned by handlers to indicate that a socket has not been claimed for use.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div>
|
||
</dt>
|
||
<dd><pre class="code"><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>unused</span><span class='tstring_end'>"</span></span></pre></dd>
|
||
|
||
</dl>
|
||
|
||
|
||
|
||
|
||
|
||
<h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
|
||
<ul class="summary">
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#exploit_config-instance_method" title="#exploit_config (instance method)">#<strong>exploit_config</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Set by the exploit module to configure handler.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#parent_payload-instance_method" title="#parent_payload (instance method)">#<strong>parent_payload</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>This will be non-nil if the handler has a parent payload that it was spawned from.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#pending_connections-instance_method" title="#pending_connections (instance method)">#<strong>pending_connections</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>:nodoc:.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#session_waiter_event-instance_method" title="#session_waiter_event (instance method)">#<strong>session_waiter_event</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>:nodoc:.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#sessions-instance_method" title="#sessions (instance method)">#<strong>sessions</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>:nodoc:.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
|
||
|
||
|
||
|
||
|
||
<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="#general_handler_type-class_method" title="general_handler_type (class method)">.<strong>general_handler_type</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns the transport-independent handler type.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#handler_type-class_method" title="handler_type (class method)">.<strong>handler_type</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns the handler type.</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 = {}) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Start another connection monitor.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#cleanup_handler-instance_method" title="#cleanup_handler (instance method)">#<strong>cleanup_handler</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Terminates the connection handler.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#create_session-instance_method" title="#create_session (instance method)">#<strong>create_session</strong>(conn, opts = {}) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Creates a session, if necessary, for the connection that’s been handled.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#handle_connection-instance_method" title="#handle_connection (instance method)">#<strong>handle_connection</strong>(conn, opts = {}) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Handles an established connection supplied in the in and out handles.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#handler-instance_method" title="#handler (instance method)">#<strong>handler</strong>(sock) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Checks to see if a payload connection has been established on the supplied connection.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#handler_name-instance_method" title="#handler_name (instance method)">#<strong>handler_name</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns the handler’s name, if any.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(info = {}) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Initializes the session waiter event and other fun stuff.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#interrupt_wait_for_session-instance_method" title="#interrupt_wait_for_session (instance method)">#<strong>interrupt_wait_for_session</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Interrupts a wait_for_session call by notifying with a nil event.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#register_session-instance_method" title="#register_session (instance method)">#<strong>register_session</strong>(session) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Registers a session with the framework and notifies any waiters of the new session.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#setup_handler-instance_method" title="#setup_handler (instance method)">#<strong>setup_handler</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Sets up the connection handler.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#start_handler-instance_method" title="#start_handler (instance method)">#<strong>start_handler</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Start monitoring for a connection.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#stop_handler-instance_method" title="#stop_handler (instance method)">#<strong>stop_handler</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Stop monitoring for a connection.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#wait_for_session-instance_method" title="#wait_for_session (instance method)">#<strong>wait_for_session</strong>(t = wfs_delay) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Waits for a session to be created as the result of a handler connection coming in.</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> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>The amount of time to wait for a session to come in.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
|
||
|
||
|
||
<div id="instance_attr_details" class="attr_details">
|
||
<h2>Instance Attribute Details</h2>
|
||
|
||
|
||
<span id="exploit_config=-instance_method"></span>
|
||
<div class="method_details first">
|
||
<h3 class="signature first" id="exploit_config-instance_method">
|
||
|
||
#<strong>exploit_config</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Set by the exploit module to configure handler</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
175
|
||
176
|
||
177</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/handler.rb', line 175</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_exploit_config'>exploit_config</span>
|
||
<span class='ivar'>@exploit_config</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
|
||
<span id="parent_payload=-instance_method"></span>
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="parent_payload-instance_method">
|
||
|
||
#<strong>parent_payload</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>This will be non-nil if the handler has a parent payload that it was spawned from. Right now, this is only the case with generic payloads. The parent payload is used to create a session rather than using the instance itself.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
183
|
||
184
|
||
185</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/handler.rb', line 183</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_parent_payload'>parent_payload</span>
|
||
<span class='ivar'>@parent_payload</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
|
||
<span id="pending_connections=-instance_method"></span>
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="pending_connections-instance_method">
|
||
|
||
#<strong>pending_connections</strong> ⇒ <tt>Object</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>:nodoc:</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
311
|
||
312
|
||
313</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/handler.rb', line 311</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_pending_connections'>pending_connections</span>
|
||
<span class='ivar'>@pending_connections</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
|
||
<span id="session_waiter_event=-instance_method"></span>
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="session_waiter_event-instance_method">
|
||
|
||
#<strong>session_waiter_event</strong> ⇒ <tt>Object</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>:nodoc:</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
310
|
||
311
|
||
312</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/handler.rb', line 310</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_session_waiter_event'>session_waiter_event</span>
|
||
<span class='ivar'>@session_waiter_event</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
|
||
<span id="sessions=-instance_method"></span>
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="sessions-instance_method">
|
||
|
||
#<strong>sessions</strong> ⇒ <tt>Object</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>:nodoc:</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
312
|
||
313
|
||
314</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/handler.rb', line 312</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_sessions'>sessions</span>
|
||
<span class='ivar'>@sessions</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="general_handler_type-class_method">
|
||
|
||
.<strong>general_handler_type</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns the transport-independent handler type.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
59
|
||
60
|
||
61</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/handler.rb', line 59</span>
|
||
|
||
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_general_handler_type'>general_handler_type</span>
|
||
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>none</span><span class='tstring_end'>"</span></span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="handler_type-class_method">
|
||
|
||
.<strong>handler_type</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns the handler type.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
52
|
||
53
|
||
54</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/handler.rb', line 52</span>
|
||
|
||
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_handler_type'>handler_type</span>
|
||
<span class='kw'>return</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>none</span><span class='tstring_end'>"</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 = {}) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Start another connection monitor</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
108
|
||
109</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/handler.rb', line 108</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'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="cleanup_handler-instance_method">
|
||
|
||
#<strong>cleanup_handler</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Terminates the connection handler.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
96
|
||
97</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/handler.rb', line 96</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_cleanup_handler'>cleanup_handler</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="create_session-instance_method">
|
||
|
||
#<strong>create_session</strong>(conn, opts = {}) ⇒ <tt>Object</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Creates a session, if necessary, for the connection that’s been handled. Sessions are only created if the payload that’s been mixed in has an associated session.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
192
|
||
193
|
||
194
|
||
195
|
||
196
|
||
197
|
||
198
|
||
199
|
||
200
|
||
201
|
||
202
|
||
203
|
||
204
|
||
205
|
||
206
|
||
207
|
||
208
|
||
209
|
||
210
|
||
211
|
||
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
|
||
243
|
||
244
|
||
245
|
||
246
|
||
247
|
||
248
|
||
249
|
||
250
|
||
251
|
||
252
|
||
253
|
||
254
|
||
255
|
||
256
|
||
257
|
||
258
|
||
259</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/handler.rb', line 192</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_create_session'>create_session</span><span class='lparen'>(</span><span class='id identifier rubyid_conn'>conn</span><span class='comma'>,</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='comment'># If there is a parent payload, then use that in preference.
|
||
</span> <span class='kw'>return</span> <span class='id identifier rubyid_parent_payload'>parent_payload</span><span class='period'>.</span><span class='id identifier rubyid_create_session'>create_session</span><span class='lparen'>(</span><span class='id identifier rubyid_conn'>conn</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_parent_payload'>parent_payload</span><span class='rparen'>)</span>
|
||
|
||
<span class='comment'># If the payload we merged in with has an associated session factory,
|
||
</span> <span class='comment'># allocate a new session.
|
||
</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_session'>session</span><span class='rparen'>)</span>
|
||
<span class='kw'>begin</span>
|
||
<span class='comment'># if there's a create_session method then use it, as this
|
||
</span> <span class='comment'># can form a factory for arb session types based on the
|
||
</span> <span class='comment'># payload.
|
||
</span> <span class='kw'>if</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>create_session</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_s'>s</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_create_session'>create_session</span><span class='lparen'>(</span><span class='id identifier rubyid_conn'>conn</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_s'>s</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_conn'>conn</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>Exception</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
||
<span class='comment'># We just wanna show and log the error, not trying to swallow it.
|
||
</span> <span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</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='period'>.</span><span class='id identifier rubyid_message'>message</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</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'>'</span><span class='tstring_content'>Could not allocate a new Session.</span><span class='tstring_end'>'</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='id identifier rubyid_raise'>raise</span> <span class='id identifier rubyid_e'>e</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># Pass along the framework context
|
||
</span> <span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_framework'>framework</span> <span class='op'>=</span> <span class='id identifier rubyid_framework'>framework</span>
|
||
|
||
<span class='comment'># Associate this system with the original exploit
|
||
</span> <span class='comment'># and any relevant information
|
||
</span> <span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_set_from_exploit'>set_from_exploit</span><span class='lparen'>(</span><span class='id identifier rubyid_assoc_exploit'>assoc_exploit</span><span class='rparen'>)</span>
|
||
|
||
<span class='comment'># set injected workspace value if db is active
|
||
</span> <span class='kw'>if</span> <span class='id identifier rubyid_framework'>framework</span><span class='period'>.</span><span class='id identifier rubyid_db'>db</span><span class='period'>.</span><span class='id identifier rubyid_active'>active</span> <span class='op'>&&</span> <span class='id identifier rubyid_wspace'>wspace</span> <span class='op'>=</span> <span class='id identifier rubyid_framework'>framework</span><span class='period'>.</span><span class='id identifier rubyid_db'>db</span><span class='period'>.</span><span class='id identifier rubyid_find_workspace'>find_workspace</span><span class='lparen'>(</span><span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_workspace'>workspace</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_framework'>framework</span><span class='period'>.</span><span class='id identifier rubyid_db'>db</span><span class='period'>.</span><span class='id identifier rubyid_workspace'>workspace</span> <span class='op'>=</span> <span class='id identifier rubyid_wspace'>wspace</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># Pass along any associated payload uuid if specified
|
||
</span> <span class='kw'>if</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:payload_uuid</span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_payload_uuid'>payload_uuid</span> <span class='op'>=</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:payload_uuid</span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_payload_uuid'>payload_uuid</span><span class='period'>.</span><span class='id identifier rubyid_registered'>registered</span> <span class='op'>=</span> <span class='kw'>false</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_framework'>framework</span><span class='period'>.</span><span class='id identifier rubyid_db'>db</span><span class='period'>.</span><span class='id identifier rubyid_active'>active</span>
|
||
<span class='id identifier rubyid_payload_info'>payload_info</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='label'>uuid:</span> <span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_payload_uuid'>payload_uuid</span><span class='period'>.</span><span class='id identifier rubyid_puid_hex'>puid_hex</span><span class='comma'>,</span> <span class='label'>workspace:</span> <span class='id identifier rubyid_framework'>framework</span><span class='period'>.</span><span class='id identifier rubyid_db'>db</span><span class='period'>.</span><span class='id identifier rubyid_workspace'>workspace</span> <span class='rbrace'>}</span>
|
||
<span class='id identifier rubyid_uuid_info'>uuid_info</span> <span class='op'>=</span> <span class='id identifier rubyid_framework'>framework</span><span class='period'>.</span><span class='id identifier rubyid_db'>db</span><span class='period'>.</span><span class='id identifier rubyid_payloads'>payloads</span><span class='lparen'>(</span><span class='id identifier rubyid_payload_info'>payload_info</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_print_warning'>print_warning</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Without a database connected that payload UUID tracking will not work!</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_payload_uuid'>payload_uuid</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:puid_hex</span><span class='rparen'>)</span> <span class='op'>&&</span> <span class='id identifier rubyid_uuid_info'>uuid_info</span>
|
||
<span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_payload_uuid'>payload_uuid</span><span class='period'>.</span><span class='id identifier rubyid_registered'>registered</span> <span class='op'>=</span> <span class='kw'>true</span>
|
||
<span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_payload_uuid'>payload_uuid</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span> <span class='op'>=</span> <span class='id identifier rubyid_uuid_info'>uuid_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>name</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_payload_uuid'>payload_uuid</span><span class='period'>.</span><span class='id identifier rubyid_timestamp'>timestamp</span> <span class='op'>=</span> <span class='id identifier rubyid_uuid_info'>uuid_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>timestamp</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_payload_uuid'>payload_uuid</span><span class='period'>.</span><span class='id identifier rubyid_registered'>registered</span> <span class='op'>=</span> <span class='kw'>false</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># If the session is valid, register it with the framework and
|
||
</span> <span class='comment'># notify any waiters we may have.
|
||
</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_s'>s</span><span class='rparen'>)</span>
|
||
<span class='comment'># Defer the session registration to the Session Manager scheduler
|
||
</span> <span class='id identifier rubyid_registration'>registration</span> <span class='op'>=</span> <span class='const'>Proc</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='kw'>do</span>
|
||
<span class='id identifier rubyid_register_session'>register_session</span><span class='lparen'>(</span><span class='id identifier rubyid_s'>s</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='id identifier rubyid_framework'>framework</span><span class='period'>.</span><span class='id identifier rubyid_sessions'>sessions</span><span class='period'>.</span><span class='id identifier rubyid_schedule'>schedule</span> <span class='id identifier rubyid_registration'>registration</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_s'>s</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="handle_connection-instance_method">
|
||
|
||
#<strong>handle_connection</strong>(conn, opts = {}) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Handles an established connection supplied in the in and out handles. The handles are passed as parameters in case this handler is capable of handling multiple simultaneous connections. The default behavior is to attempt to create a session for the payload. This path will not be taken for multi-staged payloads.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
132
|
||
133
|
||
134</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/handler.rb', line 132</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_handle_connection'>handle_connection</span><span class='lparen'>(</span><span class='id identifier rubyid_conn'>conn</span><span class='comma'>,</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='id identifier rubyid_create_session'>create_session</span><span class='lparen'>(</span><span class='id identifier rubyid_conn'>conn</span><span class='comma'>,</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="handler-instance_method">
|
||
|
||
#<strong>handler</strong>(sock) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Checks to see if a payload connection has been established on the supplied connection. This is necessary for find-sock style payloads.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
122
|
||
123</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/handler.rb', line 122</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_handler'>handler</span><span class='lparen'>(</span><span class='id identifier rubyid_sock'>sock</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="handler_name-instance_method">
|
||
|
||
#<strong>handler_name</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns the handler’s name, if any.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
66
|
||
67
|
||
68</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/handler.rb', line 66</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_handler_name'>handler_name</span>
|
||
<span class='id identifier rubyid_module_info'>module_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>HandlerName</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="initialize-instance_method">
|
||
|
||
#<strong>initialize</strong>(info = {}) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Initializes the session waiter event and other fun stuff.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
73
|
||
74
|
||
75
|
||
76
|
||
77
|
||
78
|
||
79
|
||
80
|
||
81
|
||
82
|
||
83
|
||
84
|
||
85</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/handler.rb', line 73</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='kw'>super</span>
|
||
|
||
<span class='comment'># Initialize the pending_connections counter to 0
|
||
</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_pending_connections'>pending_connections</span> <span class='op'>=</span> <span class='int'>0</span>
|
||
|
||
<span class='comment'># Initialize the sessions counter to 0
|
||
</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_sessions'>sessions</span> <span class='op'>=</span> <span class='int'>0</span>
|
||
|
||
<span class='comment'># Create the waiter event with auto_reset set to false so that
|
||
</span> <span class='comment'># if a session is ever created, waiting on it returns immediately.
|
||
</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_session_waiter_event'>session_waiter_event</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'>Sync</span><span class='op'>::</span><span class='const'>Event</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>false</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="interrupt_wait_for_session-instance_method">
|
||
|
||
#<strong>interrupt_wait_for_session</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Interrupts a wait_for_session call by notifying with a nil event</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
167
|
||
168
|
||
169
|
||
170</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/handler.rb', line 167</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_interrupt_wait_for_session'>interrupt_wait_for_session</span>
|
||
<span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_session_waiter_event'>session_waiter_event</span>
|
||
<span class='id identifier rubyid_session_waiter_event'>session_waiter_event</span><span class='period'>.</span><span class='id identifier rubyid_notify'>notify</span><span class='lparen'>(</span><span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="register_session-instance_method">
|
||
|
||
#<strong>register_session</strong>(session) ⇒ <tt>Object</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Registers a session with the framework and notifies any waiters of the new session.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
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</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/handler.rb', line 265</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_register_session'>register_session</span><span class='lparen'>(</span><span class='id identifier rubyid_session'>session</span><span class='rparen'>)</span>
|
||
<span class='comment'># Register the session with the framework
|
||
</span> <span class='id identifier rubyid_framework'>framework</span><span class='period'>.</span><span class='id identifier rubyid_sessions'>sessions</span><span class='period'>.</span><span class='id identifier rubyid_register'>register</span><span class='lparen'>(</span><span class='id identifier rubyid_session'>session</span><span class='rparen'>)</span>
|
||
|
||
<span class='comment'># Call the handler's on_session() method
|
||
</span> <span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:bootstrap</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_bootstrap'>bootstrap</span><span class='lparen'>(</span><span class='id identifier rubyid_datastore'>datastore</span><span class='comma'>,</span> <span class='kw'>self</span><span class='rparen'>)</span>
|
||
|
||
<span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_alive'>alive</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># Process the auto-run scripts for this session
|
||
</span> <span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:process_autoruns</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_process_autoruns'>process_autoruns</span><span class='lparen'>(</span><span class='id identifier rubyid_datastore'>datastore</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># Tell the handler that we have a session
|
||
</span> <span class='id identifier rubyid_on_session'>on_session</span><span class='lparen'>(</span><span class='id identifier rubyid_session'>session</span><span class='rparen'>)</span>
|
||
|
||
<span class='comment'># Notify the framework that we have a new session opening up...
|
||
</span> <span class='comment'># Don't let errant event handlers kill our session
|
||
</span> <span class='kw'>begin</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_session_open'>on_session_open</span><span class='lparen'>(</span><span class='id identifier rubyid_session'>session</span><span class='rparen'>)</span>
|
||
<span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>Exception</span> <span class='op'>=></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'>"</span><span class='tstring_content'>Exception in on_session_open event handler: </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'>"</span></span><span class='rparen'>)</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'>"</span><span class='tstring_content'>Call Stack\n</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_backtrace'>backtrace</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>\n</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># If there is an exploit associated with this payload, then let's notify
|
||
</span> <span class='comment'># anyone who is interested that this exploit succeeded
|
||
</span> <span class='kw'>if</span> <span class='id identifier rubyid_assoc_exploit'>assoc_exploit</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_exploit_success'>on_exploit_success</span><span class='lparen'>(</span><span class='id identifier rubyid_assoc_exploit'>assoc_exploit</span><span class='comma'>,</span> <span class='id identifier rubyid_session'>session</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># Notify waiters that they should be ready to rock
|
||
</span> <span class='id identifier rubyid_session_waiter_event'>session_waiter_event</span><span class='period'>.</span><span class='id identifier rubyid_notify'>notify</span><span class='lparen'>(</span><span class='id identifier rubyid_session'>session</span><span class='rparen'>)</span>
|
||
|
||
<span class='comment'># Decrement the pending connections counter now that we've processed
|
||
</span> <span class='comment'># one session.
|
||
</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_pending_connections'>pending_connections</span> <span class='op'>-=</span> <span class='int'>1</span>
|
||
|
||
<span class='comment'># Count the number of sessions we have registered
|
||
</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_sessions'>sessions</span> <span class='op'>+=</span> <span class='int'>1</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="setup_handler-instance_method">
|
||
|
||
#<strong>setup_handler</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Sets up the connection handler.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
90
|
||
91</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/handler.rb', line 90</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_setup_handler'>setup_handler</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="start_handler-instance_method">
|
||
|
||
#<strong>start_handler</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Start monitoring for a connection.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
102
|
||
103</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/handler.rb', line 102</span>
|
||
|
||
<span class='kw'>def</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="stop_handler-instance_method">
|
||
|
||
#<strong>stop_handler</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Stop monitoring for a connection.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
114
|
||
115</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/handler.rb', line 114</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_stop_handler'>stop_handler</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="wait_for_session-instance_method">
|
||
|
||
#<strong>wait_for_session</strong>(t = wfs_delay) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Waits for a session to be created as the result of a handler connection coming in. The return value is a session object instance on success or nil if the timeout expires.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
148
|
||
149
|
||
150
|
||
151
|
||
152
|
||
153
|
||
154
|
||
155
|
||
156
|
||
157
|
||
158
|
||
159
|
||
160
|
||
161
|
||
162</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/handler.rb', line 148</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_wait_for_session'>wait_for_session</span><span class='lparen'>(</span><span class='id identifier rubyid_t'>t</span> <span class='op'>=</span> <span class='id identifier rubyid_wfs_delay'>wfs_delay</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_session'>session</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
||
|
||
<span class='kw'>begin</span>
|
||
<span class='id identifier rubyid_session'>session</span> <span class='op'>=</span> <span class='id identifier rubyid_session_waiter_event'>session_waiter_event</span><span class='period'>.</span><span class='id identifier rubyid_wait'>wait</span><span class='lparen'>(</span><span class='id identifier rubyid_t'>t</span><span class='rparen'>)</span>
|
||
<span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>Timeout</span><span class='op'>::</span><span class='const'>Error</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># If a connection has arrived, wait longer...
|
||
</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_pending_connections'>pending_connections</span> <span class='op'>></span> <span class='int'>0</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_session'>session</span> <span class='op'>=</span> <span class='id identifier rubyid_session_waiter_event'>session_waiter_event</span><span class='period'>.</span><span class='id identifier rubyid_wait'>wait</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_session'>session</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> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>The amount of time to wait for a session to come in.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
139
|
||
140
|
||
141</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/handler.rb', line 139</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_wfs_delay'>wfs_delay</span>
|
||
<span class='int'>2</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div id="footer">
|
||
Generated on Fri May 8 17:01:01 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> |