recog 2.3.20 → 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.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +8 -0
  3. data/.github/workflows/ci.yml +1 -1
  4. data/.github/workflows/verify.yml +89 -0
  5. data/.vscode/bin/monitor-recog-fingerprints.sh +54 -0
  6. data/.vscode/extensions.json +5 -0
  7. data/.vscode/settings.json +8 -0
  8. data/.vscode/tasks.json +77 -0
  9. data/CONTRIBUTING.md +8 -0
  10. data/README.md +17 -0
  11. data/bin/recog_standardize +28 -13
  12. data/bin/recog_verify +42 -8
  13. data/cpe-remap.yaml +62 -3
  14. data/features/data/schema_failure.xml +4 -0
  15. data/features/data/tests_with_failures.xml +6 -0
  16. data/features/support/hooks.rb +9 -0
  17. data/features/verify.feature +85 -21
  18. data/identifiers/fields.txt +6 -5
  19. data/identifiers/hw_device.txt +8 -0
  20. data/identifiers/hw_family.txt +8 -0
  21. data/identifiers/hw_product.txt +54 -0
  22. data/identifiers/os_device.txt +2 -0
  23. data/identifiers/os_family.txt +2 -0
  24. data/identifiers/os_product.txt +18 -2
  25. data/identifiers/service_product.txt +26 -0
  26. data/identifiers/vendor.txt +62 -1
  27. data/lib/recog/db.rb +2 -1
  28. data/lib/recog/fingerprint.rb +33 -6
  29. data/lib/recog/fingerprint_parse_error.rb +10 -0
  30. data/lib/recog/nizer.rb +1 -82
  31. data/lib/recog/verifier.rb +9 -9
  32. data/lib/recog/verify_reporter.rb +17 -6
  33. data/lib/recog/version.rb +1 -1
  34. data/requirements.txt +1 -1
  35. data/spec/data/external_example_fingerprint/hp_printer_ex_01.txt +1 -0
  36. data/spec/data/external_example_fingerprint/hp_printer_ex_02.txt +1 -0
  37. data/spec/data/external_example_fingerprint.xml +8 -0
  38. data/spec/data/external_example_illegal_path_fingerprint.xml +7 -0
  39. data/spec/lib/fingerprint_self_test_spec.rb +1 -0
  40. data/spec/lib/recog/db_spec.rb +84 -61
  41. data/spec/lib/recog/fingerprint_spec.rb +4 -4
  42. data/spec/lib/recog/verify_reporter_spec.rb +73 -4
  43. data/tools/dev/hooks/pre-commit +21 -0
  44. data/update_cpes.py +130 -37
  45. data/xml/apache_os.xml +98 -56
  46. data/xml/architecture.xml +15 -1
  47. data/xml/dhcp_vendor_class.xml +206 -0
  48. data/xml/dns_versionbind.xml +26 -13
  49. data/xml/favicons.xml +236 -47
  50. data/xml/fingerprints.xsd +9 -1
  51. data/xml/ftp_banners.xml +213 -197
  52. data/xml/h323_callresp.xml +101 -101
  53. data/xml/hp_pjl_id.xml +84 -84
  54. data/xml/html_title.xml +715 -45
  55. data/xml/http_cookies.xml +143 -80
  56. data/xml/http_servers.xml +510 -310
  57. data/xml/http_wwwauth.xml +177 -75
  58. data/xml/imap_banners.xml +10 -10
  59. data/xml/mdns_device-info_txt.xml +421 -26
  60. data/xml/mysql_banners.xml +3 -2
  61. data/xml/nntp_banners.xml +12 -9
  62. data/xml/ntp_banners.xml +97 -97
  63. data/xml/operating_system.xml +98 -83
  64. data/xml/pop_banners.xml +27 -27
  65. data/xml/rsh_resp.xml +3 -3
  66. data/xml/sip_banners.xml +46 -8
  67. data/xml/sip_user_agents.xml +180 -27
  68. data/xml/smb_native_lm.xml +5 -5
  69. data/xml/smb_native_os.xml +28 -25
  70. data/xml/smtp_banners.xml +258 -254
  71. data/xml/smtp_ehlo.xml +1 -1
  72. data/xml/smtp_help.xml +11 -11
  73. data/xml/smtp_noop.xml +2 -2
  74. data/xml/snmp_sysdescr.xml +1554 -1429
  75. data/xml/snmp_sysobjid.xml +27 -27
  76. data/xml/ssh_banners.xml +27 -20
  77. data/xml/telnet_banners.xml +256 -57
  78. data/xml/tls_jarm.xml +48 -6
  79. data/xml/x11_banners.xml +3 -3
  80. data/xml/x509_issuers.xml +69 -2
  81. data/xml/x509_subjects.xml +144 -33
  82. metadata +24 -4
  83. data/lib/recog/verifier_factory.rb +0 -13
