recog 2.3.12 → 2.3.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.github/SECURITY.md +35 -0
  3. data/.snyk +10 -0
  4. data/LICENSE +1 -1
  5. data/bin/recog_standardize +2 -2
  6. data/cpe-remap.yaml +46 -14
  7. data/identifiers/hw_device.txt +3 -4
  8. data/identifiers/hw_family.txt +6 -0
  9. data/identifiers/hw_product.txt +17 -6
  10. data/identifiers/os_architecture.txt +0 -10
  11. data/identifiers/os_device.txt +11 -31
  12. data/identifiers/os_family.txt +1 -95
  13. data/identifiers/os_product.txt +9 -117
  14. data/identifiers/service_family.txt +4 -36
  15. data/identifiers/service_product.txt +211 -92
  16. data/identifiers/vendor.txt +46 -194
  17. data/lib/recog/version.rb +1 -1
  18. data/requirements.txt +1 -1
  19. data/update_cpes.py +93 -45
  20. data/xml/dns_versionbind.xml +39 -16
  21. data/xml/favicons.xml +42 -17
  22. data/xml/ftp_banners.xml +39 -24
  23. data/xml/hp_pjl_id.xml +1 -1
  24. data/xml/html_title.xml +72 -22
  25. data/xml/http_cookies.xml +4 -1
  26. data/xml/http_servers.xml +342 -73
  27. data/xml/http_wwwauth.xml +20 -20
  28. data/xml/imap_banners.xml +39 -0
  29. data/xml/ldap_searchresult.xml +9 -6
  30. data/xml/ntp_banners.xml +1 -1
  31. data/xml/operating_system.xml +1 -0
  32. data/xml/pop_banners.xml +55 -2
  33. data/xml/sip_user_agents.xml +3 -3
  34. data/xml/smb_native_os.xml +1 -0
  35. data/xml/smtp_banners.xml +7 -2
  36. data/xml/smtp_help.xml +2 -0
  37. data/xml/smtp_vrfy.xml +2 -1
  38. data/xml/snmp_sysdescr.xml +125 -87
  39. data/xml/ssh_banners.xml +1 -1
  40. data/xml/telnet_banners.xml +155 -15
  41. data/xml/x509_issuers.xml +8 -5
  42. data/xml/x509_subjects.xml +25 -17
  43. metadata +4 -5
  44. data/identifiers/software_class.txt +0 -26
  45. data/identifiers/software_family.txt +0 -91
  46. data/identifiers/software_product.txt +0 -333
@@ -1,3 +1,3 @@
1
1
  module Recog
2
- VERSION = '2.3.12'
2
+ VERSION = '2.3.17'
3
3
  end
@@ -1,2 +1,2 @@
1
- lxml==4.5.1
1
+ lxml==4.6.2
2
2
  pyyaml
@@ -1,15 +1,15 @@
1
1
  #!/usr/bin/env python
2
2
 
3
- import yaml
4
3
  import logging
5
4
  import re
6
5
  import sys
7
6
 
7
+ import yaml
8
8
  from lxml import etree
9
9
 
10
10
  def parse_r7_remapping(file):
11
11
  with open(file) as remap_file:
12
- return yaml.load(remap_file)["mappings"]
12
+ return yaml.safe_load(remap_file)["mappings"]
13
13
 
14
14
  def parse_cpe_vp_map(file):
15
15
  vp_map = {} # cpe_type -> vendor -> products
@@ -20,9 +20,9 @@ def parse_cpe_vp_map(file):
20
20
  cpe_match = re.match('^cpe:/([aho]):([^:]+):([^:]+)', cpe_name)
21
21
  if cpe_match:
22
22
  cpe_type, vendor, product = cpe_match.group(1, 2, 3)
23
- if not cpe_type in vp_map:
23
+ if cpe_type not in vp_map:
24
24
  vp_map[cpe_type] = {}
25
- if not vendor in vp_map[cpe_type]:
25
+ if vendor not in vp_map[cpe_type]:
26
26
  vp_map[cpe_type][vendor] = set()
27
27
  product = product.replace('%2f', '/')
28
28
  vp_map[cpe_type][vendor].add(product)
@@ -34,12 +34,12 @@ def parse_cpe_vp_map(file):
34
34
  def main():
35
35
  if len(sys.argv) != 4:
36
36
  logging.critical("Expecting exactly 3 arguments; recog XML file, CPE 2.3 XML dictionary, JSON remapping, got %s", (len(sys.argv) - 1))
37
- exit(1)
37
+ sys.exit(1)
38
38
 
39
39
  cpe_vp_map = parse_cpe_vp_map(sys.argv[2])
40
40
  if not cpe_vp_map:
41
41
  logging.critical("No CPE vendor => product mappings read from CPE 2.3 XML dictionary %s", sys.argv[2])
42
- exit(1)
42
+ sys.exit(1)
43
43
 
44
44
  r7_vp_map = parse_r7_remapping(sys.argv[3])
45
45
  if not r7_vp_map:
@@ -47,6 +47,82 @@ def main():
47
47
 
48
48
  update_cpes(sys.argv[1], cpe_vp_map, r7_vp_map)
49
49
 
