Files
metasploit-gs/lib/rex/post/meterpreter/extensions/stdapi/stdapi.rb
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

169 lines
4.7 KiB
Ruby
Raw Normal View History

# -*- coding: binary -*-
2005-04-10 09:20:47 +00:00
2005-07-09 21:18:49 +00:00
require 'rex/post/meterpreter/object_aliases'
require 'rex/post/meterpreter/extension'
require 'rex/post/meterpreter/extensions/stdapi/constants'
require 'rex/post/meterpreter/extensions/stdapi/tlv'
2020-05-04 15:06:34 +10:00
require 'rex/post/meterpreter/extensions/stdapi/command_ids'
2005-07-09 21:18:49 +00:00
require 'rex/post/meterpreter/extensions/stdapi/fs/dir'
require 'rex/post/meterpreter/extensions/stdapi/fs/file'
require 'rex/post/meterpreter/extensions/stdapi/fs/file_stat'
require 'rex/post/meterpreter/extensions/stdapi/fs/mount'
2013-04-07 23:03:43 +01:00
require 'rex/post/meterpreter/extensions/stdapi/net/resolve'
2005-07-09 21:18:49 +00:00
require 'rex/post/meterpreter/extensions/stdapi/net/config'
require 'rex/post/meterpreter/extensions/stdapi/net/socket'
require 'rex/post/meterpreter/extensions/stdapi/sys/config'
2005-07-09 21:18:49 +00:00
require 'rex/post/meterpreter/extensions/stdapi/sys/process'
require 'rex/post/meterpreter/extensions/stdapi/sys/registry'
require 'rex/post/meterpreter/extensions/stdapi/sys/event_log'
require 'rex/post/meterpreter/extensions/stdapi/sys/power'
require 'rex/post/meterpreter/extensions/stdapi/railgun/railgun'
2005-07-09 21:18:49 +00:00
require 'rex/post/meterpreter/extensions/stdapi/ui'
2010-11-11 22:36:54 +00:00
require 'rex/post/meterpreter/extensions/stdapi/webcam/webcam'
2016-07-19 10:25:47 -05:00
require 'rex/post/meterpreter/extensions/stdapi/mic/mic'
2018-05-19 18:10:16 +02:00
require 'rex/post/meterpreter/extensions/stdapi/audio_output/audio_output'
2005-04-10 09:20:47 +00:00
module Rex
module Post
module Meterpreter
module Extensions
module Stdapi
###
#
2005-11-15 05:22:13 +00:00
# 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.
2005-04-10 09:20:47 +00:00
#
###
class Stdapi < Extension
2005-11-15 05:22:13 +00:00
def self.extension_id
EXTENSION_ID_STDAPI
end
2005-11-15 05:22:13 +00:00
#
# Initializes an instance of the standard API extension.
#
2005-04-10 09:20:47 +00:00
def initialize(client)
super(client, 'stdapi')
2013-09-05 14:59:41 -05:00
# 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,
'mount' => Fs::Mount.new(client)
2013-09-05 14:59:41 -05:00
})
},
{
'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),
'resolve' => Rex::Post::Meterpreter::Extensions::Stdapi::Net::Resolve.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)
},
2016-07-19 10:25:47 -05:00
{
2017-06-29 16:05:12 -05:00
'name' => 'mic',
'ext' => Rex::Post::Meterpreter::Extensions::Stdapi::Mic::Mic.new(client)
2016-07-19 10:25:47 -05:00
},
2018-05-19 18:10:16 +02:00
{
'name' => 'audio_output',
'ext' => Rex::Post::Meterpreter::Extensions::Stdapi::AudioOutput::AudioOutput.new(client)
},
2013-09-05 14:59:41 -05:00
{
'name' => 'ui',
'ext' => UI.new(client)
}
2005-04-17 03:29:12 +00:00
])
2005-04-10 09:20:47 +00:00
end
2005-11-15 05:22:13 +00:00
#
# Sets the client instance on a duplicated copy of the supplied class.
#
2005-04-10 09:20:47 +00:00
def brand(klass)
klass = klass.dup
klass.client = self.client
return klass
end
2005-11-15 05:22:13 +00:00
#
# Returns a copy of the Dir class.
#
2005-04-11 01:59:45 +00:00
def dir
2005-04-17 07:17:52 +00:00
brand(Rex::Post::Meterpreter::Extensions::Stdapi::Fs::Dir)
2005-04-11 01:59:45 +00:00
end
2005-11-15 05:22:13 +00:00
#
# Returns a copy of the File class.
#
2005-04-11 03:37:02 +00:00
def file
2005-04-17 07:17:52 +00:00
brand(Rex::Post::Meterpreter::Extensions::Stdapi::Fs::File)
2005-04-11 03:37:02 +00:00
end
2005-11-15 05:22:13 +00:00
#
# Returns a copy of the FileStat class.
#
2005-04-11 03:06:56 +00:00
def filestat
2005-04-17 07:17:52 +00:00
brand(Rex::Post::Meterpreter::Extensions::Stdapi::Fs::FileStat)
2005-04-11 03:06:56 +00:00
end
2005-11-15 05:22:13 +00:00
#
# Returns a copy of the Process class.
#
2005-04-10 09:20:47 +00:00
def process
brand(Rex::Post::Meterpreter::Extensions::Stdapi::Sys::Process)
2005-04-10 09:20:47 +00:00
end
2005-04-12 05:53:29 +00:00
2005-11-15 05:22:13 +00:00
#
# Returns a copy of the Registry class.
#
2005-04-10 10:31:38 +00:00
def registry
brand(Rex::Post::Meterpreter::Extensions::Stdapi::Sys::Registry)
2005-04-10 10:31:38 +00:00
end
2005-06-14 04:08:34 +00:00
2005-11-15 05:22:13 +00:00
#
# Returns a copy of the EventLog class.
#
2005-06-14 04:08:34 +00:00
def eventlog
brand(Rex::Post::Meterpreter::Extensions::Stdapi::Sys::EventLog)
end
2005-11-15 05:22:13 +00:00
#
# Returns a copy of the Power class.
#
def power
brand(Rex::Post::Meterpreter::Extensions::Stdapi::Sys::Power)
end
2005-04-10 09:20:47 +00:00
end
2011-11-20 11:39:27 +11:00
end; end; end; end; end