recog 2.3.22 → 2.3.23
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +1 -1
- data/.github/workflows/verify.yml +1 -1
- data/.vscode/bin/monitor-recog-fingerprints.sh +54 -0
- data/.vscode/extensions.json +5 -0
- data/.vscode/settings.json +8 -0
- data/.vscode/tasks.json +77 -0
- data/CONTRIBUTING.md +2 -0
- data/bin/recog_verify +42 -7
- data/cpe-remap.yaml +20 -2
- data/features/data/schema_failure.xml +4 -0
- data/features/data/tests_with_failures.xml +6 -0
- data/features/support/hooks.rb +9 -0
- data/features/verify.feature +81 -17
- data/identifiers/hw_device.txt +2 -0
- data/identifiers/hw_product.txt +2 -0
- data/identifiers/os_device.txt +2 -0
- data/identifiers/os_family.txt +1 -0
- data/identifiers/os_product.txt +8 -1
- data/identifiers/service_product.txt +14 -0
- data/identifiers/vendor.txt +13 -1
- data/lib/recog/fingerprint.rb +21 -7
- data/lib/recog/fingerprint_parse_error.rb +10 -0
- data/lib/recog/verifier.rb +4 -4
- data/lib/recog/verify_reporter.rb +7 -6
- data/lib/recog/version.rb +1 -1
- data/requirements.txt +1 -1
- data/spec/data/external_example_fingerprint/hp_printer_ex_01.txt +1 -0
- data/spec/data/external_example_fingerprint/hp_printer_ex_02.txt +1 -0
- data/spec/data/external_example_fingerprint.xml +8 -0
- data/spec/data/external_example_illegal_path_fingerprint.xml +7 -0
- data/spec/lib/recog/db_spec.rb +84 -61
- data/spec/lib/recog/fingerprint_spec.rb +4 -4
- data/spec/lib/recog/verify_reporter_spec.rb +8 -8
- data/update_cpes.py +129 -36
- data/xml/apache_os.xml +61 -19
- data/xml/architecture.xml +15 -1
- data/xml/dhcp_vendor_class.xml +1 -1
- data/xml/dns_versionbind.xml +16 -13
- data/xml/favicons.xml +87 -5
- data/xml/fingerprints.xsd +9 -1
- data/xml/ftp_banners.xml +131 -141
- data/xml/h323_callresp.xml +2 -2
- data/xml/hp_pjl_id.xml +81 -81
- data/xml/html_title.xml +178 -9
- data/xml/http_cookies.xml +83 -27
- data/xml/http_servers.xml +409 -269
- data/xml/http_wwwauth.xml +70 -37
- data/xml/imap_banners.xml +2 -2
- data/xml/nntp_banners.xml +8 -5
- data/xml/ntp_banners.xml +33 -33
- data/xml/operating_system.xml +92 -77
- data/xml/pop_banners.xml +17 -17
- data/xml/sip_banners.xml +16 -5
- data/xml/sip_user_agents.xml +122 -27
- data/xml/smb_native_lm.xml +5 -5
- data/xml/smb_native_os.xml +25 -25
- data/xml/smtp_banners.xml +132 -131
- data/xml/smtp_help.xml +1 -1
- data/xml/snmp_sysdescr.xml +1227 -1227
- data/xml/snmp_sysobjid.xml +2 -2
- data/xml/ssh_banners.xml +9 -5
- data/xml/telnet_banners.xml +49 -0
- data/xml/tls_jarm.xml +22 -2
- data/xml/x11_banners.xml +3 -3
- data/xml/x509_issuers.xml +3 -2
- data/xml/x509_subjects.xml +3 -3
- metadata +19 -3
- data/lib/recog/verifier_factory.rb +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a185ae988081b761341e8b8799c23feb5eb2ab85c2da2ce63fffe4f2d7ddcac3
|
4
|
+
data.tar.gz: 89e4ab65e87d190c3ea276d18771edd9c6fc75cb5a0863440be61d165ae5b80c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff83575470bf78d4e5a5c464e0dfeb12ac310ecc856fde6919bf3f7a5e3ba9b69d2be479f9a0cab4cc2c03f7babb6f21673d7015d5cf3182587f86ab3f45f0cf
|
7
|
+
data.tar.gz: 68a7dad6b6cbafc8dac0ac46a0ae7aab6f64c0095c314fa126da107f05b3befff3e4f9f2af41836aa96437746dceeb17718927acc824d842cb9f4a56b234da34
|
data/.github/workflows/ci.yml
CHANGED
@@ -37,7 +37,7 @@ jobs:
|
|
37
37
|
with:
|
38
38
|
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
39
39
|
- name: Run recog verify
|
40
|
-
run: bundle exec recog_verify --no-warnings xml/*.xml
|
40
|
+
run: bundle exec recog_verify --schema-location xml/fingerprints.xsd --no-warnings xml/*.xml
|
41
41
|
java-verify:
|
42
42
|
name: 'Java Verify'
|
43
43
|
runs-on: ubuntu-latest
|
@@ -0,0 +1,54 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
ARGS=()
|
4
|
+
while [[ $# -gt 0 ]]; do
|
5
|
+
case $1 in
|
6
|
+
-s|--schema-location)
|
7
|
+
VALIDATE_SCHEMA="--schema-location $2"
|
8
|
+
shift
|
9
|
+
shift
|
10
|
+
;;
|
11
|
+
-*|--*)
|
12
|
+
echo "Unknown option $1"
|
13
|
+
exit 1
|
14
|
+
;;
|
15
|
+
*)
|
16
|
+
ARGS+=("$1")
|
17
|
+
shift
|
18
|
+
;;
|
19
|
+
esac
|
20
|
+
done
|
21
|
+
set -- "${ARGS[@]}"
|
22
|
+
|
23
|
+
if [ $# -eq 0 ]
|
24
|
+
then
|
25
|
+
echo "Usage: $(basename $0) [--schema-location SCHEMA_LOCATION] <xml fingerprint directory>"
|
26
|
+
exit 1
|
27
|
+
fi
|
28
|
+
|
29
|
+
if [ ! -d "$1" ]
|
30
|
+
then
|
31
|
+
echo "The XML fingerprint file directory must be supplied."
|
32
|
+
exit 1
|
33
|
+
fi
|
34
|
+
|
35
|
+
bin/recog_verify $VALIDATE_SCHEMA "$1/*.xml"
|
36
|
+
|
37
|
+
if ! type fswatch &>/dev/null;
|
38
|
+
then
|
39
|
+
echo "'fswatch' is required to monitor fingerprint files for changes and update the editor."
|
40
|
+
echo "See: https://emcrisostomo.github.io/fswatch/ or install with:"
|
41
|
+
echo " MacOS Homebrew: brew install fswatch"
|
42
|
+
echo " Ubuntu/Debian: apt install fswatch"
|
43
|
+
echo
|
44
|
+
echo "Otherwise, you can re-run this task using the Visual Studio Code command palette"
|
45
|
+
exit 1
|
46
|
+
fi
|
47
|
+
|
48
|
+
echo "Waiting for changes..."
|
49
|
+
fswatch -0 $1 | while read -d "" event; do {
|
50
|
+
echo "Changes detected, validating: ${event}"
|
51
|
+
# TODO: VSCode doesn't support individual/incremental updates to files yet.
|
52
|
+
bin/recog_verify $VALIDATE_SCHEMA "$1/*.xml"
|
53
|
+
echo "Waiting for changes..."
|
54
|
+
}; done
|
data/.vscode/tasks.json
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
{
|
2
|
+
"version": "2.0.0",
|
3
|
+
"tasks": [
|
4
|
+
{
|
5
|
+
"label": "Recog Verify - Background Monitor",
|
6
|
+
"command": ".vscode/bin/monitor-recog-fingerprints.sh",
|
7
|
+
"args": [
|
8
|
+
"--schema-location",
|
9
|
+
"xml/fingerprints.xsd",
|
10
|
+
"${workspaceFolder}/xml"
|
11
|
+
],
|
12
|
+
"windows": {
|
13
|
+
"command": ""
|
14
|
+
},
|
15
|
+
"type": "process",
|
16
|
+
"isBackground": true,
|
17
|
+
"problemMatcher": {
|
18
|
+
"owner": "recog",
|
19
|
+
"fileLocation": [
|
20
|
+
"absolute"
|
21
|
+
],
|
22
|
+
"pattern": {
|
23
|
+
"regexp": "^(.*):(\\d+):\\s+(WARN|FAIL):\\s+(.*)$",
|
24
|
+
"file": 1,
|
25
|
+
"severity": 3,
|
26
|
+
"message": 4,
|
27
|
+
"location": 2
|
28
|
+
},
|
29
|
+
"background": {
|
30
|
+
"activeOnStart": true,
|
31
|
+
"beginsPattern": "^Changes detected",
|
32
|
+
"endsPattern": "^Waiting for changes"
|
33
|
+
},
|
34
|
+
},
|
35
|
+
"presentation": {
|
36
|
+
"reveal": "always",
|
37
|
+
"revealProblems": "onProblem"
|
38
|
+
},
|
39
|
+
"runOptions": {
|
40
|
+
"runOn": "folderOpen"
|
41
|
+
}
|
42
|
+
},
|
43
|
+
{
|
44
|
+
"label": "Recog Verify",
|
45
|
+
"command": "bin/recog_verify",
|
46
|
+
"args": [
|
47
|
+
"--schema-location",
|
48
|
+
"xml/fingerprints.xsd",
|
49
|
+
"${workspaceFolder}/xml/*.xml"
|
50
|
+
],
|
51
|
+
"windows": {
|
52
|
+
"command": ""
|
53
|
+
},
|
54
|
+
"type": "process",
|
55
|
+
"problemMatcher": {
|
56
|
+
"owner": "recog",
|
57
|
+
"fileLocation": [
|
58
|
+
"absolute"
|
59
|
+
],
|
60
|
+
"pattern": {
|
61
|
+
"regexp": "^(.*):(\\d+):\\s+(WARN|FAIL):\\s+(.*)$",
|
62
|
+
"file": 1,
|
63
|
+
"severity": 3,
|
64
|
+
"message": 4,
|
65
|
+
"location": 2
|
66
|
+
}
|
67
|
+
},
|
68
|
+
"presentation": {
|
69
|
+
"reveal": "always",
|
70
|
+
"revealProblems": "onProblem"
|
71
|
+
},
|
72
|
+
"runOptions": {
|
73
|
+
"runOn": "folderOpen"
|
74
|
+
}
|
75
|
+
}
|
76
|
+
]
|
77
|
+
}
|
data/CONTRIBUTING.md
CHANGED
@@ -141,6 +141,8 @@ $ echo 'OpenSSH_6.6p1 Ubuntu-2ubuntu1' | bin/recog_match xml/ssh_banners.xml -
|
|
141
141
|
MATCH: {"matched"=>"OpenSSH running on Ubuntu 14.04", "service.version"=>"6.6p1", "openssh.comment"=>"Ubuntu-2ubuntu1", "service.vendor"=>"OpenBSD", "service.family"=>"OpenSSH", "service.product"=>"OpenSSH", "os.vendor"=>"Ubuntu", "os.device"=>"General", "os.family"=>"Linux", "os.product"=>"Linux", "os.version"=>"14.04", "service.protocol"=>"ssh", "fingerprint_db"=>"ssh.banner", "data"=>"OpenSSH_6.6p1 Ubuntu-2ubuntu1"}
|
142
142
|
```
|
143
143
|
|
144
|
+
Additionally, in Visual Studio Code, there is a task (.vscode/tasks.json) which will automatically run recog_verify in the background to watch all the XML fingerprint files (under the xml/ subdirectory of this repository). Additionally, if [fswatch](https://github.com/emcrisostomo/fswatch) is installed, whenever XML fingerprint files are added or modified this task will automatically update the Visual Studio Code user interface and highlight any errors or warnings discovered through recog_verify on the correct file/line. You can also manually run the task by bringing up the Visual Studio Code command menu (cmd + shift + P on mac, or ctrl + shift + P for linux/windows) -> Tasks: Run Task -> Recog Verify). Note that in order for the task to run successfully, you must have a valid ruby installed on your PATH with the gems from `bundle install` installed using bundler for that ruby engine. JRuby is not supported as it has issues related to line numbering due to a bug in Nokogiri.
|
145
|
+
|
144
146
|
[^back to top](#contributing-to-recog)
|
145
147
|
|
146
148
|
|
data/bin/recog_verify
CHANGED
@@ -1,12 +1,15 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
$:.unshift(File.expand_path(File.join(File.dirname(__FILE__), "..", "lib")))
|
4
|
+
require 'nokogiri'
|
4
5
|
require 'optparse'
|
5
6
|
require 'ostruct'
|
6
7
|
require 'recog'
|
7
|
-
require 'recog/
|
8
|
+
require 'recog/formatter'
|
9
|
+
require 'recog/verifier'
|
10
|
+
require 'recog/verify_reporter'
|
8
11
|
|
9
|
-
options = OpenStruct.new(color: false, detail: false, quiet: false, warnings: true)
|
12
|
+
options = OpenStruct.new(color: false, detail: false, quiet: false, warnings: true, schema: nil)
|
10
13
|
|
11
14
|
option_parser = OptionParser.new do |opts|
|
12
15
|
opts.banner = "Usage: #{$0} [options] XML_FINGERPRINT_FILE1 ..."
|
@@ -35,6 +38,10 @@ option_parser = OptionParser.new do |opts|
|
|
35
38
|
options.warnings = o
|
36
39
|
end
|
37
40
|
|
41
|
+
opts.on("--schema-location SCHEMA_FILE", "Location of the Recog XSD file. If not specified, validation will not be run.") do |schema_file|
|
42
|
+
options.schema = Nokogiri::XML::Schema(File.read(schema_file))
|
43
|
+
end
|
44
|
+
|
38
45
|
opts.on("-h", "--help", "Show this message.") do
|
39
46
|
puts opts
|
40
47
|
exit
|
@@ -50,13 +57,41 @@ end
|
|
50
57
|
|
51
58
|
warnings = 0
|
52
59
|
failures = 0
|
60
|
+
formatter = Recog::Formatter.new(options, $stdout)
|
53
61
|
ARGV.each do |arg|
|
54
62
|
Dir.glob(arg).each do |file|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
63
|
+
# Create a new reporter per XML file to hold context on success/warn/fails
|
64
|
+
reporter = Recog::VerifyReporter.new(options, formatter, file)
|
65
|
+
|
66
|
+
begin
|
67
|
+
# Validate the XML database against the recog schema first, if requested
|
68
|
+
if options.schema
|
69
|
+
errors = options.schema.validate(Nokogiri::XML(File.read(file)))
|
70
|
+
if errors.size > 0
|
71
|
+
reporter.report(0) do
|
72
|
+
errors.each do |error|
|
73
|
+
reporter.failure(error.message, error.line)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
# Skip validation of individual fingerprints since the XML itself
|
77
|
+
# is likely malformed.
|
78
|
+
next
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
# Now read the XML file directly and validate the fingerprints
|
83
|
+
# themselves
|
84
|
+
db = Recog::DB.new(file)
|
85
|
+
verifier = Recog::Verifier.new(db, reporter)
|
86
|
+
verifier.verify
|
87
|
+
rescue Recog::FingerprintParseError => e
|
88
|
+
reporter.failure(e.message, e.line_number)
|
89
|
+
rescue => e
|
90
|
+
reporter.failure(e.message)
|
91
|
+
ensure
|
92
|
+
failures += reporter.failure_count
|
93
|
+
warnings += reporter.warning_count
|
94
|
+
end
|
60
95
|
end
|
61
96
|
end
|
62
97
|
|
data/cpe-remap.yaml
CHANGED
@@ -18,6 +18,9 @@ mappings:
|
|
18
18
|
vendor: altn
|
19
19
|
aruba_networks:
|
20
20
|
vendor: arubanetworks
|
21
|
+
atlassian:
|
22
|
+
products:
|
23
|
+
confluence: confluence_server
|
21
24
|
bea:
|
22
25
|
products:
|
23
26
|
weblogic: weblogic_server
|
@@ -127,6 +130,8 @@ mappings:
|
|
127
130
|
vendor: mortbay
|
128
131
|
munin:
|
129
132
|
vendor: munin-monitoring
|
133
|
+
nginx:
|
134
|
+
vendor: f5
|
130
135
|
nlnet_labs:
|
131
136
|
vendor: nlnetlabs
|
132
137
|
products:
|
@@ -201,6 +206,12 @@ mappings:
|
|
201
206
|
x.org:
|
202
207
|
products:
|
203
208
|
x.org_x11: x11
|
209
|
+
xiongmai_technology:
|
210
|
+
vendor: xiongmaitech
|
211
|
+
zaphoyd_studios:
|
212
|
+
vendor: zaphoyd
|
213
|
+
products:
|
214
|
+
websocket++: websocketpp
|
204
215
|
|
205
216
|
# The following section contains CPE operating system or 'o' remappings. These will
|
206
217
|
# ONLY be used for mapping Recog 'os' attributes.
|
@@ -225,6 +236,7 @@ mappings:
|
|
225
236
|
cisco:
|
226
237
|
products:
|
227
238
|
adaptive_security_appliance: adaptive_security_appliance_software
|
239
|
+
mds_9000: mds_9000_san-os
|
228
240
|
nam: network_analysis_module_software
|
229
241
|
pix: pix_firewall_software
|
230
242
|
telepresence: telepresence_video_communication_server_software
|
@@ -243,6 +255,10 @@ mappings:
|
|
243
255
|
debian:
|
244
256
|
products:
|
245
257
|
linux: debian_linux
|
258
|
+
eltex:
|
259
|
+
vendor: eltex-co
|
260
|
+
fedora_project:
|
261
|
+
vendor: fedoraproject
|
246
262
|
hp:
|
247
263
|
products:
|
248
264
|
ilo: integrated_lights-out_firmware
|
@@ -286,8 +302,6 @@ mappings:
|
|
286
302
|
vendor: phoenixcontact
|
287
303
|
red_hat:
|
288
304
|
vendor: redhat
|
289
|
-
products:
|
290
|
-
fedora_core_linux: fedora_core
|
291
305
|
software_house:
|
292
306
|
vendor: swhouse
|
293
307
|
sun:
|
@@ -306,6 +320,8 @@ mappings:
|
|
306
320
|
vmware_esxi_server: esxi
|
307
321
|
wind_river:
|
308
322
|
vendor: windriver
|
323
|
+
xiongmai_technology:
|
324
|
+
vendor: xiongmaitech
|
309
325
|
|
310
326
|
# The following section contains CPE hardware or 'h' remappings. These will
|
311
327
|
# ONLY be used for mapping Recog 'hw' attributes.
|
@@ -336,6 +352,8 @@ mappings:
|
|
336
352
|
citrix:
|
337
353
|
products:
|
338
354
|
netscaler_sdx_gateway: netscaler_sdx
|
355
|
+
eltex:
|
356
|
+
vendor: eltex-co
|
339
357
|
emc:
|
340
358
|
products:
|
341
359
|
celerra: celerra_network_attached_storage
|
@@ -17,4 +17,10 @@
|
|
17
17
|
<param pos="2" name="os.version" />
|
18
18
|
<param pos="1" name="os.name" value="Bar" />
|
19
19
|
</fingerprint>
|
20
|
+
<fingerprint pattern="^(\S+) ([\d.]+)$">
|
21
|
+
<description>example with untested parameter</description>
|
22
|
+
<!-- Fail: missing example test os.version parameter -->
|
23
|
+
<example>bar 1.0</example>
|
24
|
+
<param pos="1" name="os.version" />
|
25
|
+
</fingerprint>
|
20
26
|
</fingerprints>
|
data/features/verify.feature
CHANGED
@@ -16,33 +16,97 @@ Feature: Verify
|
|
16
16
|
"""
|
17
17
|
|
18
18
|
@no-clobber
|
19
|
-
Scenario: Tests with warnings, warnings
|
19
|
+
Scenario: Tests with warnings, warnings disabled
|
20
|
+
When I run `recog_verify --no-warnings tests_with_warnings.xml`
|
21
|
+
Then it should pass with exactly:
|
22
|
+
"""
|
23
|
+
tests_with_warnings.xml: SUMMARY: Test completed with 1 successful, 0 warnings, and 0 failures
|
24
|
+
"""
|
25
|
+
|
26
|
+
# These tests vary due to line numbering issues in Nokogiri, so there are different versions
|
27
|
+
# of the same test depending on the ruby runtime. Nokogiri uses libxml under CRuby, and a custom
|
28
|
+
# java-based parser under JRuby. The Java-based parser only approximates line numbers, which are
|
29
|
+
# typically off if XML prolog or comments are present.
|
30
|
+
#
|
31
|
+
# See https://github.com/sparklemotion/nokogiri/issues/2380
|
32
|
+
@no-clobber
|
33
|
+
@unsupported-on-platform-java
|
34
|
+
Scenario: Tests with warnings, warnings enabled (CRuby)
|
20
35
|
When I run `recog_verify tests_with_warnings.xml`
|
21
36
|
Then it should fail with:
|
22
37
|
"""
|
23
|
-
tests_with_warnings.xml: WARN: 'Pure-FTPd' has no test cases
|
24
|
-
tests_with_warnings.xml:
|
25
|
-
tests_with_warnings.xml: SUMMARY: Test completed with 1 successful, 2 warnings, and 0 failures
|
38
|
+
tests_with_warnings.xml:10: WARN: 'Pure-FTPd' has no test cases
|
39
|
+
tests_with_warnings.xml: SUMMARY: Test completed with 1 successful, 1 warnings, and 0 failures
|
26
40
|
"""
|
27
|
-
And the exit status should be
|
28
|
-
|
41
|
+
And the exit status should be 1
|
42
|
+
|
43
|
+
# JRuby 9.2.20.1 and 9.3.3.0 differ in how they parse XML, where the latter is more close to libxml
|
44
|
+
# and Nokogiri. We use a regex test to match results from both versions.
|
29
45
|
@no-clobber
|
30
|
-
|
31
|
-
|
32
|
-
|
46
|
+
@requires-ruby-platform-java
|
47
|
+
Scenario: Tests with warnings, warnings enabled (JRuby)
|
48
|
+
When I run `recog_verify tests_with_warnings.xml`
|
49
|
+
Then it should fail with regex:
|
33
50
|
"""
|
34
|
-
tests_with_warnings.xml
|
51
|
+
tests_with_warnings.xml:\d+: WARN: 'Pure-FTPd' has no test cases
|
52
|
+
tests_with_warnings.xml: SUMMARY: Test completed with 1 successful, 1 warnings, and 0 failures
|
35
53
|
"""
|
54
|
+
And the exit status should be 1
|
36
55
|
|
37
56
|
@no-clobber
|
38
|
-
|
57
|
+
@unsupported-on-platform-java
|
58
|
+
Scenario: Tests with failures (CRuby)
|
39
59
|
When I run `recog_verify tests_with_failures.xml`
|
40
60
|
Then it should fail with:
|
41
61
|
"""
|
42
|
-
tests_with_failures.xml: FAIL: 'foo test' failed to match "bar" with (?-mix:^foo$)'
|
43
|
-
tests_with_failures.xml: FAIL: '' failed to match "This almost matches" with (?-mix:^This matches$)'
|
44
|
-
tests_with_failures.xml: FAIL: 'bar test's os.name is a non-zero pos but specifies a value of 'Bar'
|
45
|
-
tests_with_failures.xml: FAIL: 'bar test' failed to find expected capture group os.version '5.0'. Result was 1.0
|
46
|
-
tests_with_failures.xml:
|
62
|
+
tests_with_failures.xml:3: FAIL: 'foo test' failed to match "bar" with (?-mix:^foo$)'
|
63
|
+
tests_with_failures.xml:8: FAIL: '' failed to match "This almost matches" with (?-mix:^This matches$)'
|
64
|
+
tests_with_failures.xml:13: FAIL: 'bar test's os.name is a non-zero pos but specifies a value of 'Bar'
|
65
|
+
tests_with_failures.xml:13: FAIL: 'bar test' failed to find expected capture group os.version '5.0'. Result was 1.0
|
66
|
+
tests_with_failures.xml:20: FAIL: 'example with untested parameter' is missing an example that checks for parameter 'os.version' which is derived from a capture group
|
67
|
+
tests_with_failures.xml: SUMMARY: Test completed with 1 successful, 0 warnings, and 5 failures
|
68
|
+
"""
|
69
|
+
And the exit status should be 5
|
70
|
+
|
71
|
+
# JRuby 9.2.20.1 and 9.3.3.0 differ in how they parse XML, where the latter is more close to libxml
|
72
|
+
# and Nokogiri. We use a regex test to match results from both versions.
|
73
|
+
@no-clobber
|
74
|
+
@requires-ruby-platform-java
|
75
|
+
Scenario: Tests with failures (JRuby)
|
76
|
+
When I run `recog_verify tests_with_failures.xml`
|
77
|
+
Then it should fail with regex:
|
78
|
+
"""
|
79
|
+
tests_with_failures.xml:\d+: FAIL: 'foo test' failed to match "bar" with \(\?-mix:\^foo\$\)'
|
80
|
+
tests_with_failures.xml:\d+: FAIL: '' failed to match "This almost matches" with \(\?-mix:\^This matches\$\)'
|
81
|
+
tests_with_failures.xml:\d+: FAIL: 'bar test's os\.name is a non-zero pos but specifies a value of 'Bar'
|
82
|
+
tests_with_failures.xml:\d+: FAIL: 'bar test' failed to find expected capture group os\.version '5\.0'. Result was 1\.0
|
83
|
+
tests_with_failures.xml:\d+: FAIL: 'example with untested parameter' is missing an example that checks for parameter 'os\.version' which is derived from a capture group
|
84
|
+
tests_with_failures.xml: SUMMARY: Test completed with 1 successful, 0 warnings, and 5 failures
|
85
|
+
"""
|
86
|
+
And the exit status should be 5
|
87
|
+
|
88
|
+
@no-clobber
|
89
|
+
@unsupported-on-platform-java
|
90
|
+
Scenario: recog_verify produces XML errors from the XSD with a malformed XML document (CRuby)
|
91
|
+
When I run `recog_verify --schema-location ../../xml/fingerprints.xsd schema_failure.xml`
|
92
|
+
Then it should fail with:
|
93
|
+
"""
|
94
|
+
schema_failure.xml:3: FAIL: 3:0: ERROR: Element 'fingerprint', attribute 'name': The attribute 'name' is not allowed.
|
95
|
+
schema_failure.xml:3: FAIL: 3:0: ERROR: Element 'fingerprint': The attribute 'pattern' is required but missing.
|
96
|
+
schema_failure.xml:3: FAIL: 3:0: ERROR: Element 'fingerprint': Missing child element(s). Expected is ( description ).
|
97
|
+
schema_failure.xml: SUMMARY: Test completed with 0 successful, 0 warnings, and 3 failures
|
98
|
+
"""
|
99
|
+
And the exit status should be 3
|
100
|
+
|
101
|
+
@no-clobber
|
102
|
+
@requires-ruby-platform-java
|
103
|
+
Scenario: recog_verify produces XML errors from the XSD with a malformed XML document (JRuby)
|
104
|
+
When I run `recog_verify --schema_location ../../xml/fingerprints.xsd schema_failure.xml`
|
105
|
+
Then it should fail with:
|
106
|
+
"""
|
107
|
+
schema_failure.xml:-1: FAIL: -1:-1: ERROR: cvc-complex-type.3.2.2: Attribute 'name' is not allowed to appear in element 'fingerprint'.
|
108
|
+
schema_failure.xml:-1: FAIL: -1:-1: ERROR: cvc-complex-type.4: Attribute 'pattern' must appear on element 'fingerprint'.
|
109
|
+
schema_failure.xml:-1: FAIL: -1:-1: ERROR: cvc-complex-type.2.4.b: The content of element 'fingerprint' is not complete. One of '{description}' is expected.
|
110
|
+
schema_failure.xml: SUMMARY: Test completed with 0 successful, 0 warnings, and 3 failures
|
47
111
|
"""
|
48
|
-
And the exit status should be
|
112
|
+
And the exit status should be 3
|
data/identifiers/hw_device.txt
CHANGED
@@ -25,6 +25,7 @@ Handheld Scanner
|
|
25
25
|
Hypervisor
|
26
26
|
IP Camera
|
27
27
|
IPS
|
28
|
+
IPTV
|
28
29
|
Industrial Control
|
29
30
|
JTAG Adapter
|
30
31
|
KVM
|
@@ -73,6 +74,7 @@ Video Conferencing
|
|
73
74
|
Video Decoder
|
74
75
|
Video Encoder
|
75
76
|
VoIP
|
77
|
+
VoIP Gateway
|
76
78
|
VoIP Server
|
77
79
|
VoIP Switch
|
78
80
|
Voice Appliance
|
data/identifiers/hw_product.txt
CHANGED
data/identifiers/os_device.txt
CHANGED
data/identifiers/os_family.txt
CHANGED
data/identifiers/os_product.txt
CHANGED
@@ -81,7 +81,7 @@ Fabric OS
|
|
81
81
|
Fastmark M5
|
82
82
|
FaxPress
|
83
83
|
Fedora
|
84
|
-
Fedora Core
|
84
|
+
Fedora Core
|
85
85
|
Fermentrack
|
86
86
|
Fiery Print Server
|
87
87
|
Firepower
|
@@ -91,6 +91,7 @@ FortiOS
|
|
91
91
|
FreeBSD
|
92
92
|
FreeNAS Firmware
|
93
93
|
Freebox OS
|
94
|
+
FreshTomato
|
94
95
|
G2 Console Switch
|
95
96
|
GAiA OS
|
96
97
|
GXP1610 Firmware
|
@@ -152,6 +153,8 @@ NET+OS
|
|
152
153
|
NFVIS
|
153
154
|
NRG Printer
|
154
155
|
NT
|
156
|
+
NTP-2 Firmware
|
157
|
+
NTP-RG-1402G Firmware
|
155
158
|
NX-OS
|
156
159
|
NetBSD
|
157
160
|
NetCache
|
@@ -222,6 +225,7 @@ SCO UNIX
|
|
222
225
|
SEHI
|
223
226
|
SINIX
|
224
227
|
SL2100 Firmware
|
228
|
+
SMG Firmware
|
225
229
|
SPA112 Firmware
|
226
230
|
SPA122 Firmware
|
227
231
|
SV8100 Firmware
|
@@ -231,6 +235,7 @@ ScanFront
|
|
231
235
|
ScreenOS
|
232
236
|
Secure Linux
|
233
237
|
SecureOS
|
238
|
+
Serenity
|
234
239
|
SmartEdge OS
|
235
240
|
SmartServer
|
236
241
|
SmoothWall
|
@@ -258,6 +263,8 @@ Tenable Core
|
|
258
263
|
TetrationOS
|
259
264
|
TimOS
|
260
265
|
Time Capsule Firmware
|
266
|
+
Tomato
|
267
|
+
TomatoUSB
|
261
268
|
Traverse
|
262
269
|
Tru64 Unix
|
263
270
|
UCM6202 Firmware
|