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
@@ -69,12 +69,12 @@
69
69
 
70
70
  <fingerprint pattern="^SERIALNUMBER=PID:([^ ]+) SN:([^,]+),CN=(?:[a-zA-Z0-9\-]+)-SEP([a-fA-F0-9]{12}),OU=[CV]TG,O=Cisco Systems Inc\.$">
71
71
  <description>Cisco IP phone with serial number</description>
72
- <example host.mac="B07D47D33A1C" hw.product="CP-8851" cisco.serial_number="FCH1924AHCA">SERIALNUMBER=PID:CP-8851 SN:FCH1924AHCA,CN=CP-8851-SEPB07D47D33A1C,OU=CTG,O=Cisco Systems Inc.</example>
73
- <example host.mac="64D989000000" hw.product="CP-9951" cisco.serial_number="FCH15200000">SERIALNUMBER=PID:CP-9951 SN:FCH15200000,CN=CP-9951-SEP64D989000000,OU=VTG,O=Cisco Systems Inc.</example>
72
+ <example host.mac="B07D47D33A1C" hw.product="CP-8851" hw.serial_number="FCH1924AHCA">SERIALNUMBER=PID:CP-8851 SN:FCH1924AHCA,CN=CP-8851-SEPB07D47D33A1C,OU=CTG,O=Cisco Systems Inc.</example>
73
+ <example host.mac="64D989000000" hw.product="CP-9951" hw.serial_number="FCH15200000">SERIALNUMBER=PID:CP-9951 SN:FCH15200000,CN=CP-9951-SEP64D989000000,OU=VTG,O=Cisco Systems Inc.</example>
74
74
  <param pos="0" name="hw.device" value="VoIP"/>
75
75
  <param pos="0" name="hw.vendor" value="Cisco"/>
76
76
  <param pos="1" name="hw.product"/>
77
- <param pos="2" name="cisco.serial_number"/>
77
+ <param pos="2" name="hw.serial_number"/>
78
78
  <param pos="3" name="host.mac"/>
79
79
  </fingerprint>
80
80
 
@@ -216,7 +216,7 @@
216
216
 
217
217
  <fingerprint pattern="^CN=([A-Za-z0-9\_\-\.]+),OU=ISS,O=Hewlett-Packard Company,L=Houston,ST=Texas,C=US$">
218
218
  <description>HP iLO</description>
219
- <example>CN=SERVER-1231,OU=ISS,O=Hewlett-Packard Company,L=Houston,ST=Texas,C=US</example>
219
+ <example host.name="SERVER-1231">CN=SERVER-1231,OU=ISS,O=Hewlett-Packard Company,L=Houston,ST=Texas,C=US</example>
220
220
  <param pos="0" name="hw.device" value="Lights Out Management"/>
221
221
  <param pos="0" name="hw.vendor" value="HP"/>
222
222
  <param pos="0" name="hw.family" value="iLO"/>
@@ -247,8 +247,8 @@
247
247
 
248
248
  <fingerprint pattern="^CN=OA\-([a-fA-F0-9]+),OU=Onboard Administrator,">
249
249
  <description>HP iLO (Onboard Administrator)</description>
250
- <example>CN=OA-001F296E21A3,OU=Onboard Administrator,O=Corp.,L=Location,ST=N/A,C=US</example>
251
- <example>CN=OA-80C16E999999,OU=Onboard Administrator,O=Hewlett-Packard</example>
250
+ <example host.mac="001F296E21A3">CN=OA-001F296E21A3,OU=Onboard Administrator,O=Corp.,L=Location,ST=N/A,C=US</example>
251
+ <example host.mac="80C16E999999">CN=OA-80C16E999999,OU=Onboard Administrator,O=Hewlett-Packard</example>
252
252
  <param pos="0" name="hw.device" value="Lights Out Management"/>
253
253
  <param pos="0" name="hw.vendor" value="HP"/>
254
254
  <param pos="0" name="hw.family" value="iLO"/>
@@ -264,7 +264,7 @@
264
264
 
265
265
  <fingerprint pattern="^CN=([A-Za-z0-9\_\-\.]+),OU=Hewlett Packard Enterprise Network Management Software \(SMH\),O=Hewlett Packard Enterprise,L=Houston,ST=Texas,C=US$">
266
266
  <description>HP iLO - Enterprise Mgmt variant</description>
267
- <example>CN=bigsrv99,OU=Hewlett Packard Enterprise Network Management Software (SMH),O=Hewlett Packard Enterprise,L=Houston,ST=Texas,C=US</example>
267
+ <example host.name="bigsrv99">CN=bigsrv99,OU=Hewlett Packard Enterprise Network Management Software (SMH),O=Hewlett Packard Enterprise,L=Houston,ST=Texas,C=US</example>
268
268
  <param pos="0" name="hw.device" value="Lights Out Management"/>
269
269
  <param pos="0" name="hw.vendor" value="HP"/>
