ruby-nmap 0.8.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,5 +6,30 @@ shared_examples_for "#scripts" do
6
6
 
7
7
  it { is_expected.to be_kind_of(Hash) }
8
8
  it { is_expected.not_to be_empty }
9
+
10
+ it "should contain String keys" do
11
+ expect(subject.keys).to all(be_kind_of(String))
12
+ end
13
+
14
+ it "should contain String values" do
15
+ expect(subject.values).to all(be_kind_of(String))
16
+ end
17
+ end
18
+ end
19
+
20
+ shared_examples_for "#script_data" do
21
+ describe "#script_data" do
22
+ subject { super().script_data }
23
+
24
+ it { is_expected.to be_kind_of(Hash) }
25
+ it { is_expected.not_to be_empty }
26
+
27
+ it "should contain String keys" do
28
+ expect(subject.keys).to all(be_kind_of(String))
29
+ end
30
+
31
+ it "should contain Arrays or Hashes" do
32
+ expect(subject.values).to all(be_kind_of(Array).or(be_kind_of(Hash)))
33
+ end
9
34
  end
10
35
  end
@@ -5,11 +5,13 @@ require 'nmap/xml'
5
5
  require 'nmap/service'
6
6
 
7
7
  describe Service do
8
- subject { @xml.hosts.first.ports.first.service }
8
+ let(:port) { @xml.host.open_ports.find { |port| port.number == 80 } }
9
+
10
+ subject { port.service }
9
11
 
10
12
  describe "#name" do
11
13
  it "should parse the name" do
12
- expect(subject.name).to eq('ssh')
14
+ expect(subject.name).to eq('http')
13
15
  end
14
16
  end
15
17
 
@@ -27,19 +29,19 @@ describe Service do
27
29
 
28
30
  describe "#product" do
29
31
  it "should parse the product name attribute" do
30
- expect(subject.product).to eq('OpenSSH')
32
+ expect(subject.product).to eq('Apache httpd')
31
33
  end
32
34
  end
33
35
 
34
36
  describe "#version" do
35
37
  it "should parse the version attribute" do
36
- expect(subject.version).to eq('5.3p1 Debian 3ubuntu7')
38
+ expect(subject.version).to eq('2.4.7')
37
39
  end
38
40
  end
39
41
 
40
42
  describe "#extra_info" do
41
43
  it "should parse the extrainfo attribute" do
42
- expect(subject.extra_info).to eq('protocol 2.0')
44
+ expect(subject.extra_info).to eq('(Ubuntu)')
43
45
  end
44
46
  end
45
47
 
@@ -51,7 +53,7 @@ describe Service do
51
53
 
52
54
  describe "#os_type" do
53
55
  it "should parse the ostype attribute" do
54
- expect(subject.os_type).to eq('Linux')
56
+ skip "need a service with the ostype attribute"
55
57
  end
56
58
  end
57
59
 
@@ -73,5 +75,13 @@ describe Service do
73
75
  end
74
76
  end
75
77
 
78
+ describe "#to_s" do
79
+ context "when #product and #version are not nil" do
80
+ it "should include the product and version" do
81
+ expect(subject.to_s).to be == "#{subject.product} #{subject.version}"
82
+ end
83
+ end
84
+ end
85
+
76
86
  it_should_behave_like "CPE"
77
87
  end
@@ -8,6 +8,7 @@ include Nmap
8
8
 
9
9
  RSpec.configure do |spec|
10
10
  spec.before(:all) do
11
- @xml = XML.new('spec/scan.xml')
11
+ @xml = XML.open('spec/scan.xml')
12
+ @local_xml = XML.open('spec/local_scan.xml')
12
13
  end
13
14
  end
@@ -8,7 +8,7 @@ describe TcpTsSequence do
8
8
 
9
9
  describe "#description" do
10
10
  it "should parse the description" do
11
- expect(subject.description).to eq("1000HZ")
11
+ expect(subject.description).to eq("1000HZ").or(eq('other'))
12
12
  end
13
13
  end
14
14
 
@@ -72,7 +72,7 @@ describe XML do
72
72
  end
73
73
 
74
74
  it "should parse the scanner arguments" do
75
- expect(subject.scanner.arguments).to eq('nmap -v -sS -sU -A -O -oX spec/scan.xml scanme.nmap.org')
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
76
  end
77
77
 
78
78
  it "should parse the scanner start time" do
@@ -148,7 +148,7 @@ describe XML do
148
148
 
149
149
  it "should parse the end time" do
150
150
  expect(subject.end_time).to be_kind_of(Time)
151
- expect(subject.end_time).to be > subject.start_time
151
+ expect(subject.end_time).to be >= subject.start_time
152
152
  end
153
153
 
154
154
  it "should parse the extrainfo" do
@@ -163,6 +163,18 @@ describe XML do
163
163
  it { is_expected.to all(be_kind_of(ScanTask)) }
164
164
  end
165
165
 
166
+ describe "#prescript" do
167
+ subject { super().prescript }
168
+
169
+ pending "scan.xml does not currently include any prescript elements"
170
+ end
171
+
172
+ describe "#postscript" do
173
+ subject { super().postscript }
174
+
175
+ pending "scan.xml does not currently include any postscript elements"
176
+ end
177
+
166
178
  describe "#each_host" do
167
179
  subject { super().each_host.first }
168
180
 
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-nmap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Postmodern
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-16 00:00:00.000000000 Z
11
+ date: 2016-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.3'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rprogram
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0.3'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0.3'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.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
54
  version: '1.0'
55
55
  description: A Ruby interface to Nmap, the exploration tool and security / port scanner.
