Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ronin-rb/ronin-nmap
A Ruby library for working with nmap.
https://github.com/ronin-rb/ronin-nmap
hacktoberfest infosec network-scanning nmap nmap-commands nmap-xml recon ruby
Last synced: about 1 month ago
JSON representation
A Ruby library for working with nmap.
- Host: GitHub
- URL: https://github.com/ronin-rb/ronin-nmap
- Owner: ronin-rb
- License: lgpl-3.0
- Created: 2023-03-06T18:20:09.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-04T21:05:52.000Z (6 months ago)
- Last Synced: 2024-10-29T14:22:28.269Z (3 months ago)
- Topics: hacktoberfest, infosec, network-scanning, nmap, nmap-commands, nmap-xml, recon, ruby
- Language: Ruby
- Homepage: https://ronin-rb.dev
- Size: 174 KB
- Stars: 5
- Watchers: 2
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog.md
- License: COPYING.txt
Awesome Lists containing this project
README
# ronin-nmap
[![CI](https://github.com/ronin-rb/ronin-nmap/actions/workflows/ruby.yml/badge.svg)](https://github.com/ronin-rb/ronin-nmap/actions/workflows/ruby.yml)
[![Code Climate](https://codeclimate.com/github/ronin-rb/ronin-nmap.svg)](https://codeclimate.com/github/ronin-rb/ronin-nmap)* [Website](https://ronin-rb.dev/)
* [Source](https://github.com/ronin-rb/ronin-nmap)
* [Issues](https://github.com/ronin-rb/ronin-nmap/issues)
* [Documentation](https://ronin-rb.dev/docs/ronin-nmap/frames)
* [Discord](https://discord.gg/6WAb3PsVX9) |
[Mastodon](https://infosec.exchange/@ronin_rb)## 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 informationArguments:
[COMMAND] The command name to run
[ARGS ...] Additional arguments for the commandCommands:
completion
convert
dump
grep
help
import
new
scan
```Import an nmap XML scan file into [ronin-db]\:
```shell
$ ronin-nmap import scan.xml
```Perform an nmap scan and import it's results into the [ronin-db]\:
```shell
$ ronin-nmap scan --import -- -sT -sV -p 22,25,80,443
```Parse and filter an nmap XML scan file:
```shell
$ ronin-nmap parse --hosts-with-port 443 scan.xml
```Dump a nmap XML scan file to a list of `IP:PORT` pairs:
```shell
$ ronin-nmap dump --print-ip-ports scan.xml
```Dump a nmap XML scan file to a list of `HOST:PORT` pairs:
```shell
$ ronin-nmap dump --print-host-ports scan.xml
```Dump a nmap XML scan file to a list of `http`://` or `https://` URIs:
```shell
$ ronin-nmap dump --print-uris scan.xml
```Convert an nmap XML scan file to CSV:
```shell
$ ronin-nmap convert scan.xml scan.csv
```Convert an nmap XML scan file to JSON:
```shell
$ ronin-nmap convert scan.xml scan.json
```Generate a new nmap scanner Ruby script:
```shell
$ ronin-nmap new scanner.rb --target example.com --ports 22,80,443,8000-9000
```Generate a new nmap XML parser script:
```shell
$ 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:
```ruby
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:
```ruby
xml.hosts
# => [#, ...]host = xml.host
# => #xml.host.open_ports
# => [#,
# #,
# #,
# #,
# #]port = xml.host.open_ports.first
# => #port.state
# => :openport.protocol
# => :tcpport.service
# => #, #, #, #, #]>>port.scripts
# => {"ssh-hostkey"=>...,
# "ssh2-enum-algos"=>...}
```Printing the parsed nmap XML data:
```ruby
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
* [Ruby] >= 3.0.0
* [nmap] >= 5.00
* [ruby-nmap] ~> 1.0
* [ronin-core] ~> 0.2
* [ronin-db] ~> 0.2## Install
```shell
$ gem install ronin-nmap
```### Gemfile
```ruby
gem 'ronin-nmap', '~> 0.1'
```### gemspec
```ruby
gem.add_dependency 'ronin-nmap', '~> 0.1'
```## Development
1. [Fork It!](https://github.com/ronin-rb/ronin-nmap/fork)
2. Clone It!
3. `cd ronin-nmap/`
4. `./scripts/setup`
5. `git checkout -b my_feature`
6. Code It!
7. `bundle exec rake spec`
8. `git push origin my_feature`## License
Copyright (c) 2023-2024 Hal Brodigan ([email protected])
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 .[Ruby]: https://www.ruby-lang.org
[nmap]: http://www.insecure.org/
[ruby-nmap]: https://github.com/postmodern/ruby-nmap#readme
[ronin-core]: https://github.com/ronin-rb/ronin-core#readme
[ronin-db]: https://github.com/ronin-rb/ronin-db#readme