1+ # -*- coding: binary -*-
2+
3+ require 'rex/post/meterpreter/object_aliases'
4+ require 'rex/post/meterpreter/extension'
5+ require 'rex/post/meterpreter/extensions/stdapi/constants'
6+ require 'rex/post/meterpreter/extensions/stdapi/stdapi'
7+ require 'rex/post/meterpreter/extensions/stdapi/tlv'
8+ require 'rex/post/meterpreter/extensions/stdapi/command_ids'
9+ require 'rex/post/meterpreter/extensions/stdapi/fs/dir'
10+ require 'rex/post/meterpreter/extensions/stdapi/fs/file'
11+ require 'rex/post/meterpreter/extensions/stdapi/fs/file_stat'
12+ require 'rex/post/meterpreter/extensions/stdapi/fs/mount'
13+
14+ module Rex
15+ module Post
16+ module Meterpreter
17+ module Extensions
18+ module Stdapi_Fs
19+ module Fs
20+ include Rex ::Post ::Meterpreter ::Extensions ::Stdapi ::Fs
21+ end
22+ include Rex ::Post ::Meterpreter ::Extensions ::Stdapi
23+
24+ class Stdapi_Fs < Extension
25+
26+ def self . extension_id
27+ Rex ::Post ::Meterpreter ::Extensions ::Stdapi ::EXTENSION_ID_STDAPI
28+ end
29+
30+ #
31+ # Initializes an instance of the Standard API (Fs Namespace) extension.
32+ #
33+ def initialize ( client )
34+ super ( client , 'stdapi_fs' )
35+
36+ # Alias the following things on the client object so that they
37+ # can be directly referenced
38+ client . register_extension_aliases (
39+ [
40+ {
41+ 'name' => 'fs' ,
42+ 'ext' => ObjectAliases . new (
43+ {
44+ 'dir' => self . dir ,
45+ 'file' => self . file ,
46+ 'filestat' => self . filestat ,
47+ 'mount' => Fs ::Mount . new ( client )
48+ } )
49+ } ,
50+ ] )
51+ end
52+
53+ #
54+ # Sets the client instance on a duplicated copy of the supplied class.
55+ #
56+ def brand ( klass )
57+ klass = klass . dup
58+ klass . client = self . client
59+ return klass
60+ end
61+
62+ #
63+ # Returns a copy of the Dir class.
64+ #
65+ def dir
66+ brand ( Rex ::Post ::Meterpreter ::Extensions ::Stdapi_Fs ::Fs ::Dir )
67+ end
68+
69+ #
70+ # Returns a copy of the File class.
71+ #
72+ def file
73+ brand ( Rex ::Post ::Meterpreter ::Extensions ::Stdapi_Fs ::Fs ::File )
74+ end
75+
76+ #
77+ # Returns a copy of the FileStat class.
78+ #
79+ def filestat
80+ brand ( Rex ::Post ::Meterpreter ::Extensions ::Stdapi_Fs ::Fs ::FileStat )
81+ end
82+ end
83+ end
84+ end
85+ end
86+ end
87+ end
0 commit comments