270
270
  <param pos="0" name="hw.family" value="iLO"/>
@@ -289,6 +289,7 @@
289
289
  <param pos="0" name="os.vendor" value="Oracle"/>
290
290
  <param pos="0" name="os.family" value="ILOM"/>
291
291
  <param pos="0" name="os.product" value="ILOM"/>
292
+ <param pos="0" name="os.cpe23" value="cpe:/o:oracle:integrated_lights_out_manager_firmware:-"/>
292
293
  </fingerprint>
293
294
 
294
295
  <fingerprint pattern="^CN=AMI,OU=Service Processors,O=American Megatrends Inc">
@@ -307,27 +308,27 @@
307
308
 
308
309
  <fingerprint pattern="^CN=C-series CIMC,OU=PID:([^ ]+) SERIAL:([^,]+),O=Cisco">
309
310
  <description>Cisco Integrated Management Controller</description>
310
- <example cisco.serial_number="FCH18999AAA" cisco.imc_model="UCSC-C220-M3S">CN=C-series CIMC,OU=PID:UCSC-C220-M3S SERIAL:FCH18999AAA,O=Cisco Self Signed,L=San Jose,ST=California,C=US</example>
311
+ <example hw.serial_number="FCH18999AAA" cisco.imc_model="UCSC-C220-M3S">CN=C-series CIMC,OU=PID:UCSC-C220-M3S SERIAL:FCH18999AAA,O=Cisco Self Signed,L=San Jose,ST=California,C=US</example>
311
312
  <param pos="0" name="hw.device" value="Lights Out Management"/>
312
313
  <param pos="0" name="hw.vendor" value="Cisco"/>
313
314
  <param pos="0" name="hw.product" value="IMC"/>
314
315
  <param pos="0" name="os.vendor" value="Cisco"/>
315
316
  <param pos="0" name="os.family" value="Linux"/>
316
317
  <param pos="0" name="os.product" value="IMC"/>
317
- <param pos="2" name="cisco.serial_number"/>
318
+ <param pos="2" name="hw.serial_number"/>
318
319
  <param pos="1" name="cisco.imc_model"/>
319
320
  </fingerprint>
320
321
 
321
322
  <fingerprint pattern="^CN=C220-(FCH[^,]+),OU=null,O=Cisco Systems Inc">
322
323
  <description>Cisco Integrated Management Controller C220</description>
323
- <example cisco.serial_number="FCH17999AAA">CN=C220-FCH17999AAA,OU=null,O=Cisco Systems Inc.,L=San Jose,ST=California,C=US</example>
324
+ <example hw.serial_number="FCH17999AAA">CN=C220-FCH17999AAA,OU=null,O=Cisco Systems Inc.,L=San Jose,ST=California,C=US</example>
324
325
  <param pos="0" name="hw.device" value="Lights Out Management"/>
325
326
  <param pos="0" name="hw.vendor" value="Cisco"/>
326
327
  <param pos="0" name="hw.product" value="IMC"/>
327
328
  <param pos="0" name="os.vendor" value="Cisco"/>
328
329
  <param pos="0" name="os.family" value="Linux"/>
329
330
  <param pos="0" name="os.product" value="IMC"/>
330
- <param pos="1" name="cisco.serial_number"/>
331
+ <param pos="1" name="hw.serial_number"/>
331
332
  </fingerprint>
332
333
 
333
334
  <fingerprint pattern="^CN=avocent.com,OU=AESS,O=Avocent,L=Sunrise,ST=FL,C=US$">
@@ -352,8 +353,8 @@
352
353
 
353
354
  <fingerprint pattern="^CN=HP Jetdirect [a-zA-Z0-9]+,OU=([a-fA-F0-9]{12})\+OU=([a-zA-Z0-9]+),O=Hewlett-Packard Co\.$">
354
355
  <description>HP Jet Direct - with host MAC and product</description>
355
- <example host.mac="2C413883186A" hw.product="J8028E">CN=HP Jetdirect 38831831,OU=2C413883186A+OU=J8028E,O=Hewlett-Packard Co.</example>
356
- <example os.product="J8016E">CN=HP Jetdirect FBFA31E7,OU=8851FBE33ABB+OU=J8016E,O=Hewlett-Packard Co.</example>
356
+ <example host.mac="2C413883186A" hw.product="J8028E" os.product="J8028E">CN=HP Jetdirect 38831831,OU=2C413883186A+OU=J8028E,O=Hewlett-Packard Co.</example>
357
+ <example os.product="J8016E" host.mac="8851FBE33ABB" hw.product="J8016E">CN=HP Jetdirect FBFA31E7,OU=8851FBE33ABB+OU=J8016E,O=Hewlett-Packard Co.</example>
357
358
  <param pos="0" name="hw.device" value="Printer"/>
358
359
  <param pos="0" name="hw.vendor" value="HP"/>
359
360
  <param pos="0" name="hw.family" value="JetDirect"/>
