A Rubyful interface to the Nmap exploration tool and security / port scanner.
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
spec
.document
.gitignore Add simplecov to the project to help with spec coverage. Jul 22, 2013
.rspec
.travis.yml
.yardopts
ChangeLog.md
Gemfile
LICENSE.txt
README.md
Rakefile
gemspec.yml
ruby-nmap.gemspec

README.md

ruby-nmap

Description

A Ruby interface to nmap, the exploration tool and security / port scanner.

Features

  • Provides a Ruby interface for running nmap.
  • Provides a Parser for enumerating nmap XML scan files.

Examples

Run Nmap from Ruby:

require 'nmap/program'

Nmap::Program.scan do |nmap|
  nmap.syn_scan = true
  nmap.service_scan = true
  nmap.os_fingerprint = true
  nmap.xml = 'scan.xml'
  nmap.verbose = true

  nmap.ports = [20,21,22,23,25,80,110,443,512,522,8080,1080]
  nmap.targets = '192.168.1.*'
end

Parse Nmap XML scan files:

require 'nmap/xml'

Nmap::XML.new('scan.xml') do |xml|
  xml.each_host do |host|
    puts "[#{host.ip}]"

    host.each_port do |port|
      puts "  #{port.number}/#{port.protocol}\t#{port.state}\t#{port.service}"
    end
  end
end

Print NSE script output from an XML scan file:

require 'nmap/xml'

Nmap::XML.new('nse.xml') do |xml|
  xml.each_host do |host|
    puts "[#{host.ip}]"

    host.scripts.each do |name,output|
      output.each_line { |line| puts "  #{line}" }
    end

    host.each_port do |port|
      puts "  [#{port.number}/#{port.protocol}]"

      port.scripts.each do |name,output|
        puts "    [#{name}]"

        output.each_line { |line| puts "      #{line}" }
      end
    end
  end
end

Requirements

Install

$ gem install ruby-nmap

License

Copyright (c) 2009-2014 Postmodern

See {file:LICENSE.txt} for license information.