50
+ def lookup_cpe(vendor, product, cpe_type, cpe_table, remap):
51
+ """Identify the correct vendor and product values for a CPE
52
+
53
+ This function attempts to determine the correct CPE using vendor and product
54
+ values supplied by the caller as well as a remapping dictionary for mapping
55
+ these values to more correct values used by NIST.
56
+
57
+ For example, the remapping might tell us that a value of 'alpine' for the
58
+ vendor string should be 'aplinelinux' instead, or for product 'solaris'
59
+ should be 'sunos'.
60
+
61
+ This function should only emit values seen in the official NIST CPE list
62
+ which is provided to it in cpe_table.
63
+
64
+ Lookup priority:
65
+ 1. Original vendor / product
66
+ 2. Original vendor / remap product
67
+ 3. Remap vendor / original product
68
+ 4. Remap vendor / remap product
69
+
70
+ Args:
71
+ vendor (str): vendor name
72
+ product (str): product name
73
+ cpe_type (str): CPE type - o, a, h, etc.
74
+ cpe_table (dict): dict containing the official NIST CPE data
75
+ remap (dict): dict containing the remapping values
76
+ Returns:
77
+ success, vendor, product
78
+ """
79
+
80
+ if (
81
+ vendor in cpe_table[cpe_type]
82
+ and product in cpe_table[cpe_type][vendor]
83
+ ):
84
+ # Hot path, success with original values
85
+ return True, vendor, product
86
+
87
+ # Everything else depends on a remap of some sort.
88
+ # get the remappings for this one vendor string.
89
+ vendor_remap = remap.get(vendor, None)
90
+
91
+ if vendor_remap:
92
+ # If we have product remappings, work that angle next
93
+ possible_product = None
94
+ if (
95
+ vendor_remap.get('products', None)
96
+ and product in vendor_remap['products']
97
+ ):
98
+ possible_product = vendor_remap['products'][product]
99
+
100
+ if (vendor in cpe_table[cpe_type]
101
+ and possible_product
102
+ and possible_product in cpe_table[cpe_type][vendor]):
103
+ # Found original vendor, remap product
104
+ return True, vendor, possible_product
105
+
106
+ # Start working the process to find a match with a remapped vendor name
107
+ if vendor_remap.get('vendor', None):
108
+ new_vendor = vendor_remap['vendor']
109
+
110
+ if new_vendor in cpe_table[cpe_type]:
111
+
112
+ if product in cpe_table[cpe_type][new_vendor]:
113
+ # Found remap vendor, original product
114
+ return True, new_vendor, product
115
+
116
+ if possible_product and possible_product in cpe_table[cpe_type][new_vendor]:
117
+ # Found remap vendor, remap product
118
+ return True, new_vendor, possible_product
119
+
120
+
121
+ logging.error("Product %s from vendor %s invalid for CPE %s and no mapping",
122
+ product, vendor, cpe_type)
123
+ return False, None, None
124
+
125
+
50
126
  def update_cpes(xml_file, cpe_vp_map, r7_vp_map):
51
127
  parser = etree.XMLParser(remove_comments=False, remove_blank_text=True)
52
128
  doc = etree.parse(xml_file, parser)
@@ -121,44 +197,16 @@ def update_cpes(xml_file, cpe_vp_map, r7_vp_map):
121
197
  if (vendor.startswith('{') and vendor.endswith('}')) or (product.startswith('{') and product.endswith('}')):
122
198
  continue
123
199
 
124
- remapped_vendor = False
125
- og_vendor = vendor
126
- if not vendor in cpe_vp_map[cpe_type]:
127
- if vendor in r7_vp_map:
128
- vendor = r7_vp_map[vendor]['vendor']
129
- remapped_vendor = True
130
- if not vendor in cpe_vp_map[cpe_type]:
131
- logging.error("Remapped vendor %s (remapped from %s) invalid for CPE %s (product %s)", vendor, og_vendor, cpe_type, product)
132
- continue
133
- else:
134
- logging.error("Vendor %s invalid for CPE %s and no remapping (product %s)", vendor, cpe_type, product)
135
- continue
136
-
137
-
138
- # if the product as specified is not found in the CPE dictionary for this vendor
139
- if not product in cpe_vp_map[cpe_type][vendor]:
140
- # if this vendor has a remapping from R7
141
- if og_vendor in r7_vp_map and 'products' in r7_vp_map[og_vendor]:
142
- # if this product has a remapping for this vendor from R7
143
- if product in r7_vp_map[og_vendor]['products']:
144
- og_product = product
145
- product = r7_vp_map[og_vendor]['products'][product]
146
- # ensure that the remapped product is valid for the given vendor in CPE
147
- if not product in cpe_vp_map[cpe_type][vendor]:
148
- logging.error("Remapped product %s (remapped from %s) from vendor %s invalid for CPE %s", product, og_product, vendor, cpe_type)
149
- continue
150
- else:
151
- if remapped_vendor:
152
- logging.error("Product %s from vendor %s (remapped from %s) invalid for CPE %s and no mapping", product, vendor, og_vendor, cpe_type)
153
- else:
154
- logging.error("Product %s from vendor %s invalid for CPE %s and no mapping", product, vendor, cpe_type)
155
- continue
156
- else:
157
- if remapped_vendor:
158
- logging.error("Vendor %s (remapped from %s) is valid for CPE %s but product %s not valid and no mapping", vendor, og_vendor, cpe_type, product)
159
- else:
160
- logging.error("Vendor %s is valid for CPE %s but product %s not valid and no mapping", vendor, cpe_type, product)
161
- continue
200
+ success, vendor, product = lookup_cpe(vendor, product, cpe_type, cpe_vp_map, r7_vp_map)
201
+ if not success:
202
+ continue
203
+
204
+ # Sanity check the value to ensure that no invalid values will
205
+ # slip in due to logic or mapping bugs.
206
+ # If it's not in the official NIST list then log it and kick it out
207
+ if product not in cpe_vp_map[cpe_type][vendor]:
208
+ logging.error("Invalid CPE type %s created for vendor %s and product %s. This may be due to an invalid mapping.", cpe_type, vendor, product)
209
+ continue
162
210
 