@@ -407,12 +408,12 @@
407
408
 
408
409
  <fingerprint pattern="^SERIALNUMBER=([a-zA-Z0-9]+),CN=DEVICE-vWLC,O=Cisco Virtual WLC$">
409
410
  <description>Cisco vWLC</description>
410
- <example cisco.serial_number="9C89M2088D1">SERIALNUMBER=9C89M2088D1,CN=DEVICE-vWLC,O=Cisco Virtual WLC</example>
411
+ <example hw.serial_number="9C89M2088D1">SERIALNUMBER=9C89M2088D1,CN=DEVICE-vWLC,O=Cisco Virtual WLC</example>
411
412
  <param pos="0" name="os.vendor" value="Cisco"/>
412
413
  <param pos="0" name="os.device" value="Wireless Controller"/>
413
414
  <param pos="0" name="os.product" value="Wireless LAN Controller"/>
414
415
  <param pos="0" name="os.cpe23" value="cpe:/o:cisco:wireless_lan_controller_software:-"/>
415
- <param pos="1" name="cisco.serial_number"/>
416
+ <param pos="1" name="hw.serial_number"/>
416
417
  </fingerprint>
417
418
 
418
419
  <fingerprint pattern="^CN=[a-zA-Z0-9\.\-\_]+,OU=DeviceSSL \(WebAdmin\),O=Cisco Systems Inc\.,C=US$">
@@ -503,7 +504,7 @@
503
504
 
504
505
  <fingerprint pattern="^CN=([a-zA-Z0-9\.\-\_]+),OU=VMware ESX Server Default Certificate,O=VMware\\, Inc,L=Palo Alto,ST=California,C=US$">
505
506
  <description>VMware ESX</description>
506
- <example>CN=server99.,OU=VMware ESX Server Default Certificate,O=VMware\, Inc,L=Palo Alto,ST=California,C=US</example>
507
+ <example host.name="server99.">CN=server99.,OU=VMware ESX Server Default Certificate,O=VMware\, Inc,L=Palo Alto,ST=California,C=US</example>
507
508
  <param pos="0" name="service.vendor" value="VMware"/>
508
509
  <param pos="0" name="os.vendor" value="VMware"/>
509
510
  <param pos="0" name="os.family" value="VMware ESX/ESXi"/>
@@ -588,7 +589,7 @@
588
589
  <param pos="0" name="service.vendor" value="Traefik Labs"/>
589
590
  <param pos="0" name="service.family" value="Traefik"/>
590
591
  <param pos="0" name="service.product" value="Traefik Proxy"/>
591
- <param pos="0" name="service.cpe23" value="cpe:/a:containous:traefik:-"/>
592
+ <param pos="0" name="service.cpe23" value="cpe:/a:traefik:traefik:-"/>
592
593
  </fingerprint>
593
594
 
594
595
  <fingerprint pattern="^CN=default(?: [A-Z]+)?,OU=NS Internal,O=Citrix ANG,L=San Jose,ST=California,C=US$">
@@ -614,8 +615,8 @@
614
615
 
615
616
  <fingerprint pattern="^CN=([a-zA-Z0-9]{5,12}) ([a-zA-Z0-9]{12}),OU=(?:Cast|Google TV),O=Google Inc,L=Mountain View,ST=California,C=US$">
616
617
  <description>Google Chromecast</description>
617
- <example chromecast.serial_number="LVDZG5" host.mac_local="FA8FCA67413D">CN=LVDZG5 FA8FCA67413D,OU=Cast,O=Google Inc,L=Mountain View,ST=California,C=US</example>
618
- <example chromecast.serial_number="YRBLE" host.mac_local="FA8FCA7DE87D">CN=YRBLE FA8FCA7DE87D,OU=Google TV,O=Google Inc,L=Mountain View,ST=California,C=US</example>
618
+ <example host.mac_local="FA8FCA67413D" hw.serial_number="LVDZG5">CN=LVDZG5 FA8FCA67413D,OU=Cast,O=Google Inc,L=Mountain View,ST=California,C=US</example>
619
+ <example host.mac_local="FA8FCA7DE87D" hw.serial_number="YRBLE">CN=YRBLE FA8FCA7DE87D,OU=Google TV,O=Google Inc,L=Mountain View,ST=California,C=US</example>
619
620
  <param pos="0" name="os.vendor" value="Google"/>
620
621
  <param pos="0" name="os.product" value="Chrome OS"/>
621
622
  <param pos="0" name="os.certainty" value="0.5"/>
@@ -624,7 +625,8 @@
624
625
  <param pos="0" name="hw.vendor" value="Google"/>
625
626
  <param pos="0" name="hw.product" value="Chromecast"/>
626
627
  <param pos="0" name="hw.certainty" value="0.5"/>
627
- <param pos="1" name="chromecast.serial_number"/>
628
+ <param pos="1" name="hw.serial_number"/>
629
+ <param pos="0" name="hw.cpe23" value="cpe:/h:google:chromecast:-"/>
628
630
  <!-- This is the hotspot-mode MAC address (clear bit 2) -->