@@ -39,12 +39,12 @@
39
39
 
40
40
  <fingerprint pattern="^Samba (\d\.\d+.\d+\w*)">
41
41
  <description>Samba</description>
42
- <example>Samba 3.0.24</example>
42
+ <example service.version="3.0.24">Samba 3.0.24</example>
43
43
  <example service.version="3.0.28a">Samba 3.0.28a</example>
44
- <example>Samba 3.0.32-0.2-2210-SUSE-SL10.3</example>
45
- <example>Samba 3.6.3</example>
46
- <example>Samba 3.6.6</example>
47
- <example>Samba 3.6.9-151.el6_4.1</example>
44
+ <example service.version="3.0.32">Samba 3.0.32-0.2-2210-SUSE-SL10.3</example>
45
+ <example service.version="3.6.3">Samba 3.6.3</example>
46
+ <example service.version="3.6.6">Samba 3.6.6</example>
47
+ <example service.version="3.6.9">Samba 3.6.9-151.el6_4.1</example>
48
48
  <param pos="0" name="service.vendor" value="Samba"/>
49
49
  <param pos="0" name="service.product" value="Samba"/>
50
50
  <param pos="1" name="service.version"/>
@@ -45,6 +45,9 @@
45
45
  <fingerprint pattern="^Windows 6.1$">
46
46
  <description>Spoofed value often used by Samba -- assert nothing.</description>
47
47
  <example>Windows 6.1</example>
48
+ <param pos="0" name="hw.certainty" value="0.0"/>
49
+ <param pos="0" name="os.certainty" value="0.0"/>
50
+ <param pos="0" name="service.certainty" value="0.0"/>
48
51
  </fingerprint>
49
52
 
50
53
  <fingerprint pattern="^Windows XP (\d+) (Service Pack \d+)$">
@@ -153,8 +156,8 @@
153
156
 
154
157
  <fingerprint pattern="^Windows Server \(R\) 2008 (\w+|\w+ \w+|\w+ \w+ \w+)(?: (?:with|without) Hyper-V|) (\d+) (Service Pack \d+)(?:, v\.\d+)?$">
155
158
  <description>Windows Server 2008</description>
156
- <example os.edition="Enterprise" os.version="Service Pack 1">Windows Server (R) 2008 Enterprise without Hyper-V 6001 Service Pack 1</example>
157
- <example os.edition="Enterprise" os.version="Service Pack 2">Windows Server (R) 2008 Enterprise 6002 Service Pack 2, v.275</example>
159
+ <example os.edition="Enterprise" os.version="Service Pack 1" os.build="6001">Windows Server (R) 2008 Enterprise without Hyper-V 6001 Service Pack 1</example>
160
+ <example os.edition="Enterprise" os.version="Service Pack 2" os.build="6002">Windows Server (R) 2008 Enterprise 6002 Service Pack 2, v.275</example>
158
161
  <param pos="0" name="os.certainty" value="1.0"/>
159
162
  <param pos="0" name="os.vendor" value="Microsoft"/>
160
163
  <param pos="0" name="os.product" value="Windows Server 2008"/>
@@ -166,7 +169,7 @@
166
169
 
167
170
  <fingerprint pattern="^Windows \(R\) Web Server 2008 (\d+) (Service Pack \d+)$">
168
171
  <description>Windows Web Server 2008 (SP)</description>
169
- <example os.edition="Web" os.version="Service Pack 2">Windows (R) Web Server 2008 6002 Service Pack 2</example>
172
+ <example os.edition="Web" os.version="Service Pack 2" os.build="6002">Windows (R) Web Server 2008 6002 Service Pack 2</example>
170
173
  <param pos="0" name="os.certainty" value="1.0"/>
