Parent

Methods

Class/Module Index [+]

Quicksearch

Rex::Post::Meterpreter::Extensions::Stdapi::Net::Interface

This class represents a logical physical interface on the remote machine.

Attributes

addrs[RW]

An Array of IP addresses bound to the Interface.

flags[RW]

The flags associated with the interface.

index[RW]

The index of the interface.

mac_addr[RW]

The physical (MAC) address of the NIC.

mac_name[RW]

The name of the interface.

mtu[RW]

The MTU associated with the interface.

netmasks[RW]

An Array of netmasks. This will have the same number of elements as addrs

scopes[RW]

An Array of IPv6 address scopes. This will have the same number of elements as addrs

Public Class Methods

new(opts={}) click to toggle source

Returns a logical interface and initializes it to the supplied parameters.

# File lib/rex/post/meterpreter/extensions/stdapi/net/interface.rb, line 29
def initialize(opts={})
        self.index    = opts[:index] || -1
        self.mac_addr = opts[:mac_addr]
        self.mac_name = opts[:mac_name]
        self.mtu      = opts[:mtu]
        self.flags    = opts[:flags]
        self.addrs    = opts[:addrs]
        self.netmasks = opts[:netmasks]
        self.scopes   = opts[:scopes]
end

Public Instance Methods

ip() click to toggle source

The first address associated with this Interface

# File lib/rex/post/meterpreter/extensions/stdapi/net/interface.rb, line 90
def ip
        addrs.first
end
pretty() click to toggle source

Returns a pretty string representation of the interface's properties.

# File lib/rex/post/meterpreter/extensions/stdapi/net/interface.rb, line 43
def pretty
        macocts = []
        mac_addr.each_byte { |o| macocts << o }
        macocts += [0] * (6 - macocts.size) if macocts.size < 6

        info = [
                ["Name"         , mac_name  ],
                ["Hardware MAC" , sprintf("%02x:%02x:%02x:%02x:%02x:%02x",
                        macocts[0], macocts[1], macocts[2],
                        macocts[3], macocts[4], macocts[5])],
                ["MTU"          , mtu       ],
                ["Flags"        , flags     ],
        ]

        # If all went as planned, addrs and netmasks will have the same number
        # of elements and be properly ordered such that they match up
        # correctly.
        addr_masks = addrs.zip(netmasks)

        addr_masks.select { |a| Rex::Socket.is_ipv4?(a[0]) }.each { |a|
                info << [ "IPv4 Address", a[0] ]
                info << [ "IPv4 Netmask", a[1] ]
        }
        addr_masks.select { |a| Rex::Socket.is_ipv6?(a[0]) }.each { |a|
                info << [ "IPv6 Address", a[0] ]
                info << [ "IPv6 Netmask", a[1] ]
        }

        pad = info.map{|i| i[0] }.max_by{|k|k.length}.length

        ret = sprintf(
                        "Interface %2d\n" +
                        "============\n",
                        index
                )

        info.map {|k,v|
                next if v.nil?
                ret << k.ljust(pad) + " : #{v}\n"
        }

        ret
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.