629
631
 
630
632
  <param pos="2" name="host.mac_local"/>
@@ -632,14 +634,14 @@
632
634
 
633
635
  <fingerprint pattern="^CN=([a-zA-Z0-9]{5,12}) ([a-zA-Z0-9]{12}),OU=Cast TV \(Vizio\),O=Google Inc,L=Mountain View,ST=California,C=US$">
634
636
  <description>Vizio SmartTV (Android) with Google Cast</description>
635
- <example chromecast.serial_number="9V039WC9" host.mac_local="FA8FCA697898">CN=9V039WC9 FA8FCA697898,OU=Cast TV (Vizio),O=Google Inc,L=Mountain View,ST=California,C=US</example>
637
+ <example hw.serial_number="9V039WC9" host.mac_local="FA8FCA697898">CN=9V039WC9 FA8FCA697898,OU=Cast TV (Vizio),O=Google Inc,L=Mountain View,ST=California,C=US</example>
636
638
  <param pos="0" name="os.vendor" value="Google"/>
637
639
  <param pos="0" name="os.family" value="Linux"/>
638
640
  <param pos="0" name="os.product" value="Android"/>
639
641
  <param pos="0" name="os.cpe23" value="cpe:/o:google:android:-"/>
640
642
  <param pos="0" name="hw.device" value="Smart TV"/>
641
643
  <param pos="0" name="hw.vendor" value="Vizio"/>
642
- <param pos="1" name="chromecast.serial_number"/>
644
+ <param pos="1" name="hw.serial_number"/>
643
645
  <!-- This is the hotspot-mode MAC address (clear bit 2) -->
644
646
 
645
647
  <param pos="2" name="host.mac_local"/>
@@ -878,8 +880,8 @@
878
880
 
879
881
  <fingerprint pattern="^CN=([A-Za-z0-9]+),OU=FortiGate,O=Fortinet,L=Sunnyvale,ST=California,C=US$">
880
882
  <description>Fortinet Gateway</description>
881
- <example fortinet.serial_number="FG100ETK1800118">CN=FG100ETK1800118,OU=FortiGate,O=Fortinet,L=Sunnyvale,ST=California,C=US</example>
882
- <example fortinet.serial_number="FGT30D3X15038375">CN=FGT30D3X15038375,OU=FortiGate,O=Fortinet,L=Sunnyvale,ST=California,C=US</example>
883
+ <example hw.serial_number="FG100ETK1800118">CN=FG100ETK1800118,OU=FortiGate,O=Fortinet,L=Sunnyvale,ST=California,C=US</example>
884
+ <example hw.serial_number="FGT30D3X15038375">CN=FGT30D3X15038375,OU=FortiGate,O=Fortinet,L=Sunnyvale,ST=California,C=US</example>
883
885
  <param pos="0" name="hw.vendor" value="Fortinet"/>
884
886
  <param pos="0" name="hw.device" value="Firewall"/>
885
887
  <param pos="0" name="os.vendor" value="Fortinet"/>
@@ -887,12 +889,12 @@
887
889
  <param pos="0" name="os.device" value="Firewall"/>
888
890
  <param pos="0" name="os.product" value="FortiOS"/>
889
891
  <param pos="0" name="os.cpe23" value="cpe:/o:fortinet:fortios:-"/>
890
- <param pos="1" name="fortinet.serial_number"/>
892
+ <param pos="1" name="hw.serial_number"/>
891
893
  </fingerprint>
892
894
 
893
895
  <fingerprint pattern="^CN=([A-Za-z0-9]+),O=Fortinet Ltd\.$">
894
896
  <description>Fortinet Gateway (Older)</description>
895
- <example fortinet.serial_number="FG100D3G13803999">CN=FG100D3G13803999,O=Fortinet Ltd.</example>
897
+ <example hw.serial_number="FG100D3G13803999">CN=FG100D3G13803999,O=Fortinet Ltd.</example>
896
898
  <param pos="0" name="hw.vendor" value="Fortinet"/>
897
899
  <param pos="0" name="hw.device" value="Firewall"/>
898
900
  <param pos="0" name="os.vendor" value="Fortinet"/>
@@ -900,7 +902,7 @@
900
902
  <param pos="0" name="os.device" value="Firewall"/>
901
903
  <param pos="0" name="os.product" value="FortiOS"/>
902
904
  <param pos="0" name="os.cpe23" value="cpe:/o:fortinet:fortios:-"/>
903
- <param pos="1" name="fortinet.serial_number"/>
905
+ <param pos="1" name="hw.serial_number"/>
904
906
  </fingerprint>
905
907
 
906
908
  <fingerprint pattern="^CN=FortiMail,OU=FortiMail,O=Fortinet,L=Sunnyvale,ST=California,C=US$">
