lib/ssh_scan/target_parser.rb
require 'netaddr'
require 'string_ext'
module SSHScan
# Enumeration methods for IP notations.
class TargetParser
# Enumerate CIDR addresses, single IPs and IP ranges.
# @param ip [String] IP address
# @param port [Fixnum] port
# @return [Array] array of enumerated addresses
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
end
end