class Nessus::CLI

Public Class Methods

new() click to toggle source
# File lib/nessus/cli.rb, line 12
def initialize
  @file = nil
  @nessus_version = nil
  @args = []
end
run() click to toggle source
# File lib/nessus/cli.rb, line 18
def CLI.run
  self.new.run(*ARGV)
end

Public Instance Methods

run(*args) click to toggle source
# File lib/nessus/cli.rb, line 22
def run(*args)
  optparse(*args)

  Log.it "Recess - Ruby-Nessus CLI"
  Log.it "Version: #{Nessus::VERSION}"
  Log.it

  Nessus::Parse.new("#{@file}") do |scan|

    Log.h1 "SCAN Metadata"
    Log.it
    Log.h2 "Scan Title", scan.title
    Log.h2 "Policy Title", scan.policy_title
    Log.it
    Log.h1 "SCAN Statistics"
    Log.it
    Log.h2 "Host Count", scan.host_count
    Log.h2 "Open Port Count", scan.open_ports_count

    unless scan.version == 1
      Log.h2 "TCP Count", scan.tcp_count
      Log.h2 "UDP Count", scan.udp_count
      Log.h2 "ICMP Count", scan.icmp_count
    end

    Log.it
    Log.h1 "EVENT Statistics"
    Log.it

    unless scan.version == 1
      Log.informational "Informational Severity Count", scan.informational_severity_count
    end

    Log.low "Low Severity Count", scan.low_severity_count
    Log.medium "Medium Severity Count", scan.medium_severity_count
    Log.high "High Severity Count", scan.high_severity_count
    Log.h3 "Total Event Count", scan.total_event_count
    Log.break
    Log.it! "Low Event Percentage: #{scan.event_percentage_for('low', true)}"
    Log.it! "Medium Event Percentage: #{scan.event_percentage_for('medium', true)}"
    Log.it! "High Event Percentage: #{scan.event_percentage_for('high', true)}"
    Log.it

    Log.h1 "HOSTS"
    Log.it

    scan.each_host do |host|
      Log.h2 "Hostname", host.hostname
      Log.h5 "IP Address:", host.ip
      
      unless scan.version == 1
        Log.h5 "Informational Count", host.informational_severity_count
        Log.h5 "Low Count", host.low_severity_count
        Log.h5 "Medium Count", host.medium_severity_count
        Log.h5 "High Count", host.high_severity_count
      end
      Log.it
    end

    Log.end

  end

end

Protected Instance Methods

optparse(*args) click to toggle source
# File lib/nessus/cli.rb, line 89
def optparse(*args)
  opts = OptionParser.new
  opts.program_name = "recess"
  opts.banner = "Recess #{Nessus::VERSION}"
  opts.separator "usage: recess FILE [OPTIONS]"

  opts.on('-f','--file FILE','The .nessus file to parse.') do |file|
    @file = file
  end

  opts.on('-f','--file FILE','The .nessus file to parse.') do |file|
    @file = file
  end

  opts.on('-h','--help','This help summary page.') do |help|
    Log.it opts
    Log.it
    exit -1
  end

  opts.on('-v','--version','Recess Version.') do |version|
    Log.it Nessus::VERSION
    Log.it
    exit -1
  end

  begin
    @args = opts.parse!(args)
    @file ||= @args[0]
    if @file.nil?
      Log.it opts
      Log.it
      exit -1
    end
  rescue  => e
    Log.error e.message
    Log.it opts
    Log.it
    exit -1
  end
end