cms_scanner 0.0.15 → 0.0.16
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 +4 -4
- data/cms_scanner.gemspec +1 -1
- data/lib/cms_scanner/finders/finder/enumerator.rb +9 -1
- data/lib/cms_scanner/finders/independent_finders.rb +1 -1
- data/lib/cms_scanner/finders/same_type_finders.rb +1 -1
- data/lib/cms_scanner/finders/unique_finders.rb +3 -1
- data/lib/cms_scanner/version.rb +1 -1
- data/spec/lib/finders/independent_finders_spec.rb +4 -2
- data/spec/lib/finders/same_type_finders_spec.rb +28 -8
- data/spec/lib/finders/unique_finders_spec.rb +65 -20
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3954c9c3eb90a7f8acded64914b7b0af297ffffa
|
4
|
+
data.tar.gz: 4379facdd8238326dc6f770bd095db747986db95
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8fdefebdce42065da6bdcb82b941facbdae7f2ac2d0fec363c6ff6e1043257546fe257c100509b1e7d7869ce56ce04b3e9ddb19d1b173e1ff58ccd15a8715f99
|
7
|
+
data.tar.gz: a8056624c77515e42d8bcc30b022e5ae435c2bb149da9596ba2cb30a7d5171576c5b7f35e582392e8d147c180297f49dc17a6857243ffe1af444f06cb2311a3e
|
data/cms_scanner.gemspec
CHANGED
@@ -31,7 +31,7 @@ Gem::Specification.new do |s|
|
|
31
31
|
|
32
32
|
s.add_development_dependency 'rake', '~> 10.4'
|
33
33
|
s.add_development_dependency 'rspec', '~> 3.2'
|
34
|
-
s.add_development_dependency 'rspec-its', '~> 1.
|
34
|
+
s.add_development_dependency 'rspec-its', '~> 1.2'
|
35
35
|
s.add_development_dependency 'bundler', '~> 1.6'
|
36
36
|
s.add_development_dependency 'rubocop', '~> 0.29'
|
37
37
|
s.add_development_dependency 'webmock', '~> 1.20'
|
@@ -44,12 +44,20 @@ module CMSScanner
|
|
44
44
|
def progress_bar(total)
|
45
45
|
ProgressBar.create(
|
46
46
|
format: '%t %a <%B> (%c / %C) %P%% %e',
|
47
|
-
title:
|
47
|
+
title: progress_bar_title,
|
48
48
|
total: total
|
49
49
|
)
|
50
50
|
end
|
51
51
|
# :nocov:
|
52
52
|
|
53
|
+
# Progress Bar title to use, allow instance using this module
|
54
|
+
# to display a custom title if needed
|
55
|
+
#
|
56
|
+
# @return [ String ]
|
57
|
+
def progress_bar_title
|
58
|
+
' ' # Used to create a left margin
|
59
|
+
end
|
60
|
+
|
53
61
|
# @return [ CMSScanner::Browser ]
|
54
62
|
def browser
|
55
63
|
@browser ||= NS::Browser.instance
|
@@ -17,7 +17,7 @@ module CMSScanner
|
|
17
17
|
def run(opts = {})
|
18
18
|
each do |finder|
|
19
19
|
symbols_from_mode(opts[:mode]).each do |symbol|
|
20
|
-
[*finder.send(symbol, opts)].compact.each do |found|
|
20
|
+
[*finder.send(symbol, opts.merge(found: findings))].compact.each do |found|
|
21
21
|
findings << found
|
22
22
|
end
|
23
23
|
end
|
@@ -12,7 +12,7 @@ module CMSScanner
|
|
12
12
|
def run(opts = {})
|
13
13
|
symbols_from_mode(opts[:mode]).each do |symbol|
|
14
14
|
each do |finder|
|
15
|
-
[*finder.send(symbol, opts)].compact.each do |found|
|
15
|
+
[*finder.send(symbol, opts.merge(found: findings))].compact.each do |found|
|
16
16
|
findings << found
|
17
17
|
end
|
18
18
|
end
|
@@ -19,7 +19,9 @@ module CMSScanner
|
|
19
19
|
|
20
20
|
symbols_from_mode(opts[:mode]).each do |symbol|
|
21
21
|
each do |finder|
|
22
|
-
[*finder.send(symbol, opts)].compact.each
|
22
|
+
[*finder.send(symbol, opts.merge(found: findings))].compact.each do |found|
|
23
|
+
findings << found
|
24
|
+
end
|
23
25
|
|
24
26
|
next if opts[:confidence_threshold] <= 0
|
25
27
|
|
data/lib/cms_scanner/version.rb
CHANGED
@@ -29,7 +29,9 @@ describe CMSScanner::Finders::IndependentFinders do
|
|
29
29
|
let(:mode) { current_mode }
|
30
30
|
|
31
31
|
it "calls the #{current_mode} method on each finder" do
|
32
|
-
finders.each
|
32
|
+
finders.each do |f|
|
33
|
+
expect(f).to receive(current_mode).with(hash_including(found: [])).ordered
|
34
|
+
end
|
33
35
|
end
|
34
36
|
end
|
35
37
|
end
|
@@ -40,7 +42,7 @@ describe CMSScanner::Finders::IndependentFinders do
|
|
40
42
|
it 'calls :passive then :aggressive on each finder' do
|
41
43
|
finders.each do |finder|
|
42
44
|
[:passive, :aggressive].each do |method|
|
43
|
-
expect(finder).to receive(method).ordered
|
45
|
+
expect(finder).to receive(method).with(hash_including(found: [])).ordered
|
44
46
|
end
|
45
47
|
end
|
46
48
|
end
|
@@ -32,10 +32,21 @@ describe CMSScanner::Finders::SameTypeFinders do
|
|
32
32
|
let(:opts) { super().merge(mode: :mixed) }
|
33
33
|
|
34
34
|
it 'calls all #passive then #aggressive on finders and returns the best result' do
|
35
|
-
expect(finders[0]).to receive(:passive)
|
36
|
-
|
37
|
-
|
38
|
-
|
35
|
+
expect(finders[0]).to receive(:passive)
|
36
|
+
.with(hash_including(found: [])).ordered
|
37
|
+
.and_return(dummy_passive)
|
38
|
+
|
39
|
+
expect(finders[1]).to receive(:passive)
|
40
|
+
.with(hash_including(found: [dummy_passive.first])).ordered
|
41
|
+
.and_return(noaggressive)
|
42
|
+
|
43
|
+
expect(finders[0]).to receive(:aggressive)
|
44
|
+
.with(hash_including(found: [dummy_passive.first, noaggressive])).ordered
|
45
|
+
.and_return(dummy_aggresssive)
|
46
|
+
|
47
|
+
expect(finders[1]).to receive(:aggressive)
|
48
|
+
.with(hash_including(:found))
|
49
|
+
.ordered
|
39
50
|
|
40
51
|
@expected = []
|
41
52
|
|
@@ -53,8 +64,13 @@ describe CMSScanner::Finders::SameTypeFinders do
|
|
53
64
|
let(:opts) { super().merge(mode: :passive) }
|
54
65
|
|
55
66
|
it 'calls #passive on all finders and returns the best result' do
|
56
|
-
expect(finders[0]).to receive(:passive)
|
57
|
-
|
67
|
+
expect(finders[0]).to receive(:passive)
|
68
|
+
.with(hash_including(found: [])).ordered
|
69
|
+
.and_return(dummy_passive)
|
70
|
+
|
71
|
+
expect(finders[1]).to receive(:passive)
|
72
|
+
.with(hash_including(found: [dummy_passive.first])).ordered
|
73
|
+
.and_return(noaggressive)
|
58
74
|
|
59
75
|
finders.each { |f| expect(f).to_not receive(:aggressive) }
|
60
76
|
|
@@ -71,8 +87,12 @@ describe CMSScanner::Finders::SameTypeFinders do
|
|
71
87
|
it 'calls #aggressive on all finders and returns the best result' do
|
72
88
|
finders.each { |f| expect(f).to_not receive(:passive) }
|
73
89
|
|
74
|
-
expect(finders[0]).to receive(:aggressive)
|
75
|
-
|
90
|
+
expect(finders[0]).to receive(:aggressive)
|
91
|
+
.with(hash_including(found: [])).ordered
|
92
|
+
.and_return(dummy_aggresssive)
|
93
|
+
|
94
|
+
expect(finders[1]).to receive(:aggressive)
|
95
|
+
.with(hash_including(found: [dummy_aggresssive])).ordered
|
76
96
|
|
77
97
|
@expected = [finding.new('test', confidence: 100, found_by: 'override')]
|
78
98
|
end
|
@@ -82,12 +82,23 @@ describe CMSScanner::Finders::UniqueFinders do
|
|
82
82
|
|
83
83
|
it 'calls all #passive then #aggressive on finders and returns the best result' do
|
84
84
|
# Maybe there is a way to factorise this
|
85
|
-
expect(finders[0]).to receive(:passive)
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
expect(finders[1]).to receive(:
|
90
|
-
|
85
|
+
expect(finders[0]).to receive(:passive)
|
86
|
+
.with(hash_including(found: [])).ordered
|
87
|
+
.and_return(dummy_passive)
|
88
|
+
|
89
|
+
expect(finders[1]).to receive(:passive)
|
90
|
+
.with(hash_including(found: [dummy_passive.first])).ordered
|
91
|
+
.and_return(noaggressive)
|
92
|
+
|
93
|
+
expect(finders[2]).to receive(:passive)
|
94
|
+
.with(hash_including(found: [dummy_passive.first, noaggressive])).ordered
|
95
|
+
|
96
|
+
expect(finders[0]).to receive(:aggressive).with(hash_including(:found)).ordered
|
97
|
+
.and_return(dummy_aggresssive)
|
98
|
+
|
99
|
+
expect(finders[1]).to receive(:aggressive).with(hash_including(:found)).ordered
|
100
|
+
expect(finders[2]).to receive(:aggressive).with(hash_including(:found)).ordered
|
101
|
+
.and_return(dummy2_aggressive)
|
91
102
|
|
92
103
|
@expected = finding.new('v1', confidence: 100, found_by: 'Dummy (Passive Detection)')
|
93
104
|
@expected.confirmed_by << finding.new('v1', confidence: 100, found_by: 'override')
|
@@ -99,9 +110,16 @@ describe CMSScanner::Finders::UniqueFinders do
|
|
99
110
|
let(:opts) { super().merge(mode: :passive) }
|
100
111
|
|
101
112
|
it 'calls #passive on all finders and returns the best result' do
|
102
|
-
expect(finders[0]).to receive(:passive)
|
103
|
-
|
104
|
-
|
113
|
+
expect(finders[0]).to receive(:passive)
|
114
|
+
.with(hash_including(found: [])).ordered
|
115
|
+
.and_return(dummy_passive)
|
116
|
+
|
117
|
+
expect(finders[1]).to receive(:passive)
|
118
|
+
.with(hash_including(found: [dummy_passive.first])).ordered
|
119
|
+
.and_return(noaggressive)
|
120
|
+
|
121
|
+
expect(finders[2]).to receive(:passive)
|
122
|
+
.with(hash_including(found: [dummy_passive.first, noaggressive])).ordered
|
105
123
|
|
106
124
|
finders.each { |f| expect(f).to_not receive(:aggressive) }
|
107
125
|
|
@@ -116,9 +134,16 @@ describe CMSScanner::Finders::UniqueFinders do
|
|
116
134
|
it 'calls #aggressive on all finders and returns the best result' do
|
117
135
|
finders.each { |f| expect(f).to_not receive(:passive) }
|
118
136
|
|
119
|
-
expect(finders[0]).to receive(:aggressive)
|
120
|
-
|
121
|
-
|
137
|
+
expect(finders[0]).to receive(:aggressive)
|
138
|
+
.with(hash_including(found: [])).ordered
|
139
|
+
.and_return(dummy_aggresssive)
|
140
|
+
|
141
|
+
expect(finders[1]).to receive(:aggressive)
|
142
|
+
.with(hash_including(found: [dummy_aggresssive])).ordered
|
143
|
+
|
144
|
+
expect(finders[2]).to receive(:aggressive)
|
145
|
+
.with(hash_including(:found)).ordered
|
146
|
+
.and_return(dummy2_aggressive)
|
122
147
|
|
123
148
|
@expected = finding.new('v1', confidence: 100, found_by: 'override')
|
124
149
|
@expected.confirmed_by << finding.new('v1', confidence: 90)
|
@@ -132,10 +157,20 @@ describe CMSScanner::Finders::UniqueFinders do
|
|
132
157
|
|
133
158
|
it 'calls all #passive then #aggressive methods on finders and returns the '\
|
134
159
|
'result which reaches 100% confidence during the process' do
|
135
|
-
expect(finders[0]).to receive(:passive)
|
136
|
-
|
137
|
-
|
138
|
-
|
160
|
+
expect(finders[0]).to receive(:passive)
|
161
|
+
.with(hash_including(found: [])).ordered
|
162
|
+
.and_return(dummy_passive)
|
163
|
+
|
164
|
+
expect(finders[1]).to receive(:passive)
|
165
|
+
.with(hash_including(found: [dummy_passive.first])).ordered
|
166
|
+
.and_return(noaggressive)
|
167
|
+
|
168
|
+
expect(finders[2]).to receive(:passive)
|
169
|
+
.with(hash_including(found: [dummy_passive.first, noaggressive])).ordered
|
170
|
+
|
171
|
+
expect(finders[0]).to receive(:aggressive).with(hash_including(:found)).ordered
|
172
|
+
.and_return(dummy_aggresssive)
|
173
|
+
|
139
174
|
expect(finders[1]).to_not receive(:aggressive)
|
140
175
|
expect(finders[2]).to_not receive(:aggressive)
|
141
176
|
|
@@ -148,9 +183,16 @@ describe CMSScanner::Finders::UniqueFinders do
|
|
148
183
|
let(:opts) { super().merge(mode: :passive) }
|
149
184
|
|
150
185
|
it 'calls all #passive and returns the best result' do
|
151
|
-
expect(finders[0]).to receive(:passive)
|
152
|
-
|
153
|
-
|
186
|
+
expect(finders[0]).to receive(:passive)
|
187
|
+
.with(hash_including(found: [])).ordered
|
188
|
+
.and_return(dummy_passive)
|
189
|
+
|
190
|
+
expect(finders[1]).to receive(:passive)
|
191
|
+
.with(hash_including(found: [dummy_passive.first])).ordered
|
192
|
+
.and_return(noaggressive)
|
193
|
+
|
194
|
+
expect(finders[2]).to receive(:passive)
|
195
|
+
.with(hash_including(found: [dummy_passive.first, noaggressive])).ordered
|
154
196
|
|
155
197
|
finders.each { |f| expect(f).to_not receive(:aggressive) }
|
156
198
|
|
@@ -165,7 +207,10 @@ describe CMSScanner::Finders::UniqueFinders do
|
|
165
207
|
it 'calls all #aggressive and returns the result which reaches 100% confidence' do
|
166
208
|
finders.each { |f| expect(f).to_not receive(:passive) }
|
167
209
|
|
168
|
-
expect(finders[0]).to receive(:aggressive)
|
210
|
+
expect(finders[0]).to receive(:aggressive)
|
211
|
+
.with(hash_including(found: [])).ordered
|
212
|
+
.and_return(dummy_aggresssive)
|
213
|
+
|
169
214
|
expect(finders[1]).to_not receive(:aggressive)
|
170
215
|
expect(finders[2]).to_not receive(:aggressive)
|
171
216
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cms_scanner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- WPScanTeam - Erwan Le Rousseau
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opt_parse_validator
|
@@ -142,14 +142,14 @@ dependencies:
|
|
142
142
|
requirements:
|
143
143
|
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: '1.
|
145
|
+
version: '1.2'
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: '1.
|
152
|
+
version: '1.2'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: bundler
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|