163
211
  # building the CPE string
164
212
  # Last minute escaping of '/'
@@ -185,5 +233,5 @@ def update_cpes(xml_file, cpe_vp_map, r7_vp_map):
185
233
  xml_out.write(etree.tostring(root, pretty_print=True, xml_declaration=True, encoding=doc.docinfo.encoding))
186
234
 
187
235
  if __name__ == '__main__':
188
- try: exit(main())
236
+ try: sys.exit(main())
189
237
  except KeyboardInterrupt: pass
@@ -619,17 +619,18 @@
619
619
  dnscmd /config /EnableVersionQuery 1
620
620
  -->
621
621
 
622
- <fingerprint pattern="^Microsoft DNS (10.0.\d+)(?: \(\w+\))?$">
622
+ <fingerprint pattern="^Microsoft DNS (10.0.\d+)(?: \(([^)]+)\))?$">
623
623
  <description>Microsoft DNS on Windows 2016: GA</description>
624
624
  <!-- Windows 10 / 2016 moved towards a rolling release so capturing build
625
625
  is required unlike other Windows versions where we use a fixed string.
626
626
  -->
627
627
 
628
- <example service.version="10.0.14393" os.build="10.0.14393">Microsoft DNS 10.0.14393 (383900CE)</example>
628
+ <example service.version="10.0.14393" os.build="10.0.14393" service.version.version="383900CE">Microsoft DNS 10.0.14393 (383900CE)</example>
629
629
  <param pos="0" name="service.vendor" value="Microsoft"/>
630
630
  <param pos="0" name="service.family" value="DNS"/>
631
631
  <param pos="0" name="service.product" value="DNS"/>
632
632
  <param pos="1" name="service.version"/>
633
+ <param pos="2" name="service.version.version"/>
633
634
  <param pos="0" name="os.vendor" value="Microsoft"/>
634
635
  <param pos="0" name="os.family" value="Windows"/>
635
636
  <param pos="0" name="os.product" value="Windows Server 2016"/>
@@ -637,13 +638,14 @@
637
638
  <param pos="0" name="os.cpe23" value="cpe:/o:microsoft:windows_server_2016:-"/>
638
639
  </fingerprint>
639
640
 
640
- <fingerprint pattern="^Microsoft DNS 6.3.9600(?: \(\w+\))?$">
641
+ <fingerprint pattern="^Microsoft DNS 6.3.9600(?: \(([^)]+)\))?$">
641
642
  <description>Microsoft DNS on Windows 2012 R2</description>
642
- <example>Microsoft DNS 6.3.9600 (25804825)</example>
643
+ <example service.version.version="25804825">Microsoft DNS 6.3.9600 (25804825)</example>
643
644
  <param pos="0" name="service.vendor" value="Microsoft"/>
644
645
  <param pos="0" name="service.family" value="DNS"/>
645
646
  <param pos="0" name="service.product" value="DNS"/>
646
647
  <param pos="0" name="service.version" value="6.3.9600"/>
648
+ <param pos="1" name="service.version.version"/>
647
649
  <param pos="0" name="os.vendor" value="Microsoft"/>
648
650
  <param pos="0" name="os.family" value="Windows"/>
649
651
  <param pos="0" name="os.product" value="Windows Server 2012 R2"/>
@@ -651,13 +653,14 @@
651
653
  <param pos="0" name="os.cpe23" value="cpe:/o:microsoft:windows_server_2012:-"/>
652
654
  </fingerprint>
653
655
 
654
- <fingerprint pattern="^Microsoft DNS 6.2.9200(?: \(\w+\))?$">
656
+ <fingerprint pattern="^Microsoft DNS 6.2.9200(?: \(([^)]+)\))?$">
655
657
  <description>Microsoft DNS on Windows 2012</description>
656
- <example>Microsoft DNS 6.2.9200 (23F04000)</example>
658
+ <example service.version.version="23F04000">Microsoft DNS 6.2.9200 (23F04000)</example>
657
659
  <param pos="0" name="service.vendor" value="Microsoft"/>
658
660
  <param pos="0" name="service.family" value="DNS"/>
659
661
  <param pos="0" name="service.product" value="DNS"/>
660
662
  <param pos="0" name="service.version" value="6.2.9200"/>
663
+ <param pos="1" name="service.version.version"/>
661
664
  <param pos="0" name="os.vendor" value="Microsoft"/>
662
665
  <param pos="0" name="os.family" value="Windows"/>
663
666
  <param pos="0" name="os.product" value="Windows Server 2012"/>
@@ -665,14 +668,15 @@
665
668
  <param pos="0" name="os.cpe23" value="cpe:/o:microsoft:windows_server_2012:-"/>
666
669
  </fingerprint>
667
670
 
