class Ronin::CLI::Commands::Iprange

Enumerates over the IP ranges.

## Usage

ronin iprange [options] [IP_RANGE ... | --start IP --stop IP]

## Options

-f, --file FILE                  Optional file to read values from
    --start IP                   Starting IP address
    --stop IP                    Stopping IP address
-s, --size                       Prints the size of the IP range
-h, --help                       Print help information

## Arguments

[IP_RANGE ...]                   The IP Range to enumerate

## Examples

ronin iprange 1.1.1.0/24
ronin iprange 1.1.1.*
ronin iprange 1.1.2-4.10-50
ronin iprange --start 1.1.1.10 --stop 1.1.4.100
ronin iprange --file list.txt

Public Class Methods

new(**kwargs) click to toggle source

Initializes the ‘ronin iprange` command.

Calls superclass method
# File lib/ronin/cli/commands/iprange.rb, line 94
def initialize(**kwargs)
  super(**kwargs)

  @start = []
  @stop  = []
end

Public Instance Methods

process_ip_range(ip_range) click to toggle source

Processes a parsed IP range object.

@param [Ronin::Support::Network::IPRange,

      Ronin::Support::Network::IPRange::Range] ip_range
The IP range to process.
# File lib/ronin/cli/commands/iprange.rb, line 142
def process_ip_range(ip_range)
  if options[:size]
    puts ip_range.size
  else
    ip_range.each do |ip|
      puts ip
    end
  end
end
process_value(string) click to toggle source

Processes an IP range.

@param [String] string

# File lib/ronin/cli/commands/iprange.rb, line 129
def process_value(string)
  range = Support::Network::IPRange.new(string)

  process_ip_range(range)
end
run(*ip_ranges) click to toggle source

Runs the ‘ronin iprange` command.

@param [Array<String>] ip_ranges

Optional list of IP ranges to enumerate.
Calls superclass method
# File lib/ronin/cli/commands/iprange.rb, line 107
def run(*ip_ranges)
  if !@start.empty? && !@stop.empty?
    unless @start.length == @stop.length
      print_error "must specify an equal number of --start and --stop options"
      exit(-1)
    end

    @start.zip(@stop).each do |(start,stop)|
      range = Support::Network::IPRange::Range.new(start,stop)

      process_ip_range(range)
    end
  else
    super(*ip_ranges)
  end
end