6297 lines
302 KiB
HTML
6297 lines
302 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>
|
||
Module: Msf::Post::File
|
||
|
||
— 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::Post::File";
|
||
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 (F)</a> »
|
||
<span class='title'><span class='object_link'><a href="../../Msf.html" title="Msf (module)">Msf</a></span></span> » <span class='title'><span class='object_link'><a href="../Post.html" title="Msf::Post (class)">Post</a></span></span>
|
||
»
|
||
<span class="title">File</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::Post::File
|
||
|
||
|
||
|
||
</h1>
|
||
<div class="box_info">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<dl>
|
||
<dt>Includes:</dt>
|
||
<dd><span class='object_link'><a href="Common.html" title="Msf::Post::Common (module)">Common</a></span></dd>
|
||
</dl>
|
||
|
||
|
||
|
||
|
||
<dl>
|
||
<dt>Included in:</dt>
|
||
<dd><span class='object_link'><a href="../Exploit/Remote/HTTP/Kubernetes.html" title="Msf::Exploit::Remote::HTTP::Kubernetes (module)">Exploit::Remote::HTTP::Kubernetes</a></span>, <span class='object_link'><a href="Android/System.html" title="Msf::Post::Android::System (module)">Android::System</a></span>, <span class='object_link'><a href="Linux/BusyBox.html" title="Msf::Post::Linux::BusyBox (module)">Linux::BusyBox</a></span>, <span class='object_link'><a href="Linux/Compile.html" title="Msf::Post::Linux::Compile (module)">Linux::Compile</a></span>, <span class='object_link'><a href="Linux/Kernel.html" title="Msf::Post::Linux::Kernel (module)">Linux::Kernel</a></span>, <span class='object_link'><a href="Linux/Priv.html" title="Msf::Post::Linux::Priv (module)">Linux::Priv</a></span>, <span class='object_link'><a href="Linux/System.html" title="Msf::Post::Linux::System (module)">Linux::System</a></span>, <span class='object_link'><a href="OSX/System.html" title="Msf::Post::OSX::System (module)">OSX::System</a></span>, <span class='object_link'><a href="Process.html" title="Msf::Post::Process (module)">Process</a></span>, <span class='object_link'><a href="Solaris/System.html" title="Msf::Post::Solaris::System (module)">Solaris::System</a></span>, <span class='object_link'><a href="Vcenter/Database.html" title="Msf::Post::Vcenter::Database (module)">Vcenter::Database</a></span>, <span class='object_link'><a href="Vcenter/Vcenter.html" title="Msf::Post::Vcenter::Vcenter (module)">Vcenter::Vcenter</a></span>, <span class='object_link'><a href="Windows/Packrat.html" title="Msf::Post::Windows::Packrat (module)">Windows::Packrat</a></span>, <span class='object_link'><a href="Windows/Runas.html" title="Msf::Post::Windows::Runas (module)">Windows::Runas</a></span>, <span class='object_link'><a href="Windows/UserProfiles.html" title="Msf::Post::Windows::UserProfiles (module)">Windows::UserProfiles</a></span>, <span class='object_link'><a href="Windows/WMIC.html" title="Msf::Post::Windows::WMIC (module)">Windows::WMIC</a></span>, <span class='object_link'><a href="../Sessions/CommandShell/FileTransfer.html" title="Msf::Sessions::CommandShell::FileTransfer (class)">Sessions::CommandShell::FileTransfer</a></span>, <span class='object_link'><a href="../../Rex/Post/Meterpreter/Extensions/Stdapi/Webcam/Webcam.html" title="Rex::Post::Meterpreter::Extensions::Stdapi::Webcam::Webcam (class)">Rex::Post::Meterpreter::Extensions::Stdapi::Webcam::Webcam</a></span></dd>
|
||
</dl>
|
||
|
||
|
||
|
||
<dl>
|
||
<dt>Defined in:</dt>
|
||
<dd>lib/msf/core/post/file.rb</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
|
||
<h2>Defined Under Namespace</h2>
|
||
<p class="children">
|
||
|
||
|
||
|
||
|
||
<strong class="classes">Classes:</strong> <span class='object_link'><a href="File/FileStat.html" title="Msf::Post::File::FileStat (class)">FileStat</a></span>
|
||
|
||
|
||
</p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h2>
|
||
Instance Method Summary
|
||
<small><a href="#" class="summary_toggle">collapse</a></small>
|
||
</h2>
|
||
|
||
<ul class="summary">
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#_append_file_powershell-instance_method" title="#_append_file_powershell (instance method)">#<strong>_append_file_powershell</strong>(file_name, data) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'></div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#_append_file_unix_shell-instance_method" title="#_append_file_unix_shell (instance method)">#<strong>_append_file_unix_shell</strong>(file_name, data) ⇒ void </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Append <code>data</code> to the remote file <code>file_name</code>.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#_can_echo%3F-instance_method" title="#_can_echo? (instance method)">#<strong>_can_echo?</strong>(data) ⇒ Boolean </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Checks to see if there are non-printable characters in a given string.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#_read_file_meterpreter-instance_method" title="#_read_file_meterpreter (instance method)">#<strong>_read_file_meterpreter</strong>(file_name) ⇒ String </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Meterpreter-specific file read.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#_read_file_powershell-instance_method" title="#_read_file_powershell (instance method)">#<strong>_read_file_powershell</strong>(filename) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'></div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#_read_file_powershell_fragment-instance_method" title="#_read_file_powershell_fragment (instance method)">#<strong>_read_file_powershell_fragment</strong>(filename, chunk_size, offset = 0) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'></div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#_shell_command_with_success_code-instance_method" title="#_shell_command_with_success_code (instance method)">#<strong>_shell_command_with_success_code</strong>(cmd) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'></div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#_shell_process_with_success_code-instance_method" title="#_shell_process_with_success_code (instance method)">#<strong>_shell_process_with_success_code</strong>(executable, args) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'></div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#_unix_max_line_length-instance_method" title="#_unix_max_line_length (instance method)">#<strong>_unix_max_line_length</strong> ⇒ Integer </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Calculate the maximum line length for a unix shell.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#_win_ansi_append_file-instance_method" title="#_win_ansi_append_file (instance method)">#<strong>_win_ansi_append_file</strong>(file_name, data, chunk_size = 5000) ⇒ void </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Windows ansi file append for shell sessions.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#_win_ansi_write_file-instance_method" title="#_win_ansi_write_file (instance method)">#<strong>_win_ansi_write_file</strong>(file_name, data, chunk_size = 5000) ⇒ void </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Windows ANSI file write for shell sessions.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#_win_bin_append_file-instance_method" title="#_win_bin_append_file (instance method)">#<strong>_win_bin_append_file</strong>(file_name, data, chunk_size = 5000) ⇒ void </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Windows binary file append for shell sessions.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#_win_bin_write_file-instance_method" title="#_win_bin_write_file (instance method)">#<strong>_win_bin_write_file</strong>(file_name, data, chunk_size = 5000) ⇒ void </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Windows binary file write for shell sessions.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#_write_file_meterpreter-instance_method" title="#_write_file_meterpreter (instance method)">#<strong>_write_file_meterpreter</strong>(file_name, data, mode = 'wb') ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Meterpreter-specific file write.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#_write_file_powershell-instance_method" title="#_write_file_powershell (instance method)">#<strong>_write_file_powershell</strong>(file_name, data, append = false) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'></div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#_write_file_powershell_fragment-instance_method" title="#_write_file_powershell_fragment (instance method)">#<strong>_write_file_powershell_fragment</strong>(file_name, data, offset, chunk_size, append = false) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'></div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#_write_file_unix_shell-instance_method" title="#_write_file_unix_shell (instance method)">#<strong>_write_file_unix_shell</strong>(file_name, data, append = false) ⇒ void </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Write <code>data</code> to the remote file <code>file_name</code>.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#append_file-instance_method" title="#append_file (instance method)">#<strong>append_file</strong>(file_name, data) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Platform-agnostic file append.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#attributes-instance_method" title="#attributes (instance method)">#<strong>attributes</strong>(path) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Retrieve file attributes for <code>path</code> on the remote system.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#cd-instance_method" title="#cd (instance method)">#<strong>cd</strong>(path) ⇒ void </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Change directory in the remote session to <code>path</code>, which may be relative or absolute.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#chmod-instance_method" title="#chmod (instance method)">#<strong>chmod</strong>(path, mode = 0o700) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Sets the permissions on a remote file.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#copy_file-instance_method" title="#copy_file (instance method)">#<strong>copy_file</strong>(src_file, dst_file) ⇒ Boolean </a>
|
||
|
||
|
||
|
||
(also: #cp_file)
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Copy a remote file.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#dir-instance_method" title="#dir (instance method)">#<strong>dir</strong>(directory) ⇒ Array </a>
|
||
|
||
|
||
|
||
(also: #ls)
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns a list of the contents of the specified directory.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#directory%3F-instance_method" title="#directory? (instance method)">#<strong>directory?</strong>(path) ⇒ Boolean </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>See if <code>path</code> exists on the remote system and is a directory.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#executable%3F-instance_method" title="#executable? (instance method)">#<strong>executable?</strong>(path) ⇒ Boolean </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>See if <code>path</code> on the remote system exists and is executable.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#exist%3F-instance_method" title="#exist? (instance method)">#<strong>exist?</strong>(path) ⇒ Boolean </a>
|
||
|
||
|
||
|
||
(also: #exists?)
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Check for existence of <code>path</code> on the remote file system.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#expand_path-instance_method" title="#expand_path (instance method)">#<strong>expand_path</strong>(path) ⇒ String </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Expand any environment variables to return the full path specified by <code>path</code>.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#exploit_data-instance_method" title="#exploit_data (instance method)">#<strong>exploit_data</strong>(data_directory, file) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Read a local exploit file binary from the data directory.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#exploit_source-instance_method" title="#exploit_source (instance method)">#<strong>exploit_source</strong>(source_directory, file) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Read a local exploit source file from the external exploits directory.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#file%3F-instance_method" title="#file? (instance method)">#<strong>file?</strong>(path) ⇒ Boolean </a>
|
||
|
||
|
||
|
||
(also: #file_exist?)
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>See if <code>path</code> exists on the remote system and is a regular file.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#file_local_write-instance_method" title="#file_local_write (instance method)">#<strong>file_local_write</strong>(local_file_name, data) ⇒ void </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Writes a given string to a given local file.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#file_remote_digestmd5-instance_method" title="#file_remote_digestmd5 (instance method)">#<strong>file_remote_digestmd5</strong>(file_name, util: nil) ⇒ String </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns a MD5 checksum of a given remote file.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#file_remote_digestsha1-instance_method" title="#file_remote_digestsha1 (instance method)">#<strong>file_remote_digestsha1</strong>(file_name, util: nil) ⇒ String </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns a SHA1 checksum of a given remote file.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#file_remote_digestsha2-instance_method" title="#file_remote_digestsha2 (instance method)">#<strong>file_remote_digestsha2</strong>(file_name) ⇒ String </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns a SHA2 checksum of a given remote file.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#find_writable_directories-instance_method" title="#find_writable_directories (instance method)">#<strong>find_writable_directories</strong>(path: '/', max_depth: 2, timeout: 15) ⇒ Array<String><sup>?</sup> </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Find writable directories under <code>path</code> on a Unix system.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#immutable%3F-instance_method" title="#immutable? (instance method)">#<strong>immutable?</strong>(path) ⇒ Boolean </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>See if <code>path</code> on the remote system exists and is immutable.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(info = {}) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'></div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#mkdir-instance_method" title="#mkdir (instance method)">#<strong>mkdir</strong>(path, cleanup: true) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>create and mark directory for cleanup.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#pwd-instance_method" title="#pwd (instance method)">#<strong>pwd</strong> ⇒ String </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns the current working directory in the remote session.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#read_file-instance_method" title="#read_file (instance method)">#<strong>read_file</strong>(file_name) ⇒ String, Array </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Platform-agnostic file read.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#readable%3F-instance_method" title="#readable? (instance method)">#<strong>readable?</strong>(path) ⇒ Boolean </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>See if <code>path</code> on the remote system exists and is readable.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#rename_file-instance_method" title="#rename_file (instance method)">#<strong>rename_file</strong>(old_file, new_file) ⇒ Boolean </a>
|
||
|
||
|
||
|
||
(also: #move_file, #mv_file)
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Renames a remote file.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#rm_f-instance_method" title="#rm_f (instance method)">#<strong>rm_f</strong>(*remote_files) ⇒ void </a>
|
||
|
||
|
||
|
||
(also: #file_rm)
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Delete remote files.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#rm_rf-instance_method" title="#rm_rf (instance method)">#<strong>rm_rf</strong>(*remote_dirs) ⇒ void </a>
|
||
|
||
|
||
|
||
(also: #dir_rm)
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Delete remote directories.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#setuid%3F-instance_method" title="#setuid? (instance method)">#<strong>setuid?</strong>(path) ⇒ Boolean </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>See if <code>path</code> on the remote system is a setuid file.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#stat-instance_method" title="#stat (instance method)">#<strong>stat</strong>(filename) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'></div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#upload_and_chmodx-instance_method" title="#upload_and_chmodx (instance method)">#<strong>upload_and_chmodx</strong>(path, data) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Upload a binary and write it as an executable file <code>remote</code> on the remote filesystem.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#upload_file-instance_method" title="#upload_file (instance method)">#<strong>upload_file</strong>(remote, local) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Read a local file <code>local</code> and write it as <code>remote</code> on the remote file system.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#writable%3F-instance_method" title="#writable? (instance method)">#<strong>writable?</strong>(path) ⇒ Boolean </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>See if <code>path</code> on the remote system exists and is writable.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#write_file-instance_method" title="#write_file (instance method)">#<strong>write_file</strong>(file_name, data) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Platform-agnostic file write.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Common.html" title="Msf::Post::Common (module)">Common</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Common.html#clear_screen-instance_method" title="Msf::Post::Common#clear_screen (method)">#clear_screen</a></span>, <span class='object_link'><a href="Common.html#cmd_exec-instance_method" title="Msf::Post::Common#cmd_exec (method)">#cmd_exec</a></span>, <span class='object_link'><a href="Common.html#cmd_exec_get_pid-instance_method" title="Msf::Post::Common#cmd_exec_get_pid (method)">#cmd_exec_get_pid</a></span>, <span class='object_link'><a href="Common.html#cmd_exec_with_result-instance_method" title="Msf::Post::Common#cmd_exec_with_result (method)">#cmd_exec_with_result</a></span>, <span class='object_link'><a href="Common.html#command_exists%3F-instance_method" title="Msf::Post::Common#command_exists? (method)">#command_exists?</a></span>, <span class='object_link'><a href="Common.html#create_process-instance_method" title="Msf::Post::Common#create_process (method)">#create_process</a></span>, <span class='object_link'><a href="Common.html#get_env-instance_method" title="Msf::Post::Common#get_env (method)">#get_env</a></span>, <span class='object_link'><a href="Common.html#get_envs-instance_method" title="Msf::Post::Common#get_envs (method)">#get_envs</a></span>, <span class='object_link'><a href="Common.html#peer-instance_method" title="Msf::Post::Common#peer (method)">#peer</a></span>, <span class='object_link'><a href="Common.html#report_virtualization-instance_method" title="Msf::Post::Common#report_virtualization (method)">#report_virtualization</a></span>, <span class='object_link'><a href="Common.html#rhost-instance_method" title="Msf::Post::Common#rhost (method)">#rhost</a></span>, <span class='object_link'><a href="Common.html#rport-instance_method" title="Msf::Post::Common#rport (method)">#rport</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="_append_file_powershell-instance_method">
|
||
|
||
#<strong>_append_file_powershell</strong>(file_name, data) ⇒ <tt>Object</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
753
|
||
754
|
||
755</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 753</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid__append_file_powershell'>_append_file_powershell</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid__write_file_powershell'>_write_file_powershell</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="_append_file_unix_shell-instance_method">
|
||
|
||
#<strong>_append_file_unix_shell</strong>(file_name, data) ⇒ <tt>void</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
<p class="note returns_void">This method returns an undefined value.</p>
|
||
<p>Append <code>data</code> to the remote file <code>file_name</code>.</p>
|
||
|
||
<p>You should never call this method directly. Instead, call <span class='object_link'><a href="#append_file-instance_method" title="Msf::Post::File#append_file (method)">#append_file</a></span> which will call this method if it is appropriate for the given session.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1010
|
||
1011
|
||
1012</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 1010</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid__append_file_unix_shell'>_append_file_unix_shell</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid__write_file_unix_shell'>_write_file_unix_shell</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="_can_echo?-instance_method">
|
||
|
||
#<strong>_can_echo?</strong>(data) ⇒ <tt>Boolean</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Checks to see if there are non-printable characters in a given string</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>data</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>String to check for non-printable characters</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>Boolean</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>bool</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
849
|
||
850
|
||
851
|
||
852
|
||
853
|
||
854
|
||
855
|
||
856
|
||
857</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 849</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid__can_echo?'>_can_echo?</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
||
<span class='comment'># Ensure all bytes are between ascii 0x20 to 0x7e (ie. [[:print]]), excluding quotes etc
|
||
</span> <span class='id identifier rubyid_data'>data</span><span class='period'>.</span><span class='id identifier rubyid_bytes'>bytes</span><span class='period'>.</span><span class='id identifier rubyid_all?'>all?</span> <span class='kw'>do</span><span class='op'>|</span><span class='id identifier rubyid_b'>b</span><span class='op'>|</span>
|
||
<span class='lparen'>(</span><span class='id identifier rubyid_b'>b</span> <span class='op'>>=</span> <span class='int'>0x20</span> <span class='op'>&&</span> <span class='id identifier rubyid_b'>b</span> <span class='op'><=</span> <span class='int'>0x7e</span><span class='rparen'>)</span> <span class='op'>&&</span>
|
||
<span class='id identifier rubyid_b'>b</span> <span class='op'>!=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>"</span><span class='tstring_end'>'</span></span><span class='period'>.</span><span class='id identifier rubyid_ord'>ord</span> <span class='op'>&&</span>
|
||
<span class='id identifier rubyid_b'>b</span> <span class='op'>!=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>%</span><span class='tstring_end'>'</span></span><span class='period'>.</span><span class='id identifier rubyid_ord'>ord</span> <span class='op'>&&</span>
|
||
<span class='id identifier rubyid_b'>b</span> <span class='op'>!=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>$</span><span class='tstring_end'>'</span></span><span class='period'>.</span><span class='id identifier rubyid_ord'>ord</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="_read_file_meterpreter-instance_method">
|
||
|
||
#<strong>_read_file_meterpreter</strong>(file_name) ⇒ <tt>String</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Meterpreter-specific file read. Returns contents of remote file <code>file_name</code> as a String or nil if there was an error</p>
|
||
|
||
<p>You should never call this method directly. Instead, call <span class='object_link'><a href="#read_file-instance_method" title="Msf::Post::File#read_file (method)">#read_file</a></span> which will call this if it is appropriate for the given session.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
878
|
||
879
|
||
880
|
||
881
|
||
882
|
||
883
|
||
884
|
||
885
|
||
886
|
||
887
|
||
888
|
||
889
|
||
890
|
||
891
|
||
892
|
||
893
|
||
894</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 878</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid__read_file_meterpreter'>_read_file_meterpreter</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_fd'>fd</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_fs'>fs</span><span class='period'>.</span><span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>rb</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
|
||
<span class='id identifier rubyid_data'>data</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span><span class='period'>.</span><span class='id identifier rubyid_b'>b</span>
|
||
<span class='id identifier rubyid_data'>data</span> <span class='op'><<</span> <span class='id identifier rubyid_fd'>fd</span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span>
|
||
<span class='id identifier rubyid_data'>data</span> <span class='op'><<</span> <span class='id identifier rubyid_fd'>fd</span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span> <span class='kw'>until</span> <span class='id identifier rubyid_fd'>fd</span><span class='period'>.</span><span class='id identifier rubyid_eof?'>eof?</span>
|
||
|
||
<span class='id identifier rubyid_data'>data</span>
|
||
<span class='kw'>rescue</span> <span class='const'>EOFError</span>
|
||
<span class='comment'># Sometimes fd isn't marked EOF in time?
|
||
</span> <span class='id identifier rubyid_data'>data</span>
|
||
<span class='kw'>rescue</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/Post.html" title="Rex::Post (module)">Post</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Rex/Post/Meterpreter.html" title="Rex::Post::Meterpreter (module)">Meterpreter</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Rex/Post/Meterpreter/RequestError.html" title="Rex::Post::Meterpreter::RequestError (class)">RequestError</a></span></span> <span class='op'>=></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'>"</span><span class='tstring_content'>Failed to open file: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>nil</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'>if</span> <span class='id identifier rubyid_fd'>fd</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="_read_file_powershell-instance_method">
|
||
|
||
#<strong>_read_file_powershell</strong>(filename) ⇒ <tt>Object</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
812
|
||
813
|
||
814
|
||
815
|
||
816
|
||
817
|
||
818
|
||
819
|
||
820
|
||
821
|
||
822
|
||
823
|
||
824
|
||
825</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 812</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid__read_file_powershell'>_read_file_powershell</span><span class='lparen'>(</span><span class='id identifier rubyid_filename'>filename</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_data'>data</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_offset'>offset</span> <span class='op'>=</span> <span class='int'>0</span>
|
||
<span class='id identifier rubyid_chunk_size'>chunk_size</span> <span class='op'>=</span> <span class='int'>65536</span>
|
||
<span class='id identifier rubyid_loop'>loop</span> <span class='kw'>do</span>
|
||
<span class='id identifier rubyid_chunk'>chunk</span> <span class='op'>=</span> <span class='id identifier rubyid__read_file_powershell_fragment'>_read_file_powershell_fragment</span><span class='lparen'>(</span><span class='id identifier rubyid_filename'>filename</span><span class='comma'>,</span> <span class='id identifier rubyid_chunk_size'>chunk_size</span><span class='comma'>,</span> <span class='id identifier rubyid_offset'>offset</span><span class='rparen'>)</span>
|
||
<span class='kw'>break</span> <span class='kw'>if</span> <span class='id identifier rubyid_chunk'>chunk</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
||
|
||
<span class='id identifier rubyid_data'>data</span> <span class='op'><<</span> <span class='id identifier rubyid_chunk'>chunk</span>
|
||
<span class='id identifier rubyid_offset'>offset</span> <span class='op'>+=</span> <span class='id identifier rubyid_chunk_size'>chunk_size</span>
|
||
<span class='kw'>break</span> <span class='kw'>if</span> <span class='id identifier rubyid_chunk'>chunk</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'><</span> <span class='id identifier rubyid_chunk_size'>chunk_size</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_data'>data</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="_read_file_powershell_fragment-instance_method">
|
||
|
||
#<strong>_read_file_powershell_fragment</strong>(filename, chunk_size, offset = 0) ⇒ <tt>Object</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
827
|
||
828
|
||
829
|
||
830
|
||
831
|
||
832
|
||
833
|
||
834
|
||
835
|
||
836
|
||
837
|
||
838
|
||
839
|
||
840
|
||
841</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 827</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid__read_file_powershell_fragment'>_read_file_powershell_fragment</span><span class='lparen'>(</span><span class='id identifier rubyid_filename'>filename</span><span class='comma'>,</span> <span class='id identifier rubyid_chunk_size'>chunk_size</span><span class='comma'>,</span> <span class='id identifier rubyid_offset'>offset</span> <span class='op'>=</span> <span class='int'>0</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_pwsh_code'>pwsh_code</span> <span class='op'>=</span> <span class='heredoc_beg'><<~PSH</span>
|
||
<span class='tstring_content'> $mstream = New-Object System.IO.MemoryStream;
|
||
</span><span class='tstring_content'> $gzipstream = New-Object System.IO.Compression.GZipStream($mstream, [System.IO.Compression.CompressionMode]::Compress);
|
||
</span><span class='tstring_content'> $get_bytes = [System.IO.File]::ReadAllBytes(\"</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='embexpr_beg'>#{</span><span class='id identifier rubyid_offset'>offset</span><span class='embexpr_end'>}</span><span class='tstring_content'>..</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_offset'>offset</span> <span class='op'>+</span> <span class='id identifier rubyid_chunk_size'>chunk_size</span> <span class='op'>-</span> <span class='int'>1</span><span class='embexpr_end'>}</span><span class='tstring_content'>];
|
||
</span><span class='tstring_content'> $gzipstream.Write($get_bytes, 0, $get_bytes.Length);
|
||
</span><span class='tstring_content'> $gzipstream.Close();
|
||
</span><span class='tstring_content'> [System.Convert]::ToBase64String($mstream.ToArray());
|
||
</span><span class='heredoc_end'> PSH
|
||
</span> <span class='id identifier rubyid_b64_data'>b64_data</span> <span class='op'>=</span> <span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='id identifier rubyid_pwsh_code'>pwsh_code</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_b64_data'>b64_data</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
|
||
|
||
<span class='id identifier rubyid_uncompressed_fragment'>uncompressed_fragment</span> <span class='op'>=</span> <span class='const'>Zlib</span><span class='op'>::</span><span class='const'>GzipReader</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>StringIO</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>Base64</span><span class='period'>.</span><span class='id identifier rubyid_decode64'>decode64</span><span class='lparen'>(</span><span class='id identifier rubyid_b64_data'>b64_data</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_uncompressed_fragment'>uncompressed_fragment</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="_shell_command_with_success_code-instance_method">
|
||
|
||
#<strong>_shell_command_with_success_code</strong>(cmd) ⇒ <tt>Object</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1150
|
||
1151
|
||
1152
|
||
1153
|
||
1154
|
||
1155</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 1150</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid__shell_command_with_success_code'>_shell_command_with_success_code</span><span class='lparen'>(</span><span class='id identifier rubyid_cmd'>cmd</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_token'>token</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>_</span><span class='embexpr_beg'>#{</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'>32</span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
||
<span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_shell_command_token'>shell_command_token</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_cmd'>cmd</span><span class='embexpr_end'>}</span><span class='tstring_content'> && echo </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_token'>token</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_result'>result</span><span class='op'>&.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_token'>token</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="_shell_process_with_success_code-instance_method">
|
||
|
||
#<strong>_shell_process_with_success_code</strong>(executable, args) ⇒ <tt>Object</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1157
|
||
1158
|
||
1159
|
||
1160
|
||
1161
|
||
1162
|
||
1163</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 1157</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid__shell_process_with_success_code'>_shell_process_with_success_code</span><span class='lparen'>(</span><span class='id identifier rubyid_executable'>executable</span><span class='comma'>,</span> <span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_cmd'>cmd</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_to_cmd'>to_cmd</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='id identifier rubyid_executable'>executable</span><span class='rbracket'>]</span> <span class='op'>+</span> <span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_token'>token</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>_</span><span class='embexpr_beg'>#{</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'>32</span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
||
<span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_shell_command_token'>shell_command_token</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_cmd'>cmd</span><span class='embexpr_end'>}</span><span class='tstring_content'> && echo </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_token'>token</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_result'>result</span><span class='op'>&.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_token'>token</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="_unix_max_line_length-instance_method">
|
||
|
||
#<strong>_unix_max_line_length</strong> ⇒ <tt>Integer</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Calculate the maximum line length for a unix shell.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>Integer</tt>)</span>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1170
|
||
1171
|
||
1172
|
||
1173
|
||
1174
|
||
1175
|
||
1176
|
||
1177
|
||
1178
|
||
1179
|
||
1180
|
||
1181
|
||
1182
|
||
1183
|
||
1184
|
||
1185
|
||
1186
|
||
1187
|
||
1188</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 1170</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid__unix_max_line_length'>_unix_max_line_length</span>
|
||
<span class='comment'># Based on autoconf's arg_max calculator, see
|
||
</span> <span class='comment'># http://www.in-ulm.de/~mascheck/various/argmax/autoconf_check.html
|
||
</span> <span class='id identifier rubyid_calc_line_max'>calc_line_max</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>i=0 max= new= str=abcd; \
|
||
while (test "X"`echo "X$str" 2>/dev/null` = "XX$str") >/dev/null 2>&1 && \
|
||
new=`expr "X$str" : ".*" 2>&1` && \
|
||
test "$i" != 17 && \
|
||
max=$new; do \
|
||
i=`expr $i + 1`; str=$str$str;\
|
||
done; echo $max</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_line_max'>line_max</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_shell_command_token'>shell_command_token</span><span class='lparen'>(</span><span class='id identifier rubyid_calc_line_max'>calc_line_max</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
|
||
|
||
<span class='comment'># Fall back to a conservative 4k which should work on even the most
|
||
</span> <span class='comment'># restrictive of embedded shells.
|
||
</span> <span class='id identifier rubyid_line_max'>line_max</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_line_max'>line_max</span> <span class='op'>==</span> <span class='int'>0</span> <span class='op'>?</span> <span class='int'>4096</span> <span class='op'>:</span> <span class='id identifier rubyid_line_max'>line_max</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'>"</span><span class='tstring_content'>Max line length is </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_line_max'>line_max</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
|
||
<span class='id identifier rubyid_line_max'>line_max</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="_win_ansi_append_file-instance_method">
|
||
|
||
#<strong>_win_ansi_append_file</strong>(file_name, data, chunk_size = 5000) ⇒ <tt>void</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
<p class="note returns_void">This method returns an undefined value.</p>
|
||
<p>Windows ansi file append for shell sessions. Writes given object content to a remote file.</p>
|
||
|
||
<p>NOTE: *This is not binary-safe on Windows shell sessions!*</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>file_name</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Remote file name to write</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>data</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Contents to put in the file</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>chunk_size</span>
|
||
|
||
|
||
<span class='type'>(<tt>int</tt>)</span>
|
||
|
||
|
||
<em class="default">(defaults to: <tt>5000</tt>)</em>
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>max size for the data chunk to write at a time</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
925
|
||
926
|
||
927
|
||
928
|
||
929
|
||
930
|
||
931
|
||
932
|
||
933
|
||
934
|
||
935
|
||
936
|
||
937
|
||
938
|
||
939
|
||
940
|
||
941
|
||
942
|
||
943
|
||
944
|
||
945
|
||
946</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 925</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid__win_ansi_append_file'>_win_ansi_append_file</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='id identifier rubyid_chunk_size'>chunk_size</span> <span class='op'>=</span> <span class='int'>5000</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_start_index'>start_index</span> <span class='op'>=</span> <span class='int'>0</span>
|
||
<span class='id identifier rubyid_write_length'>write_length</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_chunk_size'>chunk_size</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_min'>min</span>
|
||
<span class='kw'>while</span> <span class='id identifier rubyid_start_index'>start_index</span> <span class='op'><</span> <span class='id identifier rubyid_data'>data</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span>
|
||
<span class='kw'>begin</span>
|
||
<span class='id identifier rubyid_success'>success</span> <span class='op'>=</span> <span class='id identifier rubyid__shell_command_with_success_code'>_shell_command_with_success_code</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>echo | set /p x=\"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_data'>data</span><span class='lbracket'>[</span><span class='id identifier rubyid_start_index'>start_index</span><span class='comma'>,</span> <span class='id identifier rubyid_write_length'>write_length</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'>\">> \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>\"</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>unless</span> <span class='id identifier rubyid_success'>success</span>
|
||
<span class='id identifier rubyid_print_warning'>print_warning</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Write partially succeeded then failed. May need to manually clean up </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_start_index'>start_index</span> <span class='op'>==</span> <span class='int'>0</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span>
|
||
<span class='kw'>end</span>
|
||
<span class='id identifier rubyid_start_index'>start_index</span> <span class='op'>+=</span> <span class='id identifier rubyid_write_length'>write_length</span>
|
||
<span class='id identifier rubyid_write_length'>write_length</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_chunk_size'>chunk_size</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>-</span> <span class='id identifier rubyid_start_index'>start_index</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_min'>min</span>
|
||
<span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>Exception</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
||
<span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Exception while running </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid___method__'>__method__</span><span class='embexpr_end'>}</span><span class='tstring_content'>: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_print_warning'>print_warning</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>May need to manually clean up </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_start_index'>start_index</span> <span class='op'>==</span> <span class='int'>0</span>
|
||
<span class='id identifier rubyid_file_rm'>file_rm</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</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>
|
||
|
||
<span class='kw'>true</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="_win_ansi_write_file-instance_method">
|
||
|
||
#<strong>_win_ansi_write_file</strong>(file_name, data, chunk_size = 5000) ⇒ <tt>void</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
<p class="note returns_void">This method returns an undefined value.</p>
|
||
<p>Windows ANSI file write for shell sessions. Writes given object content to a remote file.</p>
|
||
|
||
<p>NOTE: *This is not binary-safe on Windows shell sessions!*</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>file_name</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Remote file name to write</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>data</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Contents to put in the file</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>chunk_size</span>
|
||
|
||
|
||
<span class='type'>(<tt>int</tt>)</span>
|
||
|
||
|
||
<em class="default">(defaults to: <tt>5000</tt>)</em>
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>max size for the data chunk to write at a time</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
904
|
||
905
|
||
906
|
||
907
|
||
908
|
||
909
|
||
910
|
||
911
|
||
912
|
||
913
|
||
914
|
||
915</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 904</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid__win_ansi_write_file'>_win_ansi_write_file</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='id identifier rubyid_chunk_size'>chunk_size</span> <span class='op'>=</span> <span class='int'>5000</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_start_index'>start_index</span> <span class='op'>=</span> <span class='int'>0</span>
|
||
<span class='id identifier rubyid_write_length'>write_length</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_chunk_size'>chunk_size</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_min'>min</span>
|
||
<span class='id identifier rubyid_success'>success</span> <span class='op'>=</span> <span class='id identifier rubyid__shell_command_with_success_code'>_shell_command_with_success_code</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>echo | set /p x=\"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_data'>data</span><span class='lbracket'>[</span><span class='int'>0</span><span class='comma'>,</span> <span class='id identifier rubyid_write_length'>write_length</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'>\"> \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>\"</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_success'>success</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_data'>data</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>></span> <span class='id identifier rubyid_write_length'>write_length</span>
|
||
<span class='comment'># just use append to finish the rest
|
||
</span> <span class='kw'>return</span> <span class='id identifier rubyid__win_ansi_append_file'>_win_ansi_append_file</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='lbracket'>[</span><span class='id identifier rubyid_write_length'>write_length</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_chunk_size'>chunk_size</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="_win_bin_append_file-instance_method">
|
||
|
||
#<strong>_win_bin_append_file</strong>(file_name, data, chunk_size = 5000) ⇒ <tt>void</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
<p class="note returns_void">This method returns an undefined value.</p>
|
||
<p>Windows binary file append for shell sessions. Appends given object content to a remote file.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>file_name</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Remote file name to write</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>data</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Contents to put in the file</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>chunk_size</span>
|
||
|
||
|
||
<span class='type'>(<tt>int</tt>)</span>
|
||
|
||
|
||
<em class="default">(defaults to: <tt>5000</tt>)</em>
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>max size for the data chunk to write at a time</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
979
|
||
980
|
||
981
|
||
982
|
||
983
|
||
984
|
||
985
|
||
986
|
||
987
|
||
988
|
||
989
|
||
990
|
||
991
|
||
992
|
||
993
|
||
994
|
||
995
|
||
996
|
||
997
|
||
998
|
||
999
|
||
1000
|
||
1001</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 979</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid__win_bin_append_file'>_win_bin_append_file</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='id identifier rubyid_chunk_size'>chunk_size</span> <span class='op'>=</span> <span class='int'>5000</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_b64_data'>b64_data</span> <span class='op'>=</span> <span class='const'>Base64</span><span class='period'>.</span><span class='id identifier rubyid_strict_encode64'>strict_encode64</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_b64_filename'>b64_filename</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>.b64</span><span class='tstring_end'>"</span></span>
|
||
<span class='id identifier rubyid_tmp_filename'>tmp_filename</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>.tmp</span><span class='tstring_end'>"</span></span>
|
||
<span class='kw'>begin</span>
|
||
<span class='id identifier rubyid_success'>success</span> <span class='op'>=</span> <span class='id identifier rubyid__win_ansi_write_file'>_win_ansi_write_file</span><span class='lparen'>(</span><span class='id identifier rubyid_b64_filename'>b64_filename</span><span class='comma'>,</span> <span class='id identifier rubyid_b64_data'>b64_data</span><span class='comma'>,</span> <span class='id identifier rubyid_chunk_size'>chunk_size</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_success'>success</span>
|
||
<span class='id identifier rubyid_vprint_status'>vprint_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Uploaded Base64-encoded file. Decoding using certutil</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_success'>success</span> <span class='op'>=</span> <span class='id identifier rubyid__shell_process_with_success_code'>_shell_process_with_success_code</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>certutil</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>-decode</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_b64_filename'>b64_filename</span><span class='comma'>,</span> <span class='id identifier rubyid_tmp_filename'>tmp_filename</span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_success'>success</span>
|
||
<span class='id identifier rubyid_vprint_status'>vprint_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Certutil succeeded. Appending using copy</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_success'>success</span> <span class='op'>=</span> <span class='id identifier rubyid__shell_process_with_success_code'>_shell_process_with_success_code</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>copy</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/b</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>+</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_tmp_filename'>tmp_filename</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='id identifier rubyid_file_name'>file_name</span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_success'>success</span>
|
||
<span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>Exception</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
||
<span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Exception while running </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid___method__'>__method__</span><span class='embexpr_end'>}</span><span class='tstring_content'>: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span>
|
||
<span class='kw'>ensure</span>
|
||
<span class='id identifier rubyid_file_rm'>file_rm</span><span class='lparen'>(</span><span class='id identifier rubyid_b64_filename'>b64_filename</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_file_rm'>file_rm</span><span class='lparen'>(</span><span class='id identifier rubyid_tmp_filename'>tmp_filename</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="_win_bin_write_file-instance_method">
|
||
|
||
#<strong>_win_bin_write_file</strong>(file_name, data, chunk_size = 5000) ⇒ <tt>void</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
<p class="note returns_void">This method returns an undefined value.</p>
|
||
<p>Windows binary file write for shell sessions. Writes given object content to a remote file.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>file_name</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Remote file name to write</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>data</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Contents to put in the file</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>chunk_size</span>
|
||
|
||
|
||
<span class='type'>(<tt>int</tt>)</span>
|
||
|
||
|
||
<em class="default">(defaults to: <tt>5000</tt>)</em>
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>max size for the data chunk to write at a time</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
954
|
||
955
|
||
956
|
||
957
|
||
958
|
||
959
|
||
960
|
||
961
|
||
962
|
||
963
|
||
964
|
||
965
|
||
966
|
||
967
|
||
968
|
||
969
|
||
970
|
||
971</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 954</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid__win_bin_write_file'>_win_bin_write_file</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='id identifier rubyid_chunk_size'>chunk_size</span> <span class='op'>=</span> <span class='int'>5000</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_b64_data'>b64_data</span> <span class='op'>=</span> <span class='const'>Base64</span><span class='period'>.</span><span class='id identifier rubyid_strict_encode64'>strict_encode64</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_b64_filename'>b64_filename</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>.b64</span><span class='tstring_end'>"</span></span>
|
||
<span class='kw'>begin</span>
|
||
<span class='id identifier rubyid_success'>success</span> <span class='op'>=</span> <span class='id identifier rubyid__win_ansi_write_file'>_win_ansi_write_file</span><span class='lparen'>(</span><span class='id identifier rubyid_b64_filename'>b64_filename</span><span class='comma'>,</span> <span class='id identifier rubyid_b64_data'>b64_data</span><span class='comma'>,</span> <span class='id identifier rubyid_chunk_size'>chunk_size</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_success'>success</span>
|
||
<span class='id identifier rubyid_vprint_status'>vprint_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Uploaded Base64-encoded file. Decoding using certutil</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_success'>success</span> <span class='op'>=</span> <span class='id identifier rubyid__shell_process_with_success_code'>_shell_process_with_success_code</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>certutil</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>-f</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>-decode</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_b64_filename'>b64_filename</span><span class='comma'>,</span> <span class='id identifier rubyid_file_name'>file_name</span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_success'>success</span>
|
||
<span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>Exception</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
||
<span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Exception while running </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid___method__'>__method__</span><span class='embexpr_end'>}</span><span class='tstring_content'>: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span>
|
||
<span class='kw'>ensure</span>
|
||
<span class='id identifier rubyid_file_rm'>file_rm</span><span class='lparen'>(</span><span class='id identifier rubyid_b64_filename'>b64_filename</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="_write_file_meterpreter-instance_method">
|
||
|
||
#<strong>_write_file_meterpreter</strong>(file_name, data, mode = 'wb') ⇒ <tt>Object</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Meterpreter-specific file write. Returns true on success</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
862
|
||
863
|
||
864
|
||
865
|
||
866
|
||
867
|
||
868
|
||
869</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 862</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid__write_file_meterpreter'>_write_file_meterpreter</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='id identifier rubyid_mode'>mode</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>wb</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_fd'>fd</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_fs'>fs</span><span class='period'>.</span><span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_mode'>mode</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_fd'>fd</span><span class='period'>.</span><span class='id identifier rubyid_write'>write</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_fd'>fd</span><span class='period'>.</span><span class='id identifier rubyid_close'>close</span>
|
||
<span class='kw'>return</span> <span class='kw'>true</span>
|
||
<span class='kw'>rescue</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/Post.html" title="Rex::Post (module)">Post</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Rex/Post/Meterpreter.html" title="Rex::Post::Meterpreter (module)">Meterpreter</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Rex/Post/Meterpreter/RequestError.html" title="Rex::Post::Meterpreter::RequestError (class)">RequestError</a></span></span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="_write_file_powershell-instance_method">
|
||
|
||
#<strong>_write_file_powershell</strong>(file_name, data, append = false) ⇒ <tt>Object</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
757
|
||
758
|
||
759
|
||
760
|
||
761
|
||
762
|
||
763
|
||
764
|
||
765
|
||
766
|
||
767
|
||
768
|
||
769
|
||
770
|
||
771
|
||
772
|
||
773
|
||
774
|
||
775
|
||
776</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 757</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid__write_file_powershell'>_write_file_powershell</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='id identifier rubyid_append'>append</span> <span class='op'>=</span> <span class='kw'>false</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_offset'>offset</span> <span class='op'>=</span> <span class='int'>0</span>
|
||
<span class='id identifier rubyid_chunk_size'>chunk_size</span> <span class='op'>=</span> <span class='int'>1000</span>
|
||
<span class='id identifier rubyid_loop'>loop</span> <span class='kw'>do</span>
|
||
<span class='id identifier rubyid_success'>success</span> <span class='op'>=</span> <span class='id identifier rubyid__write_file_powershell_fragment'>_write_file_powershell_fragment</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='id identifier rubyid_offset'>offset</span><span class='comma'>,</span> <span class='id identifier rubyid_chunk_size'>chunk_size</span><span class='comma'>,</span> <span class='id identifier rubyid_append'>append</span><span class='rparen'>)</span>
|
||
<span class='kw'>unless</span> <span class='id identifier rubyid_success'>success</span>
|
||
<span class='kw'>unless</span> <span class='id identifier rubyid_offset'>offset</span> <span class='op'>==</span> <span class='int'>0</span>
|
||
<span class='id identifier rubyid_print_warning'>print_warning</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Write partially succeeded then failed. May need to manually clean up </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># Future writes will then append, regardless of whether this is an append or write operation
|
||
</span> <span class='id identifier rubyid_append'>append</span> <span class='op'>=</span> <span class='kw'>true</span>
|
||
<span class='id identifier rubyid_offset'>offset</span> <span class='op'>+=</span> <span class='id identifier rubyid_chunk_size'>chunk_size</span>
|
||
<span class='kw'>break</span> <span class='kw'>if</span> <span class='id identifier rubyid_offset'>offset</span> <span class='op'>>=</span> <span class='id identifier rubyid_data'>data</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</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="_write_file_powershell_fragment-instance_method">
|
||
|
||
#<strong>_write_file_powershell_fragment</strong>(file_name, data, offset, chunk_size, append = false) ⇒ <tt>Object</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
778
|
||
779
|
||
780
|
||
781
|
||
782
|
||
783
|
||
784
|
||
785
|
||
786
|
||
787
|
||
788
|
||
789
|
||
790
|
||
791
|
||
792
|
||
793
|
||
794
|
||
795
|
||
796
|
||
797
|
||
798
|
||
799
|
||
800
|
||
801
|
||
802
|
||
803
|
||
804
|
||
805
|
||
806
|
||
807
|
||
808
|
||
809
|
||
810</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 778</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid__write_file_powershell_fragment'>_write_file_powershell_fragment</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='id identifier rubyid_offset'>offset</span><span class='comma'>,</span> <span class='id identifier rubyid_chunk_size'>chunk_size</span><span class='comma'>,</span> <span class='id identifier rubyid_append'>append</span> <span class='op'>=</span> <span class='kw'>false</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_token'>token</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>_</span><span class='embexpr_beg'>#{</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'>32</span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
||
<span class='id identifier rubyid_chunk'>chunk</span> <span class='op'>=</span> <span class='id identifier rubyid_data'>data</span><span class='lbracket'>[</span><span class='id identifier rubyid_offset'>offset</span><span class='op'>..</span><span class='lparen'>(</span><span class='id identifier rubyid_offset'>offset</span> <span class='op'>+</span> <span class='id identifier rubyid_chunk_size'>chunk_size</span><span class='op'>-</span><span class='int'>1</span><span class='rparen'>)</span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_length'>length</span> <span class='op'>=</span> <span class='id identifier rubyid_chunk'>chunk</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span>
|
||
<span class='id identifier rubyid_compressed_chunk'>compressed_chunk</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_gzip'>gzip</span><span class='lparen'>(</span><span class='id identifier rubyid_chunk'>chunk</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_encoded_chunk'>encoded_chunk</span> <span class='op'>=</span> <span class='const'>Base64</span><span class='period'>.</span><span class='id identifier rubyid_strict_encode64'>strict_encode64</span><span class='lparen'>(</span><span class='id identifier rubyid_compressed_chunk'>compressed_chunk</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_append'>append</span>
|
||
<span class='id identifier rubyid_file_mode'>file_mode</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Append</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_file_mode'>file_mode</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Create</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>end</span>
|
||
<span class='id identifier rubyid_file_name'>file_name</span> <span class='op'>=</span> <span class='id identifier rubyid_file_name'>file_name</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>'</span><span class='tstring_end'>"</span></span><span class='comma'>,</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>''</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_pwsh_code'>pwsh_code</span> <span class='op'>=</span> <span class='heredoc_beg'><<~PSH</span>
|
||
<span class='tstring_content'> try {
|
||
</span><span class='tstring_content'> $encoded='</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_encoded_chunk'>encoded_chunk</span><span class='embexpr_end'>}</span><span class='tstring_content'>';
|
||
</span><span class='tstring_content'> $gzip_bytes=[System.Convert]::FromBase64String($encoded);
|
||
</span><span class='tstring_content'> $mstream = New-Object System.IO.MemoryStream(,$gzip_bytes);
|
||
</span><span class='tstring_content'> $gzipstream = New-Object System.IO.Compression.GzipStream $mstream, ([System.IO.Compression.CompressionMode]::Decompress);
|
||
</span><span class='tstring_content'> $filestream = [System.IO.File]::Open('</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>', [System.IO.FileMode]::</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_mode'>file_mode</span><span class='embexpr_end'>}</span><span class='tstring_content'>);
|
||
</span><span class='tstring_content'> $file_bytes=[System.Byte[]]::CreateInstance([System.Byte],</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_length'>length</span><span class='embexpr_end'>}</span><span class='tstring_content'>);
|
||
</span><span class='tstring_content'> $gzipstream.Read($file_bytes,0,$file_bytes.Length);
|
||
</span><span class='tstring_content'> $filestream.Write($file_bytes,0,$file_bytes.Length);
|
||
</span><span class='tstring_content'> $filestream.Close();
|
||
</span><span class='tstring_content'> $gzipstream.Close();
|
||
</span><span class='tstring_content'> echo Done
|
||
</span><span class='tstring_content'> } catch {
|
||
</span><span class='tstring_content'> echo </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_token'>token</span><span class='embexpr_end'>}</span><span class='tstring_content'>
|
||
</span><span class='tstring_content'> }
|
||
</span><span class='heredoc_end'> PSH
|
||
</span> <span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='id identifier rubyid_pwsh_code'>pwsh_code</span><span class='rparen'>)</span>
|
||
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_result'>result</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span> <span class='op'>&&</span> <span class='op'>!</span><span class='id identifier rubyid_result'>result</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_token'>token</span><span class='rparen'>)</span> <span class='op'>&&</span> <span class='id identifier rubyid_result'>result</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Done</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="_write_file_unix_shell-instance_method">
|
||
|
||
#<strong>_write_file_unix_shell</strong>(file_name, data, append = false) ⇒ <tt>void</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
<p class="note returns_void">This method returns an undefined value.</p>
|
||
<p>Write <code>data</code> to the remote file <code>file_name</code>.</p>
|
||
|
||
<p>Truncates if <code>append</code> is false, appends otherwise.</p>
|
||
|
||
<p>You should never call this method directly. Instead, call <span class='object_link'><a href="#write_file-instance_method" title="Msf::Post::File#write_file (method)">#write_file</a></span> or <span class='object_link'><a href="#append_file-instance_method" title="Msf::Post::File#append_file (method)">#append_file</a></span> which will call this if it is appropriate for the given session.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1024
|
||
1025
|
||
1026
|
||
1027
|
||
1028
|
||
1029
|
||
1030
|
||
1031
|
||
1032
|
||
1033
|
||
1034
|
||
1035
|
||
1036
|
||
1037
|
||
1038
|
||
1039
|
||
1040
|
||
1041
|
||
1042
|
||
1043
|
||
1044
|
||
1045
|
||
1046
|
||
1047
|
||
1048
|
||
1049
|
||
1050
|
||
1051
|
||
1052
|
||
1053
|
||
1054
|
||
1055
|
||
1056
|
||
1057
|
||
1058
|
||
1059
|
||
1060
|
||
1061
|
||
1062
|
||
1063
|
||
1064
|
||
1065
|
||
1066
|
||
1067
|
||
1068
|
||
1069
|
||
1070
|
||
1071
|
||
1072
|
||
1073
|
||
1074
|
||
1075
|
||
1076
|
||
1077
|
||
1078
|
||
1079
|
||
1080
|
||
1081
|
||
1082
|
||
1083
|
||
1084
|
||
1085
|
||
1086
|
||
1087
|
||
1088
|
||
1089
|
||
1090
|
||
1091
|
||
1092
|
||
1093
|
||
1094
|
||
1095
|
||
1096
|
||
1097
|
||
1098
|
||
1099
|
||
1100
|
||
1101
|
||
1102
|
||
1103
|
||
1104
|
||
1105
|
||
1106
|
||
1107
|
||
1108
|
||
1109
|
||
1110
|
||
1111
|
||
1112
|
||
1113
|
||
1114
|
||
1115
|
||
1116
|
||
1117
|
||
1118
|
||
1119
|
||
1120
|
||
1121
|
||
1122
|
||
1123
|
||
1124
|
||
1125
|
||
1126
|
||
1127
|
||
1128
|
||
1129
|
||
1130
|
||
1131
|
||
1132
|
||
1133
|
||
1134
|
||
1135
|
||
1136
|
||
1137
|
||
1138
|
||
1139
|
||
1140
|
||
1141
|
||
1142
|
||
1143
|
||
1144
|
||
1145
|
||
1146
|
||
1147
|
||
1148</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 1024</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid__write_file_unix_shell'>_write_file_unix_shell</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='id identifier rubyid_append'>append</span> <span class='op'>=</span> <span class='kw'>false</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_redirect'>redirect</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_append'>append</span> <span class='op'>?</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>>></span><span class='tstring_end'>'</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>></span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
|
||
<span class='comment'># Short-circuit an empty string. The : builtin is part of posix
|
||
</span> <span class='comment'># standard and should theoretically exist everywhere.
|
||
</span> <span class='kw'>if</span> <span class='id identifier rubyid_data'>data</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid__shell_command_with_success_code'>_shell_command_with_success_code</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_redirect'>redirect</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_escape_arg'>escape_arg</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='id identifier rubyid_d'>d</span> <span class='op'>=</span> <span class='id identifier rubyid_data'>data</span><span class='period'>.</span><span class='id identifier rubyid_dup'>dup</span>
|
||
<span class='id identifier rubyid_d'>d</span><span class='period'>.</span><span class='id identifier rubyid_force_encoding'>force_encoding</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>binary</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_d'>d</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span> <span class='symbol'>:force_encoding</span>
|
||
|
||
<span class='id identifier rubyid_chunks'>chunks</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_command'>command</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
||
<span class='id identifier rubyid_encoding'>encoding</span> <span class='op'>=</span> <span class='symbol'>:hex</span>
|
||
<span class='id identifier rubyid_cmd_name'>cmd_name</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span>
|
||
|
||
<span class='id identifier rubyid_line_max'>line_max</span> <span class='op'>=</span> <span class='id identifier rubyid__unix_max_line_length'>_unix_max_line_length</span>
|
||
<span class='comment'># Leave plenty of room for the filename we're writing to and the
|
||
</span> <span class='comment'># command to echo it out
|
||
</span> <span class='id identifier rubyid_line_max'>line_max</span> <span class='op'>-=</span> <span class='id identifier rubyid_file_name'>file_name</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span>
|
||
<span class='id identifier rubyid_line_max'>line_max</span> <span class='op'>-=</span> <span class='int'>64</span>
|
||
|
||
<span class='comment'># Ordered by descending likeliness to work
|
||
</span> <span class='lbracket'>[</span>
|
||
<span class='comment'># POSIX standard requires %b which expands octal (but not hex)
|
||
</span> <span class='comment'># escapes in the argument. However, some versions (notably
|
||
</span> <span class='comment'># FreeBSD) truncate input on nulls, so "printf %b '\0\101'"
|
||
</span> <span class='comment'># produces a 0-length string. Some also allow octal escapes
|
||
</span> <span class='comment'># without a format string, and do not truncate, so start with
|
||
</span> <span class='comment'># that and try %b if it doesn't work. The standalone version seems
|
||
</span> <span class='comment'># to be more likely to work than the builtin version, so try it
|
||
</span> <span class='comment'># first.
|
||
</span> <span class='comment'>#
|
||
</span> <span class='comment'># Both of these work for sure on Linux and FreeBSD
|
||
</span> <span class='lbrace'>{</span> <span class='label'>cmd:</span> <span class='tstring'><span class='tstring_beg'>%q{</span><span class='tstring_content'>/usr/bin/printf 'CONTENTS'</span><span class='tstring_end'>}</span></span><span class='comma'>,</span> <span class='label'>enc:</span> <span class='symbol'>:octal</span><span class='comma'>,</span> <span class='label'>name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>printf</span><span class='tstring_end'>'</span></span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
||
<span class='lbrace'>{</span> <span class='label'>cmd:</span> <span class='tstring'><span class='tstring_beg'>%q{</span><span class='tstring_content'>printf 'CONTENTS'</span><span class='tstring_end'>}</span></span><span class='comma'>,</span> <span class='label'>enc:</span> <span class='symbol'>:octal</span><span class='comma'>,</span> <span class='label'>name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>printf</span><span class='tstring_end'>'</span></span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
||
<span class='comment'># Works on Solaris
|
||
</span> <span class='lbrace'>{</span> <span class='label'>cmd:</span> <span class='tstring'><span class='tstring_beg'>%q{</span><span class='tstring_content'>/usr/bin/printf %b 'CONTENTS'</span><span class='tstring_end'>}</span></span><span class='comma'>,</span> <span class='label'>enc:</span> <span class='symbol'>:octal</span><span class='comma'>,</span> <span class='label'>name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>printf</span><span class='tstring_end'>'</span></span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
||
<span class='lbrace'>{</span> <span class='label'>cmd:</span> <span class='tstring'><span class='tstring_beg'>%q{</span><span class='tstring_content'>printf %b 'CONTENTS'</span><span class='tstring_end'>}</span></span><span class='comma'>,</span> <span class='label'>enc:</span> <span class='symbol'>:octal</span><span class='comma'>,</span> <span class='label'>name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>printf</span><span class='tstring_end'>'</span></span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
||
<span class='comment'># Perl supports both octal and hex escapes, but octal is usually
|
||
</span> <span class='comment'># shorter (e.g. 0 becomes \0 instead of \x00)
|
||
</span> <span class='lbrace'>{</span> <span class='label'>cmd:</span> <span class='tstring'><span class='tstring_beg'>%q{</span><span class='tstring_content'>perl -e 'print("CONTENTS")'</span><span class='tstring_end'>}</span></span><span class='comma'>,</span> <span class='label'>enc:</span> <span class='symbol'>:octal</span><span class='comma'>,</span> <span class='label'>name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>perl</span><span class='tstring_end'>'</span></span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
||
<span class='comment'># POSIX awk doesn't have \xNN escapes, use gawk to ensure we're
|
||
</span> <span class='comment'># getting the GNU version.
|
||
</span> <span class='lbrace'>{</span> <span class='label'>cmd:</span> <span class='tstring'><span class='tstring_beg'>%q^</span><span class='tstring_content'>gawk 'BEGIN {ORS="";print "CONTENTS"}' </dev/null</span><span class='tstring_end'>^</span></span><span class='comma'>,</span> <span class='label'>enc:</span> <span class='symbol'>:hex</span><span class='comma'>,</span> <span class='label'>name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>awk</span><span class='tstring_end'>'</span></span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
||
<span class='comment'># xxd's -p flag specifies a postscript-style hexdump of unadorned hex
|
||
</span> <span class='comment'># digits, e.g. ABCD would be 41424344
|
||
</span> <span class='lbrace'>{</span> <span class='label'>cmd:</span> <span class='tstring'><span class='tstring_beg'>%q{</span><span class='tstring_content'>echo 'CONTENTS'|xxd -p -r</span><span class='tstring_end'>}</span></span><span class='comma'>,</span> <span class='label'>enc:</span> <span class='symbol'>:bare_hex</span><span class='comma'>,</span> <span class='label'>name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>xxd</span><span class='tstring_end'>'</span></span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
||
<span class='comment'># Use echo as a last resort since it frequently doesn't support -e
|
||
</span> <span class='comment'># or -n. bash and zsh's echo builtins are apparently the only ones
|
||
</span> <span class='comment'># that support both. Most others treat all options as just more
|
||
</span> <span class='comment'># arguments to print. In particular, the standalone /bin/echo or
|
||
</span> <span class='comment'># /usr/bin/echo appear never to have -e so don't bother trying
|
||
</span> <span class='comment'># them.
|
||
</span> <span class='lbrace'>{</span> <span class='label'>cmd:</span> <span class='tstring'><span class='tstring_beg'>%q{</span><span class='tstring_content'>echo -ne 'CONTENTS'</span><span class='tstring_end'>}</span></span><span class='comma'>,</span> <span class='label'>enc:</span> <span class='symbol'>:hex</span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
||
<span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_foo'>foo</span><span class='op'>|</span>
|
||
<span class='comment'># Some versions of printf mangle %.
|
||
</span> <span class='id identifier rubyid_test_str'>test_str</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>\0\xff\xfe</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_upper'>rand_text_alpha_upper</span><span class='lparen'>(</span><span class='int'>4</span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_content'>\x7f%%\r\n</span><span class='tstring_end'>"</span></span>
|
||
<span class='comment'># test_str = "\0\xff\xfe"
|
||
</span> <span class='kw'>case</span> <span class='id identifier rubyid_foo'>foo</span><span class='lbracket'>[</span><span class='symbol'>:enc</span><span class='rbracket'>]</span>
|
||
<span class='kw'>when</span> <span class='symbol'>:hex</span>
|
||
<span class='id identifier rubyid_cmd'>cmd</span> <span class='op'>=</span> <span class='id identifier rubyid_foo'>foo</span><span class='lbracket'>[</span><span class='symbol'>:cmd</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_sub'>sub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>CONTENTS</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='lbrace'>{</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_to_hex'>to_hex</span><span class='lparen'>(</span><span class='id identifier rubyid_test_str'>test_str</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
|
||
<span class='kw'>when</span> <span class='symbol'>:octal</span>
|
||
<span class='id identifier rubyid_cmd'>cmd</span> <span class='op'>=</span> <span class='id identifier rubyid_foo'>foo</span><span class='lbracket'>[</span><span class='symbol'>:cmd</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_sub'>sub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>CONTENTS</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='lbrace'>{</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_to_octal'>to_octal</span><span class='lparen'>(</span><span class='id identifier rubyid_test_str'>test_str</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
|
||
<span class='kw'>when</span> <span class='symbol'>:bare_hex</span>
|
||
<span class='id identifier rubyid_cmd'>cmd</span> <span class='op'>=</span> <span class='id identifier rubyid_foo'>foo</span><span class='lbracket'>[</span><span class='symbol'>:cmd</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_sub'>sub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>CONTENTS</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='lbrace'>{</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_to_hex'>to_hex</span><span class='lparen'>(</span><span class='id identifier rubyid_test_str'>test_str</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='rbrace'>}</span>
|
||
<span class='kw'>end</span>
|
||
<span class='id identifier rubyid_a'>a</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_shell_command_token'>shell_command_token</span><span class='lparen'>(</span><span class='id identifier rubyid_cmd'>cmd</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span>
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_test_str'>test_str</span> <span class='op'>==</span> <span class='id identifier rubyid_a'>a</span>
|
||
<span class='id identifier rubyid_command'>command</span> <span class='op'>=</span> <span class='id identifier rubyid_foo'>foo</span><span class='lbracket'>[</span><span class='symbol'>:cmd</span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_encoding'>encoding</span> <span class='op'>=</span> <span class='id identifier rubyid_foo'>foo</span><span class='lbracket'>[</span><span class='symbol'>:enc</span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_cmd_name'>cmd_name</span> <span class='op'>=</span> <span class='id identifier rubyid_foo'>foo</span><span class='lbracket'>[</span><span class='symbol'>:name</span><span class='rbracket'>]</span>
|
||
<span class='kw'>break</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'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_cmd'>cmd</span><span class='embexpr_end'>}</span><span class='tstring_content'> Failed: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_a'>a</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'> != </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_test_str'>test_str</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></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_command'>command</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
||
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>RuntimeError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Can't find command on the victim for writing binary data</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='id identifier rubyid_caller'>caller</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># each byte will balloon up to 4 when we encode
|
||
</span> <span class='comment'># (A becomes \x41 or \101)
|
||
</span> <span class='id identifier rubyid_max'>max</span> <span class='op'>=</span> <span class='id identifier rubyid_line_max'>line_max</span> <span class='op'>/</span> <span class='int'>4</span>
|
||
|
||
<span class='id identifier rubyid_i'>i</span> <span class='op'>=</span> <span class='int'>0</span>
|
||
<span class='kw'>while</span> <span class='lparen'>(</span><span class='id identifier rubyid_i'>i</span> <span class='op'><</span> <span class='id identifier rubyid_d'>d</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_slice'>slice</span> <span class='op'>=</span> <span class='id identifier rubyid_d'>d</span><span class='period'>.</span><span class='id identifier rubyid_slice'>slice</span><span class='lparen'>(</span><span class='id identifier rubyid_i'>i</span><span class='op'>...</span><span class='lparen'>(</span><span class='id identifier rubyid_i'>i</span> <span class='op'>+</span> <span class='id identifier rubyid_max'>max</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
||
<span class='kw'>case</span> <span class='id identifier rubyid_encoding'>encoding</span>
|
||
<span class='kw'>when</span> <span class='symbol'>:hex</span>
|
||
<span class='id identifier rubyid_chunks'>chunks</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_to_hex'>to_hex</span><span class='lparen'>(</span><span class='id identifier rubyid_slice'>slice</span><span class='rparen'>)</span>
|
||
<span class='kw'>when</span> <span class='symbol'>:octal</span>
|
||
<span class='id identifier rubyid_chunks'>chunks</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_to_octal'>to_octal</span><span class='lparen'>(</span><span class='id identifier rubyid_slice'>slice</span><span class='rparen'>)</span>
|
||
<span class='kw'>when</span> <span class='symbol'>:bare_hex</span>
|
||
<span class='id identifier rubyid_chunks'>chunks</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_to_hex'>to_hex</span><span class='lparen'>(</span><span class='id identifier rubyid_slice'>slice</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='id identifier rubyid_i'>i</span> <span class='op'>+=</span> <span class='id identifier rubyid_max'>max</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'>"</span><span class='tstring_content'>Writing </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_d'>d</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='embexpr_end'>}</span><span class='tstring_content'> bytes in </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_chunks'>chunks</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='embexpr_end'>}</span><span class='tstring_content'> chunks of </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_chunks'>chunks</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='embexpr_end'>}</span><span class='tstring_content'> bytes (</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_encoding'>encoding</span><span class='embexpr_end'>}</span><span class='tstring_content'>-encoded), using </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_cmd_name'>cmd_name</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
|
||
<span class='comment'># The first command needs to use the provided redirection for either
|
||
</span> <span class='comment'># appending or truncating.
|
||
</span> <span class='id identifier rubyid_cmd'>cmd</span> <span class='op'>=</span> <span class='id identifier rubyid_command'>command</span><span class='period'>.</span><span class='id identifier rubyid_sub'>sub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>CONTENTS</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='id identifier rubyid_chunks'>chunks</span><span class='period'>.</span><span class='id identifier rubyid_shift'>shift</span> <span class='rbrace'>}</span>
|
||
<span class='id identifier rubyid_succeeded'>succeeded</span> <span class='op'>=</span> <span class='id identifier rubyid__shell_command_with_success_code'>_shell_command_with_success_code</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_cmd'>cmd</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_redirect'>redirect</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_escape_arg'>escape_arg</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_succeeded'>succeeded</span>
|
||
|
||
<span class='comment'># After creating/truncating or appending with the first command, we
|
||
</span> <span class='comment'># need to append from here on out.
|
||
</span> <span class='id identifier rubyid_chunks'>chunks</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_chunk'>chunk</span><span class='op'>|</span>
|
||
<span class='id identifier rubyid_vprint_status'>vprint_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Next chunk is </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_chunk'>chunk</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='embexpr_end'>}</span><span class='tstring_content'> bytes</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_cmd'>cmd</span> <span class='op'>=</span> <span class='id identifier rubyid_command'>command</span><span class='period'>.</span><span class='id identifier rubyid_sub'>sub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>CONTENTS</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='id identifier rubyid_chunk'>chunk</span> <span class='rbrace'>}</span>
|
||
|
||
<span class='id identifier rubyid_succeeded'>succeeded</span> <span class='op'>=</span> <span class='id identifier rubyid__shell_command_with_success_code'>_shell_command_with_success_code</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_cmd'>cmd</span><span class='embexpr_end'>}</span><span class='tstring_content'> >> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_escape_arg'>escape_arg</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>unless</span> <span class='id identifier rubyid_succeeded'>succeeded</span>
|
||
<span class='id identifier rubyid_print_warning'>print_warning</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Write partially succeeded then failed. May need to manually clean up </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</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>
|
||
|
||
<span class='kw'>true</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="append_file-instance_method">
|
||
|
||
#<strong>append_file</strong>(file_name, data) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Platform-agnostic file append. Appends given object content to a remote file.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>file_name</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Remote file name to write</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>data</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Contents to put in the file</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'></span>
|
||
|
||
|
||
|
||
|
||
<div class='inline'>
|
||
<p>bool</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
529
|
||
530
|
||
531
|
||
532
|
||
533
|
||
534
|
||
535
|
||
536
|
||
537
|
||
538
|
||
539
|
||
540
|
||
541
|
||
542
|
||
543
|
||
544
|
||
545</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 529</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_append_file'>append_file</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>meterpreter</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid__write_file_meterpreter'>_write_file_meterpreter</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ab</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>elsif</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>powershell</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid__append_file_powershell'>_append_file_powershell</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
||
<span class='kw'>elsif</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span> <span class='symbol'>:shell_command_token</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>windows</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid__can_echo?'>_can_echo?</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid__win_ansi_append_file'>_win_ansi_append_file</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid__win_bin_append_file'>_win_bin_append_file</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>else</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid__append_file_unix_shell'>_append_file_unix_shell</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</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="attributes-instance_method">
|
||
|
||
#<strong>attributes</strong>(path) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Retrieve file attributes for <code>path</code> on the remote system</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>path</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Remote filename to check</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
328
|
||
329
|
||
330
|
||
331
|
||
332</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 328</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>`attributes' method does not support Windows systems</span><span class='tstring_end'>"</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>windows</span><span class='tstring_end'>'</span></span>
|
||
|
||
<span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>lsattr -l '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>'</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_scan'>scan</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>\s+(.+)$</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_flatten'>flatten</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>, </span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="cd-instance_method">
|
||
|
||
#<strong>cd</strong>(path) ⇒ <tt>void</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
<p class="note returns_void">This method returns an undefined value.</p>
|
||
<p>Change directory in the remote session to <code>path</code>, which may be relative or absolute.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
43
|
||
44
|
||
45
|
||
46
|
||
47
|
||
48
|
||
49
|
||
50
|
||
51
|
||
52
|
||
53
|
||
54
|
||
55
|
||
56
|
||
57</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 43</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_cd'>cd</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_e_path'>e_path</span> <span class='op'>=</span> <span class='kw'>begin</span>
|
||
<span class='id identifier rubyid_expand_path'>expand_path</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||
<span class='kw'>rescue</span> <span class='const'>StandardError</span>
|
||
<span class='id identifier rubyid_path'>path</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>meterpreter</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_fs'>fs</span><span class='period'>.</span><span class='id identifier rubyid_dir'>dir</span><span class='period'>.</span><span class='id identifier rubyid_chdir'>chdir</span><span class='lparen'>(</span><span class='id identifier rubyid_e_path'>e_path</span><span class='rparen'>)</span>
|
||
<span class='kw'>elsif</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>powershell</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Set-Location -Path \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e_path'>e_path</span><span class='embexpr_end'>}</span><span class='tstring_content'>\";[System.IO.Directory]::SetCurrentDirectory($(Get-Location))</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_shell_command_token'>shell_command_token</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>cd \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e_path'>e_path</span><span class='embexpr_end'>}</span><span class='tstring_content'>\"</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>nil</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="chmod-instance_method">
|
||
|
||
#<strong>chmod</strong>(path, mode = 0o700) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Sets the permissions on a remote file</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>path</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Path on the remote filesystem</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>mode</span>
|
||
|
||
|
||
<span class='type'>(<tt>Fixnum</tt>)</span>
|
||
|
||
|
||
<em class="default">(defaults to: <tt>0o700</tt>)</em>
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Mode as an octal number</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
575
|
||
576
|
||
577
|
||
578
|
||
579
|
||
580
|
||
581
|
||
582
|
||
583
|
||
584
|
||
585</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 575</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_chmod'>chmod</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='comma'>,</span> <span class='id identifier rubyid_mode'>mode</span> <span class='op'>=</span> <span class='int'>0o700</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>windows</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>`chmod' method does not support Windows systems</span><span class='tstring_end'>"</span></span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>meterpreter</span><span class='tstring_end'>'</span></span> <span class='op'>&&</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_commands'>commands</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</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/Post.html" title="Rex::Post (module)">Post</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Rex/Post/Meterpreter.html" title="Rex::Post::Meterpreter (module)">Meterpreter</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Rex/Post/Meterpreter/Extensions.html" title="Rex::Post::Meterpreter::Extensions (module)">Extensions</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Rex/Post/Meterpreter/Extensions/Stdapi.html" title="Rex::Post::Meterpreter::Extensions::Stdapi (module)">Stdapi</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Rex/Post/Meterpreter/Extensions/Stdapi.html#COMMAND_ID_STDAPI_FS_CHMOD-constant" title="Rex::Post::Meterpreter::Extensions::Stdapi::COMMAND_ID_STDAPI_FS_CHMOD (constant)">COMMAND_ID_STDAPI_FS_CHMOD</a></span></span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_fs'>fs</span><span class='period'>.</span><span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_chmod'>chmod</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='comma'>,</span> <span class='id identifier rubyid_mode'>mode</span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_create_process'>create_process</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>chmod</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='label'>args:</span> <span class='lbracket'>[</span><span class='id identifier rubyid_mode'>mode</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='lparen'>(</span><span class='int'>8</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_path'>path</span><span class='rbracket'>]</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="copy_file-instance_method">
|
||
|
||
#<strong>copy_file</strong>(src_file, dst_file) ⇒ <tt>Boolean</tt>
|
||
|
||
|
||
|
||
<span class="aliases">Also known as:
|
||
<span class="names"><span id='cp_file-instance_method'>cp_file</span></span>
|
||
</span>
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Copy a remote file.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>src_file</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Remote source file name to copy</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>dst_file</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>The name for the remote destination file</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>Boolean</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Return true on success and false on failure</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
685
|
||
686
|
||
687
|
||
688
|
||
689
|
||
690
|
||
691
|
||
692
|
||
693
|
||
694
|
||
695
|
||
696
|
||
697
|
||
698
|
||
699
|
||
700
|
||
701
|
||
702</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 685</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_copy_file'>copy_file</span><span class='lparen'>(</span><span class='id identifier rubyid_src_file'>src_file</span><span class='comma'>,</span> <span class='id identifier rubyid_dst_file'>dst_file</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='id identifier rubyid_directory?'>directory?</span><span class='lparen'>(</span><span class='id identifier rubyid_dst_file'>dst_file</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id identifier rubyid_directory?'>directory?</span><span class='lparen'>(</span><span class='id identifier rubyid_src_file'>src_file</span><span class='rparen'>)</span>
|
||
|
||
<span class='id identifier rubyid_verification_token'>verification_token</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_upper'>rand_text_alpha_upper</span><span class='lparen'>(</span><span class='int'>8</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>meterpreter</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>begin</span>
|
||
<span class='kw'>return</span> <span class='lparen'>(</span><span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_fs'>fs</span><span class='period'>.</span><span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_cp'>cp</span><span class='lparen'>(</span><span class='id identifier rubyid_src_file'>src_file</span><span class='comma'>,</span> <span class='id identifier rubyid_dst_file'>dst_file</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span> <span class='op'>==</span> <span class='int'>0</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/Post.html" title="Rex::Post (module)">Post</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Rex/Post/Meterpreter.html" title="Rex::Post::Meterpreter (module)">Meterpreter</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Rex/Post/Meterpreter/RequestError.html" title="Rex::Post::Meterpreter::RequestError (class)">RequestError</a></span></span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span> <span class='comment'># when the source file is not present meterpreter will raise an error
|
||
</span> <span class='kw'>return</span> <span class='kw'>false</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>elsif</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>powershell</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Copy-Item \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_src_file'>src_file</span><span class='embexpr_end'>}</span><span class='tstring_content'>\" -Destination \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_dst_file'>dst_file</span><span class='embexpr_end'>}</span><span class='tstring_content'>\"; if($?){echo </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_verification_token'>verification_token</span><span class='embexpr_end'>}</span><span class='tstring_content'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_verification_token'>verification_token</span><span class='rparen'>)</span>
|
||
<span class='kw'>elsif</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>windows</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>%(</span><span class='tstring_content'>copy /y "</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_src_file'>src_file</span><span class='embexpr_end'>}</span><span class='tstring_content'>" "</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_dst_file'>dst_file</span><span class='embexpr_end'>}</span><span class='tstring_content'>" & if not errorlevel 1 echo </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_verification_token'>verification_token</span><span class='embexpr_end'>}</span><span class='tstring_end'>)</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_verification_token'>verification_token</span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>%(</span><span class='tstring_content'>cp -f "</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_src_file'>src_file</span><span class='embexpr_end'>}</span><span class='tstring_content'>" "</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_dst_file'>dst_file</span><span class='embexpr_end'>}</span><span class='tstring_content'>" && echo </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_verification_token'>verification_token</span><span class='embexpr_end'>}</span><span class='tstring_end'>)</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_verification_token'>verification_token</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="dir-instance_method">
|
||
|
||
#<strong>dir</strong>(directory) ⇒ <tt>Array</tt>
|
||
|
||
|
||
|
||
<span class="aliases">Also known as:
|
||
<span class="names"><span id='ls-instance_method'>ls</span></span>
|
||
</span>
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns a list of the contents of the specified directory</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>directory</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>the directory to list</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>Array</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>the contents of the directory</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
86
|
||
87
|
||
88
|
||
89
|
||
90
|
||
91
|
||
92
|
||
93
|
||
94
|
||
95
|
||
96
|
||
97
|
||
98
|
||
99
|
||
100
|
||
101
|
||
102
|
||
103
|
||
104
|
||
105
|
||
106
|
||
107
|
||
108
|
||
109
|
||
110
|
||
111
|
||
112
|
||
113
|
||
114
|
||
115
|
||
116</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 86</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_dir'>dir</span><span class='lparen'>(</span><span class='id identifier rubyid_directory'>directory</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>meterpreter</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_fs'>fs</span><span class='period'>.</span><span class='id identifier rubyid_dir'>dir</span><span class='period'>.</span><span class='id identifier rubyid_entries'>entries</span><span class='lparen'>(</span><span class='id identifier rubyid_directory'>directory</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>powershell</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Get-ChildItem \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_directory'>directory</span><span class='embexpr_end'>}</span><span class='tstring_content'>\" -Name</span><span class='tstring_end'>"</span></span><span class='rparen'>)</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'>[\r\n]+</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>windows</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_shell_command_token'>shell_command_token</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>dir /b \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_directory'>directory</span><span class='embexpr_end'>}</span><span class='tstring_content'>\"</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='op'>&.</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'>[\r\n]+</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_command_exists?'>command_exists?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ls</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_shell_command_token'>shell_command_token</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>ls </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_directory'>directory</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</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'>[\r\n]+</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># Result on systems without ls command
|
||
</span> <span class='kw'>if</span> <span class='id identifier rubyid_directory'>directory</span><span class='lbracket'>[</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span> <span class='op'>!=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_directory'>directory</span> <span class='op'>+=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>end</span>
|
||
<span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_data'>data</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_shell_command_token'>shell_command_token</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>for fn in </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_directory'>directory</span><span class='embexpr_end'>}</span><span class='tstring_content'>*; do echo $fn; done</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_parts'>parts</span> <span class='op'>=</span> <span class='id identifier rubyid_data'>data</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>\n</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_parts'>parts</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_line'>line</span><span class='op'>|</span>
|
||
<span class='id identifier rubyid_line'>line</span> <span class='op'>=</span> <span class='id identifier rubyid_line'>line</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='lbracket'>[</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_result'>result</span><span class='period'>.</span><span class='id identifier rubyid_insert'>insert</span><span class='lparen'>(</span><span class='op'>-</span><span class='int'>1</span><span class='comma'>,</span> <span class='id identifier rubyid_line'>line</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='id identifier rubyid_result'>result</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="directory?-instance_method">
|
||
|
||
#<strong>directory?</strong>(path) ⇒ <tt>Boolean</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>See if <code>path</code> exists on the remote system and is a directory</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>path</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Remote filename to check</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<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">
|
||
|
||
|
||
143
|
||
144
|
||
145
|
||
146
|
||
147
|
||
148
|
||
149
|
||
150
|
||
151
|
||
152
|
||
153
|
||
154
|
||
155
|
||
156
|
||
157
|
||
158
|
||
159
|
||
160
|
||
161
|
||
162
|
||
163
|
||
164
|
||
165
|
||
166</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 143</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_directory?'>directory?</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>meterpreter</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_stat'>stat</span> <span class='op'>=</span> <span class='kw'>begin</span>
|
||
<span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_fs'>fs</span><span class='period'>.</span><span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_stat'>stat</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||
<span class='kw'>rescue</span> <span class='const'>StandardError</span>
|
||
<span class='kw'>nil</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_stat'>stat</span>
|
||
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_stat'>stat</span><span class='period'>.</span><span class='id identifier rubyid_directory?'>directory?</span>
|
||
<span class='kw'>elsif</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>powershell</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Test-Path -Path \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>\" -PathType Container</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>True</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>windows</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_f'>f</span> <span class='op'>=</span> <span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>cmd.exe /C IF exist \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>\\*\" ( echo true )</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_f'>f</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_shell_command_token'>shell_command_token</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>test -d '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>' && echo true</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='id identifier rubyid_f'>f</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>||</span> <span class='id identifier rubyid_f'>f</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_f'>f</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>true</span><span class='regexp_end'>/</span></span>
|
||
|
||
<span class='kw'>true</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="executable?-instance_method">
|
||
|
||
#<strong>executable?</strong>(path) ⇒ <tt>Boolean</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>See if <code>path</code> on the remote system exists and is executable</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>path</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Remote path to check</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>Boolean</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>true if <code>path</code> exists and is executable</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
234
|
||
235
|
||
236
|
||
237
|
||
238</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 234</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_executable?'>executable?</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>`executable?' method does not support Windows systems</span><span class='tstring_end'>"</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>windows</span><span class='tstring_end'>'</span></span>
|
||
|
||
<span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>test -x '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>' && echo true</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>true</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="exist?-instance_method">
|
||
|
||
#<strong>exist?</strong>(path) ⇒ <tt>Boolean</tt>
|
||
|
||
|
||
|
||
<span class="aliases">Also known as:
|
||
<span class="names"><span id='exists?-instance_method'>exists?</span></span>
|
||
</span>
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Check for existence of <code>path</code> on the remote file system</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>path</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Remote filename to check</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<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">
|
||
|
||
|
||
299
|
||
300
|
||
301
|
||
302
|
||
303
|
||
304
|
||
305
|
||
306
|
||
307
|
||
308
|
||
309
|
||
310
|
||
311
|
||
312
|
||
313
|
||
314
|
||
315
|
||
316
|
||
317
|
||
318
|
||
319
|
||
320</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 299</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_exist?'>exist?</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>meterpreter</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_stat'>stat</span> <span class='op'>=</span> <span class='kw'>begin</span>
|
||
<span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_fs'>fs</span><span class='period'>.</span><span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_stat'>stat</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||
<span class='kw'>rescue</span> <span class='const'>StandardError</span>
|
||
<span class='kw'>nil</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>return</span> <span class='op'>!</span><span class='op'>!</span><span class='id identifier rubyid_stat'>stat</span>
|
||
<span class='kw'>elsif</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>powershell</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Test-Path \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>\"</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='op'>&.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>True</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>windows</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_f'>f</span> <span class='op'>=</span> <span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>cmd.exe /C IF exist \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>\" ( echo true )</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_f'>f</span> <span class='op'>=</span> <span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>test -e \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>\" && echo true</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='id identifier rubyid_f'>f</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>||</span> <span class='id identifier rubyid_f'>f</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_f'>f</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>true</span><span class='regexp_end'>/</span></span>
|
||
|
||
<span class='kw'>true</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="expand_path-instance_method">
|
||
|
||
#<strong>expand_path</strong>(path) ⇒ <tt>String</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Expand any environment variables to return the full path specified by <code>path</code>.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
172
|
||
173
|
||
174
|
||
175
|
||
176
|
||
177
|
||
178
|
||
179
|
||
180</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 172</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_expand_path'>expand_path</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>meterpreter</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_fs'>fs</span><span class='period'>.</span><span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_expand_path'>expand_path</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||
<span class='kw'>elsif</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>powershell</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>[Environment]::ExpandEnvironmentVariables(\"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>\")</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>echo </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</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="exploit_data-instance_method">
|
||
|
||
#<strong>exploit_data</strong>(data_directory, file) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Read a local exploit file binary from the data directory</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>data_directory</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Name of data directory within the exploits folder</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>file</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Filename in the data folder to use.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
592
|
||
593
|
||
594
|
||
595</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 592</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_exploit_data'>exploit_data</span><span class='lparen'>(</span><span class='id identifier rubyid_data_directory'>data_directory</span><span class='comma'>,</span> <span class='id identifier rubyid_file'>file</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_file_path'>file_path</span> <span class='op'>=</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</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="../Config.html" title="Msf::Config (class)">Config</a></span></span><span class='period'>.</span><span class='id identifier rubyid_data_directory'><span class='object_link'><a href="../Config.html#data_directory-class_method" title="Msf::Config.data_directory (method)">data_directory</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>exploits</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_data_directory'>data_directory</span><span class='comma'>,</span> <span class='id identifier rubyid_file'>file</span><span class='rparen'>)</span>
|
||
<span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_binread'>binread</span><span class='lparen'>(</span><span class='id identifier rubyid_file_path'>file_path</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="exploit_source-instance_method">
|
||
|
||
#<strong>exploit_source</strong>(source_directory, file) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Read a local exploit source file from the external exploits directory</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>source_directory</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Directory in the external/source/exploits directory to use as the source directory.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>file</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Filename in the source folder to use.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
602
|
||
603
|
||
604
|
||
605</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 602</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_exploit_source'>exploit_source</span><span class='lparen'>(</span><span class='id identifier rubyid_source_directory'>source_directory</span><span class='comma'>,</span> <span class='id identifier rubyid_file'>file</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_file_path'>file_path</span> <span class='op'>=</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</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="../Config.html" title="Msf::Config (class)">Config</a></span></span><span class='period'>.</span><span class='id identifier rubyid_install_root'><span class='object_link'><a href="../Config.html#install_root-class_method" title="Msf::Config.install_root (method)">install_root</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>external</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>source</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>exploits</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_source_directory'>source_directory</span><span class='comma'>,</span> <span class='id identifier rubyid_file'>file</span><span class='rparen'>)</span>
|
||
<span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span><span class='lparen'>(</span><span class='id identifier rubyid_file_path'>file_path</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="file?-instance_method">
|
||
|
||
#<strong>file?</strong>(path) ⇒ <tt>Boolean</tt>
|
||
|
||
|
||
|
||
<span class="aliases">Also known as:
|
||
<span class="names"><span id='file_exist?-instance_method'>file_exist?</span></span>
|
||
</span>
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>See if <code>path</code> exists on the remote system and is a regular file</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>path</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Remote filename to check</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<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">
|
||
|
||
|
||
186
|
||
187
|
||
188
|
||
189
|
||
190
|
||
191
|
||
192
|
||
193
|
||
194
|
||
195
|
||
196
|
||
197
|
||
198
|
||
199
|
||
200
|
||
201
|
||
202
|
||
203
|
||
204
|
||
205
|
||
206
|
||
207
|
||
208
|
||
209
|
||
210
|
||
211
|
||
212
|
||
213
|
||
214</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 186</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_file?'>file?</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='id identifier rubyid_path'>path</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>meterpreter</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_stat'>stat</span> <span class='op'>=</span> <span class='kw'>begin</span>
|
||
<span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_fs'>fs</span><span class='period'>.</span><span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_stat'>stat</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||
<span class='kw'>rescue</span> <span class='const'>StandardError</span>
|
||
<span class='kw'>nil</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_stat'>stat</span>
|
||
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_stat'>stat</span><span class='period'>.</span><span class='id identifier rubyid_file?'>file?</span>
|
||
<span class='kw'>elsif</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>powershell</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>[System.IO.File]::Exists( \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>\")</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='op'>&.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>True</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>windows</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_f'>f</span> <span class='op'>=</span> <span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>cmd.exe /C IF exist \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>\" ( echo true )</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_f'>f</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>true</span><span class='regexp_end'>/</span></span>
|
||
<span class='id identifier rubyid_f'>f</span> <span class='op'>=</span> <span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>cmd.exe /C IF exist \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>\\\\\" ( echo false ) ELSE ( echo true )</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_f'>f</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_shell_command_token'>shell_command_token</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>test -f \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>\" && echo true</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='id identifier rubyid_f'>f</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>||</span> <span class='id identifier rubyid_f'>f</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_f'>f</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>true</span><span class='regexp_end'>/</span></span>
|
||
|
||
<span class='kw'>true</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="file_local_write-instance_method">
|
||
|
||
#<strong>file_local_write</strong>(local_file_name, data) ⇒ <tt>void</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
<p class="note returns_void">This method returns an undefined value.</p>
|
||
<p>Writes a given string to a given local file</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>local_file_name</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>data</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
340
|
||
341
|
||
342
|
||
343
|
||
344
|
||
345
|
||
346
|
||
347
|
||
348
|
||
349
|
||
350</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 340</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_file_local_write'>file_local_write</span><span class='lparen'>(</span><span class='id identifier rubyid_local_file_name'>local_file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_fname'>fname</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'>FileUtils</span><span class='period'>.</span><span class='id identifier rubyid_clean_path'>clean_path</span><span class='lparen'>(</span><span class='id identifier rubyid_local_file_name'>local_file_name</span><span class='rparen'>)</span>
|
||
<span class='kw'>unless</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_exist?'>exist?</span><span class='lparen'>(</span><span class='id identifier rubyid_fname'>fname</span><span class='rparen'>)</span>
|
||
<span class='op'>::</span><span class='const'>FileUtils</span><span class='period'>.</span><span class='id identifier rubyid_touch'>touch</span><span class='lparen'>(</span><span class='id identifier rubyid_fname'>fname</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='id identifier rubyid_output'>output</span> <span class='op'>=</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_open'>open</span><span class='lparen'>(</span><span class='id identifier rubyid_fname'>fname</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>a</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_data'>data</span><span class='period'>.</span><span class='id identifier rubyid_each_line'>each_line</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_d'>d</span><span class='op'>|</span>
|
||
<span class='id identifier rubyid_output'>output</span><span class='period'>.</span><span class='id identifier rubyid_puts'>puts</span><span class='lparen'>(</span><span class='id identifier rubyid_d'>d</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='id identifier rubyid_output'>output</span><span class='period'>.</span><span class='id identifier rubyid_close'>close</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="file_remote_digestmd5-instance_method">
|
||
|
||
#<strong>file_remote_digestmd5</strong>(file_name, util: nil) ⇒ <tt>String</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<div class="note notetag">
|
||
<strong>Note:</strong>
|
||
<div class='inline'>
|
||
<p>For shell sessions, this method downloads the file from the remote host unless a hashing utility for use on the remote host is specified.</p>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<p>Returns a MD5 checksum of a given remote file</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>file_name</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Remote file name</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>util</span>
|
||
|
||
|
||
<span class='type'>(<tt>Hash</tt>)</span>
|
||
|
||
|
||
<em class="default">(defaults to: <tt>nil</tt>)</em>
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>a customizable set of options</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<p class="tag_title">Options Hash (<tt>util:</tt>):</p>
|
||
<ul class="option">
|
||
|
||
<li>
|
||
<span class="name">Remote</span>
|
||
<span class="type">(<tt>String</tt>)</span>
|
||
<span class="default">
|
||
|
||
</span>
|
||
|
||
— <div class='inline'>
|
||
<p>file hashing utility</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Hex digest of file contents</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
362
|
||
363
|
||
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
|
||
394
|
||
395
|
||
396
|
||
397
|
||
398
|
||
399</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 362</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_file_remote_digestmd5'>file_remote_digestmd5</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='label'>util:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>meterpreter</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>begin</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_fs'>fs</span><span class='period'>.</span><span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_md5'>md5</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='rparen'>)</span><span class='op'>&.</span><span class='id identifier rubyid_unpack'>unpack</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>H*</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_flatten'>flatten</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span>
|
||
<span class='kw'>rescue</span> <span class='const'>StandardError</span> <span class='op'>=></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'>"</span><span class='tstring_content'>Exception while running </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid___method__'>__method__</span><span class='embexpr_end'>}</span><span class='tstring_content'>: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>nil</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># Note: This will fail on files larger than 2GB
|
||
</span> <span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>powershell</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_data'>data</span> <span class='op'>=</span> <span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>$md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider; [System.BitConverter]::ToString($md5.ComputeHash([System.IO.File]::ReadAllBytes('</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>')))</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_data'>data</span>
|
||
|
||
<span class='id identifier rubyid_chksum'>chksum</span> <span class='op'>=</span> <span class='id identifier rubyid_data'>data</span><span class='period'>.</span><span class='id identifier rubyid_scan'>scan</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^([A-F0-9-]+)$</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_flatten'>flatten</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_chksum'>chksum</span><span class='op'>&.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>-</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='op'>&.</span><span class='id identifier rubyid_downcase'>downcase</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='kw'>case</span> <span class='id identifier rubyid_util'>util</span>
|
||
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>md5</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_chksum'>chksum</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_shell_command_token'>shell_command_token</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>md5 -q '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>'</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='op'>&.</span><span class='id identifier rubyid_strip'>strip</span>
|
||
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>md5sum</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_chksum'>chksum</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_shell_command_token'>shell_command_token</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>md5sum '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>'</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='op'>&.</span><span class='id identifier rubyid_strip'>strip</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span>
|
||
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>certutil</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_data'>data</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_shell_command_token'>shell_command_token</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>certutil -hashfile \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>\" MD5</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_data'>data</span>
|
||
<span class='id identifier rubyid_chksum'>chksum</span> <span class='op'>=</span> <span class='id identifier rubyid_data'>data</span><span class='period'>.</span><span class='id identifier rubyid_scan'>scan</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^([a-f0-9 ]{47})\r?\n</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_flatten'>flatten</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='op'>&.</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'>\s*</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_data'>data</span> <span class='op'>=</span> <span class='id identifier rubyid_read_file'>read_file</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_data'>data</span>
|
||
<span class='id identifier rubyid_chksum'>chksum</span> <span class='op'>=</span> <span class='const'>Digest</span><span class='op'>::</span><span class='const'>MD5</span><span class='period'>.</span><span class='id identifier rubyid_hexdigest'>hexdigest</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_chksum'>chksum</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\A[a-f0-9]{32}\z</span><span class='regexp_end'>/</span></span>
|
||
|
||
<span class='id identifier rubyid_chksum'>chksum</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="file_remote_digestsha1-instance_method">
|
||
|
||
#<strong>file_remote_digestsha1</strong>(file_name, util: nil) ⇒ <tt>String</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<div class="note notetag">
|
||
<strong>Note:</strong>
|
||
<div class='inline'>
|
||
<p>For shell sessions, this method downloads the file from the remote host unless a hashing utility for use on the remote host is specified.</p>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<p>Returns a SHA1 checksum of a given remote file</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>file_name</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Remote file name</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>util</span>
|
||
|
||
|
||
<span class='type'>(<tt>Hash</tt>)</span>
|
||
|
||
|
||
<em class="default">(defaults to: <tt>nil</tt>)</em>
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>a customizable set of options</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<p class="tag_title">Options Hash (<tt>util:</tt>):</p>
|
||
<ul class="option">
|
||
|
||
<li>
|
||
<span class="name">Remote</span>
|
||
<span class="type">(<tt>String</tt>)</span>
|
||
<span class="default">
|
||
|
||
</span>
|
||
|
||
— <div class='inline'>
|
||
<p>file hashing utility</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Hex digest of file contents</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
411
|
||
412
|
||
413
|
||
414
|
||
415
|
||
416
|
||
417
|
||
418
|
||
419
|
||
420
|
||
421
|
||
422
|
||
423
|
||
424
|
||
425
|
||
426
|
||
427
|
||
428
|
||
429
|
||
430
|
||
431
|
||
432
|
||
433
|
||
434
|
||
435
|
||
436
|
||
437
|
||
438
|
||
439
|
||
440
|
||
441
|
||
442
|
||
443
|
||
444
|
||
445
|
||
446
|
||
447</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 411</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_file_remote_digestsha1'>file_remote_digestsha1</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='label'>util:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>meterpreter</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>begin</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_fs'>fs</span><span class='period'>.</span><span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_sha1'>sha1</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='rparen'>)</span><span class='op'>&.</span><span class='id identifier rubyid_unpack'>unpack</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>H*</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_flatten'>flatten</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span>
|
||
<span class='kw'>rescue</span> <span class='const'>StandardError</span> <span class='op'>=></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'>"</span><span class='tstring_content'>Exception while running </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid___method__'>__method__</span><span class='embexpr_end'>}</span><span class='tstring_content'>: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>nil</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># Note: This will fail on files larger than 2GB
|
||
</span> <span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>powershell</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_data'>data</span> <span class='op'>=</span> <span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>$sha1 = New-Object -TypeName System.Security.Cryptography.SHA1CryptoServiceProvider; [System.BitConverter]::ToString($sha1.ComputeHash([System.IO.File]::ReadAllBytes('</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>')))</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_data'>data</span>
|
||
<span class='id identifier rubyid_chksum'>chksum</span> <span class='op'>=</span> <span class='id identifier rubyid_data'>data</span><span class='period'>.</span><span class='id identifier rubyid_scan'>scan</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^([A-F0-9-]+)$</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_flatten'>flatten</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_chksum'>chksum</span><span class='op'>&.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>-</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='op'>&.</span><span class='id identifier rubyid_downcase'>downcase</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='kw'>case</span> <span class='id identifier rubyid_util'>util</span>
|
||
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>sha1</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_chksum'>chksum</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_shell_command_token'>shell_command_token</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>sha1 -q '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>'</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='op'>&.</span><span class='id identifier rubyid_strip'>strip</span>
|
||
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>sha1sum</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_chksum'>chksum</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_shell_command_token'>shell_command_token</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>sha1sum '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>'</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='op'>&.</span><span class='id identifier rubyid_strip'>strip</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span>
|
||
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>certutil</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_data'>data</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_shell_command_token'>shell_command_token</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>certutil -hashfile \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>\" SHA1</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_data'>data</span>
|
||
<span class='id identifier rubyid_chksum'>chksum</span> <span class='op'>=</span> <span class='id identifier rubyid_data'>data</span><span class='period'>.</span><span class='id identifier rubyid_scan'>scan</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^([a-f0-9 ]{59})\r?\n</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_flatten'>flatten</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='op'>&.</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'>\s*</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_data'>data</span> <span class='op'>=</span> <span class='id identifier rubyid_read_file'>read_file</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_data'>data</span>
|
||
<span class='id identifier rubyid_chksum'>chksum</span> <span class='op'>=</span> <span class='const'>Digest</span><span class='op'>::</span><span class='const'>SHA1</span><span class='period'>.</span><span class='id identifier rubyid_hexdigest'>hexdigest</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_chksum'>chksum</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\A[a-f0-9]{40}\z</span><span class='regexp_end'>/</span></span>
|
||
|
||
<span class='id identifier rubyid_chksum'>chksum</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="file_remote_digestsha2-instance_method">
|
||
|
||
#<strong>file_remote_digestsha2</strong>(file_name) ⇒ <tt>String</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<div class="note notetag">
|
||
<strong>Note:</strong>
|
||
<div class='inline'>
|
||
<p>THIS DOWNLOADS THE FILE</p>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<p>Returns a SHA2 checksum of a given remote file</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>file_name</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Remote file name</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Hex digest of file contents</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
455
|
||
456
|
||
457
|
||
458
|
||
459
|
||
460
|
||
461
|
||
462</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 455</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_file_remote_digestsha2'>file_remote_digestsha2</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_data'>data</span> <span class='op'>=</span> <span class='id identifier rubyid_read_file'>read_file</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_chksum'>chksum</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_data'>data</span>
|
||
<span class='id identifier rubyid_chksum'>chksum</span> <span class='op'>=</span> <span class='const'>Digest</span><span class='op'>::</span><span class='const'>SHA256</span><span class='period'>.</span><span class='id identifier rubyid_hexdigest'>hexdigest</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_chksum'>chksum</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="find_writable_directories-instance_method">
|
||
|
||
#<strong>find_writable_directories</strong>(path: '/', max_depth: 2, timeout: 15) ⇒ <tt>Array<String></tt><sup>?</sup>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Find writable directories under <code>path</code> on a Unix system.</p>
|
||
|
||
<p>Uses find’s <code>-writable</code> flag which checks effective access for the current user.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>path</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
<em class="default">(defaults to: <tt>'/'</tt>)</em>
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Absolute base path to search from (default: '/')</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>max_depth</span>
|
||
|
||
|
||
<span class='type'>(<tt>Integer</tt>)</span>
|
||
|
||
|
||
<em class="default">(defaults to: <tt>2</tt>)</em>
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Maximum directory depth to search (0 = base directory only)</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>timeout</span>
|
||
|
||
|
||
<span class='type'>(<tt>Integer</tt>)</span>
|
||
|
||
|
||
<em class="default">(defaults to: <tt>15</tt>)</em>
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Maximum seconds for cmd_exec to wait (default: 15). Note: if the command times out, the remote find process may continue running and tie up the shell channel until it finishes.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>Array<String></tt>, <tt>nil</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Array of writable directory paths, or nil on failure</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
<p class="tag_title">Raises:</p>
|
||
<ul class="raise">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>ArgumentError</tt>)</span>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
717
|
||
718
|
||
719
|
||
720
|
||
721
|
||
722
|
||
723
|
||
724
|
||
725
|
||
726
|
||
727
|
||
728
|
||
729
|
||
730
|
||
731
|
||
732
|
||
733
|
||
734
|
||
735
|
||
736
|
||
737
|
||
738
|
||
739
|
||
740
|
||
741
|
||
742
|
||
743
|
||
744
|
||
745
|
||
746
|
||
747
|
||
748
|
||
749</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 717</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_find_writable_directories'>find_writable_directories</span><span class='lparen'>(</span><span class='label'>path:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='label'>max_depth:</span> <span class='int'>2</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='int'>15</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>`find_writable_directories' method does not support Windows systems</span><span class='tstring_end'>"</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>windows</span><span class='tstring_end'>'</span></span>
|
||
|
||
<span class='id identifier rubyid_path'>path</span> <span class='op'>=</span> <span class='id identifier rubyid_path'>path</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
|
||
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>path must be an absolute path</span><span class='tstring_end'>'</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_path'>path</span><span class='period'>.</span><span class='id identifier rubyid_start_with?'>start_with?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
|
||
<span class='id identifier rubyid_max_depth'>max_depth</span> <span class='op'>=</span> <span class='id identifier rubyid_max_depth'>max_depth</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
|
||
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>max_depth must not be negative</span><span class='tstring_end'>'</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_max_depth'>max_depth</span> <span class='op'><</span> <span class='int'>0</span>
|
||
|
||
<span class='id identifier rubyid_timeout'>timeout</span> <span class='op'>=</span> <span class='id identifier rubyid_timeout'>timeout</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_max_depth'>max_depth</span> <span class='op'>></span> <span class='int'>2</span>
|
||
<span class='id identifier rubyid_print_warning'>print_warning</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Large max_depth (</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_max_depth'>max_depth</span><span class='embexpr_end'>}</span><span class='tstring_content'>) may cause the find command to run for a long time and hang the session</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='id identifier rubyid_escaped_path'>escaped_path</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_escape_arg'>escape_arg</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_find_args'>find_args</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>find </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_escaped_path'>escaped_path</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_find_args'>find_args</span> <span class='op'><<</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>-maxdepth </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_max_depth'>max_depth</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
||
<span class='id identifier rubyid_find_args'>find_args</span> <span class='op'><<</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>-type d</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_find_args'>find_args</span> <span class='op'><<</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>-writable</span><span class='tstring_end'>'</span></span>
|
||
|
||
<span class='id identifier rubyid_find_args'>find_args</span> <span class='op'><<</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>2>/dev/null</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_cmd'>cmd</span> <span class='op'>=</span> <span class='id identifier rubyid_find_args'>find_args</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'> </span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_exec_timeout'>exec_timeout</span> <span class='op'>=</span> <span class='id identifier rubyid_timeout'>timeout</span> <span class='op'>></span> <span class='int'>0</span> <span class='op'>?</span> <span class='id identifier rubyid_timeout'>timeout</span> <span class='op'>:</span> <span class='int'>15</span>
|
||
|
||
<span class='kw'>begin</span>
|
||
<span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='id identifier rubyid_cmd'>cmd</span><span class='comma'>,</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_exec_timeout'>exec_timeout</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_lines'>lines</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:strip</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_select'>select</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_p'>p</span><span class='op'>|</span> <span class='id identifier rubyid_p'>p</span><span class='period'>.</span><span class='id identifier rubyid_start_with?'>start_with?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='rbrace'>}</span>
|
||
<span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>StandardError</span> <span class='op'>=></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'>"</span><span class='tstring_content'>Failed to find writable directories in </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>error:</span> <span class='id identifier rubyid_e'>e</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Failed to find writable directories in </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>nil</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="immutable?-instance_method">
|
||
|
||
#<strong>immutable?</strong>(path) ⇒ <tt>Boolean</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>See if <code>path</code> on the remote system exists and is immutable</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>path</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Remote path to check</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>Boolean</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>true if <code>path</code> exists and is immutable</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
264
|
||
265
|
||
266
|
||
267
|
||
268</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 264</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_immutable?'>immutable?</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>`immutable?' method does not support Windows systems</span><span class='tstring_end'>"</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>windows</span><span class='tstring_end'>'</span></span>
|
||
|
||
<span class='id identifier rubyid_attributes'>attributes</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Immutable</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="initialize-instance_method">
|
||
|
||
#<strong>initialize</strong>(info = {}) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
9
|
||
10
|
||
11
|
||
12
|
||
13
|
||
14
|
||
15
|
||
16
|
||
17
|
||
18
|
||
19
|
||
20
|
||
21
|
||
22
|
||
23
|
||
24
|
||
25
|
||
26
|
||
27
|
||
28
|
||
29
|
||
30
|
||
31
|
||
32
|
||
33
|
||
34
|
||
35
|
||
36</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 9</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='lparen'>(</span>
|
||
<span class='id identifier rubyid_update_info'>update_info</span><span class='lparen'>(</span>
|
||
<span class='id identifier rubyid_info'>info</span><span class='comma'>,</span>
|
||
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Compat</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='lbrace'>{</span>
|
||
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Meterpreter</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='lbrace'>{</span>
|
||
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Commands</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='qwords_beg'>%w[</span><span class='words_sep'>
|
||
</span><span class='tstring_content'>core_channel_eof</span><span class='words_sep'>
|
||
</span><span class='tstring_content'>core_channel_open</span><span class='words_sep'>
|
||
</span><span class='tstring_content'>core_channel_read</span><span class='words_sep'>
|
||
</span><span class='tstring_content'>core_channel_write</span><span class='words_sep'>
|
||
</span><span class='tstring_content'>stdapi_fs_chdir</span><span class='words_sep'>
|
||
</span><span class='tstring_content'>stdapi_fs_chmod</span><span class='words_sep'>
|
||
</span><span class='tstring_content'>stdapi_fs_delete_dir</span><span class='words_sep'>
|
||
</span><span class='tstring_content'>stdapi_fs_delete_file</span><span class='words_sep'>
|
||
</span><span class='tstring_content'>stdapi_fs_file_expand_path</span><span class='words_sep'>
|
||
</span><span class='tstring_content'>stdapi_fs_file_move</span><span class='words_sep'>
|
||
</span><span class='tstring_content'>stdapi_fs_getwd</span><span class='words_sep'>
|
||
</span><span class='tstring_content'>stdapi_fs_ls</span><span class='words_sep'>
|
||
</span><span class='tstring_content'>stdapi_fs_mkdir</span><span class='words_sep'>
|
||
</span><span class='tstring_content'>stdapi_fs_separator</span><span class='words_sep'>
|
||
</span><span class='tstring_content'>stdapi_fs_stat</span><span class='words_sep'>
|
||
</span><span class='tstring_end'>]</span></span>
|
||
<span class='rbrace'>}</span>
|
||
<span class='rbrace'>}</span>
|
||
<span class='rparen'>)</span>
|
||
<span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="mkdir-instance_method">
|
||
|
||
#<strong>mkdir</strong>(path, cleanup: true) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>create and mark directory for cleanup</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
121
|
||
122
|
||
123
|
||
124
|
||
125
|
||
126
|
||
127
|
||
128
|
||
129
|
||
130
|
||
131
|
||
132
|
||
133
|
||
134
|
||
135
|
||
136
|
||
137</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 121</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_mkdir'>mkdir</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='comma'>,</span> <span class='label'>cleanup:</span> <span class='kw'>true</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
||
<span class='id identifier rubyid_vprint_status'>vprint_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Creating directory </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>meterpreter</span><span class='tstring_end'>'</span></span>
|
||
<span class='comment'># behave like mkdir -p and don't throw an error if the directory exists
|
||
</span> <span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_fs'>fs</span><span class='period'>.</span><span class='id identifier rubyid_dir'>dir</span><span class='period'>.</span><span class='id identifier rubyid_mkdir'>mkdir</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_directory?'>directory?</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||
<span class='kw'>elsif</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>powershell</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>New-Item \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>\" -itemtype directory</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>elsif</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>windows</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>mkdir \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>\"</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>mkdir -p '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>'</span><span class='tstring_end'>"</span></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'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'> created</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_register_dir_for_cleanup'>register_dir_for_cleanup</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_cleanup'>cleanup</span>
|
||
<span class='id identifier rubyid_result'>result</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="pwd-instance_method">
|
||
|
||
#<strong>pwd</strong> ⇒ <tt>String</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<div class="note notetag">
|
||
<strong>Note:</strong>
|
||
<div class='inline'>
|
||
<p>This may be inaccurate on shell sessions running on Windows before XP/2k3</p>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<p>Returns the current working directory in the remote session</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
66
|
||
67
|
||
68
|
||
69
|
||
70
|
||
71
|
||
72
|
||
73
|
||
74
|
||
75
|
||
76
|
||
77
|
||
78
|
||
79
|
||
80
|
||
81</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 66</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_pwd'>pwd</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>meterpreter</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_fs'>fs</span><span class='period'>.</span><span class='id identifier rubyid_dir'>dir</span><span class='period'>.</span><span class='id identifier rubyid_getwd'>getwd</span>
|
||
<span class='kw'>elsif</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>powershell</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>(Get-Location).Path</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span>
|
||
<span class='kw'>elsif</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>windows</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_shell_command_token'>shell_command_token</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>echo %CD%</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span>
|
||
<span class='comment'># XXX: %CD% only exists on XP and newer, figure something out for NT4
|
||
</span> <span class='comment'># and 2k
|
||
</span> <span class='kw'>elsif</span> <span class='id identifier rubyid_command_exists?'>command_exists?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>pwd</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_shell_command_token'>shell_command_token</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>pwd</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span>
|
||
<span class='kw'>else</span>
|
||
<span class='comment'># Result on systems without pwd command
|
||
</span> <span class='kw'>return</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_shell_command_token'>shell_command_token</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>echo $PWD</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="read_file-instance_method">
|
||
|
||
#<strong>read_file</strong>(file_name) ⇒ <tt>String</tt>, <tt>Array</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Platform-agnostic file read. Returns contents of remote file <code>file_name</code> as a String.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>file_name</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Remote file name to read</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Contents of the file</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>Array</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>of strings(lines)</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
473
|
||
474
|
||
475
|
||
476
|
||
477
|
||
478
|
||
479
|
||
480
|
||
481
|
||
482
|
||
483
|
||
484
|
||
485
|
||
486
|
||
487
|
||
488
|
||
489
|
||
490
|
||
491
|
||
492
|
||
493
|
||
494
|
||
495
|
||
496</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 473</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_read_file'>read_file</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>meterpreter</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid__read_file_meterpreter'>_read_file_meterpreter</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='kw'>return</span> <span class='kw'>unless</span> <span class='qwords_beg'>%w[</span><span class='tstring_content'>shell</span><span class='words_sep'> </span><span class='tstring_content'>powershell</span><span class='tstring_end'>]</span></span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span><span class='rparen'>)</span>
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>powershell</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid__read_file_powershell'>_read_file_powershell</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>windows</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_shell_command_token'>shell_command_token</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>type \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>\"</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>unless</span> <span class='id identifier rubyid_readable?'>readable?</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='rparen'>)</span>
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_command_exists?'>command_exists?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>cat</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_shell_command_token'>shell_command_token</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>cat \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>\"</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># Result on systems without cat command
|
||
</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_shell_command_token'>shell_command_token</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>while read line; do echo $line; done <</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="readable?-instance_method">
|
||
|
||
#<strong>readable?</strong>(path) ⇒ <tt>Boolean</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>See if <code>path</code> on the remote system exists and is readable</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>path</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Remote path to check</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>Boolean</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>true if <code>path</code> exists and is readable</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
277
|
||
278
|
||
279
|
||
280
|
||
281
|
||
282
|
||
283
|
||
284
|
||
285
|
||
286
|
||
287
|
||
288
|
||
289
|
||
290
|
||
291
|
||
292
|
||
293</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 277</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_readable?'>readable?</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_verification_token'>verification_token</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'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_exists?'>exists?</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>powershell</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_directory?'>directory?</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>[System.IO.Directory]::GetFiles('</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>'); if($?) {echo </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_verification_token'>verification_token</span><span class='embexpr_end'>}</span><span class='tstring_content'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_verification_token'>verification_token</span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>[System.IO.File]::OpenRead(\"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>\");if($?){echo\
|
||
</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_verification_token'>verification_token</span><span class='embexpr_end'>}</span><span class='tstring_content'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_verification_token'>verification_token</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>`readable?' method does not support Windows systems</span><span class='tstring_end'>"</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>windows</span><span class='tstring_end'>'</span></span>
|
||
|
||
<span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>test -r '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>' && echo </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_verification_token'>verification_token</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_verification_token'>verification_token</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="rename_file-instance_method">
|
||
|
||
#<strong>rename_file</strong>(old_file, new_file) ⇒ <tt>Boolean</tt>
|
||
|
||
|
||
|
||
<span class="aliases">Also known as:
|
||
<span class="names"><span id='move_file-instance_method'>move_file</span>, <span id='mv_file-instance_method'>mv_file</span></span>
|
||
</span>
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Renames a remote file. If the new file path is a directory, the file will be moved into that directory with the same name.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>old_file</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Remote file name to move</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>new_file</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>The new name for the remote file</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>Boolean</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Return true on success and false on failure</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
656
|
||
657
|
||
658
|
||
659
|
||
660
|
||
661
|
||
662
|
||
663
|
||
664
|
||
665
|
||
666
|
||
667
|
||
668
|
||
669
|
||
670
|
||
671
|
||
672
|
||
673
|
||
674</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 656</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_rename_file'>rename_file</span><span class='lparen'>(</span><span class='id identifier rubyid_old_file'>old_file</span><span class='comma'>,</span> <span class='id identifier rubyid_new_file'>new_file</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_verification_token'>verification_token</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'>8</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>meterpreter</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>begin</span>
|
||
<span class='id identifier rubyid_new_file'>new_file</span> <span class='op'>=</span> <span class='id identifier rubyid_new_file'>new_file</span> <span class='op'>+</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_fs'>fs</span><span class='period'>.</span><span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_separator'>separator</span> <span class='op'>+</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_fs'>fs</span><span class='period'>.</span><span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_basename'>basename</span><span class='lparen'>(</span><span class='id identifier rubyid_old_file'>old_file</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_directory?'>directory?</span><span class='lparen'>(</span><span class='id identifier rubyid_new_file'>new_file</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='lparen'>(</span><span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_fs'>fs</span><span class='period'>.</span><span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_mv'>mv</span><span class='lparen'>(</span><span class='id identifier rubyid_old_file'>old_file</span><span class='comma'>,</span> <span class='id identifier rubyid_new_file'>new_file</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span> <span class='op'>==</span> <span class='int'>0</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/Post.html" title="Rex::Post (module)">Post</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Rex/Post/Meterpreter.html" title="Rex::Post::Meterpreter (module)">Meterpreter</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Rex/Post/Meterpreter/RequestError.html" title="Rex::Post::Meterpreter::RequestError (class)">RequestError</a></span></span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>elsif</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>powershell</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Move-Item \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_old_file'>old_file</span><span class='embexpr_end'>}</span><span class='tstring_content'>\" \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_new_file'>new_file</span><span class='embexpr_end'>}</span><span class='tstring_content'>\" -Force; if($?){echo </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_verification_token'>verification_token</span><span class='embexpr_end'>}</span><span class='tstring_content'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_verification_token'>verification_token</span><span class='rparen'>)</span>
|
||
<span class='kw'>elsif</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>windows</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_file?'>file?</span><span class='lparen'>(</span><span class='id identifier rubyid_old_file'>old_file</span><span class='rparen'>)</span> <span class='comment'># adding this because when the old_file is not present it hangs for a while, should be removed after this issue is fixed.
|
||
</span>
|
||
<span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>%(</span><span class='tstring_content'>move </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_directory?'>directory?</span><span class='lparen'>(</span><span class='id identifier rubyid_new_file'>new_file</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/y</span><span class='tstring_end'>'</span></span><span class='embexpr_end'>}</span><span class='tstring_content'> "</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_old_file'>old_file</span><span class='embexpr_end'>}</span><span class='tstring_content'>" "</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_new_file'>new_file</span><span class='embexpr_end'>}</span><span class='tstring_content'>" & if not errorlevel 1 echo </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_verification_token'>verification_token</span><span class='embexpr_end'>}</span><span class='tstring_end'>)</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_verification_token'>verification_token</span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>%(</span><span class='tstring_content'>mv </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_directory?'>directory?</span><span class='lparen'>(</span><span class='id identifier rubyid_new_file'>new_file</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>-f</span><span class='tstring_end'>'</span></span><span class='embexpr_end'>}</span><span class='tstring_content'> "</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_old_file'>old_file</span><span class='embexpr_end'>}</span><span class='tstring_content'>" "</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_new_file'>new_file</span><span class='embexpr_end'>}</span><span class='tstring_content'>" && echo </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_verification_token'>verification_token</span><span class='embexpr_end'>}</span><span class='tstring_end'>)</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_verification_token'>verification_token</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="rm_f-instance_method">
|
||
|
||
#<strong>rm_f</strong>(*remote_files) ⇒ <tt>void</tt>
|
||
|
||
|
||
|
||
<span class="aliases">Also known as:
|
||
<span class="names"><span id='file_rm-instance_method'>file_rm</span></span>
|
||
</span>
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
<p class="note returns_void">This method returns an undefined value.</p>
|
||
<p>Delete remote files</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>remote_files</span>
|
||
|
||
|
||
<span class='type'>(<tt>Array<String></tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>List of remote filenames to delete</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
613
|
||
614
|
||
615
|
||
616
|
||
617
|
||
618
|
||
619
|
||
620
|
||
621
|
||
622
|
||
623
|
||
624
|
||
625</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 613</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_rm_f'>rm_f</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_remote_files'>remote_files</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_remote_files'>remote_files</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_remote'>remote</span><span class='op'>|</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>meterpreter</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_fs'>fs</span><span class='period'>.</span><span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='id identifier rubyid_remote'>remote</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_file?'>file?</span><span class='lparen'>(</span><span class='id identifier rubyid_remote'>remote</span><span class='rparen'>)</span>
|
||
<span class='kw'>elsif</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>powershell</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>[System.IO.File]::Delete(\"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_remote'>remote</span><span class='embexpr_end'>}</span><span class='tstring_content'>\")</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_file?'>file?</span><span class='lparen'>(</span><span class='id identifier rubyid_remote'>remote</span><span class='rparen'>)</span>
|
||
<span class='kw'>elsif</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>windows</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>del /q /f \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_remote'>remote</span><span class='embexpr_end'>}</span><span class='tstring_content'>\"</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>rm -f \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_remote'>remote</span><span class='embexpr_end'>}</span><span class='tstring_content'>\"</span><span class='tstring_end'>"</span></span><span class='rparen'>)</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="rm_rf-instance_method">
|
||
|
||
#<strong>rm_rf</strong>(*remote_dirs) ⇒ <tt>void</tt>
|
||
|
||
|
||
|
||
<span class="aliases">Also known as:
|
||
<span class="names"><span id='dir_rm-instance_method'>dir_rm</span></span>
|
||
</span>
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
<p class="note returns_void">This method returns an undefined value.</p>
|
||
<p>Delete remote directories</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>remote_dirs</span>
|
||
|
||
|
||
<span class='type'>(<tt>Array<String></tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>List of remote directories to delete</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
633
|
||
634
|
||
635
|
||
636
|
||
637
|
||
638
|
||
639
|
||
640
|
||
641
|
||
642
|
||
643
|
||
644
|
||
645</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 633</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_rm_rf'>rm_rf</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_remote_dirs'>remote_dirs</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_remote_dirs'>remote_dirs</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_remote'>remote</span><span class='op'>|</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>meterpreter</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_fs'>fs</span><span class='period'>.</span><span class='id identifier rubyid_dir'>dir</span><span class='period'>.</span><span class='id identifier rubyid_rmdir'>rmdir</span><span class='lparen'>(</span><span class='id identifier rubyid_remote'>remote</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_exist?'>exist?</span><span class='lparen'>(</span><span class='id identifier rubyid_remote'>remote</span><span class='rparen'>)</span>
|
||
<span class='kw'>elsif</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>powershell</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Remove-Item -Path \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_remote'>remote</span><span class='embexpr_end'>}</span><span class='tstring_content'>\" -Force -Recurse</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>elsif</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>windows</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>rd /s /q \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_remote'>remote</span><span class='embexpr_end'>}</span><span class='tstring_content'>\"</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>rm -rf \"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_remote'>remote</span><span class='embexpr_end'>}</span><span class='tstring_content'>\"</span><span class='tstring_end'>"</span></span><span class='rparen'>)</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="setuid?-instance_method">
|
||
|
||
#<strong>setuid?</strong>(path) ⇒ <tt>Boolean</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>See if <code>path</code> on the remote system is a setuid file</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>path</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Remote filename to check</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<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">
|
||
|
||
|
||
222
|
||
223
|
||
224
|
||
225</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 222</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_setuid?'>setuid?</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_stat'>stat</span> <span class='op'>=</span> <span class='id identifier rubyid_stat'>stat</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_stat'>stat</span><span class='period'>.</span><span class='id identifier rubyid_setuid?'>setuid?</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="stat-instance_method">
|
||
|
||
#<strong>stat</strong>(filename) ⇒ <tt>Object</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1190
|
||
1191
|
||
1192
|
||
1193
|
||
1194
|
||
1195
|
||
1196
|
||
1197
|
||
1198
|
||
1199</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 1190</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_stat'>stat</span><span class='lparen'>(</span><span class='id identifier rubyid_filename'>filename</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>meterpreter</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_fs'>fs</span><span class='period'>.</span><span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_stat'>stat</span><span class='lparen'>(</span><span class='id identifier rubyid_filename'>filename</span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>NotImplementedError</span> <span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>windows</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>`stat' command doesn't exist on target system</span><span class='tstring_end'>"</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_command_exists?'>command_exists?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>stat</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
|
||
<span class='kw'>return</span> <span class='const'><span class='object_link'><a href="File/FileStat.html" title="Msf::Post::File::FileStat (class)">FileStat</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="File/FileStat.html#initialize-instance_method" title="Msf::Post::File::FileStat#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_filename'>filename</span><span class='comma'>,</span> <span class='id identifier rubyid_session'>session</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="upload_and_chmodx-instance_method">
|
||
|
||
#<strong>upload_and_chmodx</strong>(path, data) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Upload a binary and write it as an executable file <code>remote</code> on the remote filesystem.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>path</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Path to the destination file on the remote filesystem</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>data</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Data to be uploaded</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
564
|
||
565
|
||
566
|
||
567
|
||
568</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 564</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_upload_and_chmodx'>upload_and_chmodx</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_print_status'>print_status</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Writing '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>' (</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_data'>data</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span><span class='embexpr_end'>}</span><span class='tstring_content'> bytes) ...</span><span class='tstring_end'>"</span></span>
|
||
<span class='id identifier rubyid_write_file'>write_file</span> <span class='id identifier rubyid_path'>path</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span>
|
||
<span class='id identifier rubyid_chmod'>chmod</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="upload_file-instance_method">
|
||
|
||
#<strong>upload_file</strong>(remote, local) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Read a local file <code>local</code> and write it as <code>remote</code> on the remote file system</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>remote</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Destination file name on the remote filesystem</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>local</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Local file whose contents will be uploaded</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'></span>
|
||
|
||
|
||
|
||
|
||
<div class='inline'>
|
||
<p>bool</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
554
|
||
555
|
||
556</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 554</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_upload_file'>upload_file</span><span class='lparen'>(</span><span class='id identifier rubyid_remote'>remote</span><span class='comma'>,</span> <span class='id identifier rubyid_local'>local</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_write_file'>write_file</span><span class='lparen'>(</span><span class='id identifier rubyid_remote'>remote</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span><span class='lparen'>(</span><span class='id identifier rubyid_local'>local</span><span class='comma'>,</span> <span class='label'>mode:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>rb</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="writable?-instance_method">
|
||
|
||
#<strong>writable?</strong>(path) ⇒ <tt>Boolean</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>See if <code>path</code> on the remote system exists and is writable</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>path</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Remote path to check</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>Boolean</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>true if <code>path</code> exists and is writable</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
247
|
||
248
|
||
249
|
||
250
|
||
251
|
||
252
|
||
253
|
||
254
|
||
255</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 247</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_writable?'>writable?</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_verification_token'>verification_token</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_upper'>rand_text_alpha_upper</span><span class='lparen'>(</span><span class='int'>8</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>powershell</span><span class='tstring_end'>'</span></span> <span class='op'>&&</span> <span class='id identifier rubyid_file?'>file?</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>$a=[System.IO.File]::OpenWrite('</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>');if($?){echo </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_verification_token'>verification_token</span><span class='embexpr_end'>}</span><span class='tstring_content'>};$a.Close()</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_verification_token'>verification_token</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>`writable?' method does not support Windows systems</span><span class='tstring_end'>"</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>windows</span><span class='tstring_end'>'</span></span>
|
||
|
||
<span class='id identifier rubyid_cmd_exec'>cmd_exec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>(test -w '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>' || test -O '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_path'>path</span><span class='embexpr_end'>}</span><span class='tstring_content'>') && echo true</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>true</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="write_file-instance_method">
|
||
|
||
#<strong>write_file</strong>(file_name, data) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Platform-agnostic file write. Writes given object content to a remote file.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>file_name</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Remote file name to write</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>data</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Contents to put in the file</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'></span>
|
||
|
||
|
||
|
||
|
||
<div class='inline'>
|
||
<p>bool</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
503
|
||
504
|
||
505
|
||
506
|
||
507
|
||
508
|
||
509
|
||
510
|
||
511
|
||
512
|
||
513
|
||
514
|
||
515
|
||
516
|
||
517
|
||
518
|
||
519
|
||
520
|
||
521</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/post/file.rb', line 503</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_write_file'>write_file</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>meterpreter</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid__write_file_meterpreter'>_write_file_meterpreter</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
||
<span class='kw'>elsif</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>powershell</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid__write_file_powershell'>_write_file_powershell</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
||
<span class='kw'>elsif</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span> <span class='symbol'>:shell_command_token</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>windows</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid__can_echo?'>_can_echo?</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid__win_ansi_write_file'>_win_ansi_write_file</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid__win_bin_write_file'>_win_bin_write_file</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>else</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid__write_file_unix_shell'>_write_file_unix_shell</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>else</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>
|
||
|
||
</div>
|
||
|
||
<div id="footer">
|
||
Generated on Fri May 8 17:01:02 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> |