Class: Rex::Post::Meterpreter::Extensions::Stdapi::Stdapi

Inherits:
Rex::Post::Meterpreter::Extension show all
Defined in:
lib/rex/post/meterpreter/extensions/stdapi/stdapi.rb

Overview

Standard ruby interface to remote entities for meterpreter. It provides basic access to files, network, system, and other properties of the remote machine that are fairly universal.

Instance Attribute Summary

Attributes inherited from Rex::Post::Meterpreter::Extension

#name

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ Stdapi

Initializes an instance of the standard API extension.



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/rex/post/meterpreter/extensions/stdapi/stdapi.rb', line 40

def initialize(client)
	super(client, 'stdapi')

	# Alias the following things on the client object so that they
	# can be directly referenced
	client.register_extension_aliases(
		[
			{
				'name' => 'fs',
				'ext'  => ObjectAliases.new(
					{
						'dir'      => self.dir,
						'file'     => self.file,
						'filestat' => self.filestat
					})
			},
			{
				'name' => 'sys',
				'ext'  => ObjectAliases.new(
					{
						'config'   => Sys::Config.new(client),
						'process'  => self.process,
						'registry' => self.registry,
						'eventlog' => self.eventlog,
						'power'    => self.power
					})
			},
			{
				'name' => 'net',
				'ext'  => ObjectAliases.new(
					{
						'config'   => Rex::Post::Meterpreter::Extensions::Stdapi::Net::Config.new(client),
						'socket'   => Rex::Post::Meterpreter::Extensions::Stdapi::Net::Socket.new(client)
					})
			},
			{
				'name' => 'railgun',
				'ext'  => Rex::Post::Meterpreter::Extensions::Stdapi::Railgun::Railgun.new(client)
			},
			{
				'name' => 'webcam',
				'ext'  => Rex::Post::Meterpreter::Extensions::Stdapi::Webcam::Webcam.new(client)
			},
			{
				'name' => 'ui',
				'ext'  => UI.new(client)
			}

		])
end

Instance Method Details

#brand(klass) ⇒ Object

Sets the client instance on a duplicated copy of the supplied class.



94
95
96
97
98
# File 'lib/rex/post/meterpreter/extensions/stdapi/stdapi.rb', line 94

def brand(klass)
	klass = klass.dup
	klass.client = self.client
	return klass
end

#dirObject

Returns a copy of the Dir class.



103
104
105
# File 'lib/rex/post/meterpreter/extensions/stdapi/stdapi.rb', line 103

def dir
	brand(Rex::Post::Meterpreter::Extensions::Stdapi::Fs::Dir)
end

#eventlogObject

Returns a copy of the EventLog class.



138
139
140
# File 'lib/rex/post/meterpreter/extensions/stdapi/stdapi.rb', line 138

def eventlog
	brand(Rex::Post::Meterpreter::Extensions::Stdapi::Sys::EventLog)
end

#fileObject

Returns a copy of the File class.



110
111
112
# File 'lib/rex/post/meterpreter/extensions/stdapi/stdapi.rb', line 110

def file
	brand(Rex::Post::Meterpreter::Extensions::Stdapi::Fs::File)
end

#filestatObject

Returns a copy of the FileStat class.



117
118
119
# File 'lib/rex/post/meterpreter/extensions/stdapi/stdapi.rb', line 117

def filestat
	brand(Rex::Post::Meterpreter::Extensions::Stdapi::Fs::FileStat)
end

#powerObject

Returns a copy of the Power class.



145
146
147
# File 'lib/rex/post/meterpreter/extensions/stdapi/stdapi.rb', line 145

def power
	brand(Rex::Post::Meterpreter::Extensions::Stdapi::Sys::Power)
end

#processObject

Returns a copy of the Process class.



124
125
126
# File 'lib/rex/post/meterpreter/extensions/stdapi/stdapi.rb', line 124

def process
	brand(Rex::Post::Meterpreter::Extensions::Stdapi::Sys::Process)
end

#registryObject

Returns a copy of the Registry class.



131
132
133
# File 'lib/rex/post/meterpreter/extensions/stdapi/stdapi.rb', line 131

def registry
	brand(Rex::Post::Meterpreter::Extensions::Stdapi::Sys::Registry)
end