98 lines
2.0 KiB
Ruby
98 lines
2.0 KiB
Ruby
# -*- coding: binary -*-
|
|
|
|
require 'ipaddr'
|
|
|
|
module Rex
|
|
module Post
|
|
module Meterpreter
|
|
module Extensions
|
|
module Stdapi
|
|
module Net
|
|
|
|
###
|
|
#
|
|
# This class represents a connection (listening, connected)
|
|
# on the remote machine.
|
|
#
|
|
###
|
|
class Netstat
|
|
|
|
##
|
|
#
|
|
# Constructor
|
|
#
|
|
##
|
|
|
|
#
|
|
# Returns a netstat entry and initializes it to the supplied
|
|
# parameters.
|
|
#
|
|
def initialize(opts={})
|
|
self.local_addr = IPAddr.new_ntoh(opts[:local_addr]).to_s
|
|
self.remote_addr = IPAddr.new_ntoh(opts[:remote_addr]).to_s
|
|
self.local_port = opts[:local_port]
|
|
self.remote_port = opts[:remote_port]
|
|
self.protocol = opts[:protocol]
|
|
self.state = opts[:state]
|
|
self.uid = opts[:uid] || 0
|
|
self.inode = opts[:inode] || 0
|
|
self.pid_name = opts[:pid_name]
|
|
|
|
self.local_addr_str = sprintf("%s:%d",self.local_addr, self.local_port)
|
|
if self.remote_port == 0
|
|
port = "*"
|
|
else
|
|
port = self.remote_port.to_s
|
|
end
|
|
self.remote_addr_str = sprintf("%s:%s",self.remote_addr, port)
|
|
end
|
|
|
|
|
|
#
|
|
# The local address of the connection
|
|
#
|
|
attr_accessor :local_addr
|
|
#
|
|
# The remote address (peer) of the connection
|
|
#
|
|
attr_accessor :remote_addr
|
|
#
|
|
# The local port of the connection.
|
|
#
|
|
attr_accessor :local_port
|
|
#
|
|
# The remote port of the connection.
|
|
#
|
|
attr_accessor :remote_port
|
|
#
|
|
# The protocol type (tcp/tcp6/udp/udp6)
|
|
#
|
|
attr_accessor :protocol
|
|
#
|
|
# The state of the connection (close, listening, syn_sent...)
|
|
#
|
|
attr_accessor :state
|
|
#
|
|
# The uid of the user who started the process to which the connection belongs to
|
|
#
|
|
attr_accessor :uid
|
|
#
|
|
# The socket inode
|
|
#
|
|
attr_accessor :inode
|
|
#
|
|
# The name of the process to which the connection belongs to
|
|
#
|
|
attr_accessor :pid_name
|
|
#
|
|
# The local address of the connection plus the port
|
|
#
|
|
attr_accessor :local_addr_str
|
|
#
|
|
# The remote address (peer) of the connection plus the port or *
|
|
#
|
|
attr_accessor :remote_addr_str
|
|
end
|
|
|
|
end; end; end; end; end; end
|