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

485 lines
24 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>
Module: Msf::Modules::Metadata::Search
&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::Modules::Metadata::Search";
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="../../Modules.html" title="Msf::Modules (module)">Modules</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Metadata.html" title="Msf::Modules::Metadata (module)">Metadata</a></span></span>
&raquo;
<span class="title">Search</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::Modules::Metadata::Search
</h1>
<div class="box_info">
<dl>
<dt>Included in:</dt>
<dd><span class='object_link'><a href="Cache.html" title="Msf::Modules::Metadata::Cache (class)">Cache</a></span></dd>
</dl>
<dl>
<dt>Defined in:</dt>
<dd>lib/msf/core/modules/metadata/search.rb</dd>
</dl>
</div>
<h2>Overview</h2><div class="docstring">
<div class="discussion">
<p>Provides search operations on the module metadata cache.</p>
</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="Search/SearchMode.html" title="Msf::Modules::Metadata::Search::SearchMode (module)">SearchMode</a></span>
</p>
<h2>
Constant Summary
<small><a href="#" class="constants_summary_toggle">collapse</a></small>
</h2>
<dl class="constants">
<dt id="VALID_PARAMS-constant" class="">VALID_PARAMS =
</dt>
<dd><pre class="code"><span class='qwords_beg'>%w[</span><span class='words_sep'>
</span><span class='tstring_content'>action</span><span class='words_sep'>
</span><span class='tstring_content'>adapter</span><span class='words_sep'>
</span><span class='tstring_content'>aka</span><span class='words_sep'>
</span><span class='tstring_content'>arch</span><span class='words_sep'>
</span><span class='tstring_content'>attack</span><span class='words_sep'>
</span><span class='tstring_content'>att&amp;ck</span><span class='words_sep'>
</span><span class='tstring_content'>author</span><span class='words_sep'>
</span><span class='tstring_content'>authors</span><span class='words_sep'>
</span><span class='tstring_content'>bid</span><span class='words_sep'>
</span><span class='tstring_content'>check</span><span class='words_sep'>
</span><span class='tstring_content'>cve</span><span class='words_sep'>
</span><span class='tstring_content'>date</span><span class='words_sep'>
</span><span class='tstring_content'>description</span><span class='words_sep'>
</span><span class='tstring_content'>disclosure_date</span><span class='words_sep'>
</span><span class='tstring_content'>edb</span><span class='words_sep'>
</span><span class='tstring_content'>fullname</span><span class='words_sep'>
</span><span class='tstring_content'>mod_time</span><span class='words_sep'>
</span><span class='tstring_content'>name</span><span class='words_sep'>
</span><span class='tstring_content'>os</span><span class='words_sep'>
</span><span class='tstring_content'>osvdb</span><span class='words_sep'>
</span><span class='tstring_content'>path</span><span class='words_sep'>
</span><span class='tstring_content'>platform</span><span class='words_sep'>
</span><span class='tstring_content'>port</span><span class='words_sep'>
</span><span class='tstring_content'>rank</span><span class='words_sep'>
</span><span class='tstring_content'>ref</span><span class='words_sep'>
</span><span class='tstring_content'>ref_name</span><span class='words_sep'>
</span><span class='tstring_content'>reference</span><span class='words_sep'>
</span><span class='tstring_content'>references</span><span class='words_sep'>
</span><span class='tstring_content'>rport</span><span class='words_sep'>
</span><span class='tstring_content'>session_type</span><span class='words_sep'>
</span><span class='tstring_content'>stage</span><span class='words_sep'>
</span><span class='tstring_content'>stager</span><span class='words_sep'>
</span><span class='tstring_content'>target</span><span class='words_sep'>
</span><span class='tstring_content'>targets</span><span class='words_sep'>
</span><span class='tstring_content'>text</span><span class='words_sep'>
</span><span class='tstring_content'>type</span><span class='words_sep'>
</span><span class='tstring_end'>]</span></span></pre></dd>
<dt id="MODULE_TYPE_SHORTHANDS-constant" class="">MODULE_TYPE_SHORTHANDS =
<div class="docstring">
<div class="discussion">
<p>Module Type Shorthands</p>
</div>
</div>
<div class="tags">
</div>
</dt>
<dd><pre class="code"><span class='lbrace'>{</span>
<span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>aux</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='const'><span class='object_link'><a href="../../../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../Msf.html#MODULE_AUX-constant" title="Msf::MODULE_AUX (constant)">MODULE_AUX</a></span></span>
<span class='rbrace'>}</span></pre></dd>
</dl>
<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="#parse_search_string-class_method" title="parse_search_string (class method)">.<strong>parse_search_string</strong>(search_string) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Parses command line search string into a hash.</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="#find-instance_method" title="#find (instance method)">#<strong>find</strong>(params, fields = {}) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Searches the module metadata using the passed hash of search params.</p>
</div></span>
</li>
</ul>
<div id="class_method_details" class="method_details_list">
<h2>Class Method Details</h2>
<div class="method_details first">
<h3 class="signature first" id="parse_search_string-class_method">
.<strong>parse_search_string</strong>(search_string) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Parses command line search string into a hash. A param prefixed with - indicates “not”, and will omit results matching that keyword. This hash can be used with the find command.</p>
<p>Resulting Hash Example: href="&quot;android&quot;">platform“=&gt;[</a>, []] will match modules targeting the android platform href="">platform“=&gt;[</a>, [“android”]] will exclude modules targeting the android platform</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/modules/metadata/search.rb', line 69</span>
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_parse_search_string'>parse_search_string</span><span class='lparen'>(</span><span class='id identifier rubyid_search_string'>search_string</span><span class='rparen'>)</span>
<span class='id identifier rubyid_search_string'>search_string</span> <span class='op'>||=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_search_string'>search_string</span> <span class='op'>+=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'> </span><span class='tstring_end'>&#39;</span></span>
<span class='comment'># Split search terms by space, but allow quoted strings
</span> <span class='id identifier rubyid_terms'>terms</span> <span class='op'>=</span> <span class='id identifier rubyid_search_string'>search_string</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>&quot;</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_term'>term</span><span class='op'>|</span> <span class='id identifier rubyid_term'>term</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span><span class='op'>==</span><span class='id identifier rubyid_term'>term</span> <span class='op'>?</span> <span class='id identifier rubyid_term'>term</span> <span class='op'>:</span> <span class='id identifier rubyid_term'>term</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'> </span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_flatten'>flatten</span>
<span class='id identifier rubyid_terms'>terms</span><span class='period'>.</span><span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
<span class='comment'># All terms are either included or excluded
</span> <span class='id identifier rubyid_res'>res</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
<span class='id identifier rubyid_terms'>terms</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_term'>term</span><span class='op'>|</span>
<span class='comment'># Split it on the `:`, with the part before the first `:` going into keyword, the part after first `:`
</span> <span class='comment'># but before any later instances of `:` going into search_term, and the characters after the second
</span> <span class='comment'># `:` or later in the string going into _excess to be ignored.
</span> <span class='comment'>#
</span> <span class='comment'># Example is `use exploit/linux/local/nested_namespace_idmap_limit_priv_esc::a`
</span> <span class='comment'># which would make keyword become `exploit/linux/local/nested_namespace_idmap_limit_priv_esc`,
</span> <span class='comment'># search_term become blank, and _excess become &quot;a&quot;.
</span> <span class='id identifier rubyid_keyword'>keyword</span><span class='comma'>,</span> <span class='id identifier rubyid_search_term'>search_term</span><span class='comma'>,</span> <span class='id identifier rubyid__excess'>_excess</span> <span class='op'>=</span> <span class='id identifier rubyid_term'>term</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>:</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='int'>3</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_search_term'>search_term</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
<span class='id identifier rubyid_search_term'>search_term</span> <span class='op'>=</span> <span class='id identifier rubyid_keyword'>keyword</span>
<span class='id identifier rubyid_keyword'>keyword</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>text</span><span class='tstring_end'>&#39;</span></span>
<span class='kw'>end</span>
<span class='kw'>next</span> <span class='kw'>if</span> <span class='id identifier rubyid_search_term'>search_term</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>0</span>
<span class='id identifier rubyid_keyword'>keyword</span><span class='period'>.</span><span class='id identifier rubyid_downcase!'>downcase!</span>
<span class='id identifier rubyid_search_term'>search_term</span><span class='period'>.</span><span class='id identifier rubyid_downcase!'>downcase!</span>
<span class='kw'>if</span> <span class='id identifier rubyid_keyword'>keyword</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>type</span><span class='tstring_end'>&quot;</span></span>
<span class='id identifier rubyid_search_term'>search_term</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="#MODULE_TYPE_SHORTHANDS-constant" title="Msf::Modules::Metadata::Search::MODULE_TYPE_SHORTHANDS (constant)">MODULE_TYPE_SHORTHANDS</a></span></span><span class='lbracket'>[</span><span class='id identifier rubyid_search_term'>search_term</span><span class='rbracket'>]</span> <span class='kw'>if</span> <span class='const'><span class='object_link'><a href="#MODULE_TYPE_SHORTHANDS-constant" title="Msf::Modules::Metadata::Search::MODULE_TYPE_SHORTHANDS (constant)">MODULE_TYPE_SHORTHANDS</a></span></span><span class='period'>.</span><span class='id identifier rubyid_key?'>key?</span><span class='lparen'>(</span><span class='id identifier rubyid_search_term'>search_term</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_res'>res</span><span class='lbracket'>[</span><span class='id identifier rubyid_keyword'>keyword</span><span class='rbracket'>]</span> <span class='op'>||=</span><span class='lbracket'>[</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='rbracket'>]</span> <span class='rbracket'>]</span>
<span class='kw'>if</span> <span class='id identifier rubyid_search_term'>search_term</span><span class='lbracket'>[</span><span class='int'>0</span><span class='comma'>,</span><span class='int'>1</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>-</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>next</span> <span class='kw'>if</span> <span class='id identifier rubyid_search_term'>search_term</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>1</span>
<span class='id identifier rubyid_res'>res</span><span class='lbracket'>[</span><span class='id identifier rubyid_keyword'>keyword</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='const'><span class='object_link'><a href="Search/SearchMode.html" title="Msf::Modules::Metadata::Search::SearchMode (module)">SearchMode</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Search/SearchMode.html#EXCLUDE-constant" title="Msf::Modules::Metadata::Search::SearchMode::EXCLUDE (constant)">EXCLUDE</a></span></span><span class='rbracket'>]</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_search_term'>search_term</span><span class='lbracket'>[</span><span class='int'>1</span><span class='comma'>,</span><span class='id identifier rubyid_search_term'>search_term</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_res'>res</span><span class='lbracket'>[</span><span class='id identifier rubyid_keyword'>keyword</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='const'><span class='object_link'><a href="Search/SearchMode.html" title="Msf::Modules::Metadata::Search::SearchMode (module)">SearchMode</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Search/SearchMode.html#INCLUDE-constant" title="Msf::Modules::Metadata::Search::SearchMode::INCLUDE (constant)">INCLUDE</a></span></span><span class='rbracket'>]</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_search_term'>search_term</span>
<span class='kw'>end</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_res'>res</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="find-instance_method">
#<strong>find</strong>(params, fields = {}) &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Searches the module metadata using the passed hash of search params</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Raises:</p>
<ul class="raise">
<li>
<span class='type'>(<tt>ArgumentError</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/modules/metadata/search.rb', line 115</span>
<span class='kw'>def</span> <span class='id identifier rubyid_find'>find</span><span class='lparen'>(</span><span class='id identifier rubyid_params'>params</span><span class='comma'>,</span> <span class='id identifier rubyid_fields'>fields</span><span class='op'>=</span><span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span> <span class='kw'>if</span> <span class='id identifier rubyid_params'>params</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span> <span class='op'>&amp;&amp;</span> <span class='const'><span class='object_link'><a href="#VALID_PARAMS-constant" title="Msf::Modules::Metadata::Search::VALID_PARAMS (constant)">VALID_PARAMS</a></span></span><span class='period'>.</span><span class='id identifier rubyid_none?'>none?</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_k'>k</span><span class='op'>|</span> <span class='id identifier rubyid_params'>params</span><span class='period'>.</span><span class='id identifier rubyid_key?'>key?</span><span class='lparen'>(</span><span class='id identifier rubyid_k'>k</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
<span class='id identifier rubyid_search_results'>search_results</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
<span class='id identifier rubyid_regex_cache'>regex_cache</span> <span class='op'>=</span> <span class='const'>Hash</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_hash'>hash</span><span class='comma'>,</span> <span class='id identifier rubyid_search_term'>search_term</span><span class='op'>|</span>
<span class='id identifier rubyid_hash'>hash</span><span class='lbracket'>[</span><span class='id identifier rubyid_search_term'>search_term</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_as_regex'>as_regex</span><span class='lparen'>(</span><span class='id identifier rubyid_search_term'>search_term</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_get_metadata'>get_metadata</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_module_metadata'>module_metadata</span><span class='op'>|</span>
<span class='kw'>if</span> <span class='id identifier rubyid_is_match'>is_match</span><span class='lparen'>(</span><span class='id identifier rubyid_params'>params</span><span class='comma'>,</span> <span class='id identifier rubyid_module_metadata'>module_metadata</span><span class='comma'>,</span> <span class='id identifier rubyid_regex_cache'>regex_cache</span><span class='rparen'>)</span>
<span class='kw'>unless</span> <span class='id identifier rubyid_fields'>fields</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
<span class='id identifier rubyid_module_metadata'>module_metadata</span> <span class='op'>=</span> <span class='id identifier rubyid_get_fields'>get_fields</span><span class='lparen'>(</span><span class='id identifier rubyid_module_metadata'>module_metadata</span><span class='comma'>,</span> <span class='id identifier rubyid_fields'>fields</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_search_results'>search_results</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_module_metadata'>module_metadata</span>
<span class='kw'>end</span>
<span class='rbrace'>}</span>
<span class='kw'>return</span> <span class='id identifier rubyid_search_results'>search_results</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
</div>
</div>
<div id="footer">
Generated on Fri May 8 17:01:48 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>