Files
metasploit-gs/api/Rex/Proto/MsDtyp/MsDtypAccessMask.html
T
jenkins-metasploit c3f5bd3de2 Reboot gh-pages
2026-05-08 17:08:43 +00:00

599 lines
42 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
Class: Rex::Proto::MsDtyp::MsDtypAccessMask
&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 = "Rex::Proto::MsDtyp::MsDtypAccessMask";
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 (M)</a> &raquo;
<span class='title'><span class='object_link'><a href="../../../Rex.html" title="Rex (module)">Rex</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../../Proto.html" title="Rex::Proto (module)">Proto</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../MsDtyp.html" title="Rex::Proto::MsDtyp (module)">MsDtyp</a></span></span>
&raquo;
<span class="title">MsDtypAccessMask</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: Rex::Proto::MsDtyp::MsDtypAccessMask
</h1>
<div class="box_info">
<dl>
<dt>Inherits:</dt>
<dd>
<span class="inheritName">BinData::Record</span>
<ul class="fullTree">
<li>Object</li>
<li class="next">BinData::Record</li>
<li class="next">Rex::Proto::MsDtyp::MsDtypAccessMask</li>
</ul>
<a href="#" class="inheritanceTree">show all</a>
</dd>
</dl>
<dl>
<dt>Defined in:</dt>
<dd>lib/rex/proto/ms_dtyp.rb</dd>
</dl>
</div>
<h2>Overview</h2><div class="docstring">
<div class="discussion">
<p>[2.4.3 ACCESS_MASK](<a href="https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/7a53f60e-e730-4dfe-bbe9-b21b62eb790b">learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/7a53f60e-e730-4dfe-bbe9-b21b62eb790b</a>)</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="ALL-constant" class="">ALL =
</dt>
<dd><pre class="code"><span class='const'>MsDtypAccessMask</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='lbrace'>{</span> <span class='label'>gr:</span> <span class='int'>1</span><span class='comma'>,</span> <span class='label'>gw:</span> <span class='int'>1</span><span class='comma'>,</span> <span class='label'>gx:</span> <span class='int'>1</span><span class='comma'>,</span> <span class='label'>ga:</span> <span class='int'>1</span><span class='comma'>,</span> <span class='label'>ma:</span> <span class='int'>1</span><span class='comma'>,</span> <span class='label'>as:</span> <span class='int'>1</span><span class='comma'>,</span> <span class='label'>sy:</span> <span class='int'>1</span><span class='comma'>,</span> <span class='label'>wo:</span> <span class='int'>1</span><span class='comma'>,</span> <span class='label'>wd:</span> <span class='int'>1</span><span class='comma'>,</span> <span class='label'>rc:</span> <span class='int'>1</span><span class='comma'>,</span> <span class='label'>de:</span> <span class='int'>1</span><span class='comma'>,</span> <span class='label'>protocol:</span> <span class='int'>0xffff</span> <span class='rbrace'>}</span><span class='rparen'>)</span></pre></dd>
<dt id="NONE-constant" class="">NONE =
</dt>
<dd><pre class="code"><span class='const'>MsDtypAccessMask</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='lbrace'>{</span> <span class='label'>gr:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>gw:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>gx:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>ga:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>ma:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>as:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>sy:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>wo:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>wd:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>rc:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>de:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>protocol:</span> <span class='int'>0</span> <span class='rbrace'>}</span><span class='rparen'>)</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="#from_sddl_text-class_method" title="from_sddl_text (class method)">.<strong>from_sddl_text</strong>(sddl_text) &#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="#permissions-instance_method" title="#permissions (instance method)">#<strong>permissions</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Obtain an array of the abbreviated names of permissions that the access mask specifies.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#to_sddl_text-instance_method" title="#to_sddl_text (instance method)">#<strong>to_sddl_text</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'></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="from_sddl_text-class_method">
.<strong>from_sddl_text</strong>(sddl_text) &#x21d2; <tt>Object</tt>
</h3><table class="source_code">
<tr>
<td>
<pre class="lines">
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
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
158
159
160
161
162
163</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/rex/proto/ms_dtyp.rb', line 90</span>
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_from_sddl_text'>from_sddl_text</span><span class='lparen'>(</span><span class='id identifier rubyid_sddl_text'>sddl_text</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_sddl_text'>sddl_text</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\A0x[0-9a-fA-F]{1,8}\Z</span><span class='regexp_end'>/</span></span>
<span class='kw'>return</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='id identifier rubyid_sddl_text'>sddl_text</span><span class='period'>.</span><span class='id identifier rubyid_delete_prefix'>delete_prefix</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>0x</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span><span class='lparen'>(</span><span class='int'>16</span><span class='rparen'>)</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_pack'>pack</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>L&lt;</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_access_mask'>access_mask</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
<span class='id identifier rubyid_sddl_text'>sddl_text</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(G[ARWX]|RC|SD|WD|WO|RP|WP|CC|DC|LC|SW|LO|DT|CR|F[ARWX]|K[ARWX]|N[RWX])</span><span class='regexp_end'>/</span></span><span class='rparen'>)</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_right'>right</span><span class='op'>|</span>
<span class='kw'>case</span> <span class='id identifier rubyid_right'>right</span>
<span class='comment'># generic access rights
</span> <span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>GA</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>GR</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>GW</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>GX</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_right'>right</span><span class='period'>.</span><span class='id identifier rubyid_downcase'>downcase</span><span class='embexpr_end'>}</span><span class='tstring_content'>=</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</span>
<span class='comment'># standard access rights
</span> <span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>RC</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_rc'>rc</span> <span class='op'>=</span> <span class='kw'>true</span>
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>SD</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_de'>de</span> <span class='op'>=</span> <span class='kw'>true</span>
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>WD</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>WO</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_right'>right</span><span class='period'>.</span><span class='id identifier rubyid_downcase'>downcase</span><span class='embexpr_end'>}</span><span class='tstring_content'>=</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</span>
<span class='comment'># directory service object access rights
</span> <span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>RP</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>|=</span> <span class='int'>16</span>
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>WP</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>|=</span> <span class='int'>32</span>
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>CC</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>|=</span> <span class='int'>1</span>
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>DC</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>|=</span> <span class='int'>2</span>
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>LC</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>|=</span> <span class='int'>4</span>
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>SW</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>|=</span> <span class='int'>8</span>
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>LO</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>|=</span> <span class='int'>128</span>
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>DT</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>|=</span> <span class='int'>64</span>
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>CR</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>|=</span> <span class='int'>256</span>
<span class='comment'># file access rights
</span> <span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>FA</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>|=</span> <span class='int'>0x1ff</span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_de'>de</span> <span class='op'>=</span> <span class='kw'>true</span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_rc'>rc</span> <span class='op'>=</span> <span class='kw'>true</span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_wd'>wd</span> <span class='op'>=</span> <span class='kw'>true</span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_wo'>wo</span> <span class='op'>=</span> <span class='kw'>true</span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_sy'>sy</span> <span class='op'>=</span> <span class='kw'>true</span>
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>FR</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>|=</span> <span class='int'>0x89</span>
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>FW</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>|=</span> <span class='int'>0x116</span>
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>FX</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>|=</span> <span class='int'>0xa0</span>
<span class='comment'># registry key access rights
</span> <span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>KA</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>|=</span> <span class='int'>0x3f</span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_de'>de</span> <span class='op'>=</span> <span class='kw'>true</span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_rc'>rc</span> <span class='op'>=</span> <span class='kw'>true</span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_wd'>wd</span> <span class='op'>=</span> <span class='kw'>true</span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_wo'>wo</span> <span class='op'>=</span> <span class='kw'>true</span>
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>KR</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>|=</span> <span class='int'>0x19</span>
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>KW</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>|=</span> <span class='int'>0x06</span>
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>KX</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_access_mask'>access_mask</span><span class='period'>.</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>|=</span> <span class='int'>0x19</span>
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>NR</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>NW</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>NX</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="SDDLParseError.html" title="Rex::Proto::MsDtyp::SDDLParseError (class)">SDDLParseError</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>unsupported ACE access right: </span><span class='tstring_end'>&#39;</span></span> <span class='op'>+</span> <span class='id identifier rubyid_right'>right</span><span class='rparen'>)</span>
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span>
<span class='kw'>else</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="SDDLParseError.html" title="Rex::Proto::MsDtyp::SDDLParseError (class)">SDDLParseError</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>unknown ACE access right: </span><span class='tstring_end'>&#39;</span></span> <span class='op'>+</span> <span class='id identifier rubyid_right'>right</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_access_mask'>access_mask</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="permissions-instance_method">
#<strong>permissions</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Obtain an array of the abbreviated names of permissions that the access mask specifies.</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'></span>
<div class='inline'>
<p>Returns nil if the permissions can't be represented as an array of abbreviations.</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/rex/proto/ms_dtyp.rb', line 41</span>
<span class='kw'>def</span> <span class='id identifier rubyid_permissions'>permissions</span>
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>&amp;</span> <span class='int'>0b1111111000000000</span><span class='rparen'>)</span> <span class='op'>!=</span> <span class='int'>0</span> <span class='op'>||</span> <span class='id identifier rubyid_ma'>ma</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>||</span> <span class='id identifier rubyid_as'>as</span> <span class='op'>==</span> <span class='int'>1</span>
<span class='kw'>return</span> <span class='kw'>nil</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_permissions'>permissions</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
<span class='id identifier rubyid_permissions'>permissions</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:GA</span> <span class='kw'>if</span> <span class='id identifier rubyid_ga'>ga</span> <span class='op'>==</span> <span class='int'>1</span>
<span class='id identifier rubyid_permissions'>permissions</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:GR</span> <span class='kw'>if</span> <span class='id identifier rubyid_gr'>gr</span> <span class='op'>==</span> <span class='int'>1</span>
<span class='id identifier rubyid_permissions'>permissions</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:GW</span> <span class='kw'>if</span> <span class='id identifier rubyid_gw'>gw</span> <span class='op'>==</span> <span class='int'>1</span>
<span class='id identifier rubyid_permissions'>permissions</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:GX</span> <span class='kw'>if</span> <span class='id identifier rubyid_gx'>gx</span> <span class='op'>==</span> <span class='int'>1</span>
<span class='id identifier rubyid_file_access_mask'>file_access_mask</span> <span class='op'>=</span> <span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>&amp;</span> <span class='int'>0b000111111111</span>
<span class='id identifier rubyid_permissions'>permissions</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:FA</span> <span class='kw'>if</span> <span class='id identifier rubyid_file_access_mask'>file_access_mask</span> <span class='op'>==</span> <span class='int'>0b000111111111</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_de'>de</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_rc'>rc</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_wd'>wd</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_wo'>wo</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_sy'>sy</span> <span class='op'>==</span> <span class='int'>1</span>
<span class='id identifier rubyid_permissions'>permissions</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:FR</span> <span class='kw'>if</span> <span class='id identifier rubyid_file_access_mask'>file_access_mask</span> <span class='op'>==</span> <span class='int'>0b000010001001</span>
<span class='id identifier rubyid_permissions'>permissions</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:FW</span> <span class='kw'>if</span> <span class='id identifier rubyid_file_access_mask'>file_access_mask</span> <span class='op'>==</span> <span class='int'>0b000100010110</span>
<span class='id identifier rubyid_permissions'>permissions</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:FX</span> <span class='kw'>if</span> <span class='id identifier rubyid_file_access_mask'>file_access_mask</span> <span class='op'>==</span> <span class='int'>0b000010100000</span>
<span class='comment'># windows does not reduce registry access flags (i.e. KA, KR, KW) so ignore them here to match it
</span>
<span class='id identifier rubyid_permissions'>permissions</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:CC</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>&amp;</span> <span class='int'>0b000000000001</span><span class='rparen'>)</span> <span class='op'>!=</span> <span class='int'>0</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_permissions'>permissions</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='symbol'>:FA</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_permissions'>permissions</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='symbol'>:FR</span><span class='rparen'>)</span>
<span class='id identifier rubyid_permissions'>permissions</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:DC</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>&amp;</span> <span class='int'>0b000000000010</span><span class='rparen'>)</span> <span class='op'>!=</span> <span class='int'>0</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_permissions'>permissions</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='symbol'>:FA</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_permissions'>permissions</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='symbol'>:FW</span><span class='rparen'>)</span>
<span class='id identifier rubyid_permissions'>permissions</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:LC</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>&amp;</span> <span class='int'>0b000000000100</span><span class='rparen'>)</span> <span class='op'>!=</span> <span class='int'>0</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_permissions'>permissions</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='symbol'>:FA</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_permissions'>permissions</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='symbol'>:FW</span><span class='rparen'>)</span>
<span class='id identifier rubyid_permissions'>permissions</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:SW</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>&amp;</span> <span class='int'>0b000000001000</span><span class='rparen'>)</span> <span class='op'>!=</span> <span class='int'>0</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_permissions'>permissions</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='symbol'>:FA</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_permissions'>permissions</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='symbol'>:FR</span><span class='rparen'>)</span>
<span class='id identifier rubyid_permissions'>permissions</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:RP</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>&amp;</span> <span class='int'>0b000000010000</span><span class='rparen'>)</span> <span class='op'>!=</span> <span class='int'>0</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_permissions'>permissions</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='symbol'>:FA</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_permissions'>permissions</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='symbol'>:FW</span><span class='rparen'>)</span>
<span class='id identifier rubyid_permissions'>permissions</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:WP</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>&amp;</span> <span class='int'>0b000000100000</span><span class='rparen'>)</span> <span class='op'>!=</span> <span class='int'>0</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_permissions'>permissions</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='symbol'>:FA</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_permissions'>permissions</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='symbol'>:FX</span><span class='rparen'>)</span>
<span class='id identifier rubyid_permissions'>permissions</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:DT</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>&amp;</span> <span class='int'>0b000001000000</span><span class='rparen'>)</span> <span class='op'>!=</span> <span class='int'>0</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_permissions'>permissions</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='symbol'>:FA</span><span class='rparen'>)</span>
<span class='id identifier rubyid_permissions'>permissions</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:LO</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>&amp;</span> <span class='int'>0b000010000000</span><span class='rparen'>)</span> <span class='op'>!=</span> <span class='int'>0</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_permissions'>permissions</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='symbol'>:FA</span><span class='rparen'>)</span>
<span class='id identifier rubyid_permissions'>permissions</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:CR</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>&amp;</span> <span class='int'>0b000100000000</span><span class='rparen'>)</span> <span class='op'>!=</span> <span class='int'>0</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_permissions'>permissions</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='symbol'>:FA</span><span class='rparen'>)</span>
<span class='id identifier rubyid_permissions'>permissions</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:SD</span> <span class='kw'>if</span> <span class='id identifier rubyid_de'>de</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_permissions'>permissions</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='symbol'>:FA</span><span class='rparen'>)</span>
<span class='id identifier rubyid_permissions'>permissions</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:RC</span> <span class='kw'>if</span> <span class='id identifier rubyid_rc'>rc</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_permissions'>permissions</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='symbol'>:FA</span><span class='rparen'>)</span>
<span class='id identifier rubyid_permissions'>permissions</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:WD</span> <span class='kw'>if</span> <span class='id identifier rubyid_wd'>wd</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_permissions'>permissions</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='symbol'>:FA</span><span class='rparen'>)</span>
<span class='id identifier rubyid_permissions'>permissions</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:WO</span> <span class='kw'>if</span> <span class='id identifier rubyid_wo'>wo</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_permissions'>permissions</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='symbol'>:FA</span><span class='rparen'>)</span>
<span class='id identifier rubyid_permissions'>permissions</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="to_sddl_text-instance_method">
#<strong>to_sddl_text</strong> &#x21d2; <tt>Object</tt>
</h3><table class="source_code">
<tr>
<td>
<pre class="lines">
78
79
80
81
82
83
84
85
86
87
88</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/rex/proto/ms_dtyp.rb', line 78</span>
<span class='kw'>def</span> <span class='id identifier rubyid_to_sddl_text'>to_sddl_text</span>
<span class='id identifier rubyid_perms'>perms</span> <span class='op'>=</span> <span class='id identifier rubyid_permissions'>permissions</span>
<span class='kw'>if</span> <span class='id identifier rubyid_perms'>perms</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
<span class='comment'># if one of these conditions are true, we can&#39;t reduce this to a set of flags so dump it as hex
</span> <span class='kw'>return</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>0x</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_to_binary_s'>to_binary_s</span><span class='period'>.</span><span class='id identifier rubyid_unpack1'>unpack1</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>L&lt;</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='lparen'>(</span><span class='int'>16</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_rjust'>rjust</span><span class='lparen'>(</span><span class='int'>8</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>0</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>end</span>
<span class='id identifier rubyid_permissions'>permissions</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:to_s</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_join'><span class='object_link'><a href="../../../top-level-namespace.html#join-instance_method" title="#join (method)">join</a></span></span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
</div>
</div>
<div id="footer">
Generated on Fri May 8 17:04:06 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>