171
174
  <param pos="0" name="os.vendor" value="Microsoft"/>
172
175
  <param pos="0" name="os.product" value="Windows Server 2008"/>
@@ -178,7 +181,7 @@
178
181
 
179
182
  <fingerprint pattern="^Windows \(R\) Web Server 2008 (\d+)$">
180
183
  <description>Windows Web Server 2008</description>
181
- <example>Windows (R) Web Server 2008 6002</example>
184
+ <example os.build="6002">Windows (R) Web Server 2008 6002</example>
182
185
  <param pos="0" name="os.certainty" value="1.0"/>
183
186
  <param pos="0" name="os.vendor" value="Microsoft"/>
184
187
  <param pos="0" name="os.product" value="Windows Server 2008"/>
@@ -214,7 +217,7 @@
214
217
 
215
218
  <fingerprint pattern="^Windows Server 2008 HPC Edition (\d+) (Service Pack \d+)$">
216
219
  <description>Windows Server 2008 HPC</description>
217
- <example>Windows Server 2008 HPC Edition 7601 Service Pack 1</example>
220
+ <example os.build="7601" os.version="Service Pack 1">Windows Server 2008 HPC Edition 7601 Service Pack 1</example>
218
221
  <param pos="0" name="os.certainty" value="1.0"/>
219
222
  <param pos="0" name="os.vendor" value="Microsoft"/>
220
223
  <param pos="0" name="os.product" value="Windows Server 2008"/>
@@ -226,7 +229,7 @@
226
229
 
227
230
  <fingerprint pattern="^Windows Server 2008 HPC Edition (\d+)$">
228
231
  <description>Windows Web Server 2008 HPC</description>
229
- <example>Windows Server 2008 HPC Edition 7600</example>
232
+ <example os.build="7600">Windows Server 2008 HPC Edition 7600</example>
230
233
  <param pos="0" name="os.certainty" value="1.0"/>
231
234
  <param pos="0" name="os.vendor" value="Microsoft"/>
232
235
  <param pos="0" name="os.product" value="Windows Server 2008"/>
@@ -239,8 +242,8 @@
239
242
 
240
243
  <fingerprint pattern="^Windows Server 2008 R2 (\w+|\w+ \w+|\w+ \w+ \w+) (\d+) (Service Pack \d+)(?:, v\.\d+)?$">
241
244
  <description>Windows Server 2008 R2</description>
242
- <example>Windows Server 2008 R2 Enterprise 7601 Service Pack 1</example>
243
- <example>Windows Server 2008 R2 Standard 7601 Service Pack 1</example>
245
+ <example os.edition="Enterprise" os.build="7601" os.version="Service Pack 1">Windows Server 2008 R2 Enterprise 7601 Service Pack 1</example>
246
+ <example os.edition="Standard" os.build="7601" os.version="Service Pack 1">Windows Server 2008 R2 Standard 7601 Service Pack 1</example>
244
247
  <param pos="0" name="os.certainty" value="1.0"/>
245
248
  <param pos="0" name="os.vendor" value="Microsoft"/>
246
249
  <param pos="0" name="os.product" value="Windows Server 2008 R2"/>
@@ -252,9 +255,9 @@
252
255
 
253
256
  <fingerprint pattern="^Windows Server 2008 R2 (\w+|\w+ \w+|\w+ \w+ \w+) (\d+)$">
254
257
  <description>Windows Server 2008 R2 without Service Pack</description>
255
- <example os.edition="Enterprise">Windows Server 2008 R2 Enterprise 7600</example>
256
- <example os.edition="Standard">Windows Server 2008 R2 Standard 7600</example>
257
- <example os.edition="Datacenter">Windows Server 2008 R2 Datacenter 7600</example>
258
+ <example os.edition="Enterprise" os.build="7600">Windows Server 2008 R2 Enterprise 7600</example>
259
+ <example os.edition="Standard" os.build="7600">Windows Server 2008 R2 Standard 7600</example>
260
+ <example os.edition="Datacenter" os.build="7600">Windows Server 2008 R2 Datacenter 7600</example>
258
261
  <param pos="0" name="os.certainty" value="1.0"/>