@@ -61,11 +61,11 @@ extra_rdoc_files:
61
61
  - LICENSE.txt
62
62
  - README.md
63
63
  files:
64
- - .document
65
- - .gitignore
66
- - .rspec
67
- - .travis.yml
68
- - .yardopts
64
+ - ".document"
65
+ - ".gitignore"
66
+ - ".rspec"
67
+ - ".travis.yml"
68
+ - ".yardopts"
69
69
  - ChangeLog.md
70
70
  - Gemfile
71
71
  - LICENSE.txt
@@ -75,21 +75,24 @@ files:
75
75
  - lib/nmap.rb
76
76
  - lib/nmap/address.rb
77
77
  - lib/nmap/cpe.rb
78
- - lib/nmap/cpe/cpe.rb
79
78
  - lib/nmap/cpe/url.rb
80
79
  - lib/nmap/hop.rb
81
80
  - lib/nmap/host.rb
81
+ - lib/nmap/host_script.rb
82
82
  - lib/nmap/hostname.rb
83
83
  - lib/nmap/ip_id_sequence.rb
84
84
  - lib/nmap/os.rb
85
85
  - lib/nmap/os_class.rb
86
86
  - lib/nmap/os_match.rb
87
87
  - lib/nmap/port.rb
88
+ - lib/nmap/postscript.rb
89
+ - lib/nmap/prescript.rb
88
90
  - lib/nmap/program.rb
89
91
  - lib/nmap/run_stat.rb
90
92
  - lib/nmap/scan.rb
91
93
  - lib/nmap/scan_task.rb
92
94
  - lib/nmap/scanner.rb
95
+ - lib/nmap/scripts.rb
93
96
  - lib/nmap/sequence.rb
94
97
  - lib/nmap/service.rb
95
98
  - lib/nmap/status.rb
@@ -105,14 +108,18 @@ files:
105
108
  - spec/cpe/url_spec.rb
106
109
  - spec/cpe_examples.rb
107
110
  - spec/hop_spec.rb
111
+ - spec/host_script_spec.rb
108
112
  - spec/host_spec.rb
109
113
  - spec/hostname_spec.rb
110
114
  - spec/ip_id_sequence_spec.rb
115
+ - spec/local_scan.xml
111
116
  - spec/nmap_spec.rb
112
117
  - spec/os_class_spec.rb
113
118
  - spec/os_match_spec.rb
114
119
  - spec/os_spec.rb
115
120
  - spec/port_spec.rb
121
+ - spec/postscript_spec.rb
122
+ - spec/prescript_spec.rb
116
123
  - spec/run_stat_spec.rb
117
124
  - spec/scan.xml
118
125
  - spec/scan_spec.rb
@@ -139,18 +146,18 @@ require_paths:
139
146
  - lib
140
147
  required_ruby_version: !ruby/object:Gem::Requirement
141
148
  requirements:
142
- - - '>='
149
+ - - ">="
143
150
  - !ruby/object:Gem::Version
144
- version: '0'
151
+ version: 2.0.0
145
152
  required_rubygems_version: !ruby/object:Gem::Requirement
146
153
  requirements:
147
- - - '>='
154
+ - - ">="
148
155
  - !ruby/object:Gem::Version
149
- version: '0'
156
+ version: 2.0.0
150
157
  requirements:
151
158
  - nmap >= 5.00
152
159
  rubyforge_project:
153
- rubygems_version: 2.1.11
160
+ rubygems_version: 2.4.7
154
161
  signing_key:
155
162
  specification_version: 4
156
163
  summary: A Ruby interface to Nmap.
@@ -158,6 +165,7 @@ test_files:
158
165
  - spec/address_spec.rb
159
166
  - spec/cpe/url_spec.rb
160
167
  - spec/hop_spec.rb
168
+ - spec/host_script_spec.rb
161
169
  - spec/host_spec.rb
162
170
  - spec/hostname_spec.rb
163
171
  - spec/ip_id_sequence_spec.rb
@@ -166,6 +174,8 @@ test_files:
166
174
  - spec/os_match_spec.rb
167
175
  - spec/os_spec.rb
168
176
  - spec/port_spec.rb
177
+ - spec/postscript_spec.rb
178
+ - spec/prescript_spec.rb
169
179
  - spec/run_stat_spec.rb
170
180
  - spec/scan_spec.rb
171
181
  - spec/scan_task_spec.rb
@@ -1,45 +0,0 @@
1
- require 'nmap/cpe/url'
2
-
3
- module Nmap
4
- #
5
- # Mixins that adds methods for parsing [Common Platform Enumeration
6
- # (CPE)][CPE] information.
7
- #
8
- # [CPE]: http://nmap.org/book/output-formats-cpe.html
9
- #
10
- # @since 0.7.0
11
- #
12
- module CPE
13
- #
14
- # Parses each Common Platform Enumeration (CPE) String.
15
- #
16
- # @yield [cpe]
17
- # Passes each CPE URL to the given block.
18
- #
19
- # @yieldparam [URL] cpe
20
- # The CPE URL.
21
- #
22
- # @return [Enumerator]
23
- # If no block is given, an enumerator object will be returned.
24
- #
25
- def each_cpe
26
- return enum_for(__method__) unless block_given?
27
-
28
- @node.xpath('//cpe').each do |cpe|
29
- yield URL.parse(cpe.inner_text)
30
- end
31
-
32
- return self
33
- end
34
-
35
- #
36
- # Parses each Common Platform Enumeration (CPE) String.
37
- #
38
- # @return [Array<URL>]
39
- # The CPE URLs.
40
- #
41
- def cpe
42
- each_cpe.to_a
43
- end
44
- end
45
- end