@@ -1130,10 +1132,11 @@
1130
1132
  <param pos="0" name="os.product" value="Linux"/>
1131
1133
  </fingerprint>
1132
1134
 
1133
- <fingerprint pattern="^CN=MAC([a-fA-F0-9]{12}),OU=([^,]+),O=Mercury Security Products\\, LLC,L=Long Beach,ST=CA,C=US$">
1135
+ <fingerprint pattern="^CN=MAC([a-fA-F0-9]{12}),OU=([^,]+),O=Mercury Security Products\\, LLC,L=Long Beach,ST=CA,C=US(?:,\S+)?$">
1134
1136
  <description>Mercurity Security (now HID Global)</description>
1135
1137
  <example hw.product="M5IC" host.mac="000FE507A1F1">CN=MAC000FE507A1F1,OU=M5IC,O=Mercury Security Products\, LLC,L=Long Beach,ST=CA,C=US</example>
1136
1138
  <example hw.product="EP-1502" host.mac="000FE508BC71">CN=MAC000FE508BC71,OU=EP-1502,O=Mercury Security Products\, LLC,L=Long Beach,ST=CA,C=US</example>
1139
+ <example hw.product="LP-1501" host.mac="000FE5091111">CN=MAC000FE5091111,OU=LP-1501,O=Mercury Security Products\, LLC,L=Long Beach,ST=CA,C=US,2.5.4.4=#111111111111111111</example>
1137
1140
  <param pos="0" name="hw.vendor" value="Mercury Security"/>
1138
1141
  <param pos="0" name="hw.device" value="Access Control"/>
1139
1142
  <param pos="1" name="host.mac"/>
@@ -1233,7 +1236,7 @@
1233
1236
 
1234
1237
  <fingerprint pattern="^CN=Canon (iR-[a-zA-Z0-9\.\-\_]+)$">
1235
1238
  <description>Canon iR-ADV Printer with product info</description>
1236
- <example os.product="iR-ADV">CN=Canon iR-ADV</example>
1239
+ <example os.product="iR-ADV" hw.product="iR-ADV">CN=Canon iR-ADV</example>
1237
1240
  <param pos="0" name="hw.device" value="Printer"/>
1238
1241
  <param pos="0" name="hw.vendor" value="Canon"/>
1239
1242
  <param pos="0" name="os.device" value="Printer"/>
@@ -1298,19 +1301,28 @@
1298
1301
 
1299
1302
  <fingerprint pattern="^CN=Ruckus Wireless ZoneDirector SN-(\d+),O=Ruckus Wireless\\, Inc\.,ST=CA,C=US$">
1300
1303
  <description>Ruckus Zone Director</description>
1301
- <example ruckus.serial_number="221301007591">CN=Ruckus Wireless ZoneDirector SN-221301007591,O=Ruckus Wireless\, Inc.,ST=CA,C=US</example>
1304
+ <example hw.serial_number="221301007591">CN=Ruckus Wireless ZoneDirector SN-221301007591,O=Ruckus Wireless\, Inc.,ST=CA,C=US</example>
1302
1305
  <param pos="0" name="hw.device" value="Wireless Controller"/>
1303
1306
  <param pos="0" name="hw.vendor" value="Ruckus"/>
1304
1307
  <param pos="0" name="hw.product" value="Zone Director"/>
1305
1308
  <param pos="0" name="os.device" value="Wireless Controller"/>
1306
1309
  <param pos="0" name="os.vendor" value="Ruckus"/>
1307
1310
  <param pos="0" name="os.product" value="Zone Director"/>
1308
- <param pos="1" name="ruckus.serial_number"/>
1311
+ <param pos="1" name="hw.serial_number"/>
1312
+ </fingerprint>
1313
+
1314
+ <fingerprint pattern="^CN=SN-(\d+),O=Ruckus Wireless Inc.,L=Sunnyvale,ST=California,C=US$">
1315
+ <description>Ruckus Wireless Access Point</description>
1316
+ <example hw.serial_number="010101010101">CN=SN-010101010101,O=Ruckus Wireless Inc.,L=Sunnyvale,ST=California,C=US</example>
1317
+ <param pos="0" name="hw.device" value="WAP"/>
1318
+ <param pos="0" name="hw.vendor" value="Ruckus"/>
1319
+ <param pos="0" name="hw.product" value="Access Point"/>
1320
+ <param pos="1" name="hw.serial_number"/>
1309
1321
  </fingerprint>
1310
1322
 
1311
1323
  <fingerprint pattern="^CN=DT([^\s]+) Series,O=NEC Corporation,ST=Tokyo,C=JP$">
1312
1324
  <description>NEC DT Series IP Phone</description>
1313
- <example>CN=DT800 Series,O=NEC Corporation,ST=Tokyo,C=JP</example>
1325
+ <example hw.product="800">CN=DT800 Series,O=NEC Corporation,ST=Tokyo,C=JP</example>
1314
1326
  <param pos="0" name="os.vendor" value="NEC"/>
