Parent

Class/Module Index [+]

Quicksearch

Rex::Post::Meterpreter::Extensions::Stdapi::Net::Socket

This class provides an interface to interacting with sockets on the remote machine. It allows callers to open TCP, UDP, and other arbitrary socket-based connections as channels that can then be interacted with through the established meterpreter connection.

Public Class Methods

new(client) click to toggle source

Initialize the socket subsystem and start monitoring sockets as they come in.

# File lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb, line 37
def initialize(client)
        self.client = client

        # register the inbound handler for the tcp server channel (allowing us to receive new client connections to a tcp server channel)
        client.register_inbound_handler( Rex::Post::Meterpreter::Extensions::Stdapi::Net::SocketSubsystem::TcpServerChannel )

end

Public Instance Methods

create( params ) click to toggle source

Creates an arbitrary client socket channel using the information supplied in the socket parameters instance. The 'params' argument is expected to be of type Rex::Socket::Parameters.

# File lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb, line 63
def create( params )
        res = nil

        if( params.tcp? )
                if( params.server? )
                        res = create_tcp_server_channel( params )
                else
                        res = create_tcp_client_channel( params )
                end
        elsif( params.udp? )
                res = create_udp_channel( params )
        end

        return res
end
create_tcp_client_channel(params) click to toggle source

Creates a TCP client channel.

# File lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb, line 97
def create_tcp_client_channel(params)
        begin
                channel = SocketSubsystem::TcpClientChannel.open(client, params)
                if( channel != nil )
                        return channel.lsock
                end
                return nil
        rescue ::Rex::Post::Meterpreter::RequestError => e
                case e.code
                when 10000 .. 10100
                        raise ::Rex::ConnectionError.new
                end
                raise e
        end
end
create_tcp_server_channel(params) click to toggle source

Create a TCP server channel.

# File lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb, line 82
def create_tcp_server_channel(params)
        begin
                return SocketSubsystem::TcpServerChannel.open(client, params)
        rescue ::Rex::Post::Meterpreter::RequestError => e
                case e.code
                when 10000 .. 10100
                        raise ::Rex::ConnectionError.new
                end
                raise e
        end
end
create_udp_channel(params) click to toggle source

Creates a UDP channel.

# File lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb, line 116
def create_udp_channel(params)
        begin
                return SocketSubsystem::UdpChannel.open(client, params)
        rescue ::Rex::Post::Meterpreter::RequestError => e
                case e.code
                        when 10000 .. 10100
                        raise ::Rex::ConnectionError.new
                end
                raise e
        end
end
shutdown() click to toggle source

Deregister the inbound handler for the tcp server channel

# File lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb, line 48
def shutdown
        client.deregister_inbound_handler(  Rex::Post::Meterpreter::Extensions::Stdapi::Net::SocketSubsystem::TcpServerChannel )
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.