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

1910 lines
52 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::SMB::ShadowMitmDispatcher
&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::SMB::ShadowMitmDispatcher";
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 (S)</a> &raquo;
<span class='title'><span class='object_link'><a href="../../../Msf.html" title="Msf (module)">Msf</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../../Exploit.html" title="Msf::Exploit (class)">Exploit</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../SMB.html" title="Msf::Exploit::SMB (module)">SMB</a></span></span>
&raquo;
<span class="title">ShadowMitmDispatcher</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::SMB::ShadowMitmDispatcher
</h1>
<div class="box_info">
<dl>
<dt>Inherits:</dt>
<dd>
<span class="inheritName">RubySMB::Dispatcher::Base</span>
<ul class="fullTree">
<li>Object</li>
<li class="next">RubySMB::Dispatcher::Base</li>
<li class="next">Msf::Exploit::SMB::ShadowMitmDispatcher</li>
</ul>
<a href="#" class="inheritanceTree">show all</a>
</dd>
</dl>
<dl>
<dt>Defined in:</dt>
<dd>lib/msf/core/exploit/smb/shadow_mitm_dispatcher.rb</dd>
</dl>
</div>
<h2>Overview</h2><div class="docstring">
<div class="discussion">
<p>This class provides a Man-In-The-Middle packet Dispatcher.</p>
</div>
</div>
<div class="tags">
</div>
<h2>
Constant Summary
<small><a href="#" class="constants_summary_toggle">collapse</a></small>
</h2>
<dl class="constants">
<dt id="READ_TIMEOUT-constant" class="">READ_TIMEOUT =
</dt>
<dd><pre class="code"><span class='int'>30</span></pre></dd>
<dt id="TCP_MSS-constant" class="">TCP_MSS =
<div class="docstring">
<div class="discussion">
<p>RFC 879</p>
</div>
</div>
<div class="tags">
</div>
</dt>
<dd><pre class="code"><span class='int'>536</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="#ccap-instance_method" title="#ccap (instance method)">#<strong>ccap</strong> &#x21d2; PacketFu::Capture </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#eth_dst-instance_method" title="#eth_dst (instance method)">#<strong>eth_dst</strong> &#x21d2; String </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#eth_src-instance_method" title="#eth_src (instance method)">#<strong>eth_src</strong> &#x21d2; String </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#interface-instance_method" title="#interface (instance method)">#<strong>interface</strong> &#x21d2; String </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#ip_dst-instance_method" title="#ip_dst (instance method)">#<strong>ip_dst</strong> &#x21d2; String </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#ip_src-instance_method" title="#ip_src (instance method)">#<strong>ip_src</strong> &#x21d2; String </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#mac-instance_method" title="#mac (instance method)">#<strong>mac</strong> &#x21d2; String </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#read_timeout-instance_method" title="#read_timeout (instance method)">#<strong>read_timeout</strong> &#x21d2; Integer </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#stream-instance_method" title="#stream (instance method)">#<strong>stream</strong> &#x21d2; IO </a>
(also: #tcp_socket)
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#tcp_ack-instance_method" title="#tcp_ack (instance method)">#<strong>tcp_ack</strong> &#x21d2; Integer </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#tcp_dst-instance_method" title="#tcp_dst (instance method)">#<strong>tcp_dst</strong> &#x21d2; Integer </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#tcp_mss-instance_method" title="#tcp_mss (instance method)">#<strong>tcp_mss</strong> &#x21d2; Integer </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#tcp_seq-instance_method" title="#tcp_seq (instance method)">#<strong>tcp_seq</strong> &#x21d2; Integer </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#tcp_src-instance_method" title="#tcp_src (instance method)">#<strong>tcp_src</strong> &#x21d2; Integer </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#tcp_win-instance_method" title="#tcp_win (instance method)">#<strong>tcp_win</strong> &#x21d2; Integer </a>
</span>
<span class="summary_desc"><div class='inline'></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="#connect-class_method" title="connect (class method)">.<strong>connect</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'></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="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(interface:, mac:, eth_src:, eth_dst:, ip_src:, ip_dst:, tcp_src:, tcp_dst:, tcp_seq:, tcp_ack:, tcp_win:, tcp_mss: TCP_MSS, read_timeout: READ_TIMEOUT) &#x21d2; ShadowMitmDispatcher </a>
</span>
<span class="note title constructor">constructor</span>
<span class="summary_desc"><div class='inline'>
<p>We decide the host based on the first person to connect.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#recv_packet-instance_method" title="#recv_packet (instance method)">#<strong>recv_packet</strong>(full_response: false) &#x21d2; String </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Read a packet off the wire and parse it into a string.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#send_packet-instance_method" title="#send_packet (instance method)">#<strong>send_packet</strong>(packet, nbss_header: true, tcp_flags: { ack: 1, psh: 1 }, tcp_opts: &quot;&quot;) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Needs: @tcp_src, @tcp_dst, @tcp_seq, @tcp_ack, @tcp-win, @interface, @mac.</p>
</div></span>
</li>
</ul>
<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>(interface:, mac:, eth_src:, eth_dst:, ip_src:, ip_dst:, tcp_src:, tcp_dst:, tcp_seq:, tcp_ack:, tcp_win:, tcp_mss: TCP_MSS, read_timeout: READ_TIMEOUT) &#x21d2; <tt><span class='object_link'><a href="" title="Msf::Exploit::SMB::ShadowMitmDispatcher (class)">ShadowMitmDispatcher</a></span></tt>
</h3><div class="docstring">
<div class="discussion">
<p>We decide the host based on the first person to connect</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/smb/shadow_mitm_dispatcher.rb', line 86</span>
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>interface:</span> <span class='comma'>,</span> <span class='label'>mac:</span> <span class='comma'>,</span> <span class='label'>eth_src:</span> <span class='comma'>,</span> <span class='label'>eth_dst:</span> <span class='comma'>,</span> <span class='label'>ip_src:</span> <span class='comma'>,</span> <span class='label'>ip_dst:</span> <span class='comma'>,</span> <span class='label'>tcp_src:</span><span class='comma'>,</span> <span class='label'>tcp_dst:</span> <span class='comma'>,</span> <span class='label'>tcp_seq:</span> <span class='comma'>,</span> <span class='label'>tcp_ack:</span> <span class='comma'>,</span> <span class='label'>tcp_win:</span> <span class='comma'>,</span> <span class='label'>tcp_mss:</span> <span class='const'><span class='object_link'><a href="#TCP_MSS-constant" title="Msf::Exploit::SMB::ShadowMitmDispatcher::TCP_MSS (constant)">TCP_MSS</a></span></span><span class='comma'>,</span> <span class='label'>read_timeout:</span> <span class='const'><span class='object_link'><a href="#READ_TIMEOUT-constant" title="Msf::Exploit::SMB::ShadowMitmDispatcher::READ_TIMEOUT (constant)">READ_TIMEOUT</a></span></span><span class='rparen'>)</span>
<span class='ivar'>@interface</span> <span class='op'>=</span> <span class='id identifier rubyid_interface'>interface</span>
<span class='ivar'>@mac</span> <span class='op'>=</span> <span class='id identifier rubyid_mac'>mac</span>
<span class='ivar'>@eth_src</span> <span class='op'>=</span> <span class='id identifier rubyid_eth_src'>eth_src</span>
<span class='ivar'>@eth_dst</span> <span class='op'>=</span> <span class='id identifier rubyid_eth_dst'>eth_dst</span>
<span class='ivar'>@ip_src</span> <span class='op'>=</span> <span class='id identifier rubyid_ip_src'>ip_src</span>
<span class='ivar'>@ip_dst</span> <span class='op'>=</span> <span class='id identifier rubyid_ip_dst'>ip_dst</span>
<span class='ivar'>@tcp_src</span> <span class='op'>=</span> <span class='id identifier rubyid_tcp_src'>tcp_src</span>
<span class='ivar'>@tcp_dst</span> <span class='op'>=</span> <span class='id identifier rubyid_tcp_dst'>tcp_dst</span>
<span class='ivar'>@tcp_seq</span> <span class='op'>=</span> <span class='id identifier rubyid_tcp_seq'>tcp_seq</span>
<span class='ivar'>@tcp_ack</span> <span class='op'>=</span> <span class='id identifier rubyid_tcp_ack'>tcp_ack</span>
<span class='ivar'>@tcp_win</span> <span class='op'>=</span> <span class='id identifier rubyid_tcp_win'>tcp_win</span>
<span class='ivar'>@tcp_mss</span> <span class='op'>=</span> <span class='id identifier rubyid_tcp_mss'>tcp_mss</span>
<span class='ivar'>@read_timeout</span> <span class='op'>=</span> <span class='id identifier rubyid_read_timeout'>read_timeout</span>
<span class='comment'># Just create something to close
</span> <span class='ivar'>@stream</span> <span class='op'>=</span> <span class='const'>Socket</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='const'>Socket</span><span class='op'>::</span><span class='const'>AF_INET</span><span class='comma'>,</span> <span class='const'>Socket</span><span class='op'>::</span><span class='const'>SOCK_STREAM</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="ccap=-instance_method"></span>
<div class="method_details first">
<h3 class="signature first" id="ccap-instance_method">
#<strong>ccap</strong> &#x21d2; <tt>PacketFu::Capture</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>PacketFu::Capture</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
83
84
85</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/smb/shadow_mitm_dispatcher.rb', line 83</span>
<span class='kw'>def</span> <span class='id identifier rubyid_ccap'>ccap</span>
<span class='ivar'>@ccap</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="eth_dst=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="eth_dst-instance_method">
#<strong>eth_dst</strong> &#x21d2; <tt>String</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>String</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
38
39
40</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/smb/shadow_mitm_dispatcher.rb', line 38</span>
<span class='kw'>def</span> <span class='id identifier rubyid_eth_dst'>eth_dst</span>
<span class='ivar'>@eth_dst</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="eth_src=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="eth_src-instance_method">
#<strong>eth_src</strong> &#x21d2; <tt>String</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>String</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
33
34
35</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/smb/shadow_mitm_dispatcher.rb', line 33</span>
<span class='kw'>def</span> <span class='id identifier rubyid_eth_src'>eth_src</span>
<span class='ivar'>@eth_src</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="interface=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="interface-instance_method">
#<strong>interface</strong> &#x21d2; <tt>String</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>String</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
23
24
25</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/smb/shadow_mitm_dispatcher.rb', line 23</span>
<span class='kw'>def</span> <span class='id identifier rubyid_interface'>interface</span>
<span class='ivar'>@interface</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="ip_dst=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="ip_dst-instance_method">
#<strong>ip_dst</strong> &#x21d2; <tt>String</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>String</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
48
49
50</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/smb/shadow_mitm_dispatcher.rb', line 48</span>
<span class='kw'>def</span> <span class='id identifier rubyid_ip_dst'>ip_dst</span>
<span class='ivar'>@ip_dst</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="ip_src=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="ip_src-instance_method">
#<strong>ip_src</strong> &#x21d2; <tt>String</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>String</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
43
44
45</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/smb/shadow_mitm_dispatcher.rb', line 43</span>
<span class='kw'>def</span> <span class='id identifier rubyid_ip_src'>ip_src</span>
<span class='ivar'>@ip_src</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="mac=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="mac-instance_method">
#<strong>mac</strong> &#x21d2; <tt>String</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>String</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
28
29
30</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/smb/shadow_mitm_dispatcher.rb', line 28</span>
<span class='kw'>def</span> <span class='id identifier rubyid_mac'>mac</span>
<span class='ivar'>@mac</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="read_timeout=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="read_timeout-instance_method">
#<strong>read_timeout</strong> &#x21d2; <tt>Integer</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>Integer</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
18
19
20</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/smb/shadow_mitm_dispatcher.rb', line 18</span>
<span class='kw'>def</span> <span class='id identifier rubyid_read_timeout'>read_timeout</span>
<span class='ivar'>@read_timeout</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="stream=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="stream-instance_method">
#<strong>stream</strong> &#x21d2; <tt>IO</tt>
<span class="aliases">Also known as:
<span class="names"><span id='tcp_socket-instance_method'>tcp_socket</span></span>
</span>
</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>IO</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
11
12
13</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/smb/shadow_mitm_dispatcher.rb', line 11</span>
<span class='kw'>def</span> <span class='id identifier rubyid_stream'>stream</span>
<span class='ivar'>@stream</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="tcp_ack=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="tcp_ack-instance_method">
#<strong>tcp_ack</strong> &#x21d2; <tt>Integer</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>Integer</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
58
59
60</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/smb/shadow_mitm_dispatcher.rb', line 58</span>
<span class='kw'>def</span> <span class='id identifier rubyid_tcp_ack'>tcp_ack</span>
<span class='ivar'>@tcp_ack</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="tcp_dst=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="tcp_dst-instance_method">
#<strong>tcp_dst</strong> &#x21d2; <tt>Integer</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>Integer</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
68
69
70</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/smb/shadow_mitm_dispatcher.rb', line 68</span>
<span class='kw'>def</span> <span class='id identifier rubyid_tcp_dst'>tcp_dst</span>
<span class='ivar'>@tcp_dst</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="tcp_mss=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="tcp_mss-instance_method">
#<strong>tcp_mss</strong> &#x21d2; <tt>Integer</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>Integer</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
78
79
80</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/smb/shadow_mitm_dispatcher.rb', line 78</span>
<span class='kw'>def</span> <span class='id identifier rubyid_tcp_mss'>tcp_mss</span>
<span class='ivar'>@tcp_mss</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="tcp_seq=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="tcp_seq-instance_method">
#<strong>tcp_seq</strong> &#x21d2; <tt>Integer</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>Integer</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
53
54
55</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/smb/shadow_mitm_dispatcher.rb', line 53</span>
<span class='kw'>def</span> <span class='id identifier rubyid_tcp_seq'>tcp_seq</span>
<span class='ivar'>@tcp_seq</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="tcp_src=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="tcp_src-instance_method">
#<strong>tcp_src</strong> &#x21d2; <tt>Integer</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>Integer</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
63
64
65</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/smb/shadow_mitm_dispatcher.rb', line 63</span>
<span class='kw'>def</span> <span class='id identifier rubyid_tcp_src'>tcp_src</span>
<span class='ivar'>@tcp_src</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="tcp_win=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="tcp_win-instance_method">
#<strong>tcp_win</strong> &#x21d2; <tt>Integer</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>Integer</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
73
74
75</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/smb/shadow_mitm_dispatcher.rb', line 73</span>
<span class='kw'>def</span> <span class='id identifier rubyid_tcp_win'>tcp_win</span>
<span class='ivar'>@tcp_win</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="connect-class_method">
.<strong>connect</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
</div>
</div>
<div class="tags">
<p class="tag_title">Parameters:</p>
<ul class="param">
<li>
<span class='name'>host</span>
<span class='type'>(<tt>String</tt>)</span>
&mdash;
<div class='inline'>
<p>passed to TCPSocket.new</p>
</div>
</li>
<li>
<span class='name'>port</span>
<span class='type'>(<tt>Fixnum</tt>)</span>
&mdash;
<div class='inline'>
<p>passed to TCPSocket.new</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
106
107
108</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/smb/shadow_mitm_dispatcher.rb', line 106</span>
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_connect'>connect</span><span class='comment'>#(host, port: 445, socket: TCPSocket.new(host, port))
</span> <span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='rparen'>)</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="recv_packet-instance_method">
#<strong>recv_packet</strong>(full_response: false) &#x21d2; <tt>String</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Read a packet off the wire and parse it into a string</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Parameters:</p>
<ul class="param">
<li>
<span class='name'>full_response</span>
<span class='type'>(<tt>Boolean</tt>)</span>
<em class="default">(defaults to: <tt>false</tt>)</em>
&mdash;
<div class='inline'>
<p>whether to include the NetBios Session Service header in the response</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>the raw response (including the NetBios Session Service header if full_response is true)</p>
</div>
</li>
</ul>
<p class="tag_title">Raises:</p>
<ul class="raise">
<li>
<span class='type'>(<tt>RubySMB::Error::NetBiosSessionService</tt>)</span>
&mdash;
<div class='inline'>
<p>if theres an error reading the first 4 bytes, which are assumed to be the NetBiosSessionService header.</p>
</div>
</li>
<li>
<span class='type'>(<tt>RubySMB::Error::CommunicationError</tt>)</span>
&mdash;
<div class='inline'>
<p>if the read timeout expires or an error occurs when reading the packet</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/smb/shadow_mitm_dispatcher.rb', line 166</span>
<span class='kw'>def</span> <span class='id identifier rubyid_recv_packet'>recv_packet</span><span class='lparen'>(</span><span class='label'>full_response:</span> <span class='kw'>false</span><span class='rparen'>)</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>RubySMB</span><span class='op'>::</span><span class='const'>Error</span><span class='op'>::</span><span class='const'>CommunicationError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Capture has not been initialized</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>unless</span> <span class='ivar'>@ccap</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span> <span class='op'>==</span> <span class='const'>PacketFu</span><span class='op'>::</span><span class='const'>Capture</span>
<span class='id identifier rubyid_pkt'>pkt</span> <span class='op'>=</span> <span class='ivar'>@stream</span><span class='period'>.</span><span class='id identifier rubyid_each_data'>each_data</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_data'>data</span><span class='op'>|</span>
<span class='id identifier rubyid_pkt'>pkt</span> <span class='op'>=</span> <span class='const'>PacketFu</span><span class='op'>::</span><span class='const'>Packet</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
<span class='kw'>break</span> <span class='id identifier rubyid_pkt'>pkt</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_pkt'>pkt</span><span class='period'>.</span><span class='id identifier rubyid_tcp_header'>tcp_header</span><span class='period'>.</span><span class='id identifier rubyid_tcp_seq'>tcp_seq</span> <span class='op'>==</span> <span class='ivar'>@tcp_ack</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='lparen'>(</span><span class='ivar'>@tcp_ack</span> <span class='op'>==</span> <span class='int'>0</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>Errno</span><span class='op'>::</span><span class='const'>ECONNRESET</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Received a RST packet</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_pkt'>pkt</span><span class='period'>.</span><span class='id identifier rubyid_tcp_header'>tcp_header</span><span class='period'>.</span><span class='id identifier rubyid_tcp_flags'>tcp_flags</span><span class='period'>.</span><span class='id identifier rubyid_rst'>rst</span> <span class='op'>==</span> <span class='int'>1</span>
<span class='comment'>#puts &quot;#{pkt.tcp_header.tcp_seq} == #{@tcp_ack}&quot;
</span> <span class='ivar'>@tcp_ack</span> <span class='op'>=</span> <span class='id identifier rubyid_pkt'>pkt</span><span class='period'>.</span><span class='id identifier rubyid_tcp_header'>tcp_header</span><span class='period'>.</span><span class='id identifier rubyid_tcp_seq'>tcp_seq</span> <span class='op'>+</span> <span class='id identifier rubyid_pkt'>pkt</span><span class='period'>.</span><span class='id identifier rubyid_tcp_header'>tcp_header</span><span class='period'>.</span><span class='id identifier rubyid_body'>body</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span>
<span class='ivar'>@tcp_ack</span> <span class='op'>+=</span> <span class='int'>1</span> <span class='kw'>if</span> <span class='id identifier rubyid_pkt'>pkt</span><span class='period'>.</span><span class='id identifier rubyid_tcp_header'>tcp_header</span><span class='period'>.</span><span class='id identifier rubyid_tcp_flags'>tcp_flags</span><span class='period'>.</span><span class='id identifier rubyid_syn'>syn</span> <span class='op'>==</span> <span class='int'>1</span>
<span class='ivar'>@tcp_seq</span> <span class='op'>=</span> <span class='id identifier rubyid_pkt'>pkt</span><span class='period'>.</span><span class='id identifier rubyid_tcp_header'>tcp_header</span><span class='period'>.</span><span class='id identifier rubyid_tcp_ack'>tcp_ack</span>
<span class='kw'>return</span> <span class='id identifier rubyid_pkt'>pkt</span><span class='period'>.</span><span class='id identifier rubyid_payload'>payload</span><span class='lbracket'>[</span><span class='lparen'>(</span><span class='id identifier rubyid_full_response'>full_response</span> <span class='op'>?</span> <span class='int'>0</span> <span class='op'>:</span> <span class='int'>4</span><span class='rparen'>)</span><span class='op'>..</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span>
<span class='kw'>rescue</span> <span class='const'>Errno</span><span class='op'>::</span><span class='const'>EINVAL</span><span class='comma'>,</span> <span class='const'>Errno</span><span class='op'>::</span><span class='const'>ECONNABORTED</span><span class='comma'>,</span> <span class='const'>Errno</span><span class='op'>::</span><span class='const'>ECONNRESET</span><span class='comma'>,</span> <span class='const'>TypeError</span><span class='comma'>,</span> <span class='const'>NoMethodError</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>RubySMB</span><span class='op'>::</span><span class='const'>Error</span><span class='op'>::</span><span class='const'>CommunicationError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>An error occurred reading from the Network </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'>&quot;</span></span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="send_packet-instance_method">
#<strong>send_packet</strong>(packet, nbss_header: true, tcp_flags: { ack: 1, psh: 1 }, tcp_opts: &quot;&quot;) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Needs: @tcp_src, @tcp_dst, @tcp_seq, @tcp_ack, @tcp-win, @interface, @mac</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/smb/shadow_mitm_dispatcher.rb', line 111</span>
<span class='kw'>def</span> <span class='id identifier rubyid_send_packet'>send_packet</span><span class='lparen'>(</span><span class='id identifier rubyid_packet'>packet</span><span class='comma'>,</span> <span class='label'>nbss_header:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='label'>tcp_flags:</span> <span class='lbrace'>{</span> <span class='label'>ack:</span> <span class='int'>1</span><span class='comma'>,</span> <span class='label'>psh:</span> <span class='int'>1</span> <span class='rbrace'>}</span><span class='comma'>,</span> <span class='label'>tcp_opts:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_data'>data</span> <span class='op'>=</span> <span class='id identifier rubyid_nbss_header'>nbss_header</span> <span class='op'>?</span> <span class='id identifier rubyid_nbss'>nbss</span><span class='lparen'>(</span><span class='id identifier rubyid_packet'>packet</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'>if</span> <span class='id identifier rubyid_packet'>packet</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:to_binary_s</span><span class='rparen'>)</span>
<span class='id identifier rubyid_data'>data</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_packet'>packet</span><span class='period'>.</span><span class='id identifier rubyid_to_binary_s'>to_binary_s</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_data'>data</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_packet'>packet</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_eth_header'>eth_header</span> <span class='op'>=</span> <span class='const'>PacketFu</span><span class='op'>::</span><span class='const'>EthHeader</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>eth_src:</span> <span class='ivar'>@eth_src</span><span class='comma'>,</span> <span class='label'>eth_dst:</span> <span class='ivar'>@eth_dst</span><span class='rparen'>)</span>
<span class='id identifier rubyid_ip_header'>ip_header</span> <span class='op'>=</span> <span class='const'>PacketFu</span><span class='op'>::</span><span class='const'>IPHeader</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>ip_src:</span> <span class='ivar'>@ip_src</span><span class='comma'>,</span> <span class='label'>ip_dst:</span> <span class='ivar'>@ip_dst</span><span class='rparen'>)</span>
<span class='id identifier rubyid_tcp_header'>tcp_header</span> <span class='op'>=</span> <span class='const'>PacketFu</span><span class='op'>::</span><span class='const'>TCPHeader</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span>
<span class='label'>tcp_src:</span> <span class='ivar'>@tcp_src</span><span class='comma'>,</span>
<span class='label'>tcp_dst:</span> <span class='ivar'>@tcp_dst</span><span class='comma'>,</span>
<span class='label'>tcp_seq:</span> <span class='ivar'>@tcp_seq</span><span class='comma'>,</span>
<span class='label'>tcp_ack:</span> <span class='ivar'>@tcp_ack</span><span class='comma'>,</span>
<span class='label'>tcp_win:</span> <span class='ivar'>@tcp_win</span><span class='comma'>,</span>
<span class='label'>tcp_flags:</span> <span class='id identifier rubyid_tcp_flags'>tcp_flags</span><span class='comma'>,</span>
<span class='label'>tcp_opts:</span> <span class='id identifier rubyid_tcp_opts'>tcp_opts</span>
<span class='rparen'>)</span>
<span class='id identifier rubyid_pkt'>pkt</span> <span class='op'>=</span> <span class='const'>PacketFu</span><span class='op'>::</span><span class='const'>TCPPacket</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>eth:</span> <span class='id identifier rubyid_eth_header'>eth_header</span><span class='comma'>,</span> <span class='label'>ip:</span> <span class='id identifier rubyid_ip_header'>ip_header</span><span class='comma'>,</span> <span class='label'>tcp:</span> <span class='id identifier rubyid_tcp_header'>tcp_header</span><span class='rparen'>)</span>
<span class='id identifier rubyid_pkt'>pkt</span><span class='period'>.</span><span class='id identifier rubyid_payload'>payload</span> <span class='op'>=</span> <span class='id identifier rubyid_data'>data</span>
<span class='id identifier rubyid_pkt'>pkt</span><span class='period'>.</span><span class='id identifier rubyid_recalc'>recalc</span>
<span class='ivar'>@stream</span><span class='period'>.</span><span class='id identifier rubyid_close'>close</span> <span class='kw'>if</span> <span class='ivar'>@stream</span>
<span class='ivar'>@ccap</span> <span class='op'>=</span> <span class='const'>PacketFu</span><span class='op'>::</span><span class='const'>Capture</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span>
<span class='label'>iface:</span> <span class='ivar'>@interface</span><span class='comma'>,</span>
<span class='label'>promisc:</span> <span class='kw'>false</span><span class='comma'>,</span>
<span class='label'>start:</span> <span class='kw'>true</span><span class='comma'>,</span>
<span class='label'>filter:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>ether dst </span><span class='embexpr_beg'>#{</span><span class='ivar'>@mac</span><span class='embexpr_end'>}</span><span class='tstring_content'> and not ether src </span><span class='embexpr_beg'>#{</span><span class='ivar'>@mac</span><span class='embexpr_end'>}</span><span class='tstring_content'> and src port </span><span class='embexpr_beg'>#{</span><span class='ivar'>@tcp_dst</span><span class='embexpr_end'>}</span><span class='tstring_content'> and dst port </span><span class='embexpr_beg'>#{</span><span class='ivar'>@tcp_src</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
<span class='rparen'>)</span>
<span class='ivar'>@stream</span> <span class='op'>=</span> <span class='ivar'>@ccap</span><span class='period'>.</span><span class='id identifier rubyid_stream'>stream</span>
<span class='kw'>if</span> <span class='id identifier rubyid_data'>data</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>&gt;</span> <span class='ivar'>@tcp_mss</span>
<span class='id identifier rubyid_ip_body'>ip_body</span> <span class='op'>=</span> <span class='id identifier rubyid_pkt'>pkt</span><span class='period'>.</span><span class='id identifier rubyid_ip_header'>ip_header</span><span class='period'>.</span><span class='id identifier rubyid_body'>body</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
<span class='id identifier rubyid_ip_id'>ip_id</span> <span class='op'>=</span> <span class='id identifier rubyid_pkt'>pkt</span><span class='period'>.</span><span class='id identifier rubyid_ip_header'>ip_header</span><span class='period'>.</span><span class='id identifier rubyid_ip_id'>ip_id</span>
<span class='id identifier rubyid_ip_body'>ip_body</span><span class='period'>.</span><span class='id identifier rubyid_chars'>chars</span><span class='period'>.</span><span class='id identifier rubyid_each_slice'>each_slice</span><span class='lparen'>(</span><span class='ivar'>@tcp_mss</span><span class='op'>+</span><span class='int'>40</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each_with_index'>each_with_index</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_frag'>frag</span><span class='comma'>,</span> <span class='id identifier rubyid_index'>index</span><span class='op'>|</span>
<span class='id identifier rubyid_fpkt'>fpkt</span> <span class='op'>=</span> <span class='const'>PacketFu</span><span class='op'>::</span><span class='const'>IPPacket</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>eth:</span> <span class='id identifier rubyid_eth_header'>eth_header</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='comma'>,</span> <span class='label'>ip:</span> <span class='id identifier rubyid_ip_header'>ip_header</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span>
<span class='id identifier rubyid_fpkt'>fpkt</span><span class='period'>.</span><span class='id identifier rubyid_ip_id'>ip_id</span> <span class='op'>=</span> <span class='id identifier rubyid_ip_id'>ip_id</span>
<span class='id identifier rubyid_fpkt'>fpkt</span><span class='period'>.</span><span class='id identifier rubyid_ip_header'>ip_header</span><span class='period'>.</span><span class='id identifier rubyid_ip_frag'>ip_frag</span> <span class='op'>=</span> <span class='int'>0x20</span><span class='op'>*</span><span class='int'>0x100</span> <span class='kw'>unless</span> <span class='lparen'>(</span><span class='id identifier rubyid_index'>index</span><span class='op'>+</span><span class='int'>1</span><span class='rparen'>)</span><span class='op'>*</span><span class='lparen'>(</span><span class='ivar'>@tcp_mss</span><span class='op'>+</span><span class='int'>40</span><span class='rparen'>)</span> <span class='op'>&gt;=</span> <span class='id identifier rubyid_ip_body'>ip_body</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span>
<span class='id identifier rubyid_fpkt'>fpkt</span><span class='period'>.</span><span class='id identifier rubyid_ip_header'>ip_header</span><span class='period'>.</span><span class='id identifier rubyid_ip_frag'>ip_frag</span> <span class='op'>=</span> <span class='id identifier rubyid_fpkt'>fpkt</span><span class='period'>.</span><span class='id identifier rubyid_ip_header'>ip_header</span><span class='period'>.</span><span class='id identifier rubyid_ip_frag'>ip_frag</span> <span class='op'>+</span> <span class='lparen'>(</span><span class='lparen'>(</span><span class='ivar'>@tcp_mss</span><span class='op'>+</span><span class='int'>40</span><span class='rparen'>)</span><span class='op'>/</span><span class='int'>8</span><span class='rparen'>)</span><span class='op'>*</span><span class='id identifier rubyid_index'>index</span>
<span class='id identifier rubyid_fpkt'>fpkt</span><span class='period'>.</span><span class='id identifier rubyid_payload'>payload</span> <span class='op'>=</span> <span class='id identifier rubyid_frag'>frag</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span>
<span class='id identifier rubyid_fpkt'>fpkt</span><span class='period'>.</span><span class='id identifier rubyid_ip_header'>ip_header</span><span class='period'>.</span><span class='id identifier rubyid_ip_recalc'>ip_recalc</span><span class='lparen'>(</span><span class='symbol'>:ip_len</span><span class='rparen'>)</span>
<span class='id identifier rubyid_fpkt'>fpkt</span><span class='period'>.</span><span class='id identifier rubyid_ip_header'>ip_header</span><span class='period'>.</span><span class='id identifier rubyid_ip_recalc'>ip_recalc</span><span class='lparen'>(</span><span class='symbol'>:ip_sum</span><span class='rparen'>)</span>
<span class='id identifier rubyid_fpkt'>fpkt</span><span class='period'>.</span><span class='id identifier rubyid_to_w'>to_w</span><span class='lparen'>(</span><span class='ivar'>@interface</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_pkt'>pkt</span><span class='period'>.</span><span class='id identifier rubyid_to_w'>to_w</span><span class='lparen'>(</span><span class='ivar'>@interface</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>nil</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
</div>
</div>
<div id="footer">
Generated on Fri May 8 17:03:44 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>