ruby-nmap 0.9.3 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: '07049218e947bfd368b40b59010f838c9e298f25'
4
- data.tar.gz: 94176a6041fc4da9a2adcd7ebf4ea9714ff6b6e2
2
+ SHA256:
3
+ metadata.gz: aad3443fe83a6bdd00408ad9c95f74249bd0d4e84a67d86ab2f9e3d301b1b949
4
+ data.tar.gz: 3062ec23f7150260cd1be1bb4d82cf96bf149f6ed2471126aea86808ac0ff506
5
5
  SHA512:
6
- metadata.gz: 6b753b489e1f5f8ee6e03ea9162e7a120d3fdfcb97d138f3cd0d6b02f521b0630240322e8ebb76b88a54437095b1ac40e2f2271e1692b0665df8f7203ee8bd7f
7
- data.tar.gz: f00bec7139dcd52ef9f4d351da5c3821fa0a2f20cb3570927b11b80f0c90f74cdf32876a252f1ad9b4a1b8051921c493af848991896d857b657381431438285f
6
+ metadata.gz: e125594be07aea783106ecc9342b7936016cb34bee18f0ead7a22f8eecb2c78bd2ccdbfd1d05d54cb9c17868fa43d542b1bd262d9340e0c8cc3129c72756ee7a
7
+ data.tar.gz: 6aa87e42de1eaa60c84020e19142364d126c667a76ed5a906178a78fb4ec85bd997619cb21ab3bbadb903519c29b56571a183c372bfb94b43d3be1534078ac70
@@ -1,10 +1,12 @@
1
1
  language: ruby
2
2
  before_install:
3
3
  - sudo apt-get install libxml2-dev libxslt1-dev
4
+ - gem update --system
5
+ - gem install bundler -v "~> 2.0"
4
6
  rvm:
5
- - 2.1.9
6
- - 2.2.4
7
- - 2.3.1
7
+ - 2.5
8
+ - 2.6
9
+ - 2.7
8
10
  - jruby
9
11
  - rbx
10
12
  matrix:
@@ -1,3 +1,11 @@
1
+ ### 0.10.0 / 2020-03-17
2
+
3
+ * Added `Nmap::Task#exclude_ports` for the `--exclude-ports` option.
4
+ * Added {Nmap::Status#reason_ttl}.
5
+ * Added {Nmap::Port#reason_ttl}.
6
+ * Added {Nmap::XML#task}.
7
+ * Alias {Nmap::ScanTask#extra_info} to {Nmap::ScanTask#extrainfo}.
8
+
1
9
  ### 0.9.3 / 2018-05-01
2
10
 
3
11
  * Added missing `Nmap::Task#defeat_icmp_ratelimit` for the
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009-2018 Postmodern
1
+ Copyright (c) 2009-2020 Postmodern
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -92,7 +92,7 @@ Print NSE script output from an XML scan file:
92
92
 
93
93
  ## License
94
94
 
95
- Copyright (c) 2009-2018 Postmodern
95
+ Copyright (c) 2009-2020 Postmodern
96
96
 
97
97
  See {file:LICENSE.txt} for license information.
98
98
 
data/Rakefile CHANGED
@@ -20,7 +20,7 @@ Gem::Tasks.new
20
20
  require 'rspec/core/rake_task'
21
21
  RSpec::Core::RakeTask.new
22
22
 
23
- task :spec => 'spec/scan.xml'
23
+ task :spec => 'spec/fixtures/scan.xml'
24
24
  task :test => :spec
25
25
  task :default => :spec
26
26
 
@@ -28,7 +28,7 @@ require 'yard'
28
28
  YARD::Rake::YardocTask.new
29
29
  task :doc => :yard
30
30
 
31
- file 'spec/scan.xml' do
31
+ file 'spec/fixtures/scan.xml' do |t|
32
32
  puts ">>> Scanning scanme.nmap.org ..."
33
- sh 'sudo nmap -v -sS -sU -A -O --script ssh2-enum-algos,ssh-hostkey -oX spec/scan.xml scanme.nmap.org'
33
+ sh "sudo nmap -v -sS -sU -A -O --script ssh2-enum-algos,ssh-hostkey -oX #{t.name} scanme.nmap.org"
34
34
  end
@@ -19,4 +19,4 @@ dependencies:
19
19
  rprogram: ~> 0.3
20
20
 
21
21
  development_dependencies:
22
- bundler: ~> 1.0
22
+ bundler: ~> 2.0
@@ -67,7 +67,8 @@ module Nmap
67
67
 
68
68
  @status = Status.new(
69
69
  status['state'].to_sym,
70
- status['reason']
70
+ status['reason'],
71
+ status['reason_ttl'].to_i
71
72
  )
72
73
  end
73
74
 
@@ -59,6 +59,17 @@ module Nmap
59
59
  @reason ||= @node.at_xpath('state/@reason').inner_text
60
60
  end
61
61
 
62
+ #
63
+ # The reason TTL.
64
+ #
65
+ # @return [Integer]
66
+ #
67
+ # @since 0.10.0
68
+ #
69
+ def reason_ttl
70
+ @reason ||= @node.at_xpath('state/@reason_ttl').inner_text.to_i
71
+ end
72
+
62
73
  #
63
74
  # The fingerprinted service of the port.
64
75
  #
@@ -22,6 +22,9 @@ module Nmap
22
22
  super
23
23
  end
24
24
 
25
+ # @since 0.10.0
26
+ alias extra_info extrainfo
27
+
25
28
  #
26
29
  # The duration of the scan task.
27
30
  #
@@ -2,7 +2,7 @@ module Nmap
2
2
  #
3
3
  # Represents the Status of a {Host}.
4
4
  #
5
- class Status < Struct.new(:state, :reason)
5
+ class Status < Struct.new(:state, :reason, :reason_ttl)
6
6
 
7
7
  #
8
8
  # Converts the status to a String.
@@ -52,6 +52,7 @@ module Nmap
52
52
  # ### Port Specification and Scan Order:
53
53
  #
54
54
  # * `-p` - `nmap.ports`
55
+ # * `--exclude-ports` - `nmap.exclude_ports`
55
56
  # * `-F` - `nmap.fast`
56
57
  # * `-r` - `nmap.consecutively`
57
58
  # * `--top-ports` - `nmap.top_ports`
@@ -230,6 +231,11 @@ module Nmap
230
231
  [opt.flag, format_port_list(value)]
231
232
  end
232
233
  end
234
+ long_option :flag => '--exclude-ports' do |opt,value|
235
+ unless value.empty?
236
+ [opt.flag, format_ports(value)]
237
+ end
238
+ end
233
239
  short_option :flag => '-F', :name => :fast
234
240
  short_option :flag => '-r', :name => :consecutively
235
241
  long_option :flag => '--top-ports'
@@ -1,4 +1,4 @@
1
1
  module Nmap
2
2
  # ruby-nmap version
3
- VERSION = '0.9.3'
3
+ VERSION = '0.10.0'
4
4
  end
@@ -241,6 +241,21 @@ module Nmap
241
241
  each_task.to_a
242
242
  end
243
243
 
244
+ #
245
+ # Finds the task with the given name.
246
+ #
247
+ # @param [String] name
248
+ # The task name to search for.
249
+ #
250
+ # @return [ScanTask, nil]
251
+ # The scan task with the matching name or `nil`.
252
+ #
253
+ # @since 0.10.0
254
+ #
255
+ def task(name)
256
+ each_task.find { |scan_task| scan_task.name == name }
257
+ end
258
+
244
259
  #
245
260
  # The NSE scripts ran before the scan.
246
261
  #
@@ -2,104 +2,59 @@
2
2
 
3
3
  require 'yaml'
4
4
 
5
- Gem::Specification.new do |gemspec|
6
- root = File.dirname(__FILE__)
7
- lib_dir = File.join(root,'lib')
8
- files = `git ls-files`.split($/)
5
+ Gem::Specification.new do |gem|
6
+ gemspec = YAML.load_file('gemspec.yml')
9
7
 
10
- filter_files = lambda { |paths|
11
- files & case paths
12
- when Array
13
- paths
14
- when String
15
- Dir[paths]
16
- end
17
- }
8
+ gem.name = gemspec.fetch('name')
9
+ gem.version = gemspec.fetch('version') do
10
+ lib_dir = File.join(File.dirname(__FILE__),'lib')
11
+ $LOAD_PATH << lib_dir unless $LOAD_PATH.include?(lib_dir)
18
12
 
19
- version = {
20
- :file => 'nmap/version',
21
- :constant => 'Nmap::VERSION'
22
- }
13
+ require 'nmap/version'
14
+ Nmap::VERSION
15
+ end
23
16
 
24
- defaults = {
25
- 'name' => File.basename(root),
26
- 'files' => files,
27
- 'require_paths' => ['ext', 'lib'].select { |dir| File.directory?(dir) },
28
- 'executables' => filter_files['bin/*'].map { |path| File.basename(path) },
29
- 'test_files' => filter_files['{test/{**/}*_test.rb,spec/{**/}*_spec.rb}'],
30
- 'doc_files' => filter_files['*.{txt,rdoc,md,markdown,tt,textile}'],
31
- 'extra_doc_files' => filter_files['*.{txt,rdoc,md,markdown,tt,textile}']
32
- }
17
+ gem.summary = gemspec['summary']
18
+ gem.description = gemspec['description']
19
+ gem.licenses = Array(gemspec['license'])
20
+ gem.authors = Array(gemspec['authors'])
21
+ gem.email = gemspec['email']
22
+ gem.homepage = gemspec['homepage']
33
23
 
34
- metadata = defaults.merge(YAML.load_file('gemspec.yml'))
24
+ glob = lambda { |patterns| gem.files & Dir[*patterns] }
35
25
 
36
- gemspec.name = metadata['name']
37
- gemspec.version = if metadata['version']
38
- metadata['version']
39
- else
40
- $LOAD_PATH << lib_dir unless $LOAD_PATH.include?(lib_dir)
26
+ gem.files = `git ls-files`.split($/)
27
+ gem.files = glob[gemspec['files']] if gemspec['files']
41
28
 
42
- require version[:file]
43
- eval(version[:constant])
44
- end
45
-
46
- gemspec.summary = metadata.fetch('summary',metadata['description'])
47
- gemspec.description = metadata.fetch('description',metadata['summary'])
48
-
49
- gemspec.licenses = Array(metadata['license'])
50
- gemspec.authors = Array(metadata['authors'])
51
-
52
- gemspec.email = metadata['email']
53
- gemspec.homepage = metadata['homepage']
54
-
55
- gemspec.require_paths = Array(metadata['require_paths'])
56
- gemspec.files = filter_files[metadata['files']]
57
- gemspec.files += Array(metadata['generated_files'])
58
- gemspec.executables = metadata['executables']
59
- gemspec.extensions = metadata['extensions']
60
-
61
- if Gem::VERSION < '1.7.'
62
- gemspec.default_executable = gemspec.executables.first
29
+ gem.executables = gemspec.fetch('executables') do
30
+ glob['bin/*'].map { |path| File.basename(path) }
63
31
  end
32
+ gem.default_executable = gem.executables.first if Gem::VERSION < '1.7.'
64
33
 
65
- gemspec.test_files = filter_files[metadata['test_files']]
66
- gemspec.extra_rdoc_files = Array(metadata['extra_doc_files'])
67
-
68
- gemspec.post_install_message = metadata['post_install_message']
69
- gemspec.requirements = Array(metadata['requirements'])
34
+ gem.extensions = glob[gemspec['extensions'] || 'ext/**/extconf.rb']
35
+ gem.test_files = glob[gemspec['test_files'] || '{test/{**/}*_test.rb']
36
+ gem.extra_rdoc_files = glob[gemspec['extra_doc_files'] || '*.{txt,md}']
70
37
 
71
- if gemspec.respond_to?(:required_ruby_version=)
72
- gemspec.required_ruby_version = metadata['required_ruby_version']
73
- end
74
-
75
- if gemspec.respond_to?(:required_rubygems_version=)
76
- gemspec.required_rubygems_version = metadata['required_ruby_version']
77
- end
38
+ gem.require_paths = Array(gemspec.fetch('require_paths') {
39
+ %w[ext lib].select { |dir| File.directory?(dir) }
40
+ })
78
41
 
79
- parse_versions = lambda { |versions|
80
- case versions
81
- when Array
82
- versions.map { |v| v.to_s }
83
- when String
84
- versions.split(/,\s*/)
85
- end
86
- }
42
+ gem.requirements = Array(gemspec['requirements'])
43
+ gem.required_ruby_version = gemspec['required_ruby_version']
44
+ gem.required_rubygems_version = gemspec['required_rubygems_version']
45
+ gem.post_install_message = gemspec['post_install_message']
87
46
 
88
- if metadata['dependencies']
89
- metadata['dependencies'].each do |name,versions|
90
- gemspec.add_dependency(name,parse_versions[versions])
91
- end
92
- end
47
+ split = lambda { |string| string.split(/,\s*/) }
93
48
 
94
- if metadata['runtime_dependencies']
95
- metadata['runtime_dependencies'].each do |name,versions|
96
- gemspec.add_runtime_dependency(name,parse_versions[versions])
49
+ if gemspec['dependencies']
50
+ gemspec['dependencies'].each do |name,versions|
51
+ gem.add_dependency(name,split[versions])
97
52
  end
98
53
  end
99
54
 
100
- if metadata['development_dependencies']
101
- metadata['development_dependencies'].each do |name,versions|
102
- gemspec.add_development_dependency(name,parse_versions[versions])
55
+ if gemspec['development_dependencies']
56
+ gemspec['development_dependencies'].each do |name,versions|
57
+ gem.add_development_dependency(name,split[versions])
103
58
  end
104
59
  end
105
60
  end
@@ -2,7 +2,7 @@
2
2
  <!DOCTYPE nmaprun PUBLIC "-//IDN nmap.org//DTD Nmap XML 1.04//EN" "https://svn.nmap.org/nmap/docs/nmap.dtd">
3
3
  <?xml-stylesheet href="file:///usr/bin/../share/nmap/nmap.xsl" type="text/xsl"?>
4
4
  <!-- Nmap 6.45 scan initiated Thu Apr 16 20:12:47 2015 as: nmap -v -sS -A -O -&#45;script ssh2-enum-algos -oX spec/local_scan.xml 10.0.0.2 -->
5
- <nmaprun scanner="nmap" args="nmap -v -sS -A -O -&#45;script ssh2-enum-algos -oX spec/local_scan.xml 10.0.0.2" start="1429240367" startstr="Thu Apr 16 20:12:47 2015" version="6.45" xmloutputversion="1.04">
5
+ <nmaprun scanner="nmap" args="nmap -v -sS -A -O -&#45;script ssh2-enum-algos -oX spec/fixtures/local_scan.xml 10.0.0.2" start="1429240367" startstr="Thu Apr 16 20:12:47 2015" version="6.45" xmloutputversion="1.04">
6
6
  <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"/>
7
7
  <verbose level="1"/>
8
8
  <debugging level="0"/>
@@ -2,7 +2,7 @@
2
2
  <!DOCTYPE nmaprun PUBLIC "-//IDN nmap.org//DTD Nmap XML 1.04//EN" "https://svn.nmap.org/nmap/docs/nmap.dtd">
3
3
  <?xml-stylesheet href="file:///usr/bin/../share/nmap/nmap.xsl" type="text/xsl"?>
4
4
  <!-- Nmap 6.45 scan initiated Fri Apr 17 13:23:10 2015 as: nmap -v -sS -sU -A -O -&#45;script ssh2-enum-algos,ssh-hostkey -oX spec/scan.xml scanme.nmap.org -->
5
- <nmaprun scanner="nmap" args="nmap -v -sS -sU -A -O -&#45;script ssh2-enum-algos,ssh-hostkey -oX spec/scan.xml scanme.nmap.org" start="1429302190" startstr="Fri Apr 17 13:23:10 2015" version="6.45" xmloutputversion="1.04">
5
+ <nmaprun scanner="nmap" args="nmap -v -sS -sU -A -O -&#45;script ssh2-enum-algos,ssh-hostkey -oX spec/fixtures/scan.xml scanme.nmap.org" start="1429302190" startstr="Fri Apr 17 13:23:10 2015" version="6.45" xmloutputversion="1.04">
6
6
  <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"/>
7
7
  <scaninfo type="udp" protocol="udp" numservices="1000" services="2-3,7,9,13,17,19-23,37-38,42,49,53,67-69,80,88,111-113,120,123,135-139,158,161-162,177,192,199,207,217,363,389,402,407,427,434,443,445,464,497,500,502,512-515,517-518,520,539,559,593,623,626,631,639,643,657,664,682-689,764,767,772-776,780-782,786,789,800,814,826,829,838,902-903,944,959,965,983,989-990,996-1001,1007-1008,1012-1014,1019-1051,1053-1060,1064-1070,1072,1080-1081,1087-1088,1090,1100-1101,1105,1124,1200,1214,1234,1346,1419,1433-1434,1455,1457,1484-1485,1524,1645-1646,1701,1718-1719,1761,1782,1804,1812-1813,1885-1886,1900-1901,1993,2000,2002,2048-2049,2051,2148,2160-2161,2222-2223,2343,2345,2362,2967,3052,3130,3283,3296,3343,3389,3401,3456-3457,3659,3664,3702-3703,4000,4008,4045,4444,4500,4666,4672,5000-5003,5010,5050,5060,5093,5351,5353,5355,5500,5555,5632,6000-6002,6004,6050,6346-6347,6970-6971,7000,7938,8000-8001,8010,8181,8193,8900,9000-9001,9020,9103,9199-9200,9370,9876-9877,9950,10000,10080,11487,16086,16402,16420,16430,16433,16449,16498,16503,16545,16548,16573,16674,16680,16697,16700,16708,16711,16739,16766,16779,16786,16816,16829,16832,16838-16839,16862,16896,16912,16918-16919,16938-16939,16947-16948,16970,16972,16974,17006,17018,17077,17091,17101,17146,17184-17185,17205,17207,17219,17236-17237,17282,17302,17321,17331-17332,17338,17359,17417,17423-17424,17455,17459,17468,17487,17490,17494,17505,17533,17549,17573,17580,17585,17592,17605,17615-17616,17629,17638,17663,17673-17674,17683,17726,17754,17762,17787,17814,17823-17824,17836,17845,17888,17939,17946,17989,18004,18081,18113,18134,18156,18228,18234,18250,18255,18258,18319,18331,18360,18373,18449,18485,18543,18582,18605,18617,18666,18669,18676,18683,18807,18818,18821,18830,18832,18835,18869,18883,18888,18958,18980,18985,18987,18991,18994,18996,19017,19022,19039,19047,19075,19096,19120,19130,19140-19141,19154,19161,19165,19181,19193,19197,19222,19227,19273,19283,19294,19315,19322,19332,19374,19415,19482,19489,19500,19503-19504,19541,19600,19605,19616,19624-19625,19632,19639,19647,19650,19660,19662-19663,19682-19683,19687,19695,19707,19717-19719,19722,19728,19789,19792,19933,19935-19936,19956,19995,19998,20003-20004,20019,20031,20082,20117,20120,20126,20129,20146,20154,20164,20206,20217,20249,20262,20279,20288,20309,20313,20326,20359-20360,20366,20380,20389,20409,20411,20423-20425,20445,20449,20464-20465,20518,20522,20525,20540,20560,20665,20678-20679,20710,20717,20742,20752,20762,20791,20817,20842,20848,20851,20865,20872,20876,20884,20919,21000,21016,21060,21083,21104,21111,21131,21167,21186,21206-21207,21212,21247,21261,21282,21298,21303,21318,21320,21333,21344,21354,21358,21360,21364,21366,21383,21405,21454,21468,21476,21514,21524-21525,21556,21566,21568,21576,21609,21621,21625,21644,21649,21655,21663,21674,21698,21702,21710,21742,21780,21784,21800,21803,21834,21842,21847,21868,21898,21902,21923,21948,21967,22029,22043,22045,22053,22055,22105,22109,22123-22124,22341,22692,22695,22739,22799,22846,22914,22986,22996,23040,23176,23354,23531,23557,23608,23679,23781,23965,23980,24007,24279,24511,24594,24606,24644,24854,24910,25003,25157,25240,25280,25337,25375,25462,25541,25546,25709,25931,26407,26415,26720,26872,26966,27015,27195,27444,27473,27482,27707,27892,27899,28122,28369,28465,28493,28543,28547,28641,28840,28973,29078,29243,29256,29810,29823,29977,30263,30303,30365,30544,30656,30697,30704,30718,30975,31059,31073,31109,31189,31195,31335,31337,31365,31625,31681,31731,31891,32345,32385,32528,32768-32780,32798,32815,32818,32931,33030,33249,33281,33354-33355,33459,33717,33744,33866,33872,34038,34079,34125,34358,34422,34433,34555,34570,34577-34580,34758,34796,34855,34861-34862,34892,35438,35702,35777,35794,36108,36206,36384,36458,36489,36669,36778,36893,36945,37144,37212,37393,37444,37602,37761,37783,37813,37843,38037,38063,38293,38412,38498,38615,39213,39217,39632,39683,39714,39723,39888,40019,40116,40441,40539,40622,40708,40711,40724,40732,40805,40847,40866,40915,41058,41081,41308,41370,41446,41524,41638,41702,41774,41896,41967,41971,42056,42172,42313,42431,42434,42508,42557,42577,42627,42639,43094,43195,43370,43514,43686,43824,43967,44101,44160,44179,44185,44190,44253,44334,44508,44923,44946,44968,45247,45380,45441,45685,45722,45818,45928,46093,46532,46836,47624,47765,47772,47808,47915,47981,48078,48189,48255,48455,48489,48761,49152-49163,49165-49182,49184-49202,49204-49205,49207-49216,49220,49222,49226,49259,49262,49306,49350,49360,49393,49396,49503,49640,49968,50099,50164,50497,50612,50708,50919,51255,51456,51554,51586,51690,51717,51905,51972,52144,52225,52503,53006,53037,53571,53589,53838,54094,54114,54281,54321,54711,54807,54925,55043,55544,55587,56141,57172,57409-57410,57813,57843,57958,57977,58002,58075,58178,58419,58631,58640,58797,59193,59207,59765,59846,60172,60381,60423,61024,61142,61319,61322,61370,61412,61481,61550,61685,61961,62154,62287,62575,62677,62699,62958,63420,63555,64080,64481,64513,64590,64727,65024"/>
8
8
  <verbose level="1"/>
@@ -67,6 +67,10 @@ describe Host do
67
67
  eq('echo-reply').or \
68
68
  eq('reset')
69
69
  end
70
+
71
+ it "should parse the reason_ttl" do
72
+ expect(subject.reason_ttl).to be_kind_of(Integer)
73
+ end
70
74
  end
71
75
 
72
76
  let(:ipv4) { '45.33.32.156' }
@@ -30,6 +30,12 @@ describe Port do
30
30
  end
31
31
  end
32
32
 
33
+ describe "#reason_ttl" do
34
+ it "should parse the reason_ttl attribute" do
35
+ expect(subject.reason_ttl).to be_kind_of(Integer)
36
+ end
37
+ end
38
+
33
39
  describe "#service" do
34
40
  subject { super().service }
35
41
 
@@ -8,7 +8,7 @@ include Nmap
8
8
 
9
9
  RSpec.configure do |spec|
10
10
  spec.before(:all) do
11
- @xml = XML.open('spec/scan.xml')
12
- @local_xml = XML.open('spec/local_scan.xml')
11
+ @xml = XML.open('spec/fixtures/scan.xml')
12
+ @local_xml = XML.open('spec/fixtures/local_scan.xml')
13
13
  end
14
14
  end
@@ -5,8 +5,9 @@ describe Status do
5
5
  describe "#to_s" do
6
6
  let(:state) { :up }
7
7
  let(:reason) { 'syn-ack' }
8
+ let(:reason_ttl) { 100 }
8
9
 
9
- subject { described_class.new(state,reason) }
10
+ subject { described_class.new(state,reason,reason_ttl) }
10
11
 
11
12
  it "should return the state" do
12
13
  expect(subject.to_s).to eq(state.to_s)
@@ -2,7 +2,8 @@ require 'spec_helper'
2
2
  require 'nmap/xml'
3
3
 
4
4
  describe XML do
5
- let(:path) { File.expand_path('spec/scan.xml') }
5
+ let(:file) { 'spec/fixtures/scan.xml' }
6
+ let(:path) { File.expand_path(file) }
6
7
 
7
8
  subject { described_class.new(path) }
8
9
 
@@ -72,7 +73,7 @@ describe XML do
72
73
  end
73
74
 
74
75
  it "should parse the scanner arguments" do
75
- expect(subject.scanner.arguments).to eq('nmap -v -sS -sU -A -O --script ssh2-enum-algos,ssh-hostkey -oX spec/scan.xml scanme.nmap.org')
76
+ expect(subject.scanner.arguments).to eq("nmap -v -sS -sU -A -O --script ssh2-enum-algos,ssh-hostkey -oX #{file} scanme.nmap.org")
76
77
  end
77
78
 
78
79
  it "should parse the scanner start time" do
@@ -163,6 +164,24 @@ describe XML do
163
164
  it { is_expected.to all(be_kind_of(ScanTask)) }
164
165
  end
165
166
 
167
+ describe "#task" do
168
+ context "when the task with the given name exists" do
169
+ it "must return the matching task" do
170
+ name = "Parallel DNS resolution of 1 host."
171
+ task = subject.task(name)
172
+
173
+ expect(task).to be_kind_of(ScanTask)
174
+ expect(task.name).to be == name
175
+ end
176
+ end
177
+
178
+ context "when no task with the given name can be found" do
179
+ it "must return nil" do
180
+ expect(subject.task('Foo')).to be(nil)
181
+ end
182
+ end
183
+ end
184
+
166
185
  describe "#prescript" do
167
186
  subject { super().prescript }
168
187
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-nmap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.3
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Postmodern
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-01 00:00:00.000000000 Z
11
+ date: 2020-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.0'
47
+ version: '2.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.0'
54
+ version: '2.0'
55
55
  description: A Ruby interface to Nmap, the exploration tool and security / port scanner.
56
56
  email: postmodern.mod3@gmail.com
57
57
  executables: []
@@ -107,12 +107,13 @@ files:
107
107
  - spec/address_spec.rb
108
108
  - spec/cpe/url_spec.rb
109
109
  - spec/cpe_examples.rb
110
+ - spec/fixtures/local_scan.xml
111
+ - spec/fixtures/scan.xml
110
112
  - spec/hop_spec.rb
111
113
  - spec/host_script_spec.rb
112
114
  - spec/host_spec.rb
113
115
  - spec/hostname_spec.rb
114
116
  - spec/ip_id_sequence_spec.rb
115
- - spec/local_scan.xml
116
117
  - spec/nmap_spec.rb
117
118
  - spec/os_class_spec.rb
118
119
  - spec/os_match_spec.rb
@@ -121,7 +122,6 @@ files:
121
122
  - spec/postscript_spec.rb
122
123
  - spec/prescript_spec.rb
123
124
  - spec/run_stat_spec.rb
124
- - spec/scan.xml
125
125
  - spec/scan_spec.rb
126
126
  - spec/scan_task_spec.rb
127
127
  - spec/scanner_spec.rb
@@ -153,38 +153,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
153
  requirements:
154
154
  - - ">="
155
155
  - !ruby/object:Gem::Version
156
- version: 2.0.0
156
+ version: '0'
157
157
  requirements:
158
158
  - nmap >= 5.00
159
- rubyforge_project:
160
- rubygems_version: 2.6.14
159
+ rubygems_version: 3.0.3
161
160
  signing_key:
162
161
  specification_version: 4
163
162
  summary: A Ruby interface to Nmap.
164
- test_files:
165
- - spec/address_spec.rb
166
- - spec/cpe/url_spec.rb
167
- - spec/hop_spec.rb
168
- - spec/host_script_spec.rb
169
- - spec/host_spec.rb
170
- - spec/hostname_spec.rb
171
- - spec/ip_id_sequence_spec.rb
172
- - spec/nmap_spec.rb
173
- - spec/os_class_spec.rb
174
- - spec/os_match_spec.rb
175
- - spec/os_spec.rb
176
- - spec/port_spec.rb
177
- - spec/postscript_spec.rb
178
- - spec/prescript_spec.rb
179
- - spec/run_stat_spec.rb
180
- - spec/scan_spec.rb
181
- - spec/scan_task_spec.rb
182
- - spec/scanner_spec.rb
183
- - spec/service_spec.rb
184
- - spec/status_spec.rb
185
- - spec/task_spec.rb
186
- - spec/tcp_sequence_spec.rb
187
- - spec/tcp_ts_sequence_spec.rb
188
- - spec/traceroute_spec.rb
189
- - spec/uptime_spec.rb
190
- - spec/xml_spec.rb
163
+ test_files: []