Class/Module Index [+]

Quicksearch

Rex::Post::Meterpreter::Extensions::Stdapi::Net::SocketSubsystem::TcpClientChannel

This class represents a logical TCP client connection that is established from the remote machine and tunnelled through the established meterpreter connection, similar to an SSH port forward.

Public Class Methods

cls() click to toggle source
# File lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_client_channel.rb, line 26
def cls
        return CHANNEL_CLASS_STREAM
end
new( client, cid, type, flags ) click to toggle source

Passes the channel initialization information up to the base class.

# File lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_client_channel.rb, line 126
def initialize( client, cid, type, flags )
        super( client, cid, type, flags )

        lsock.extend( SocketInterface )
        lsock.extend( DirectChannelWrite )
        lsock.channel = self

        rsock.extend( SocketInterface )
        rsock.channel = self

end
open(client, params) click to toggle source

Opens a TCP client channel using the supplied parameters.

# File lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_client_channel.rb, line 89
def TcpClientChannel.open(client, params)
        c = Channel.create(client, 'stdapi_net_tcp_client', self, CHANNEL_FLAG_SYNCHRONOUS,
                [
                        {
                                'type'  => TLV_TYPE_PEER_HOST,
                                'value' => params.peerhost
                        },
                        {
                                'type'  => TLV_TYPE_PEER_PORT,
                                'value' => params.peerport
                        },
                        {
                                'type'  => TLV_TYPE_LOCAL_HOST,
                                'value' => params.localhost
                        },
                        {
                                'type'  => TLV_TYPE_LOCAL_PORT,
                                'value' => params.localport
                        },
                        {
                                'type'  => TLV_TYPE_CONNECT_RETRIES,
                                'value' => params.retries
                        }
                ])
        c.params = params
        c
end

Public Instance Methods

_write(*args) click to toggle source

Wrap the _write() call in order to catch some common, but harmless Windows exceptions

# File lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_client_channel.rb, line 166
def _write(*args)
        begin
                super(*args)
        rescue ::Rex::Post::Meterpreter::RequestError => e
                case e.code
                when 10000 .. 10100
                        raise ::Rex::ConnectionError.new
                end
        end
end
close_write() click to toggle source

Closes the write half of the connection.

# File lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_client_channel.rb, line 141
def close_write
        return shutdown(1)
end
shutdown(how = 1) click to toggle source

Shutdown the connection

0 -> future reads 1 -> future sends 2 -> both

# File lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_client_channel.rb, line 152
def shutdown(how = 1)
        request = Packet.create_request('stdapi_net_socket_tcp_shutdown')

        request.add_tlv(TLV_TYPE_SHUTDOWN_HOW, how)
        request.add_tlv(TLV_TYPE_CHANNEL_ID, self.cid)

        response = client.send_request(request)

        return true
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.