class SSHScan::TargetParser

Enumeration methods for IP notations.

Public Instance Methods

enumerateIPRange(ip,port=nil) click to toggle source

Enumerate CIDR addresses, single IPs and IP ranges. @param ip [String] IP address @param port [Fixnum] port @return [Array] array of enumerated addresses

# File lib/ssh_scan/target_parser.rb, line 11
def enumerateIPRange(ip,port=nil)
  if ip.fqdn?
    if port.nil?
      socket = ip
    else
      socket = ip.concat(":").concat(port.to_s)
    end
    return [socket]
  else
    if ip.include? "/"
      begin
        ip_net = NetAddr::IPv4Net.parse(ip)
      rescue
        raise ArgumentError, "Invalid target: #{ip}"
      end

      sock_array = []
      1.upto(ip_net.len - 2) do |i|
        sock_array << ip_net.nth(i).to_s
      end

      if !port.nil?
        sock_array.map! { |i| i.concat(":").concat(port.to_s) }
      end
      return sock_array
    else
      if port.nil?
        socket = ip
      else
        socket = ip.concat(":").concat(port.to_s)
      end
      return [socket]
    end
  end
end