668
- <fingerprint pattern="^Microsoft DNS 6.1.7601(?: \(\w+\))?$">
671
+ <fingerprint pattern="^Microsoft DNS 6.1.7601(?: \(([^)]+)\))?$">
669
672
  <description>Microsoft DNS on Windows 2008 R2 Service Pack 1</description>
670
- <example>Microsoft DNS 6.1.7601 (1DB15CD4)</example>
673
+ <example service.version.version="1DB15CD4">Microsoft DNS 6.1.7601 (1DB15CD4)</example>
671
674
  <example>Microsoft DNS 6.1.7601</example>
672
675
  <param pos="0" name="service.vendor" value="Microsoft"/>
673
676
  <param pos="0" name="service.family" value="DNS"/>
674
677
  <param pos="0" name="service.product" value="DNS"/>
675
678
  <param pos="0" name="service.version" value="6.1.7601"/>
679
+ <param pos="1" name="service.version.version"/>
676
680
  <param pos="0" name="os.vendor" value="Microsoft"/>
677
681
  <param pos="0" name="os.family" value="Windows"/>
678
682
  <param pos="0" name="os.product" value="Windows Server 2008 R2"/>
@@ -681,13 +685,14 @@
681
685
  <param pos="0" name="os.cpe23" value="cpe:/o:microsoft:windows_server_2008:Service Pack 1"/>
682
686
  </fingerprint>
683
687
 
684
- <fingerprint pattern="^Microsoft DNS 6.1.7600(?: \(\w+\))?$">
688
+ <fingerprint pattern="^Microsoft DNS 6.1.7600(?: \(([^)]+)\))?$">
685
689
  <description>Microsoft DNS on Windows 2008 R2</description>
686
- <example>Microsoft DNS 6.1.7600 (1DB04228)</example>
690
+ <example service.version.version="1DB04228">Microsoft DNS 6.1.7600 (1DB04228)</example>
687
691
  <param pos="0" name="service.vendor" value="Microsoft"/>
688
692
  <param pos="0" name="service.family" value="DNS"/>
689
693
  <param pos="0" name="service.product" value="DNS"/>
690
694
  <param pos="0" name="service.version" value="6.1.7600"/>
695
+ <param pos="1" name="service.version.version"/>
691
696
  <param pos="0" name="os.vendor" value="Microsoft"/>
692
697
  <param pos="0" name="os.family" value="Windows"/>
693
698
  <param pos="0" name="os.product" value="Windows Server 2008 R2"/>
@@ -708,13 +713,14 @@
708
713
  <example>Microsoft DNS 6.0.6100 (2AEF76E)</example>
709
714
  </fingerprint>
710
715
 
711
- <fingerprint pattern="^Microsoft DNS 6.0.6003(?: \(\w+\))?$">
716
+ <fingerprint pattern="^Microsoft DNS 6.0.6003(?: \(([^)]+)\))?$">
712
717
  <description>Microsoft DNS on Windows 2008 Service Pack 2 - Preview Rollup KB4489887 and later</description>
713
- <example>Microsoft DNS 6.0.6003 (1773501D)</example>
718
+ <example service.version.version="1773501D">Microsoft DNS 6.0.6003 (1773501D)</example>
714
719
  <param pos="0" name="service.vendor" value="Microsoft"/>
715
720
  <param pos="0" name="service.family" value="DNS"/>
716
721
  <param pos="0" name="service.product" value="DNS"/>
717
722
  <param pos="0" name="service.version" value="6.0.6003"/>
723
+ <param pos="1" name="service.version.version"/>
718
724
  <param pos="0" name="os.vendor" value="Microsoft"/>
719
725
  <param pos="0" name="os.family" value="Windows"/>
720
726
  <param pos="0" name="os.product" value="Windows Server 2008"/>
@@ -723,13 +729,14 @@
723
729
  <param pos="0" name="os.cpe23" value="cpe:/o:microsoft:windows_server_2008:Service Pack 2"/>
724
730
  </fingerprint>
725
731
 
726
- <fingerprint pattern="^Microsoft DNS 6.0.6002(?: \(\w+\))?$">
732
+ <fingerprint pattern="^Microsoft DNS 6.0.6002(?: \(([^)]+)\))?$">
727
733
  <description>Microsoft DNS on Windows 2008 Service Pack 2</description>
728
- <example>Microsoft DNS 6.0.6002 (17724D35)</example>
734
+ <example service.version.version="17724D35">Microsoft DNS 6.0.6002 (17724D35)</example>
729
735
  <param pos="0" name="service.vendor" value="Microsoft"/>
730
736
  <param pos="0" name="service.family" value="DNS"/>
731
737
  <param pos="0" name="service.product" value="DNS"/>
732
738
  <param pos="0" name="service.version" value="6.0.6002"/>
739
+ <param pos="1" name="service.version.version"/>
733
740
  <param pos="0" name="os.vendor" value="Microsoft"/>
734
741
  <param pos="0" name="os.family" value="Windows"/>
735
742
  <param pos="0" name="os.product" value="Windows Server 2008"/>
@@ -738,13 +745,14 @@
738
745
  <param pos="0" name="os.cpe23" value="cpe:/o:microsoft:windows_server_2008:Service Pack 2"/>
739
746
  </fingerprint>
740
747
 
