ronin-nmap
Description
ronin-nmap is a Ruby library for working with nmap. ronin-nmap can parse nmap
XML, convert nmap XML into JSON or CSV, or import nmap XML into the ronin-db
database.
Features
- Supports automating
nmap
using ruby-nmap. - Supports parsing and filtering nmap XML.
- Supports converting nmap XML into JSON or CSV.
- Supports importing nmap XML data into the ronin-db database.
Synopsis
Usage: ronin-nmap [options]
Options:
-V, --version Prints the version and exits
-h, --help Print help information
Arguments:
[COMMAND] The command name to run
[ARGS ...] Additional arguments for the command
Commands:
completion
convert
dump
grep
help
import
new
print
scan
Import an nmap XML scan file into ronin-db:
$ ronin-nmap import scan.xml
Perform an nmap scan and import it's results into the ronin-db:
$ ronin-nmap scan --import -- -sT -sV -p 22,25,80,443
Parse and filter an nmap XML scan file:
$ ronin-nmap parse --hosts-with-port 443 scan.xml
Dump a nmap XML scan file to a list of IP:PORT
pairs:
$ ronin-nmap dump --print-ip-ports scan.xml
Dump a nmap XML scan file to a list of HOST:PORT
pairs:
$ ronin-nmap dump --print-host-ports scan.xml
Dump a nmap XML scan file to a list of http
://or
https://` URIs:
$ ronin-nmap dump --print-uris scan.xml
Convert an nmap XML scan file to CSV:
$ ronin-nmap convert scan.xml scan.csv
Convert an nmap XML scan file to JSON:
$ ronin-nmap convert scan.xml scan.json
Generate a new nmap scanner Ruby script:
$ ronin-nmap new scanner.rb --target example.com --ports 22,80,443,8000-9000
Generate a new nmap XML parser script:
$ ronin-nmap new parser.rb --parser --xml-file path/to/nmap.xml --printing
Examples
Performing an nmap
scan and returning the parsed nmap XML data:
require 'ronin/nmap'
xml = Ronin::Nmap.scan(syn_scan: true, ports: [80, 443], targets: '192.168.1.*')
xml = Ronin::Nmap.scan do |nmap|
nmap.syn_scan = true
nmap.ports = [80, 443]
nmap.targets = '192.168.1.*'
end
Accessesing the nmap XML scan data:
xml.hosts
host = xml.host
xml.host.open_ports
port = xml.host.open_ports.first
port.state
port.protocol
port.service
port.scripts
Printing the parsed nmap XML data:
xml.each_host do |host|
puts "[ #{host.ip} ]"
host.each_port do |port|
puts " #{port.number}/#{port.protocol}\t#{port.state}\t#{port.service}"
port.scripts.each do |id,script|
puts " [ #{id} ]"
script.output.each_line { |line| puts " #{line}" }
end
end
end
Requirements
Install
$ gem install ronin-nmap
Gemfile
gem 'ronin-nmap', '~> 0.1'
gemspec
gem.add_dependency 'ronin-nmap', '~> 0.1'
Development
- Fork It!
- Clone It!
cd ronin-nmap/
./scripts/setup
git checkout -b my_feature
- Code It!
bundle exec rake spec
git push origin my_feature
License
Copyright (c) 2023-2024 Hal Brodigan (postmodern.mod3@gmail.com)
ronin-nmap is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
ronin-nmap is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with ronin-nmap. If not, see https://www.gnu.org/licenses/.