dradis-nmap 3.18.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,27 @@
1
+ # Nmap plugin for Dradis
2
+
3
+ [![Build Status](https://secure.travis-ci.org/dradis/dradis-nmap.png?branch=master)](http://travis-ci.org/dradis/dradis-nmap) [![Code Climate](https://codeclimate.com/github/dradis/dradis-nmap.png)](https://codeclimate.com/github/dradis/dradis-nmap.png)
4
+
5
+ Upload Nmap files into Dradis.
6
+
7
+ The add-on requires [Dradis CE](https://dradisframework.org/) > 3.0, or [Dradis Pro](https://dradisframework.com/pro/).
8
+
9
+
10
+ ## More information
11
+
12
+ See the Dradis Framework's [README.md](https://github.com/dradis/dradisframework/blob/master/README.md)
13
+
14
+
15
+ ## Contributing
16
+
17
+ See the Dradis Framework's [CONTRIBUTING.md](https://github.com/dradis/dradisframework/blob/master/CONTRIBUTING.md)
18
+
19
+
20
+ ## License
21
+
22
+ Dradis Framework and all its components are released under [GNU General Public License version 2.0](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html) as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file.
23
+
24
+
25
+ ## Feature requests and bugs
26
+
27
+ Please use the [Dradis Framework issue tracker](https://github.com/dradis/dradis-ce/issues) for add-on improvements and bug reports.
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,34 @@
1
+ $:.push File.expand_path('../lib', __FILE__)
2
+ require 'dradis/plugins/nmap/version'
3
+ version = Dradis::Plugins::Nmap::VERSION::STRING
4
+
5
+ # Describe your gem and declare its dependencies:
6
+ Gem::Specification.new do |spec|
7
+ spec.platform = Gem::Platform::RUBY
8
+ spec.name = 'dradis-nmap'
9
+ spec.version = version
10
+ spec.summary = 'Nmap add-on for the Dradis Framework.'
11
+ spec.description = 'This add-on allows you to upload and parse output produced from Nmap web server scanner into Dradis.'
12
+
13
+ spec.license = 'GPL-2'
14
+
15
+ spec.authors = ['Daniel Martin']
16
+ spec.email = ['etd@nomejortu.com']
17
+ spec.homepage = 'http://dradisframework.org'
18
+
19
+ spec.files = `git ls-files`.split($\)
20
+ spec.executables = spec.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
21
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
22
+
23
+ # By not including Rails as a dependency, we can use the gem with different
24
+ # versions of Rails (a sure recipe for disaster, I'm sure), which is needed
25
+ # until we bump Dradis Pro to 4.1.
26
+ # s.add_dependency 'rails', '~> 4.1.1'
27
+ spec.add_dependency 'dradis-plugins', '~> 3.6'
28
+ spec.add_dependency 'ruby-nmap', '~> 0.7'
29
+
30
+ spec.add_development_dependency 'bundler'
31
+ spec.add_development_dependency 'rake', '~> 10.0'
32
+ spec.add_development_dependency 'rspec-rails'
33
+ spec.add_development_dependency 'combustion', '~> 0.5.2'
34
+ end
@@ -0,0 +1,8 @@
1
+ # Hook to the framework base clases
2
+ require 'dradis-plugins'
3
+
4
+ # Load this add-on's engine
5
+ require 'dradis/plugins/nmap'
6
+
7
+ # Require ruby-nmap gem classes
8
+ require 'nmap/xml'
@@ -0,0 +1,11 @@
1
+ module Dradis
2
+ module Plugins
3
+ module Nmap
4
+ end
5
+ end
6
+ end
7
+
8
+ require 'dradis/plugins/nmap/engine'
9
+ require 'dradis/plugins/nmap/field_processor'
10
+ require 'dradis/plugins/nmap/importer'
11
+ require 'dradis/plugins/nmap/version'
@@ -0,0 +1,13 @@
1
+ module Dradis
2
+ module Plugins
3
+ module Nmap
4
+ class Engine < ::Rails::Engine
5
+ isolate_namespace Dradis::Plugins::Nmap
6
+
7
+ include ::Dradis::Plugins::Base
8
+ description 'Processes Nmap output'
9
+ provides :upload
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,78 @@
1
+ module Dradis
2
+ module Plugins
3
+ module Nmap
4
+ class FieldProcessor < Dradis::Plugins::Upload::FieldProcessor
5
+ def post_initialize(args={})
6
+ if data.kind_of?(::Nmap::Host) || data.kind_of?(::Nmap::Port)
7
+ @nmap_object = data
8
+ elsif data.name == 'host'
9
+ @nmap_object = ::Nmap::Host.new(data)
10
+ elsif data.name == 'port'
11
+ @nmap_object = ::Nmap::Port.new(data)
12
+ end
13
+ end
14
+
15
+ def value(args={})
16
+ field = args[:field]
17
+ # fields in the template are of the form <foo>.<field>, where <foo>
18
+ # is common across all fields for a given template (and meaningless).
19
+ type, name, attribute = field.split('.')
20
+ if type == 'host'
21
+ host_value(name)
22
+ elsif type == 'port'
23
+ port_value(name, attribute)
24
+ end
25
+ end
26
+
27
+ private
28
+ def host_value(name)
29
+ if name == 'hostnames'
30
+ @nmap_object.hostnames.uniq.map(&:to_s).sort.join(', ')
31
+ elsif name == 'service_table'
32
+ host_service_table
33
+ else
34
+ @nmap_object.try(name) || 'n/a'
35
+ end
36
+ end
37
+
38
+ def port_value(name, attribute = nil)
39
+ if attribute
40
+ # port.service.name
41
+ # port.service.product
42
+ # port.service.version
43
+ if @nmap_object.service
44
+ if attribute == 'tunnel'
45
+ @nmap_object.service.try(:ssl?) ? 'ssl' : 'n/a'
46
+ else
47
+ @nmap_object.service.try(attribute) || 'n/a'
48
+ end
49
+ end
50
+ else
51
+ @nmap_object.try(name) || 'n/a'
52
+ end
53
+ end
54
+
55
+ def host_service_table
56
+ ports = []
57
+ # Build up a Services table with all the available information about each
58
+ # individual port.
59
+ @nmap_object.each_port do |port|
60
+ port_info = ''
61
+ port_info << "| #{port.number} | #{port.protocol} | #{port.state} (#{port.reason}) |"
62
+ if (srv = port.service)
63
+ port_info << " #{srv.try('name') || ''} |"
64
+ port_info << " #{srv.try('product') || ''} |"
65
+ port_info << " #{srv.try('version') || ''} |"
66
+ else
67
+ port_info << " | | |"
68
+ end
69
+ port_info << "\n"
70
+ ports << port_info
71
+ end
72
+ ports.join
73
+ end
74
+
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,19 @@
1
+ module Dradis
2
+ module Plugins
3
+ module Nmap
4
+ # Returns the version of the currently loaded Dradis as a <tt>Gem::Version</tt>
5
+ def self.gem_version
6
+ Gem::Version.new VERSION::STRING
7
+ end
8
+
9
+ module VERSION
10
+ MAJOR = 3
11
+ MINOR = 18
12
+ TINY = 0
13
+ PRE = nil
14
+
15
+ STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,80 @@
1
+ module Dradis::Plugins::Nmap
2
+ class Importer < Dradis::Plugins::Upload::Importer
3
+ # The framework will call this function if the user selects this plugin from
4
+ # the dropdown list and uploads a file.
5
+ # @returns true if the operation was successful, false otherwise
6
+ def import(params={})
7
+
8
+ logger.info{ "Parsing Nmap output from #{ params[:file] }..." }
9
+ doc = Nmap::XML::new(params[:file])
10
+ logger.info{ 'Done.' }
11
+
12
+ logger.info{ 'Validating Nmap output...' }
13
+ if doc.hosts.empty?
14
+ error = {
15
+ 'Title' => 'Invalid file format',
16
+ 'File name' => File.basename(params[:file]),
17
+ 'Description' => "The file you uploaded doesn't seem to be a valid Nmap XML file."
18
+ }
19
+ logger.fatal{ error['Description'] }
20
+ error = error.map{|k,v| "#[%s]#\n%s\n" % [k, v] }.join("\n\n")
21
+ content_service.create_note text: error
22
+ return false
23
+ end
24
+ logger.info{ 'Done.' }
25
+
26
+ # TODO: do something with the Nmap::Parser::Session information
27
+ port_notes_to_add = {}
28
+
29
+ doc.each_host do |host|
30
+ host_label = host.ip
31
+ host_node = content_service.create_node(label: host_label, type: :host)
32
+ logger.info{ "New host: #{ host_label }" }
33
+
34
+ # Set basic host properties
35
+ host_node.set_property(:ip, host.ip)
36
+ host_node.set_property(:hostname, host.hostnames.map(&:name)) if host.hostnames.present?
37
+ host_node.set_property(:os, host.os.matches.map(&:name)) if host.os.present?
38
+
39
+ # Old-style properties-in-a-note approach
40
+ host_text = template_service.process_template(template: 'host', data: host)
41
+ content_service.create_note(text: host_text, node: host_node)
42
+
43
+ host.each_port do |port|
44
+ logger.info { "\tNew port: #{port.number}/#{port.protocol}" }
45
+
46
+ service = {
47
+ port: port.number,
48
+ protocol: port.protocol.to_s,
49
+ state: port.state.to_s,
50
+ reason: port.reason,
51
+ name: port.try(:service).try(:name),
52
+ product: port.try(:service).try(:product),
53
+ tunnel: port.try(:service).try(:ssl?) ? 'ssl' : 'n/a',
54
+ version: port.try(:service).try(:version),
55
+ source: :nmap,
56
+ }
57
+
58
+ # Node#set_service will store these under
59
+ # Node#properties[:service_extras]:
60
+ port.scripts.each { |k, v| service[k] = v } if port.try(:scripts)
61
+
62
+ host_node.set_service(service)
63
+
64
+ # HACK: patch in a `host` method to `Nmap::Port`
65
+ # so we can use it in the template:
66
+ port.class.module_eval { attr_accessor :host }
67
+ port.host = host.ip
68
+
69
+ # Add a note with the port information
70
+ port_text = template_service.process_template(template: 'port', data: port)
71
+ content_service.create_note(
72
+ text: port_text,
73
+ node: host_node)
74
+ end
75
+
76
+ host_node.save
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,13 @@
1
+ require_relative 'gem_version'
2
+
3
+ module Dradis
4
+ module Plugins
5
+ module Nmap
6
+ # Returns the version of the currently loaded Nmap as a
7
+ # <tt>Gem::Version</tt>.
8
+ def self.version
9
+ gem_version
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,23 @@
1
+ class NmapTasks < Thor
2
+ include Rails.application.config.dradis.thor_helper_module
3
+
4
+ namespace "dradis:plugins:nmap"
5
+
6
+ desc "upload FILE", "upload the results of an Nmap scan"
7
+ long_desc "Upload an Nmap scan to create nodes and notes for the hosts and "\
8
+ "ports discovered during scanning."
9
+
10
+ def upload(file_path)
11
+ require 'config/environment'
12
+
13
+ unless File.exists?(file_path)
14
+ $stderr.puts "** the file [#{file_path}] does not exist"
15
+ exit(-1)
16
+ end
17
+
18
+ detect_and_set_project_scope
19
+
20
+ importer = Dradis::Plugins::Nmap::Importer.new(task_options)
21
+ importer.import(file: file_path)
22
+ end
23
+ end
@@ -0,0 +1 @@
1
+ <foo></foo>
@@ -0,0 +1,127 @@
1
+ <?xml version="1.0"?>
2
+ <?xml-stylesheet href="file:///usr/bin/../share/nmap/nmap.xsl" type="text/xsl"?>
3
+ <!-- Nmap 6.00 scan initiated Fri Aug 5 01:49:41 2016 as: nmap -sC -vv -T4 -oX scanme-01.xml scanme.nmap.org -->
4
+ <nmaprun scanner="nmap" args="nmap -sC -vv -T4 -oX scanme-01.xml scanme.nmap.org" start="1470376181" startstr="Fri Aug 5 01:49:41 2016" version="6.00" xmloutputversion="1.04">
5
+ <scaninfo type="syn" protocol="tcp" numservices="1000" services="1,3-4,6-7,9,13,17,19-26,30,32-33,37,42-43,49,53,70,79-85,88-90,99-100,106,109-111,113,119,125,135,139,143-144,146,161,163,179,199,211-212,222,254-256,259,264,280,301,306,311,340,366,389,406-407,416-417,425,427,443-445,458,464-465,481,497,500,512-515,524,541,543-545,548,554-555,563,587,593,616-617,625,631,636,646,648,666-668,683,687,691,700,705,711,714,720,722,726,749,765,777,783,787,800-801,808,843,873,880,888,898,900-903,911-912,981,987,990,992-993,995,999-1002,1007,1009-1011,1021-1100,1102,1104-1108,1110-1114,1117,1119,1121-1124,1126,1130-1132,1137-1138,1141,1145,1147-1149,1151-1152,1154,1163-1166,1169,1174-1175,1183,1185-1187,1192,1198-1199,1201,1213,1216-1218,1233-1234,1236,1244,1247-1248,1259,1271-1272,1277,1287,1296,1300-1301,1309-1311,1322,1328,1334,1352,1417,1433-1434,1443,1455,1461,1494,1500-1501,1503,1521,1524,1533,1556,1580,1583,1594,1600,1641,1658,1666,1687-1688,1700,1717-1721,1723,1755,1761,1782-1783,1801,1805,1812,1839-1840,1862-1864,1875,1900,1914,1935,1947,1971-1972,1974,1984,1998-2010,2013,2020-2022,2030,2033-2035,2038,2040-2043,2045-2049,2065,2068,2099-2100,2103,2105-2107,2111,2119,2121,2126,2135,2144,2160-2161,2170,2179,2190-2191,2196,2200,2222,2251,2260,2288,2301,2323,2366,2381-2383,2393-2394,2399,2401,2492,2500,2522,2525,2557,2601-2602,2604-2605,2607-2608,2638,2701-2702,2710,2717-2718,2725,2800,2809,2811,2869,2875,2909-2910,2920,2967-2968,2998,3000-3001,3003,3005-3007,3011,3013,3017,3030-3031,3052,3071,3077,3128,3168,3211,3221,3260-3261,3268-3269,3283,3300-3301,3306,3322-3325,3333,3351,3367,3369-3372,3389-3390,3404,3476,3493,3517,3527,3546,3551,3580,3659,3689-3690,3703,3737,3766,3784,3800-3801,3809,3814,3826-3828,3851,3869,3871,3878,3880,3889,3905,3914,3918,3920,3945,3971,3986,3995,3998,4000-4006,4045,4111,4125-4126,4129,4224,4242,4279,4321,4343,4443-4446,4449,4550,4567,4662,4848,4899-4900,4998,5000-5004,5009,5030,5033,5050-5051,5054,5060-5061,5080,5087,5100-5102,5120,5190,5200,5214,5221-5222,5225-5226,5269,5280,5298,5357,5405,5414,5431-5432,5440,5500,5510,5544,5550,5555,5560,5566,5631,5633,5666,5678-5679,5718,5730,5800-5802,5810-5811,5815,5822,5825,5850,5859,5862,5877,5900-5904,5906-5907,5910-5911,5915,5922,5925,5950,5952,5959-5963,5987-5989,5998-6007,6009,6025,6059,6100-6101,6106,6112,6123,6129,6156,6346,6389,6502,6510,6543,6547,6565-6567,6580,6646,6666-6669,6689,6692,6699,6779,6788-6789,6792,6839,6881,6901,6969,7000-7002,7004,7007,7019,7025,7070,7100,7103,7106,7200-7201,7402,7435,7443,7496,7512,7625,7627,7676,7741,7777-7778,7800,7911,7920-7921,7937-7938,7999-8002,8007-8011,8021-8022,8031,8042,8045,8080-8090,8093,8099-8100,8180-8181,8192-8194,8200,8222,8254,8290-8292,8300,8333,8383,8400,8402,8443,8500,8600,8649,8651-8652,8654,8701,8800,8873,8888,8899,8994,9000-9003,9009-9011,9040,9050,9071,9080-9081,9090-9091,9099-9103,9110-9111,9200,9207,9220,9290,9415,9418,9485,9500,9502-9503,9535,9575,9593-9595,9618,9666,9876-9878,9898,9900,9917,9929,9943-9944,9968,9998-10004,10009-10010,10012,10024-10025,10082,10180,10215,10243,10566,10616-10617,10621,10626,10628-10629,10778,11110-11111,11967,12000,12174,12265,12345,13456,13722,13782-13783,14000,14238,14441-14442,15000,15002-15004,15660,15742,16000-16001,16012,16016,16018,16080,16113,16992-16993,17877,17988,18040,18101,18988,19101,19283,19315,19350,19780,19801,19842,20000,20005,20031,20221-20222,20828,21571,22939,23502,24444,24800,25734-25735,26214,27000,27352-27353,27355-27356,27715,28201,30000,30718,30951,31038,31337,32768-32785,33354,33899,34571-34573,35500,38292,40193,40911,41511,42510,44176,44442-44443,44501,45100,48080,49152-49161,49163,49165,49167,49175-49176,49400,49999-50003,50006,50300,50389,50500,50636,50800,51103,51493,52673,52822,52848,52869,54045,54328,55055-55056,55555,55600,56737-56738,57294,57797,58080,60020,60443,61532,61900,62078,63331,64623,64680,65000,65129,65389"/>
6
+ <verbose level="2"/>
7
+ <debugging level="0"/>
8
+ <taskbegin task="Ping Scan" time="1470376181"/>
9
+ <taskend task="Ping Scan" time="1470376181" extrainfo="1 total hosts"/>
10
+ <taskbegin task="Parallel DNS resolution of 1 host." time="1470376181"/>
11
+ <taskend task="Parallel DNS resolution of 1 host." time="1470376181"/>
12
+ <taskbegin task="SYN Stealth Scan" time="1470376181"/>
13
+ <taskend task="SYN Stealth Scan" time="1470376187" extrainfo="1000 total ports"/>
14
+ <taskbegin task="NSE" time="1470376187"/>
15
+ <taskend task="NSE" time="1470376192"/>
16
+ <host starttime="1470376181" endtime="1470376192">
17
+ <status state="up" reason="reset"/>
18
+ <address addr="45.33.32.156" addrtype="ipv4"/>
19
+ <hostnames>
20
+ <hostname name="scanme.nmap.org" type="user"/>
21
+ <hostname name="scanme.nmap.org" type="PTR"/>
22
+ </hostnames>
23
+ <ports>
24
+ <extraports state="closed" count="979">
25
+ <extrareasons reason="resets" count="979"/>
26
+ </extraports>
27
+ <port protocol="tcp" portid="22">
28
+ <state state="open" reason="syn-ack" reason_ttl="64"/>
29
+ <service name="ssh" method="table" conf="3"/>
30
+ <script id="ssh-hostkey" output="1024 ac:00:a0:1a:82:ff:cc:55:99:dc:67:2b:34:97:6b:75 (DSA)&#10;ssh-dss AAAAB3NzaC1kc3MAAACBAOe8o59vFWZGaBmGPVeJBObEfi1AR8yEUYC/Ufkku3sKhGF7wM2m2ujIeZDK5vqeC0S5EN2xYo6FshCP4FQRYeTxD17nNO4PhwW65qAjDRRU0uHFfSAh5wk+vt4yQztOE++sTd1G9OBLzA8HO99qDmCAxb3zw+GQDEgPjzgyzGZ3AAAAFQCBmE1vROP8IaPkUmhM5xLFta/xHwAAAIEA3EwRfaeOPLL7TKDgGX67Lbkf9UtdlpCdC4doMjGgsznYMwWH6a7Lj3vi4/KmeZZdix6FMdFqq+2vrfT1DRqx0RS0XYdGxnkgS+2g333WYCrUkDCn6RPUWR/1TgGMPHCj7LWCa1ZwJwLWS2KX288Pa2gLOWuhZm2VYKSQx6NEDOIAAACBANxIfprSdBdbo4Ezrh6/X6HSvrhjtZ7MouStWaE714ByO5bS2coM9CyaCwYyrE5qzYiyIfb+1BG3O5nVdDuN95sQ/0bAdBKlkqLFvFqFjVbETF0ri3v97w6MpUawfF75ouDrQ4xdaUOLLEWTso6VFJcM6Jg9bDl0FA0uLZUSDEHL&#10;2048 20:3d:2d:44:62:2a:b0:5a:9d:b5:b3:05:14:c2:a6:b2 (RSA)&#10;ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6afooTZ9mVUGFNEhkMoRR1Btzu64XXwElhCsHw/zVlIx/HXylNbb9+11dm2VgJQ21pxkWDs+L6+EbYyDnvRURTrMTgHL0xseB0EkNqexs9hYZSiqtMx4jtGNtHvsMxZnbxvVUk2dasWvtBkn8J5JagSbzWTQo4hjKMOI1SUlXtiKxAs2F8wiq2EdSuKw/KNk8GfIp1TA+8ccGeAtnsVptTJ4D/8MhAWsROkQzOowQvnBBz2/8ecEvoMScaf+kDfNQowK3gENtSSOqYw9JLOza6YJBPL/aYuQQ0nJ74Rr5vL44aNIlrGI9jJc2x0bV7BeNA5kVuXsmhyfWbbkB8yGd"/>
31
+ </port>
32
+ <port protocol="tcp" portid="25">
33
+ <state state="open" reason="syn-ack" reason_ttl="64"/>
34
+ <service name="smtp" method="table" conf="3"/>
35
+ <script id="smtp-commands" output="linqhotel-auth.coxhn.net Hello scanme.nmap.org [10.11.25.150], SIZE 52428800, 8BITMIME, PIPELINING, HELP, &#10; Commands supported: AUTH HELO EHLO MAIL RCPT DATA NOOP QUIT RSET HELP "/>
36
+ </port>
37
+ <port protocol="tcp" portid="53">
38
+ <state state="open" reason="syn-ack" reason_ttl="64"/>
39
+ <service name="domain" method="table" conf="3"/>
40
+ <script id="dns-nsid" output="&#10; bind.version: 9.6.1&#10;"/>
41
+ </port>
42
+ <port protocol="tcp" portid="80">
43
+ <state state="open" reason="syn-ack" reason_ttl="64"/>
44
+ <service name="http" method="table" conf="3"/>
45
+ <script id="http-methods" output="GET HEAD POST OPTIONS"/>
46
+ <script id="http-title" output="Go ahead and ScanMe!"/>
47
+ <script id="http-favicon" output="Unknown favicon MD5: 156515DA3C0F7DC6B2493BD5CE43F795"/>
48
+ </port>
49
+ <port protocol="tcp" portid="135">
50
+ <state state="filtered" reason="no-response" reason_ttl="0"/>
51
+ <service name="msrpc" method="table" conf="3"/>
52
+ </port>
53
+ <port protocol="tcp" portid="161">
54
+ <state state="filtered" reason="no-response" reason_ttl="0"/>
55
+ <service name="snmp" method="table" conf="3"/>
56
+ </port>
57
+ <port protocol="tcp" portid="163">
58
+ <state state="open" reason="syn-ack" reason_ttl="64"/>
59
+ <service name="cmip-man" method="table" conf="3"/>
60
+ </port>
61
+ <port protocol="tcp" portid="445">
62
+ <state state="filtered" reason="no-response" reason_ttl="0"/>
63
+ <service name="microsoft-ds" method="table" conf="3"/>
64
+ </port>
65
+ <port protocol="tcp" portid="749">
66
+ <state state="open" reason="syn-ack" reason_ttl="64"/>
67
+ <service name="kerberos-adm" method="table" conf="3"/>
68
+ </port>
69
+ <port protocol="tcp" portid="2381">
70
+ <state state="open" reason="syn-ack" reason_ttl="64"/>
71
+ <service name="compaq-https" method="table" conf="3"/>
72
+ </port>
73
+ <port protocol="tcp" portid="2920">
74
+ <state state="open" reason="syn-ack" reason_ttl="64"/>
75
+ <service name="roboeda" method="table" conf="3"/>
76
+ </port>
77
+ <port protocol="tcp" portid="5000">
78
+ <state state="open" reason="syn-ack" reason_ttl="64"/>
79
+ <service name="upnp" method="table" conf="3"/>
80
+ </port>
81
+ <port protocol="tcp" portid="6669">
82
+ <state state="open" reason="syn-ack" reason_ttl="64"/>
83
+ <service name="irc" method="table" conf="3"/>
84
+ <script id="irc-info" output="Unable to open connection"/>
85
+ </port>
86
+ <port protocol="tcp" portid="7496">
87
+ <state state="open" reason="syn-ack" reason_ttl="64"/>
88
+ <service name="unknown" method="table" conf="3"/>
89
+ </port>
90
+ <port protocol="tcp" portid="7920">
91
+ <state state="open" reason="syn-ack" reason_ttl="64"/>
92
+ <service name="unknown" method="table" conf="3"/>
93
+ </port>
94
+ <port protocol="tcp" portid="9929">
95
+ <state state="open" reason="syn-ack" reason_ttl="64"/>
96
+ <service name="nping-echo" method="table" conf="3"/>
97
+ </port>
98
+ <port protocol="tcp" portid="10778">
99
+ <state state="open" reason="syn-ack" reason_ttl="64"/>
100
+ <service name="unknown" method="table" conf="3"/>
101
+ </port>
102
+ <port protocol="tcp" portid="31337">
103
+ <state state="open" reason="syn-ack" reason_ttl="64"/>
104
+ <service name="Elite" method="table" conf="3"/>
105
+ </port>
106
+ <port protocol="tcp" portid="42510">
107
+ <state state="open" reason="syn-ack" reason_ttl="64"/>
108
+ <service name="caerpc" method="table" conf="3"/>
109
+ </port>
110
+ <port protocol="tcp" portid="44176">
111
+ <state state="open" reason="syn-ack" reason_ttl="64"/>
112
+ <service name="unknown" method="table" conf="3"/>
113
+ </port>
114
+ <port protocol="tcp" portid="49163">
115
+ <state state="open" reason="syn-ack" reason_ttl="64"/>
116
+ <service name="unknown" method="table" conf="3"/>
117
+ </port>
118
+ </ports>
119
+ <times srtt="23838" rttvar="2863" to="100000"/>
120
+ </host>
121
+ <taskbegin task="NSE" time="1470376192"/>
122
+ <taskend task="NSE" time="1470376192"/>
123
+ <runstats>
124
+ <finished time="1470376192" timestr="Fri Aug 5 01:49:52 2016" elapsed="11.13" summary="Nmap done at Fri Aug 5 01:49:52 2016; 1 IP address (1 host up) scanned in 11.13 seconds" exit="success"/>
125
+ <hosts up="1" down="0" total="1"/>
126
+ </runstats>
127
+ </nmaprun>