getpid is working
git-svn-id: file:///home/svn/incoming/trunk@2355 4d416f70-5f16-0410-b530-b9f4589650da
This commit is contained in:
parent
6eee03f990
commit
56e6016db2
|
@ -33,10 +33,8 @@ class Client
|
|||
monitor_socket
|
||||
end
|
||||
|
||||
def brand(klass)
|
||||
klass = klass.dup
|
||||
klass.client = self
|
||||
return klass
|
||||
def Client.default_timeout
|
||||
return 30
|
||||
end
|
||||
|
||||
#
|
||||
|
@ -50,9 +48,9 @@ class Client
|
|||
# Extension registration
|
||||
#
|
||||
def add_extension(name)
|
||||
Kernel.require("Rex/Post/Meterpreter/Extensions/#{name}")
|
||||
Kernel.require("Rex/Post/Meterpreter/Extensions/#{name}/#{name}")
|
||||
|
||||
ext = eval("Rex::Post::Meterpreter::Extensions::" + name + ".new(client)")
|
||||
ext = eval("Rex::Post::Meterpreter::Extensions::" + name + "::" + name + ".new(self)")
|
||||
|
||||
self.extensions[ext.name] = ext
|
||||
end
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
require 'Rex/Post/Meterpreter/Packet'
|
||||
require 'Rex/Post/Meterpreter/Extension'
|
||||
require 'Rex/Post/Meterpreter/Client'
|
||||
|
||||
module Rex
|
||||
module Post
|
||||
|
@ -107,8 +108,8 @@ class ClientCore < Extension
|
|||
request.add_tlv(TLV_TYPE_TARGET_PATH, target_path)
|
||||
end
|
||||
|
||||
# Transmit the request and wait 30 seconds for a response
|
||||
response = self.client.send_packet_wait_response(request, 30)
|
||||
# Transmit the request and wait the default timeout seconds for a response
|
||||
response = self.client.send_packet_wait_response(request, Client.default_timeout)
|
||||
|
||||
# No response?
|
||||
if (response == nil)
|
||||
|
@ -154,12 +155,13 @@ class ClientCore < Extension
|
|||
# Enumerate all of the modules, loading each one
|
||||
modules.each { |mod|
|
||||
|
||||
load_library(
|
||||
if (load_library(
|
||||
'LibraryFilePath' => 'data/meterpreter/ext_server_' + mod.downcase + '.dll',
|
||||
'UploadLibrary' => true,
|
||||
'Extension' => true,
|
||||
'SaveToDisk' => opts['LoadFromDisk']
|
||||
)
|
||||
'SaveToDisk' => opts['LoadFromDisk']))
|
||||
client.add_extension(mod)
|
||||
end
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
#!/usr/bin/ruby
|
||||
|
||||
require 'Rex/Post/Process'
|
||||
require 'Rex/Post/Meterpreter/Packet'
|
||||
require 'Rex/Post/Meterpreter/Client'
|
||||
require 'Rex/Post/Meterpreter/Extensions/Stdapi/Stdapi'
|
||||
|
||||
module Rex
|
||||
module Post
|
||||
module Meterpreter
|
||||
module Extensions
|
||||
module Stdapi
|
||||
|
||||
class Process < Rex::Post::Process
|
||||
|
||||
class <<self
|
||||
attr_accessor :client
|
||||
end
|
||||
|
||||
def Process.getpid
|
||||
request = Packet.create_request('stdapi_process_getpid')
|
||||
|
||||
response = self.client.send_packet_wait_response(request, Client.default_timeout)
|
||||
tlv = nil
|
||||
|
||||
if (response == nil)
|
||||
raise RuntimeError, "getpid: No response was received", caller
|
||||
elsif (response.result != 0)
|
||||
raise RuntimeError, "getpid: Failed to get process id: #{response.result}", caller
|
||||
end
|
||||
|
||||
tlv = response.get_tlv(TLV_TYPE_PID)
|
||||
|
||||
if (tlv != nil)
|
||||
return tlv.value
|
||||
else
|
||||
return 0
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end; end; end; end; end
|
|
@ -0,0 +1,39 @@
|
|||
#!/usr/bin/ruby
|
||||
|
||||
require 'Rex/Post/Meterpreter/Extension'
|
||||
require 'Rex/Post/Meterpreter/Extensions/Stdapi/Process'
|
||||
|
||||
module Rex
|
||||
module Post
|
||||
module Meterpreter
|
||||
module Extensions
|
||||
module Stdapi
|
||||
|
||||
# Constants
|
||||
TLV_TYPE_PID = TLV_META_TYPE_UINT | 0
|
||||
|
||||
###
|
||||
#
|
||||
# Stdapi
|
||||
# ------
|
||||
#
|
||||
# Standard ruby interface to remote entities
|
||||
#
|
||||
###
|
||||
class Stdapi < Extension
|
||||
def initialize(client)
|
||||
super(client, 'stdapi')
|
||||
end
|
||||
|
||||
def brand(klass)
|
||||
klass = klass.dup
|
||||
klass.client = self.client
|
||||
return klass
|
||||
end
|
||||
|
||||
def process
|
||||
brand(Rex::Post::Meterpreter::Extensions::Stdapi::Process)
|
||||
end
|
||||
end
|
||||
|
||||
end; end; end; end; end
|
Loading…
Reference in New Issue