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.



39
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
# File 'lib/rex/post/meterpreter/extensions/stdapi/stdapi.rb', line 39

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.



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

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

#dirObject

Returns a copy of the Dir class.



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

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

#eventlogObject

Returns a copy of the EventLog class.



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

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

#fileObject

Returns a copy of the File class.



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

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

#filestatObject

Returns a copy of the FileStat class.



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

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

#powerObject

Returns a copy of the Power class.



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

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

#processObject

Returns a copy of the Process class.



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

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

#registryObject

Returns a copy of the Registry class.



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

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