741
- <fingerprint pattern="^Microsoft DNS 6.0.6001(?: \(\w+\))?$">
748
+ <fingerprint pattern="^Microsoft DNS 6.0.6001(?: \(([^)]+)\))?$">
742
749
  <description>Microsoft DNS on Windows 2008 Service Pack 1</description>
743
- <example>Microsoft DNS 6.0.6001 (17714726)</example>
750
+ <example service.version.version="17714726">Microsoft DNS 6.0.6001 (17714726)</example>
744
751
  <param pos="0" name="service.vendor" value="Microsoft"/>
745
752
  <param pos="0" name="service.family" value="DNS"/>
746
753
  <param pos="0" name="service.product" value="DNS"/>
747
754
  <param pos="0" name="service.version" value="6.0.6001"/>
755
+ <param pos="1" name="service.version.version"/>
748
756
  <param pos="0" name="os.vendor" value="Microsoft"/>
749
757
  <param pos="0" name="os.family" value="Windows"/>
750
758
  <param pos="0" name="os.product" value="Windows Server 2008"/>
@@ -753,6 +761,21 @@
753
761
  <param pos="0" name="os.cpe23" value="cpe:/o:microsoft:windows_server_2008:Service Pack 1"/>
754
762
  </fingerprint>
755
763
 
764
+ <fingerprint pattern="^Microsoft DNS 5.2.3790(?: \(([^)]+)\))?$">
765
+ <description>Microsoft DNS on Windows 2003</description>
766
+ <example service.version.version="ECE135D">Microsoft DNS 5.2.3790 (ECE135D)</example>
767
+ <param pos="0" name="service.vendor" value="Microsoft"/>
768
+ <param pos="0" name="service.family" value="DNS"/>
769
+ <param pos="0" name="service.product" value="DNS"/>
770
+ <param pos="0" name="service.version" value="5.2.3790"/>
771
+ <param pos="1" name="service.version.version"/>
772
+ <param pos="0" name="os.vendor" value="Microsoft"/>
773
+ <param pos="0" name="os.family" value="Windows"/>
774
+ <param pos="0" name="os.product" value="Windows Server 2003"/>
775
+ <param pos="0" name="os.build" value="5.2.3790"/>
776
+ <param pos="0" name="os.cpe23" value="cpe:/o:microsoft:windows_server_2003:-"/>
777
+ </fingerprint>
778
+
756
779
  <fingerprint pattern="^DNSServer$">
757
780
  <description>Synology DNS service</description>
758
781
  <example>DNSServer</example>
@@ -21,6 +21,7 @@
21
21
  <param pos="0" name="service.vendor" value="Munin"/>
22
22
  <param pos="0" name="service.product" value="Munin"/>
23
23
  <param pos="0" name="service.certainty" value="0.5"/>
24
+ <param pos="0" name="service.cpe23" value="cpe:/a:munin-monitoring:munin:-"/>
24
25
  </fingerprint>
25
26
 
26
27
  <fingerprint pattern="^ce849e0d986f73c97aa81290c2052164$">
@@ -57,6 +58,7 @@
57
58
  <param pos="0" name="service.vendor" value="Drupal"/>
58
59
  <param pos="0" name="service.product" value="CMS"/>
59
60
  <param pos="0" name="service.certainty" value="0.5"/>
61
+ <param pos="0" name="service.cpe23" value="cpe:/a:drupal:drupal:-"/>
60
62
  </fingerprint>
61
63
 
62
64
  <fingerprint pattern="^91b72b23e7f499d6c09cb18c7b1278f1$">
@@ -65,6 +67,7 @@
65
67
  <param pos="0" name="service.vendor" value="Kodi"/>
66
68
  <param pos="0" name="service.product" value="Media Server"/>
67
69
  <param pos="0" name="service.certainty" value="0.5"/>
70
+ <param pos="0" name="service.cpe23" value="cpe:/a:kodi:kodi:-"/>
68
71
  </fingerprint>
69
72
 
70
73
  <fingerprint pattern="^d403850756671a93ca205b8128140494$">
@@ -111,8 +114,9 @@
111
114
  <description>Moodle</description>
112
115
  <example>135aed33c0a7b8f44f0227a71b9ce345</example>
113
116
  <param pos="0" name="service.vendor" value="Moodle"/>
114
- <param pos="0" name="service.product" value="Moodle CMS"/>
117
+ <param pos="0" name="service.product" value="Moodle"/>
115
118
  <param pos="0" name="service.certainty" value="0.5"/>
119
+ <param pos="0" name="service.cpe23" value="cpe:/a:moodle:moodle:-"/>
116
120
  </fingerprint>
117
121
 
118
122
  <fingerprint pattern="^23ab9cf3907dfc3b047d8b14e7303d0d$">
@@ -146,6 +150,7 @@
146
150
  <param pos="0" name="service.vendor" value="ownCloud"/>
147
151
  <param pos="0" name="service.product" value="ownCloud Server"/>
148
152
  <param pos="0" name="service.certainty" value="0.5"/>
153
+ <param pos="0" name="service.cpe23" value="cpe:/a:owncloud:owncloud:-"/>
149
154
  </fingerprint>
150
155
 
151
156
  <fingerprint pattern="^da897184fba34d5fe72148963f42b577$">
@@ -168,8 +173,10 @@
168
173
  <description>Metasploit Pro</description>
169
174
  <example>08ff173efec0750dd29ac7f44d972427</example>
