recog 2.3.22 → 2.3.23
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/.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
|