259
262
  <param pos="0" name="os.vendor" value="Microsoft"/>
260
263
  <param pos="0" name="os.product" value="Windows Server 2008 R2"/>
@@ -265,7 +268,7 @@
265
268
 
266
269
  <fingerprint pattern="^Windows Web Server 2008 R2 (\d+) (Service Pack \d+)$">
267
270
  <description>Windows Server 2008 R2 Web</description>
268
- <example os.version="Service Pack 1">Windows Web Server 2008 R2 7601 Service Pack 1</example>
271
+ <example os.version="Service Pack 1" os.build="7601">Windows Web Server 2008 R2 7601 Service Pack 1</example>
269
272
  <param pos="0" name="os.certainty" value="1.0"/>
270
273
  <param pos="0" name="os.vendor" value="Microsoft"/>
271
274
  <param pos="0" name="os.product" value="Windows Server 2008 R2"/>
@@ -277,7 +280,7 @@
277
280
 
278
281
  <fingerprint pattern="^Windows Web Server 2008 R2 (\d+)$">
279
282
  <description>Windows Web Server 2008 R2 Web</description>
280
- <example>Windows Web Server 2008 R2 7600</example>
283
+ <example os.build="7600">Windows Web Server 2008 R2 7600</example>
281
284
  <param pos="0" name="os.certainty" value="1.0"/>
282
285
  <param pos="0" name="os.vendor" value="Microsoft"/>
283
286
  <param pos="0" name="os.product" value="Windows Server 2008 R2"/>
@@ -375,7 +378,7 @@
375
378
 
376
379
  <fingerprint pattern="^Windows Vista \(TM\) (\w+|\w+ \w+|\w+ \w+ \w+) (\d+) (Service Pack \d+)$">
377
380
  <description>Windows Vista (SP)</description>
378
- <example os.edition="Home Premium" os.version="Service Pack 2">Windows Vista (TM) Home Premium 6002 Service Pack 2</example>
381
+ <example os.edition="Home Premium" os.version="Service Pack 2" os.build="6002">Windows Vista (TM) Home Premium 6002 Service Pack 2</example>
379
382
  <param pos="0" name="os.certainty" value="1.0"/>
380
383
  <param pos="0" name="os.vendor" value="Microsoft"/>
381
384
  <param pos="0" name="os.product" value="Windows Vista"/>
@@ -387,7 +390,7 @@
387
390
 
388
391
  <fingerprint pattern="^Windows Vista \(TM\) (\w+|\w+ \w+|\w+ \w+ \w+) (\d+)$">
389
392
  <description>Windows Vista</description>
390
- <example os.edition="Home Premium">Windows Vista (TM) Home Premium 6000</example>
393
+ <example os.edition="Home Premium" os.build="6000">Windows Vista (TM) Home Premium 6000</example>
391
394
  <param pos="0" name="os.certainty" value="1.0"/>
392
395
  <param pos="0" name="os.vendor" value="Microsoft"/>
393
396
  <param pos="0" name="os.product" value="Windows Vista"/>
@@ -398,9 +401,9 @@
398
401
 
399
402
  <fingerprint pattern="^(Windows (?:7|8|8\.1)(?:| RT)) (\w+|\w+ \w+|\w+ \w+ \w+) (\d+) (Service Pack \d+)(?:, v\.\d+)?$">
400
403
  <description>Windows 7/8 (SP + Edition)</description>
401
- <example os.edition="Enterprise" os.version="Service Pack 1">Windows 7 Enterprise 7601 Service Pack 1</example>
402
- <example os.edition="Starter" os.version="Service Pack 1">Windows 7 Starter 7601 Service Pack 1</example>
403
- <example os.edition="Ultimate" os.build="7601" os.version="Service Pack 1">Windows 7 Ultimate 7601 Service Pack 1, v.178</example>
404
+ <example os.edition="Enterprise" os.version="Service Pack 1" os.product="Windows 7" os.build="7601">Windows 7 Enterprise 7601 Service Pack 1</example>
405
+ <example os.edition="Starter" os.version="Service Pack 1" os.product="Windows 7" os.build="7601">Windows 7 Starter 7601 Service Pack 1</example>
406
+ <example os.edition="Ultimate" os.build="7601" os.version="Service Pack 1" os.product="Windows 7">Windows 7 Ultimate 7601 Service Pack 1, v.178</example>
404
407
  <param pos="0" name="os.certainty" value="1.0"/>
