ruby-nmap 0.9.3 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
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: []