170
175
  <param pos="0" name="service.vendor" value="Rapid7"/>
171
- <param pos="0" name="service.product" value="Metasploit Pro"/>
176
+ <param pos="0" name="service.product" value="Metasploit"/>
177
+ <param pos="0" name="service.edition" value="Pro"/>
172
178
  <param pos="0" name="service.certainty" value="0.5"/>
179
+ <param pos="0" name="service.cpe23" value="cpe:/a:rapid7:metasploit:-"/>
173
180
  </fingerprint>
174
181
 
175
182
  <fingerprint pattern="^23671ccca2849ae58d1b04c218013382$">
@@ -236,8 +243,9 @@
236
243
  <description>Swagger UI</description>
237
244
  <example>f983f318b0f0dff7a9303973f36ec45a</example>
238
245
  <param pos="0" name="service.vendor" value="Swagger"/>
239
- <param pos="0" name="service.product" value="UI"/>
246
+ <param pos="0" name="service.product" value="Swagger UI"/>
240
247
  <param pos="0" name="service.certainty" value="0.5"/>
248
+ <param pos="0" name="service.cpe23" value="cpe:/a:smartbear:swagger_ui:-"/>
241
249
  </fingerprint>
242
250
 
243
251
  <fingerprint pattern="^1c4201c7da53d6c7e48251d3a9680449$">
@@ -272,6 +280,7 @@
272
280
  <param pos="0" name="service.vendor" value="Progress"/>
273
281
  <param pos="0" name="service.product" value="OpenEdge Explorer"/>
274
282
  <param pos="0" name="service.certainty" value="0.5"/>
283
+ <param pos="0" name="service.cpe23" value="cpe:/a:progress:openedge:-"/>
275
284
  </fingerprint>
276
285
 
277
286
  <fingerprint pattern="^297a81069094d00a052733d3a0537d18$">
@@ -280,6 +289,7 @@
280
289
  <param pos="0" name="service.vendor" value="CrushFTP"/>
281
290
  <param pos="0" name="service.product" value="CrushFTP Web Interface"/>
282
291
  <param pos="0" name="service.certainty" value="0.5"/>
292
+ <param pos="0" name="service.cpe23" value="cpe:/a:crushftp:crushftp:-"/>
283
293
  </fingerprint>
284
294
 
285
295
  <fingerprint pattern="^f7728520c81b7a303d8e54d282e13a16$">
@@ -413,7 +423,7 @@
413
423
  <example>5856edf7bcbea0817312d9e535e5eb2a</example>
414
424
  <example>f4f3cb900258441d5dbc9105b7ab9b44</example>
415
425
  <example>c6acedaff906029fc5455d9ec52c7f42</example>
416
- <param pos="0" name="service.vendor" value="VMWare"/>
426
+ <param pos="0" name="service.vendor" value="VMware"/>
417
427
  <param pos="0" name="service.product" value="Horizon"/>
418
428
  <param pos="0" name="service.certainty" value="0.5"/>
419
429
  <param pos="0" name="service.cpe23" value="cpe:/a:vmware:horizon:-"/>
@@ -464,6 +474,7 @@
464
474
  <param pos="0" name="service.vendor" value="SABnzbd"/>
465
475
  <param pos="0" name="service.product" value="SABnzbd"/>
466
476
  <param pos="0" name="service.certainty" value="0.5"/>
477
+ <param pos="0" name="service.cpe23" value="cpe:/a:sabnzbd:sabnzbd:-"/>
467
478
  </fingerprint>
468
479
 
469
480
  <fingerprint pattern="^5c9f3938754b459fb3590a00e5947fed$">
@@ -500,6 +511,7 @@
500
511
  <param pos="0" name="service.vendor" value="Lynx Technology"/>
501
512
  <param pos="0" name="service.product" value="Twonky Media Server"/>
502
513
  <param pos="0" name="service.certainty" value="0.5"/>
514
+ <param pos="0" name="service.cpe23" value="cpe:/a:lynxtechnology:twonky_server:-"/>
503
515
  </fingerprint>
504
516
 
505
517
  <fingerprint pattern="^d14310fffe94d78c0da0c8fadb993f78$">
@@ -612,6 +624,7 @@
612
624
  <param pos="0" name="service.vendor" value="Elastic"/>
613
625
  <param pos="0" name="service.product" value="Kibana"/>
614
626
  <param pos="0" name="service.certainty" value="0.5"/>
627
+ <param pos="0" name="service.cpe23" value="cpe:/a:elastic:kibana:-"/>
615
628
  </fingerprint>
616
629
 
617
630
  <fingerprint pattern="^(?:ef07026465d7b449a9759132486d1e3b|bcc4933f81eff43e5d9bcc5b2828aa70|b204c198a410e5ee28346c4a2110535e|c00da11c81f9b887eed4123daee89909)$">
@@ -956,7 +969,7 @@
956
969
  <description>D-Link Network Camera</description>
957
970
  <example>842c79ab11f38323fc554afbea5c990a</example>
958
971
  <param pos="0" name="hw.vendor" value="D-Link"/>
959
- <param pos="0" name="hw.device" value="Web cam"/>
972
+ <param pos="0" name="hw.device" value="IP Camera"/>
960
973
  <param pos="0" name="hw.product" value="DCS-932"/>
961
974
  <param pos="0" name="os.certainty" value="0.5"/>
962
975
  </fingerprint>