1315
1327
  <param pos="0" name="os.device" value="VoIP"/>
1316
1328
  <param pos="0" name="hw.vendor" value="NEC"/>
@@ -1459,9 +1471,10 @@
1459
1471
  <param pos="0" name="hw.product" value="Sensor"/>
1460
1472
  </fingerprint>
1461
1473
 
1462
- <fingerprint pattern="^CN=HiveAP,OU=Default,O=Aerohive,ST=California,C=US$">
1474
+ <fingerprint pattern="^CN=HiveAP,OU=Default,O=Aerohive,(?:L=Sunnyvale,)?ST=California,C=US$">
1463
1475
  <description>Aerohive Access Point</description>
1464
1476
  <example>CN=HiveAP,OU=Default,O=Aerohive,ST=California,C=US</example>
1477
+ <example>CN=HiveAP,OU=Default,O=Aerohive,L=Sunnyvale,ST=California,C=US</example>
1465
1478
  <param pos="0" name="hw.vendor" value="Aerohive"/>
1466
1479
  <param pos="0" name="hw.device" value="WAP"/>
1467
1480
  <param pos="0" name="hw.product" value="Access Point"/>
@@ -1644,4 +1657,102 @@
1644
1657
  <param pos="1" name="host.name"/>
1645
1658
  </fingerprint>
1646
1659
 
