diff --git a/lib/rex/post/meterpreter/extensions/stdapi/net/config.rb b/lib/rex/post/meterpreter/extensions/stdapi/net/config.rb index 36202bdb53..a1612c6611 100644 --- a/lib/rex/post/meterpreter/extensions/stdapi/net/config.rb +++ b/lib/rex/post/meterpreter/extensions/stdapi/net/config.rb @@ -102,12 +102,12 @@ class Config return routes end - + alias routes get_routes # # Adds a route to the target machine. - # + # def add_route(subnet, netmask, gateway) request = Packet.create_request('stdapi_net_config_add_route') @@ -136,9 +136,9 @@ class Config end protected - + attr_accessor :client # :nodoc: end -end; end; end; end; end; end \ No newline at end of file +end; end; end; end; end; end diff --git a/lib/rex/post/meterpreter/extensions/stdapi/net/interface.rb b/lib/rex/post/meterpreter/extensions/stdapi/net/interface.rb index b84a29695d..2b686d77a4 100644 --- a/lib/rex/post/meterpreter/extensions/stdapi/net/interface.rb +++ b/lib/rex/post/meterpreter/extensions/stdapi/net/interface.rb @@ -46,8 +46,8 @@ class Interface "Hardware MAC: %02x:%02x:%02x:%02x:%02x:%02x\n" + "IP Address : %s\n" + "Netmask : %s\n" + - "\n", - macocts[0], macocts[1], macocts[2], macocts[3], + "\n", + macocts[0], macocts[1], macocts[2], macocts[3], macocts[4], macocts[5], ip, netmask) end diff --git a/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_server_channel.rb b/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_server_channel.rb index 2ce3c5d4b7..2b2bade265 100644 --- a/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_server_channel.rb +++ b/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_server_channel.rb @@ -14,78 +14,78 @@ module Net module SocketSubsystem class TcpServerChannel < Rex::Post::Meterpreter::Channel - + # # This is a class variable to store all pending client tcp connections which have not been passed # off via a call to the respective server tcp channels accept method. The dictionary key is the - # tcp server channel instance and the values held are an array of pending tcp client channels + # tcp server channel instance and the values held are an array of pending tcp client channels # connected to the tcp server channel. # @@server_channels = {} - + class << self include Rex::Post::Meterpreter::InboundPacketHandler - + # # This is the request handler which is registerd to the respective meterpreter instance via # Rex::Post::Meterpreter::Extensions::Stdapi::Net::Socket. All incoming requests from the meterpreter - # for a 'tcp_channel_open' will be processed here. We create a new TcpClientChannel for each request + # for a 'tcp_channel_open' will be processed here. We create a new TcpClientChannel for each request # received and store it in the respective tcp server channels list of new pending client channels. # These new tcp client channels are passed off via a call the the tcp server channels accept() method. # def request_handler( client, packet ) - + if( packet.method == "tcp_channel_open" ) - + cid = packet.get_tlv_value( TLV_TYPE_CHANNEL_ID ) pid = packet.get_tlv_value( TLV_TYPE_CHANNEL_PARENTID ) localhost = packet.get_tlv_value( TLV_TYPE_LOCAL_HOST ) localport = packet.get_tlv_value( TLV_TYPE_LOCAL_PORT ) peerhost = packet.get_tlv_value( TLV_TYPE_PEER_HOST ) peerport = packet.get_tlv_value( TLV_TYPE_PEER_PORT ) - + if( cid == nil or pid == nil ) return false end - + server_channel = client.find_channel( pid ) if( server_channel == nil ) return false end - - params = Rex::Socket::Parameters.from_hash( - { + + params = Rex::Socket::Parameters.from_hash( + { 'Proto' => 'tcp', 'LocalHost' => localhost, 'LocalPort' => localport, 'PeerHost' => peerhost, 'PeerPort' => peerport, 'Comm' => server_channel.client - } + } ) - + client_channel = TcpClientChannel.new( client, cid, TcpClientChannel, CHANNEL_FLAG_SYNCHRONOUS ) - + client_channel.params = params - + if( @@server_channels[server_channel] == nil ) - @@server_channels[server_channel] = [] + @@server_channels[server_channel] = [] end - + @@server_channels[server_channel] << client_channel - + return true end - + return false end - + def cls return CHANNEL_CLASS_STREAM end - + end - + # # Open a new tcp server channel on the remote end. # @@ -104,7 +104,7 @@ class TcpServerChannel < Rex::Post::Meterpreter::Channel c.params = params c end - + # # Simply initilize this instance. # @@ -113,7 +113,7 @@ class TcpServerChannel < Rex::Post::Meterpreter::Channel # add this instance to the class variables dictionary of tcp server channels @@server_channels[self] = [] end - + # # Accept a new tcp client connection form this tcp server channel. This method does not block # and returns nil if no new client connection is available. @@ -126,7 +126,7 @@ class TcpServerChannel < Rex::Post::Meterpreter::Channel end return result end - + # # Accept a new tcp client connection form this tcp server channel. This method will block indefinatly # if no timeout is specified. @@ -150,7 +150,7 @@ class TcpServerChannel < Rex::Post::Meterpreter::Channel protected def _accept - while( true ) + while( true ) if( @@server_channels[self].empty? ) Rex::ThreadSafe.sleep( 0.2 ) next