Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/postmodern/ruby-nmap
A Ruby interface to nmap, the exploration tool and security / port scanner. Allows automating nmap and parsing nmap XML files.
https://github.com/postmodern/ruby-nmap
automation nmap ruby ruby-nmap xml-parser
Last synced: 7 days ago
JSON representation
A Ruby interface to nmap, the exploration tool and security / port scanner. Allows automating nmap and parsing nmap XML files.
- Host: GitHub
- URL: https://github.com/postmodern/ruby-nmap
- Owner: postmodern
- License: mit
- Created: 2009-11-11T22:10:22.000Z (almost 15 years ago)
- Default Branch: main
- Last Pushed: 2024-01-25T11:39:07.000Z (10 months ago)
- Last Synced: 2024-05-01T22:03:25.742Z (6 months ago)
- Topics: automation, nmap, ruby, ruby-nmap, xml-parser
- Language: Ruby
- Homepage:
- Size: 578 KB
- Stars: 298
- Watchers: 23
- Forks: 54
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# ruby-nmap
[![CI](https://github.com/postmodern/ruby-nmap/actions/workflows/ruby.yml/badge.svg)](https://github.com/postmodern/ruby-nmap/actions/workflows/ruby.yml)
[![Code Climate](https://codeclimate.com/github/postmodern/ruby-nmap.svg)](https://codeclimate.com/github/postmodern/ruby-nmap)
[![Gem Version](https://badge.fury.io/rb/ruby-nmap.svg)](https://badge.fury.io/rb/ruby-nmap)* [Source](https://github.com/postmodern/ruby-nmap/)
* [Issues](https://github.com/postmodern/ruby-nmap/issues)
* [Documentation](http://rubydoc.info/gems/ruby-nmap/frames)## Description
A Ruby API to [nmap], the exploration tool and security / port scanner.
Allows automating nmap and parsing nmap XML files.## Features
* Provides a Ruby API for automating nmap.
* Provides a Parser for enumerating nmap XML scan files.
* Supports the full [Nmap XML DTD][nmap-dtd].## Examples
Run Nmap from Ruby:
```ruby
require 'nmap/command'Nmap::Command.run do |nmap|
nmap.connect_scan = true
nmap.service_scan = true
nmap.output_xml = 'scan.xml'
nmap.verbose = truenmap.ports = [20, 21, 22, 23, 25, 80, 110, 443, 512, 522, 8080, 1080]
nmap.targets = '192.168.1.*'
end
```Run `sudo nmap` from Ruby:
```ruby
require 'nmap/command'Nmap::Command.sudo do |nmap|
nmap.syn_scan = true
nmap.os_fingerprint = true
nmap.service_scan = true
nmap.output_xml = 'scan.xml'
nmap.verbose = truenmap.ports = [20, 21, 22, 23, 25, 80, 110, 443, 512, 522, 8080, 1080]
nmap.targets = '192.168.1.*'
end
```Parse Nmap XML scan files:
```ruby
require 'nmap/xml'Nmap::XML.open('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:
```ruby
require 'nmap/xml'Nmap::XML.open('nse.xml') do |xml|
xml.each_host do |host|
puts "[#{host.ip}]"host.scripts.each do |name,output|
output.each_line { |line| puts " #{line}" }
endhost.each_port do |port|
puts " [#{port.number}/#{port.protocol}]"port.scripts.each do |id,script|
puts " [#{id}]"script.output.each_line { |line| puts " #{line}" }
end
end
end
end
```## Requirements
* [ruby] >= 2.0.0
* [nmap] >= 5.00
* [nokogiri] ~> 1.3
* [command_mapper] ~> 0.3## Install
* Debian / Ubuntu:
```shell
$ sudo apt install nmap
```* Fedora / RedHat:
```shell
$ sudo dnf install nmap
```* Homebrew:
```shell
$ brew install nmap
``````shell
$ gem install ruby-nmap
```## License
See {file:LICENSE.txt} for license information.
[nmap]: http://www.insecure.org/
[ruby]: https://www.ruby-lang.org/
[nokogiri]: http://nokogiri.rubyforge.org/
[command_mapper]: https://github.com/postmodern/command_mapper.rb#readme
[nmap-dtd]: https://nmap.org/book/nmap-dtd.html