1660
+ <fingerprint pattern="^CN=Freebox Intermediate CA,O=Freebox,ST=France,C=FR$">
1661
+ <description>Freebox Device</description>
1662
+ <example>CN=Freebox Intermediate CA,O=Freebox,ST=France,C=FR</example>
1663
+ <param pos="0" name="hw.vendor" value="Freebox"/>
1664
+ </fingerprint>
1665
+
1666
+ <fingerprint pattern="^CN=TP-LINK CA,O=TP-LINK Technologies CO.\\, LTD.,L=Shenzhen,ST=Guangdong,C=CN(?:,\S+)?$">
1667
+ <description>TP-LINK Device</description>
1668
+ <example>CN=TP-LINK CA,O=TP-LINK Technologies CO.\, LTD.,L=Shenzhen,ST=Guangdong,C=CN,1.2.840.113549.1.9.1=#0c16736572766963654074702d6c696e6b2e636f6d2e636e</example>
1669
+ <param pos="0" name="hw.vendor" value="TP-LINK"/>
1670
+ </fingerprint>
1671
+
1672
+ <fingerprint pattern="^CN=BHA-([0-9a-fA-F]{12}),O=Bird Home Automation$">
1673
+ <description>Bird Home Automation</description>
1674
+ <example host.mac="0123456789AB">CN=BHA-0123456789AB,O=Bird Home Automation</example>
1675
+ <param pos="0" name="hw.device" value="Device"/>
1676
+ <param pos="0" name="hw.vendor" value="Bird Home Automation"/>
1677
+ <param pos="1" name="host.mac"/>
1678
+ </fingerprint>
1679
+
1680
+ <fingerprint pattern="^CN=\S+,OU=Media Server,O=Avaya Inc\.,C=US">
1681
+ <description>Avaya Media Server</description>
1682
+ <example>CN=192.168.0.3,OU=Media Server,O=Avaya Inc.,C=US</example>
1683
+ <param pos="0" name="os.vendor" value="Avaya"/>
1684
+ <param pos="0" name="os.device" value="Media Gateway"/>
1685
+ <param pos="0" name="os.product" value="Media Server"/>
1686
+ </fingerprint>
1687
+
1688
+ <fingerprint pattern="^CN=iSTAR Ultra">
1689
+ <description>iSTAR Ultra</description>
1690
+ <example>CN=iSTAR Ultra,OU=Access Control and Video Division,O=Johnson Controls,L=Westford,ST=Massachusetts,C=US</example>
1691
+ <param pos="0" name="os.vendor" value="Software House"/>
1692
+ <param pos="0" name="os.family" value="Linux"/>
1693
+ <param pos="0" name="os.product" value="{hw.product} Firmware"/>
1694
+ <param pos="0" name="hw.vendor" value="Software House"/>
1695
+ <param pos="0" name="hw.device" value="Access Control"/>
1696
+ <param pos="0" name="hw.family" value="iSTAR Door Controllers"/>
1697
+ <param pos="0" name="hw.product" value="iSTAR Ultra"/>
1698
+ <param pos="0" name="hw.cpe23" value="cpe:/h:swhouse:istar_ultra:-"/>
1699
+ </fingerprint>
1700
+
1701
+ <fingerprint pattern="^O=SpotteRF - NetworkedIO$">
1702
+ <description>SpotterRF</description>
1703
+ <example>O=SpotteRF - NetworkedIO</example>
1704
+ <param pos="0" name="os.vendor" value="SpotterRF"/>
1705
+ <param pos="0" name="os.family" value="Linux"/>
1706
+ <param pos="0" name="os.certainty" value="0.90"/>
1707
+ <param pos="0" name="hw.vendor" value="SpotterRF"/>
1708
+ <param pos="0" name="hw.device" value="Sensor"/>
1709
+ <param pos="0" name="hw.product" value="Drone Detector"/>
1710
+ </fingerprint>
1711
+
1712
+ <fingerprint pattern="(?i)^CN=.{0,1000}myboschcam.net,O=Bosch Sicherheitssysteme">
1713
+ <description>Bosch AutoDome IP Camera</description>
1714
+ <example>CN=local.myboschcam.net,O=Bosch Sicherheitssysteme GmbH,L=Grasbrunn,ST=Bayern,C=DE</example>
1715
+ <param pos="0" name="hw.vendor" value="Bosch"/>
1716
+ <param pos="0" name="hw.device" value="Web Cam"/>
1717
+ <param pos="0" name="hw.product" value="AutoDome"/>
1718
+ <param pos="0" name="hw.certainty" value="0.50"/>
1719
+ </fingerprint>
1720
+
1721
+ <fingerprint pattern="(?i)CN=(\w+),OU=BWI,O=Redline Communications Inc">
1722
+ <description>Redline Communication Radios</description>
1723
+ <example hw.product="an80i">CN=an80i,OU=BWI,O=Redline Communications Inc.,C=CA</example>
1724
+ <param pos="0" name="hw.vendor" value="Redline"/>
1725
+ <param pos="0" name="hw.device" value="WAP"/>
1726
+ <param pos="1" name="hw.product"/>
1727
+ </fingerprint>
1728
+
1729
+ <fingerprint pattern="(?i)CN=Vaddio Device,O=Vaddio,L=Minnetonka,ST=MN,C=US">
1730
+ <description>Vadio DocCom</description>
1731
+ <example>CN=Vaddio Device,O=Vaddio,L=Minnetonka,ST=MN,C=US</example>
1732
+ <param pos="0" name="hw.vendor" value="Vaddio"/>
1733
+ <param pos="0" name="hw.device" value="Web Cam"/>
1734
+ <param pos="0" name="hw.product" value="DocCam"/>
1735
+ <param pos="0" name="hw.certainty" value="0.50"/>
1736
+ </fingerprint>
1737
+
1738
+ <fingerprint pattern="(?i)CN=.{0,1000},OU=2N IP Intercoms,O=2N Telekomunikace a.s.,L=Prague,ST=Czech Republic,C=CZ">
1739
+ <description>2N IP Intercoms</description>
1740
+ <example>CN=11111111111d,OU=2N IP Intercoms,O=2N Telekomunikace a.s.,L=Prague,ST=Czech Republic,C=CZ</example>
1741
+ <param pos="0" name="hw.vendor" value="2N Telekomunikace"/>
1742
+ <param pos="0" name="hw.device" value="IP Camera"/>
1743
+ <param pos="0" name="hw.certainty" value="0.50"/>
1744
+ </fingerprint>
1745
+
1746
+ <fingerprint pattern="^CN=(.{1,256}),OU=PVE Cluster Node,O=Proxmox Virtual Environment$">
1747
+ <description>Proxmox open-source virtualization platform</description>
1748
+ <example host.name="pve.example.org">CN=pve.example.org,OU=PVE Cluster Node,O=Proxmox Virtual Environment</example>
1749
+ <param pos="1" name="host.name"/>
1750
+ <param pos="0" name="service.vendor" value="Proxmox"/>
1751
+ <param pos="0" name="service.product" value="Virtual Environment"/>
1752
+ <param pos="0" name="service.cpe23" value="cpe:/a:proxmox:virtual_environment:-"/>
1753
+ <param pos="0" name="os.vendor" value="Proxmox"/>
1754
+ <param pos="0" name="os.family" value="Linux"/>
1755
+ <param pos="0" name="os.product" value="Proxmox"/>
1756
+ </fingerprint>
1757
+
1647
1758
  </fingerprints>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: recog
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.20
4
+ version: 2.3.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rapid7 Research
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-13 00:00:00.000000000 Z
11
+ date: 2022-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -128,13 +128,19 @@ files:
128
128
  - ".github/ISSUE_TEMPLATE/fingerprint_request.md"
129
129
  - ".github/PULL_REQUEST_TEMPLATE"
130
130
  - ".github/SECURITY.md"
131
+ - ".github/dependabot.yml"
131
132
  - ".github/workflows/ci.yml"
133
+ - ".github/workflows/verify.yml"
132
134
  - ".gitignore"
133
135
  - ".rspec"
134
136
  - ".ruby-gemset"
135
137
  - ".ruby-version"
136
138
  - ".snyk"
137
139
  - ".travis.yml"
140
+ - ".vscode/bin/monitor-recog-fingerprints.sh"
141
+ - ".vscode/extensions.json"
142
+ - ".vscode/settings.json"
143
+ - ".vscode/tasks.json"
138
144
  - ".yardopts"