405
408
  <param pos="0" name="os.vendor" value="Microsoft"/>
406
409
  <param pos="1" name="os.product"/>
@@ -411,7 +414,7 @@
411
414
 
412
415
  <fingerprint pattern="^(Windows (?:7|8|8\.1)(?:| RT)) (\d+) (Service Pack \d+)$">
413
416
  <description>Windows 7/8 (SP)</description>
414
- <example os.version="Service Pack 1">Windows 7 7601 Service Pack 1</example>
417
+ <example os.version="Service Pack 1" os.product="Windows 7" os.build="7601">Windows 7 7601 Service Pack 1</example>
415
418
  <param pos="0" name="os.certainty" value="1.0"/>
416
419
  <param pos="0" name="os.vendor" value="Microsoft"/>
417
420
  <param pos="1" name="os.product"/>
@@ -421,9 +424,9 @@
421
424
 
422
425
  <fingerprint pattern="^(Windows (?:7|8|8\.1)(?:| RT)) (\w+|\w+ \w+|\w+ \w+ \w+) (\d+)$">
423
426
  <description>Windows 7/8 (Edition)</description>
424
- <example os.edition="Enterprise">Windows 7 Enterprise 7600</example>
425
- <example os.edition="Enterprise">Windows 8.1 Enterprise 9600</example>
426
- <example os.edition="Enterprise">Windows 8 Enterprise 9200</example>
427
+ <example os.edition="Enterprise" os.product="Windows 7" os.build="7600">Windows 7 Enterprise 7600</example>
428
+ <example os.edition="Enterprise" os.product="Windows 8.1" os.build="9600">Windows 8.1 Enterprise 9600</example>
429
+ <example os.edition="Enterprise" os.product="Windows 8" os.build="9200">Windows 8 Enterprise 9200</example>
427
430
  <param pos="0" name="os.certainty" value="1.0"/>
428
431
  <param pos="0" name="os.vendor" value="Microsoft"/>
429
432
  <param pos="1" name="os.product"/>
@@ -433,7 +436,7 @@
433
436
 
434
437
  <fingerprint pattern="^(Windows (?:7|8|8\.1)(?:| RT)) (\d+)$">
435
438
  <description>Windows 7/8</description>
436
- <example>Windows 8 9200</example>
439
+ <example os.product="Windows 8" os.build="9200">Windows 8 9200</example>
437
440
  <param pos="0" name="os.certainty" value="1.0"/>
438
441
  <param pos="0" name="os.vendor" value="Microsoft"/>
439
442
  <param pos="1" name="os.product"/>
@@ -505,7 +508,7 @@
505
508
 
506
509
  <fingerprint pattern="^Windows Server 2012 (\w+|\w+ \w+|\w+ \w+ \w+) (\d+)$">
507
510
  <description>Windows Server 2012</description>
508
- <example>Windows Server 2012 Standard 9200</example>
511
+ <example os.edition="Standard" os.build="9200">Windows Server 2012 Standard 9200</example>
509
512
  <param pos="0" name="os.certainty" value="1.0"/>
510
513
  <param pos="0" name="os.vendor" value="Microsoft"/>
511
514
  <param pos="0" name="os.product" value="Windows Server 2012"/>
@@ -634,7 +637,7 @@
634
637
 
635
638
  <fingerprint pattern="^EMC-SNAS:T([\d\.]+)?$">
636
639
  <description>EMC Celerra</description>
637
- <example service.version="7.1.80.7">EMC-SNAS:T7.1.80.7</example>
640
+ <example service.version="7.1.80.7" os.version="7.1.80.7">EMC-SNAS:T7.1.80.7</example>
638
641
  <param pos="0" name="service.vendor" value="EMC"/>
639
642
  <param pos="0" name="service.product" value="Celerra"/>
640
643
  <param pos="1" name="service.version"/>