@@ -968,15 +981,21 @@
968
981
  <param pos="0" name="os.family" value="Linux"/>
969
982
  <param pos="0" name="os.product" value="EdgeOS"/>
970
983
  <param pos="0" name="os.certainty" value="0.5"/>
984
+ <param pos="0" name="os.cpe23" value="cpe:/o:ui:edgeos:-"/>
971
985
  <param pos="0" name="hw.vendor" value="Ubiquiti"/>
972
986
  <param pos="0" name="hw.product" value="EdgeSwitch"/>
973
987
  <param pos="0" name="hw.certainty" value="0.5"/>
988
+ <param pos="0" name="hw.cpe23" value="cpe:/h:ui:edgeswitch:-"/>
974
989
  </fingerprint>
975
990
 
976
991
  <fingerprint pattern="^(?:7da8813873190b6e3d7d8957d798bd1e|31ccf4e22ba33dbec54cc357a43a36d3)$">
977
992
  <description>OpenMediaVault</description>
978
993
  <example>7da8813873190b6e3d7d8957d798bd1e</example>
979
994
  <example>31ccf4e22ba33dbec54cc357a43a36d3</example>
995
+ <param pos="0" name="service.vendor" value="OpenMediaVault"/>
996
+ <param pos="0" name="service.product" value="OpenMediaVault"/>
997
+ <param pos="0" name="service.certainty" value="0.5"/>
998
+ <param pos="0" name="service.cpe23" value="cpe:/a:openmediavault:openmediavault:-"/>
980
999
  <param pos="0" name="os.vendor" value="OpenMediaVault"/>
981
1000
  <param pos="0" name="os.family" value="Linux"/>
982
1001
  <param pos="0" name="os.product" value="OpenMediaVault"/>
@@ -988,11 +1007,11 @@
988
1007
  <description>ELAN Network Camera</description>
989
1008
  <example>9dac0d6bad34f38552361f3a3b5bab16</example>
990
1009
  <param pos="0" name="hw.vendor" value="ELAN"/>
991
- <param pos="0" name="hw.device" value="Web cam"/>
1010
+ <param pos="0" name="hw.device" value="IP Camera"/>
992
1011
  <param pos="0" name="hw.product" value="HDIPCam"/>
993
1012
  <param pos="0" name="hw.certainty" value="0.5"/>
994
1013
  <param pos="0" name="os.vendor" value="ELAN"/>
995
- <param pos="0" name="os.device" value="Web cam"/>
1014
+ <param pos="0" name="os.device" value="IP Camera"/>
996
1015
  <param pos="0" name="os.family" value="Linux"/>
997
1016
  <param pos="0" name="os.certainty" value="0.5"/>
998
1017
  </fingerprint>
@@ -1022,7 +1041,7 @@
1022
1041
  <description>Genetec AutoVu SharpV ALPR Camera</description>
1023
1042
  <example>979d9a884c322862e6830f61e2c378e6</example>
1024
1043
  <param pos="0" name="hw.vendor" value="Genetec"/>
1025
- <param pos="0" name="hw.device" value="Web cam"/>
1044
+ <param pos="0" name="hw.device" value="IP Camera"/>
1026
1045
  <param pos="0" name="hw.product" value="AutoVu SharpV"/>
1027
1046
  <param pos="0" name="hw.certainty" value="0.5"/>
1028
1047
  </fingerprint>
@@ -1046,7 +1065,7 @@
1046
1065
  <description>IQinVision IQeye Network Camera</description>
1047
1066
  <example>665f96fcdcc9da0ab89312acc02fa815</example>
1048
1067
  <param pos="0" name="hw.vendor" value="IQinVision"/>
1049
- <param pos="0" name="hw.device" value="Web cam"/>
1068
+ <param pos="0" name="hw.device" value="IP Camera"/>
1050
1069
  <param pos="0" name="hw.certainty" value="0.5"/>
1051
1070
  </fingerprint>
1052
1071
 
@@ -1139,6 +1158,10 @@
1139
1158
  <example>af13b379bdb4ae7a5e68d9aa4419b2e4</example>
1140
1159
  <example>cd844ad9671131f5464458a2ef58b7bc</example>
1141
1160
  <example>c32e2dc4d7caedd5cefc9d44cc4f62ec</example>
1161
+ <param pos="0" name="service.vendor" value="Cisco"/>
1162
+ <param pos="0" name="service.product" value="APIC"/>
1163
+ <param pos="0" name="service.certainty" value="0.5"/>
1164
+ <param pos="0" name="service.cpe23" value="cpe:/a:cisco:application_policy_infrastructure_controller:-"/>
1142
1165
  <param pos="0" name="hw.vendor" value="Cisco"/>
1143
1166
  <param pos="0" name="hw.product" value="APIC"/>
1144
1167
  <param pos="0" name="hw.device" value="Network Appliance"/>
@@ -1202,7 +1225,7 @@
1202
1225
  <description>ServerTech Sentry Switched CDU</description>
1203
1226
  <example>b56508cc967af50baddfd69596901dab</example>
1204
1227
  <param pos="0" name="hw.vendor" value="ServerTech"/>
1205
- <param pos="0" name="hw.device" value="Power device"/>
1228
+ <param pos="0" name="hw.device" value="Power Device"/>
1206
1229
  <param pos="0" name="hw.product" value="Sentry Switched CDU"/>