139
145
  - CONTRIBUTING.md
140
146
  - COPYING
@@ -153,12 +159,14 @@ files:
153
159
  - features/data/multiple_banners_fingerprints.xml
154
160
  - features/data/no_tests.xml
155
161
  - features/data/sample_banner.txt
162
+ - features/data/schema_failure.xml
156
163
  - features/data/successful_tests.xml
157
164
  - features/data/tests_with_failures.xml
158
165
  - features/data/tests_with_warnings.xml
159
166
  - features/match.feature
160
167
  - features/support/aruba.rb
161
168
  - features/support/env.rb
169
+ - features/support/hooks.rb
162
170
  - features/verify.feature
163
171
  - identifiers/README.md
164
172
  - identifiers/fields.txt
@@ -178,13 +186,13 @@ files:
178
186
  - lib/recog/fingerprint.rb
179
187
  - lib/recog/fingerprint/regexp_factory.rb
180
188
  - lib/recog/fingerprint/test.rb
189
+ - lib/recog/fingerprint_parse_error.rb
181
190
  - lib/recog/formatter.rb
182
191
  - lib/recog/match_reporter.rb
183
192
  - lib/recog/matcher.rb
184
193
  - lib/recog/matcher_factory.rb
185
194
  - lib/recog/nizer.rb
186
195
  - lib/recog/verifier.rb
187
- - lib/recog/verifier_factory.rb
188
196
  - lib/recog/verify_reporter.rb
189
197
  - lib/recog/version.rb
190
198
  - misc/convert_mysql_err
@@ -194,6 +202,10 @@ files:
194
202
  - spec/data/best_os_match_1.yml
195
203
  - spec/data/best_os_match_2.yml
196
204
  - spec/data/best_service_match_1.yml
205
+ - spec/data/external_example_fingerprint.xml
206
+ - spec/data/external_example_fingerprint/hp_printer_ex_01.txt
207
+ - spec/data/external_example_fingerprint/hp_printer_ex_02.txt
208
+ - spec/data/external_example_illegal_path_fingerprint.xml
197
209
  - spec/data/smb_native_os.txt
198
210
  - spec/data/test_fingerprints.xml
199
211
  - spec/data/verification_fingerprints.xml
@@ -207,10 +219,12 @@ files:
207
219
  - spec/lib/recog/nizer_spec.rb
208
220
  - spec/lib/recog/verify_reporter_spec.rb
209
221
  - spec/spec_helper.rb
222
+ - tools/dev/hooks/pre-commit
210
223
  - update_cpes.py
211
224
  - xml/apache_modules.xml
212
225
  - xml/apache_os.xml
213
226
  - xml/architecture.xml
227
+ - xml/dhcp_vendor_class.xml
214
228
  - xml/dns_versionbind.xml
215
229
  - xml/favicons.xml
216
230
  - xml/fingerprints.xsd
@@ -275,7 +289,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
275
289
  - !ruby/object:Gem::Version
276
290
  version: '0'
277
291
  requirements: []
278
- rubygems_version: 3.0.8
292
+ rubygems_version: 3.0.3
279
293
  signing_key:
280
294
  specification_version: 4
281
295
  summary: Network service fingerprint database, classes, and utilities
@@ -285,16 +299,22 @@ test_files:
285
299
  - features/data/multiple_banners_fingerprints.xml
286
300
  - features/data/no_tests.xml
287
301
  - features/data/sample_banner.txt
302
+ - features/data/schema_failure.xml
288
303
  - features/data/successful_tests.xml
289
304
  - features/data/tests_with_failures.xml
290
305
  - features/data/tests_with_warnings.xml
291
306
  - features/match.feature
292
307
  - features/support/aruba.rb
293
308
  - features/support/env.rb
309
+ - features/support/hooks.rb
294
310
  - features/verify.feature
295
311
  - spec/data/best_os_match_1.yml
296
312
  - spec/data/best_os_match_2.yml
297
313
  - spec/data/best_service_match_1.yml
314
+ - spec/data/external_example_fingerprint.xml
315
+ - spec/data/external_example_fingerprint/hp_printer_ex_01.txt
316
+ - spec/data/external_example_fingerprint/hp_printer_ex_02.txt
317
+ - spec/data/external_example_illegal_path_fingerprint.xml
298
318
  - spec/data/smb_native_os.txt
299
319
  - spec/data/test_fingerprints.xml
300
320
  - spec/data/verification_fingerprints.xml
@@ -1,13 +0,0 @@
1
- require 'recog/verifier'
2
- require 'recog/formatter'
3
- require 'recog/verify_reporter'
4
-
5
- module Recog
6
- module VerifierFactory
7
- def self.build(options)
8
- formatter = Formatter.new(options, $stdout)
9
- reporter = VerifyReporter.new(options, formatter)
10
- Verifier.new(options.fingerprints, reporter)
11
- end
12
- end
13
- end