1207
1230
  <param pos="0" name="hw.certainty" value="0.5"/>
1208
1231
  </fingerprint>
@@ -1230,7 +1253,7 @@
1230
1253
  <param pos="0" name="os.product" value="Linux"/>
1231
1254
  <param pos="0" name="os.certainty" value="0.5"/>
1232
1255
  <param pos="0" name="hw.vendor" value="TRENDnet"/>
1233
- <param pos="0" name="hw.device" value="Web Cam"/>
1256
+ <param pos="0" name="hw.device" value="IP Camera"/>
1234
1257
  <param pos="0" name="hw.product" value="IP Camera"/>
1235
1258
  <param pos="0" name="hw.certainty" value="0.5"/>
1236
1259
  </fingerprint>
@@ -1238,7 +1261,7 @@
1238
1261
  <fingerprint pattern="^89167393768668c72fab6a9f025b5da6$">
1239
1262
  <description>APC Power Device</description>
1240
1263
  <example>89167393768668c72fab6a9f025b5da6</example>
1241
- <param pos="0" name="hw.device" value="Power device"/>
1264
+ <param pos="0" name="hw.device" value="Power Device"/>
1242
1265
  <param pos="0" name="hw.vendor" value="APC"/>
1243
1266
  </fingerprint>
1244
1267
 
@@ -1288,10 +1311,10 @@
1288
1311
  <description>Axis Network Camera</description>
1289
1312
  <example>a3fd8705f010b90e37d42128000f620b</example>
1290
1313
  <param pos="0" name="hw.vendor" value="AXIS"/>
1291
- <param pos="0" name="hw.device" value="Web cam"/>
1314
+ <param pos="0" name="hw.device" value="IP Camera"/>
1292
1315
  <param pos="0" name="hw.certainty" value="0.5"/>
1293
1316
  <param pos="0" name="os.vendor" value="AXIS"/>
1294
- <param pos="0" name="os.device" value="Web cam"/>
1317
+ <param pos="0" name="os.device" value="IP Camera"/>
1295
1318
  <param pos="0" name="os.family" value="Linux"/>
1296
1319
  <param pos="0" name="os.product" value="Linux"/>
1297
1320
  <param pos="0" name="os.certainty" value="0.5"/>
@@ -1415,7 +1438,7 @@
1415
1438
  <fingerprint pattern="^efe29d50711d9b093d8187e97cc0e593$">
1416
1439
  <description>Panduit PDU</description>
1417
1440
  <example>efe29d50711d9b093d8187e97cc0e593</example>
1418
- <param pos="0" name="hw.device" value="Power device"/>
1441
+ <param pos="0" name="hw.device" value="Power Device"/>
1419
1442
  <param pos="0" name="hw.vendor" value="Panduit"/>
1420
1443
  <param pos="0" name="hw.certainty" value="0.25"/>
1421
1444
  </fingerprint>
@@ -1424,7 +1447,7 @@
1424
1447
  <description>ScienceLogic EM7</description>
1425
1448
  <example>6eb3dbf248df10d70eab44dbf836cb77</example>
1426
1449
  <param pos="0" name="hw.vendor" value="Science Logic"/>
1427
- <param pos="0" name="hw.device" value="Network Management"/>
1450
+ <param pos="0" name="hw.device" value="Network Management Device"/>
1428
1451
  <param pos="0" name="hw.product" value="EM7"/>
1429
1452
  <param pos="0" name="hw.certainty" value="0.5"/>
1430
1453
  </fingerprint>
@@ -1493,6 +1516,7 @@
1493
1516
  <param pos="0" name="os.family" value="Linux"/>
1494
1517
  <param pos="0" name="os.product" value="EdgeOS"/>
1495
1518
  <param pos="0" name="os.certainty" value="0.5"/>
1519
+ <param pos="0" name="os.cpe23" value="cpe:/o:ui:edgeos:-"/>
1496
1520
  <param pos="0" name="hw.vendor" value="Ubiquiti"/>
1497
1521
  <param pos="0" name="hw.device" value="Router"/>
1498
1522
  <param pos="0" name="hw.certainty" value="0.25"/>
@@ -1582,7 +1606,7 @@
1582
1606
  <description>Mobotix Network Camera</description>
1583
1607
  <example>d9526978908979fa5018db0bcc762aa0</example>
1584
1608
  <param pos="0" name="hw.vendor" value="Mobotix"/>
1585
- <param pos="0" name="hw.device" value="Web cam"/>
1609
+ <param pos="0" name="hw.device" value="IP Camera"/>
1586
1610
  <param pos="0" name="hw.product" value="IP Camera"/>
1587
1611
  <param pos="0" name="hw.certainty" value="0.5"/>
1588
1612
  </fingerprint>
@@ -1671,6 +1695,7 @@
1671
1695
  <param pos="0" name="os.product" value="DD OS"/>
1672
1696
  <param pos="0" name="os.device" value="Storage"/>
1673
1697
  <param pos="0" name="os.certainty" value="0.5"/>
1698
+ <param pos="0" name="os.cpe23" value="cpe:/o:dell:emc_data_domain_os:-"/>
1674
1699
  <param pos="0" name="hw.vendor" value="Data Domain"/>
1675
1700
  <param pos="0" name="hw.product" value="DD OS"/>
1676
1701
  <param pos="0" name="hw.device" value="Storage"/>