recog 2.3.14 → 2.3.19

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 (50) hide show
  1. checksums.yaml +4 -4
  2. data/.github/SECURITY.md +35 -0
  3. data/.github/workflows/ci.yml +26 -0
  4. data/.snyk +10 -0
  5. data/LICENSE +1 -1
  6. data/bin/recog_standardize +2 -2
  7. data/cpe-remap.yaml +55 -14
  8. data/identifiers/hw_device.txt +5 -4
  9. data/identifiers/hw_family.txt +12 -0
  10. data/identifiers/hw_product.txt +76 -6
  11. data/identifiers/os_architecture.txt +0 -10
  12. data/identifiers/os_device.txt +13 -31
  13. data/identifiers/os_family.txt +2 -95
  14. data/identifiers/os_product.txt +34 -117
  15. data/identifiers/service_family.txt +7 -36
  16. data/identifiers/service_product.txt +238 -92
  17. data/identifiers/vendor.txt +78 -193
  18. data/lib/recog/version.rb +1 -1
  19. data/requirements.txt +1 -1
  20. data/update_cpes.py +96 -48
  21. data/xml/dns_versionbind.xml +39 -16
  22. data/xml/favicons.xml +150 -17
  23. data/xml/ftp_banners.xml +21 -19
  24. data/xml/hp_pjl_id.xml +1 -1
  25. data/xml/html_title.xml +200 -23
  26. data/xml/http_cookies.xml +89 -1
  27. data/xml/http_servers.xml +144 -18
  28. data/xml/http_wwwauth.xml +28 -20
  29. data/xml/ldap_searchresult.xml +9 -6
  30. data/xml/mdns_device-info_txt.xml +308 -10
  31. data/xml/ntp_banners.xml +9 -1
  32. data/xml/operating_system.xml +1 -0
  33. data/xml/rtsp_servers.xml +7 -0
  34. data/xml/sip_banners.xml +344 -8
  35. data/xml/sip_user_agents.xml +320 -7
  36. data/xml/smb_native_lm.xml +32 -1
  37. data/xml/smb_native_os.xml +158 -33
  38. data/xml/smtp_banners.xml +7 -2
  39. data/xml/smtp_help.xml +2 -0
  40. data/xml/smtp_vrfy.xml +2 -1
  41. data/xml/snmp_sysdescr.xml +252 -86
  42. data/xml/ssh_banners.xml +118 -11
  43. data/xml/telnet_banners.xml +34 -9
  44. data/xml/tls_jarm.xml +139 -0
  45. data/xml/x509_issuers.xml +24 -5
  46. data/xml/x509_subjects.xml +97 -17
  47. metadata +6 -5
  48. data/identifiers/software_class.txt +0 -26
  49. data/identifiers/software_family.txt +0 -91
  50. data/identifiers/software_product.txt +0 -333
data/lib/recog/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Recog
2
- VERSION = '2.3.14'
2
+ VERSION = '2.3.19'
3
3
  end
data/requirements.txt CHANGED
@@ -1,2 +1,2 @@
1
- lxml==4.5.1
1
+ lxml==4.6.2
2
2
  pyyaml
data/update_cpes.py CHANGED
@@ -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)
@@ -114,55 +190,27 @@ def update_cpes(xml_file, cpe_vp_map, r7_vp_map):
114
190
  continue
115
191
 
116
192
  vendor = vendor.lower().replace(' ', '_').replace(',', '')
117
- product = product.lower().replace(' ', '_').replace(',', '')
193
+ product = product.lower().replace(' ', '_').replace(',', '').replace('!', '%21')
118
194
  if 'unknown' in [vendor, product]:
119
195
  continue
120
196
 
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
- # Last minute escaping of '/'
165
- product = product.replace('/', '\/')
212
+ # Last minute escaping of '/' and `!`
213
+ product = product.replace('/', '\/').replace('%21', '\!')
166
214
  cpe_value = 'cpe:/{}:{}:{}'.format(cpe_type, vendor, product)
167
215
 
168
216
  if version:
@@ -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>
data/xml/favicons.xml CHANGED
@@ -6,6 +6,30 @@
6
6
 
7
7
  <!-- Services -->
8
8
 
9
+ <fingerprint pattern="^4297c114f263c206ed12aaff4b0c7a50|e5af3b68e837498a85b25ef2c36a0825$">
10
+ <description>Metabase</description>
11
+ <example>4297c114f263c206ed12aaff4b0c7a50</example>
12
+ <example>e5af3b68e837498a85b25ef2c36a0825</example>
13
+ <param pos="0" name="service.product" value="Metabase"/>
14
+ <param pos="0" name="service.vendor" value="Metabase"/>
15
+ <param pos="0" name="service.cpe23" value="cpe:/a:metabase:metabase:-"/>
16
+ </fingerprint>
17
+
18
+ <fingerprint pattern="^14bd519881ea49a75353572cfb458dec$">
19
+ <description>Calibre-Web Project</description>
20
+ <example>14bd519881ea49a75353572cfb458dec</example>
21
+ <param pos="0" name="service.vendor" value="Calibre-Web Project"/>
22
+ <param pos="0" name="service.product" value="Calibre-Web"/>
23
+ <param pos="0" name="service.cpe23" value="cpe:/a:calibre-web_project:calibre-web:-"/>
24
+ </fingerprint>
25
+
26
+ <fingerprint pattern="^d2cef6047a604012455f5c9a1cd4d960$">
27
+ <description>Jellyfin Media Server</description>
28
+ <example>d2cef6047a604012455f5c9a1cd4d960</example>
29
+ <param pos="0" name="service.vendor" value="Jellyfin"/>
30
+ <param pos="0" name="service.product" value="Media Server"/>
31
+ </fingerprint>
32
+
9
33
  <fingerprint pattern="^0f584138aacfb79aaba7e2539fc4e642$">
10
34
  <description>Plex Media Server</description>
11
35
  <example>0f584138aacfb79aaba7e2539fc4e642</example>
@@ -21,6 +45,7 @@
21
45
  <param pos="0" name="service.vendor" value="Munin"/>
22
46
  <param pos="0" name="service.product" value="Munin"/>
23
47
  <param pos="0" name="service.certainty" value="0.5"/>
48
+ <param pos="0" name="service.cpe23" value="cpe:/a:munin-monitoring:munin:-"/>
24
49
  </fingerprint>
25
50
 
26
51
  <fingerprint pattern="^ce849e0d986f73c97aa81290c2052164$">
@@ -57,6 +82,7 @@
57
82
  <param pos="0" name="service.vendor" value="Drupal"/>
58
83
  <param pos="0" name="service.product" value="CMS"/>
59
84
  <param pos="0" name="service.certainty" value="0.5"/>
85
+ <param pos="0" name="service.cpe23" value="cpe:/a:drupal:drupal:-"/>
60
86
  </fingerprint>
61
87
 
62
88
  <fingerprint pattern="^91b72b23e7f499d6c09cb18c7b1278f1$">
@@ -65,6 +91,7 @@
65
91
  <param pos="0" name="service.vendor" value="Kodi"/>
66
92
  <param pos="0" name="service.product" value="Media Server"/>
67
93
  <param pos="0" name="service.certainty" value="0.5"/>
94
+ <param pos="0" name="service.cpe23" value="cpe:/a:kodi:kodi:-"/>
68
95
  </fingerprint>
69
96
 
70
97
  <fingerprint pattern="^d403850756671a93ca205b8128140494$">
@@ -111,8 +138,9 @@
111
138
  <description>Moodle</description>
112
139
  <example>135aed33c0a7b8f44f0227a71b9ce345</example>
113
140
  <param pos="0" name="service.vendor" value="Moodle"/>
114
- <param pos="0" name="service.product" value="Moodle CMS"/>
141
+ <param pos="0" name="service.product" value="Moodle"/>
115
142
  <param pos="0" name="service.certainty" value="0.5"/>
143
+ <param pos="0" name="service.cpe23" value="cpe:/a:moodle:moodle:-"/>
116
144
  </fingerprint>
117
145
 
118
146
  <fingerprint pattern="^23ab9cf3907dfc3b047d8b14e7303d0d$">
@@ -146,6 +174,7 @@
146
174
  <param pos="0" name="service.vendor" value="ownCloud"/>
147
175
  <param pos="0" name="service.product" value="ownCloud Server"/>
148
176
  <param pos="0" name="service.certainty" value="0.5"/>
177
+ <param pos="0" name="service.cpe23" value="cpe:/a:owncloud:owncloud:-"/>
149
178
  </fingerprint>
150
179
 
151
180
  <fingerprint pattern="^da897184fba34d5fe72148963f42b577$">
@@ -168,8 +197,10 @@
168
197
  <description>Metasploit Pro</description>
169
198
  <example>08ff173efec0750dd29ac7f44d972427</example>
170
199
  <param pos="0" name="service.vendor" value="Rapid7"/>
171
- <param pos="0" name="service.product" value="Metasploit Pro"/>
200
+ <param pos="0" name="service.product" value="Metasploit"/>
201
+ <param pos="0" name="service.edition" value="Pro"/>
172
202
  <param pos="0" name="service.certainty" value="0.5"/>
203
+ <param pos="0" name="service.cpe23" value="cpe:/a:rapid7:metasploit:-"/>
173
204
  </fingerprint>
174
205
 
175
206
  <fingerprint pattern="^23671ccca2849ae58d1b04c218013382$">
@@ -187,6 +218,16 @@
187
218
  <param pos="0" name="service.vendor" value="SolarWinds"/>
188
219
  <param pos="0" name="service.product" value="Virtualization Manager"/>
189
220
  <param pos="0" name="service.certainty" value="0.5"/>
221
+ <param pos="0" name="service.cpe23" value="cpe:/a:solarwinds:virtualization_manager:-"/>
222
+ </fingerprint>
223
+
224
+ <fingerprint pattern="^53317933c27890ae9218697ecc0e97d9$">
225
+ <description>SolarWinds Orion</description>
226
+ <example>53317933c27890ae9218697ecc0e97d9</example>
227
+ <param pos="0" name="service.vendor" value="SolarWinds"/>
228
+ <param pos="0" name="service.product" value="Orion Platform"/>
229
+ <param pos="0" name="service.certainty" value="0.5"/>
230
+ <param pos="0" name="service.cpe23" value="cpe:/a:solarwinds:orion_platform:-"/>
190
231
  </fingerprint>
191
232
 
192
233
  <fingerprint pattern="^ee20526df4d69f7b02ee107458d8d679$">
@@ -236,8 +277,9 @@
236
277
  <description>Swagger UI</description>
237
278
  <example>f983f318b0f0dff7a9303973f36ec45a</example>
238
279
  <param pos="0" name="service.vendor" value="Swagger"/>
239
- <param pos="0" name="service.product" value="UI"/>
280
+ <param pos="0" name="service.product" value="Swagger UI"/>
240
281
  <param pos="0" name="service.certainty" value="0.5"/>
282
+ <param pos="0" name="service.cpe23" value="cpe:/a:smartbear:swagger_ui:-"/>
241
283
  </fingerprint>
242
284
 
243
285
  <fingerprint pattern="^1c4201c7da53d6c7e48251d3a9680449$">
@@ -272,6 +314,7 @@
272
314
  <param pos="0" name="service.vendor" value="Progress"/>
273
315
  <param pos="0" name="service.product" value="OpenEdge Explorer"/>
274
316
  <param pos="0" name="service.certainty" value="0.5"/>
317
+ <param pos="0" name="service.cpe23" value="cpe:/a:progress:openedge:-"/>
275
318
  </fingerprint>
276
319
 
277
320
  <fingerprint pattern="^297a81069094d00a052733d3a0537d18$">
@@ -280,6 +323,7 @@
280
323
  <param pos="0" name="service.vendor" value="CrushFTP"/>
281
324
  <param pos="0" name="service.product" value="CrushFTP Web Interface"/>
282
325
  <param pos="0" name="service.certainty" value="0.5"/>
326
+ <param pos="0" name="service.cpe23" value="cpe:/a:crushftp:crushftp:-"/>
283
327
  </fingerprint>
284
328
 
285
329
  <fingerprint pattern="^f7728520c81b7a303d8e54d282e13a16$">
@@ -413,7 +457,7 @@
413
457
  <example>5856edf7bcbea0817312d9e535e5eb2a</example>
414
458
  <example>f4f3cb900258441d5dbc9105b7ab9b44</example>
415
459
  <example>c6acedaff906029fc5455d9ec52c7f42</example>
416
- <param pos="0" name="service.vendor" value="VMWare"/>
460
+ <param pos="0" name="service.vendor" value="VMware"/>
417
461
  <param pos="0" name="service.product" value="Horizon"/>
418
462
  <param pos="0" name="service.certainty" value="0.5"/>
419
463
  <param pos="0" name="service.cpe23" value="cpe:/a:vmware:horizon:-"/>
@@ -464,6 +508,7 @@
464
508
  <param pos="0" name="service.vendor" value="SABnzbd"/>
465
509
  <param pos="0" name="service.product" value="SABnzbd"/>
466
510
  <param pos="0" name="service.certainty" value="0.5"/>
511
+ <param pos="0" name="service.cpe23" value="cpe:/a:sabnzbd:sabnzbd:-"/>
467
512
  </fingerprint>
468
513
 
469
514
  <fingerprint pattern="^5c9f3938754b459fb3590a00e5947fed$">
@@ -500,6 +545,7 @@
500
545
  <param pos="0" name="service.vendor" value="Lynx Technology"/>
501
546
  <param pos="0" name="service.product" value="Twonky Media Server"/>
502
547
  <param pos="0" name="service.certainty" value="0.5"/>
548
+ <param pos="0" name="service.cpe23" value="cpe:/a:lynxtechnology:twonky_server:-"/>
503
549
  </fingerprint>
504
550
 
505
551
  <fingerprint pattern="^d14310fffe94d78c0da0c8fadb993f78$">
@@ -612,6 +658,7 @@
612
658
  <param pos="0" name="service.vendor" value="Elastic"/>
613
659
  <param pos="0" name="service.product" value="Kibana"/>
614
660
  <param pos="0" name="service.certainty" value="0.5"/>
661
+ <param pos="0" name="service.cpe23" value="cpe:/a:elastic:kibana:-"/>
615
662
  </fingerprint>
616
663
 
617
664
  <fingerprint pattern="^(?:ef07026465d7b449a9759132486d1e3b|bcc4933f81eff43e5d9bcc5b2828aa70|b204c198a410e5ee28346c4a2110535e|c00da11c81f9b887eed4123daee89909)$">
@@ -800,6 +847,14 @@
800
847
  <param pos="0" name="service.certainty" value="0.5"/>
801
848
  </fingerprint>
802
849
 
850
+ <fingerprint pattern="^ad4de5c717c886a99c4cf0e066e9b461$">
851
+ <description>MicroStrategy Collaboration Server</description>
852
+ <example>ad4de5c717c886a99c4cf0e066e9b461</example>
853
+ <param pos="0" name="service.vendor" value="MicroStrategy"/>
854
+ <param pos="0" name="service.product" value="Collaboration Server"/>
855
+ <param pos="0" name="service.certainty" value="0.5"/>
856
+ </fingerprint>
857
+
803
858
  <!-- Devices -->
804
859
 
805
860
  <fingerprint pattern="^2fd26da3d6b790a86038f440d5b37eea$">
@@ -956,7 +1011,7 @@
956
1011
  <description>D-Link Network Camera</description>
957
1012
  <example>842c79ab11f38323fc554afbea5c990a</example>
958
1013
  <param pos="0" name="hw.vendor" value="D-Link"/>
959
- <param pos="0" name="hw.device" value="Web cam"/>
1014
+ <param pos="0" name="hw.device" value="IP Camera"/>
960
1015
  <param pos="0" name="hw.product" value="DCS-932"/>
961
1016
  <param pos="0" name="os.certainty" value="0.5"/>
962
1017
  </fingerprint>
@@ -968,15 +1023,21 @@
968
1023
  <param pos="0" name="os.family" value="Linux"/>
969
1024
  <param pos="0" name="os.product" value="EdgeOS"/>
970
1025
  <param pos="0" name="os.certainty" value="0.5"/>
1026
+ <param pos="0" name="os.cpe23" value="cpe:/o:ui:edgeos:-"/>
971
1027
  <param pos="0" name="hw.vendor" value="Ubiquiti"/>
972
1028
  <param pos="0" name="hw.product" value="EdgeSwitch"/>
973
1029
  <param pos="0" name="hw.certainty" value="0.5"/>
1030
+ <param pos="0" name="hw.cpe23" value="cpe:/h:ui:edgeswitch:-"/>
974
1031
  </fingerprint>
975
1032
 
976
1033
  <fingerprint pattern="^(?:7da8813873190b6e3d7d8957d798bd1e|31ccf4e22ba33dbec54cc357a43a36d3)$">
977
1034
  <description>OpenMediaVault</description>
978
1035
  <example>7da8813873190b6e3d7d8957d798bd1e</example>
979
1036
  <example>31ccf4e22ba33dbec54cc357a43a36d3</example>
1037
+ <param pos="0" name="service.vendor" value="OpenMediaVault"/>
1038
+ <param pos="0" name="service.product" value="OpenMediaVault"/>
1039
+ <param pos="0" name="service.certainty" value="0.5"/>
1040
+ <param pos="0" name="service.cpe23" value="cpe:/a:openmediavault:openmediavault:-"/>
980
1041
  <param pos="0" name="os.vendor" value="OpenMediaVault"/>
981
1042
  <param pos="0" name="os.family" value="Linux"/>
982
1043
  <param pos="0" name="os.product" value="OpenMediaVault"/>
@@ -988,11 +1049,11 @@
988
1049
  <description>ELAN Network Camera</description>
989
1050
  <example>9dac0d6bad34f38552361f3a3b5bab16</example>
990
1051
  <param pos="0" name="hw.vendor" value="ELAN"/>
991
- <param pos="0" name="hw.device" value="Web cam"/>
1052
+ <param pos="0" name="hw.device" value="IP Camera"/>
992
1053
  <param pos="0" name="hw.product" value="HDIPCam"/>
993
1054
  <param pos="0" name="hw.certainty" value="0.5"/>
994
1055
  <param pos="0" name="os.vendor" value="ELAN"/>
995
- <param pos="0" name="os.device" value="Web cam"/>
1056
+ <param pos="0" name="os.device" value="IP Camera"/>
996
1057
  <param pos="0" name="os.family" value="Linux"/>
997
1058
  <param pos="0" name="os.certainty" value="0.5"/>
998
1059
  </fingerprint>
@@ -1022,7 +1083,7 @@
1022
1083
  <description>Genetec AutoVu SharpV ALPR Camera</description>
1023
1084
  <example>979d9a884c322862e6830f61e2c378e6</example>
1024
1085
  <param pos="0" name="hw.vendor" value="Genetec"/>
1025
- <param pos="0" name="hw.device" value="Web cam"/>
1086
+ <param pos="0" name="hw.device" value="IP Camera"/>
1026
1087
  <param pos="0" name="hw.product" value="AutoVu SharpV"/>
1027
1088
  <param pos="0" name="hw.certainty" value="0.5"/>
1028
1089
  </fingerprint>
@@ -1046,7 +1107,7 @@
1046
1107
  <description>IQinVision IQeye Network Camera</description>
1047
1108
  <example>665f96fcdcc9da0ab89312acc02fa815</example>
1048
1109
  <param pos="0" name="hw.vendor" value="IQinVision"/>
1049
- <param pos="0" name="hw.device" value="Web cam"/>
1110
+ <param pos="0" name="hw.device" value="IP Camera"/>
1050
1111
  <param pos="0" name="hw.certainty" value="0.5"/>
1051
1112
  </fingerprint>
1052
1113
 
@@ -1139,6 +1200,10 @@
1139
1200
  <example>af13b379bdb4ae7a5e68d9aa4419b2e4</example>
1140
1201
  <example>cd844ad9671131f5464458a2ef58b7bc</example>
1141
1202
  <example>c32e2dc4d7caedd5cefc9d44cc4f62ec</example>
1203
+ <param pos="0" name="service.vendor" value="Cisco"/>
1204
+ <param pos="0" name="service.product" value="APIC"/>
1205
+ <param pos="0" name="service.certainty" value="0.5"/>
1206
+ <param pos="0" name="service.cpe23" value="cpe:/a:cisco:application_policy_infrastructure_controller:-"/>
1142
1207
  <param pos="0" name="hw.vendor" value="Cisco"/>
1143
1208
  <param pos="0" name="hw.product" value="APIC"/>
1144
1209
  <param pos="0" name="hw.device" value="Network Appliance"/>
@@ -1202,7 +1267,7 @@
1202
1267
  <description>ServerTech Sentry Switched CDU</description>
1203
1268
  <example>b56508cc967af50baddfd69596901dab</example>
1204
1269
  <param pos="0" name="hw.vendor" value="ServerTech"/>
1205
- <param pos="0" name="hw.device" value="Power device"/>
1270
+ <param pos="0" name="hw.device" value="Power Device"/>
1206
1271
  <param pos="0" name="hw.product" value="Sentry Switched CDU"/>
1207
1272
  <param pos="0" name="hw.certainty" value="0.5"/>
1208
1273
  </fingerprint>
@@ -1230,7 +1295,7 @@
1230
1295
  <param pos="0" name="os.product" value="Linux"/>
1231
1296
  <param pos="0" name="os.certainty" value="0.5"/>
1232
1297
  <param pos="0" name="hw.vendor" value="TRENDnet"/>
1233
- <param pos="0" name="hw.device" value="Web Cam"/>
1298
+ <param pos="0" name="hw.device" value="IP Camera"/>
1234
1299
  <param pos="0" name="hw.product" value="IP Camera"/>
1235
1300
  <param pos="0" name="hw.certainty" value="0.5"/>
1236
1301
  </fingerprint>
@@ -1238,7 +1303,7 @@
1238
1303
  <fingerprint pattern="^89167393768668c72fab6a9f025b5da6$">
1239
1304
  <description>APC Power Device</description>
1240
1305
  <example>89167393768668c72fab6a9f025b5da6</example>
1241
- <param pos="0" name="hw.device" value="Power device"/>
1306
+ <param pos="0" name="hw.device" value="Power Device"/>
1242
1307
  <param pos="0" name="hw.vendor" value="APC"/>
1243
1308
  </fingerprint>
1244
1309
 
@@ -1288,10 +1353,10 @@
1288
1353
  <description>Axis Network Camera</description>
1289
1354
  <example>a3fd8705f010b90e37d42128000f620b</example>
1290
1355
  <param pos="0" name="hw.vendor" value="AXIS"/>
1291
- <param pos="0" name="hw.device" value="Web cam"/>
1356
+ <param pos="0" name="hw.device" value="IP Camera"/>
1292
1357
  <param pos="0" name="hw.certainty" value="0.5"/>
1293
1358
  <param pos="0" name="os.vendor" value="AXIS"/>
1294
- <param pos="0" name="os.device" value="Web cam"/>
1359
+ <param pos="0" name="os.device" value="IP Camera"/>
1295
1360
  <param pos="0" name="os.family" value="Linux"/>
1296
1361
  <param pos="0" name="os.product" value="Linux"/>
1297
1362
  <param pos="0" name="os.certainty" value="0.5"/>
@@ -1415,7 +1480,7 @@
1415
1480
  <fingerprint pattern="^efe29d50711d9b093d8187e97cc0e593$">
1416
1481
  <description>Panduit PDU</description>
1417
1482
  <example>efe29d50711d9b093d8187e97cc0e593</example>
1418
- <param pos="0" name="hw.device" value="Power device"/>
1483
+ <param pos="0" name="hw.device" value="Power Device"/>
1419
1484
  <param pos="0" name="hw.vendor" value="Panduit"/>
1420
1485
  <param pos="0" name="hw.certainty" value="0.25"/>
1421
1486
  </fingerprint>
@@ -1424,7 +1489,7 @@
1424
1489
  <description>ScienceLogic EM7</description>
1425
1490
  <example>6eb3dbf248df10d70eab44dbf836cb77</example>
1426
1491
  <param pos="0" name="hw.vendor" value="Science Logic"/>
1427
- <param pos="0" name="hw.device" value="Network Management"/>
1492
+ <param pos="0" name="hw.device" value="Network Management Device"/>
1428
1493
  <param pos="0" name="hw.product" value="EM7"/>
1429
1494
  <param pos="0" name="hw.certainty" value="0.5"/>
1430
1495
  </fingerprint>
@@ -1493,6 +1558,7 @@
1493
1558
  <param pos="0" name="os.family" value="Linux"/>
1494
1559
  <param pos="0" name="os.product" value="EdgeOS"/>
1495
1560
  <param pos="0" name="os.certainty" value="0.5"/>
1561
+ <param pos="0" name="os.cpe23" value="cpe:/o:ui:edgeos:-"/>
1496
1562
  <param pos="0" name="hw.vendor" value="Ubiquiti"/>
1497
1563
  <param pos="0" name="hw.device" value="Router"/>
1498
1564
  <param pos="0" name="hw.certainty" value="0.25"/>
@@ -1582,7 +1648,7 @@
1582
1648
  <description>Mobotix Network Camera</description>
1583
1649
  <example>d9526978908979fa5018db0bcc762aa0</example>
1584
1650
  <param pos="0" name="hw.vendor" value="Mobotix"/>
1585
- <param pos="0" name="hw.device" value="Web cam"/>
1651
+ <param pos="0" name="hw.device" value="IP Camera"/>
1586
1652
  <param pos="0" name="hw.product" value="IP Camera"/>
1587
1653
  <param pos="0" name="hw.certainty" value="0.5"/>
1588
1654
  </fingerprint>
@@ -1671,6 +1737,7 @@
1671
1737
  <param pos="0" name="os.product" value="DD OS"/>
1672
1738
  <param pos="0" name="os.device" value="Storage"/>
1673
1739
  <param pos="0" name="os.certainty" value="0.5"/>
1740
+ <param pos="0" name="os.cpe23" value="cpe:/o:dell:emc_data_domain_os:-"/>
1674
1741
  <param pos="0" name="hw.vendor" value="Data Domain"/>
1675
1742
  <param pos="0" name="hw.product" value="DD OS"/>
1676
1743
  <param pos="0" name="hw.device" value="Storage"/>
@@ -1689,6 +1756,64 @@
1689
1756
  <param pos="0" name="os.certainty" value="0.5"/>
1690
1757
  </fingerprint>
1691
1758
 
1759
+ <fingerprint pattern="^ed61e4c9e9a176e82734aa42c6a00ce4|0dc6bff9bdabf1184c157d75ac73c22a$">
1760
+ <description>Lifesize TelePresence</description>
1761
+ <example>ed61e4c9e9a176e82734aa42c6a00ce4</example>
1762
+ <example>0dc6bff9bdabf1184c157d75ac73c22a</example>
1763
+ <param pos="0" name="hw.vendor" value="Lifesize"/>
1764
+ <param pos="0" name="hw.device" value="Video Conferencing"/>
1765
+ <param pos="0" name="hw.product" value="TelePresence"/>
1766
+ <param pos="0" name="os.vendor" value="Lifesize"/>
1767
+ <param pos="0" name="os.family" value="Linux"/>
1768
+ <param pos="0" name="os.product" value="TelePresence"/>
1769
+ <param pos="0" name="os.device" value="Video Conferencing"/>
1770
+ </fingerprint>
1771
+
1772
+ <fingerprint pattern="^45e72b45613ba6ec2a1ded251a31f201$">
1773
+ <description>Symantec PGP Key Management Server</description>
1774
+ <example>45e72b45613ba6ec2a1ded251a31f201</example>
1775
+ <param pos="0" name="hw.vendor" value="Symantec"/>
1776
+ <param pos="0" name="hw.device" value="Security Appliance"/>
1777
+ <param pos="0" name="hw.product" value="Key Management Server"/>
1778
+ </fingerprint>
1779
+
1780
+ <fingerprint pattern="^302fe34dc0e9515e2d0509ff5f3217e5|8565497731f799fdd25ae59286807055$">
1781
+ <description>Riverbed Steelhead Appliance</description>
1782
+ <example>302fe34dc0e9515e2d0509ff5f3217e5</example>
1783
+ <example>8565497731f799fdd25ae59286807055</example>
1784
+ <param pos="0" name="hw.vendor" value="Riverbed"/>
1785
+ <param pos="0" name="hw.device" value="Security Appliance"/>
1786
+ <param pos="0" name="hw.product" value="Steelhead"/>
1787
+ <param pos="0" name="os.product" value="RiOS"/>
1788
+ <param pos="0" name="os.vendor" value="Riverbed"/>
1789
+ <param pos="0" name="os.cpe23" value="cpe:/o:riverbed:rios:-"/>
1790
+ </fingerprint>
1791
+
1792
+ <fingerprint pattern="^d29a1ef8a3d0011504f5d076600ce16d$">
1793
+ <description>Silver Peak Appliance</description>
1794
+ <example>d29a1ef8a3d0011504f5d076600ce16d</example>
1795
+ <param pos="0" name="hw.vendor" value="Silver Peak"/>
1796
+ <param pos="0" name="hw.device" value="Network Appliance"/>
1797
+ <param pos="0" name="hw.product" value="SD-WAN"/>
1798
+ </fingerprint>
1799
+
1800
+ <fingerprint pattern="^425515e283192a3a686c04e1c50620aa$">
1801
+ <description>Cisco Meraki Appliance</description>
1802
+ <example>425515e283192a3a686c04e1c50620aa</example>
1803
+ <param pos="0" name="hw.vendor" value="Cisco"/>
1804
+ <param pos="0" name="hw.product" value="Meraki Device"/>
1805
+ <param pos="0" name="hw.device" value="Network Appliance"/>
1806
+ <param pos="0" name="hw.certainty" value="0.40"/>
1807
+ </fingerprint>
1808
+
1809
+ <fingerprint pattern="^f5c62ea4c4e9f9a8606400becc01375e$">
1810
+ <description>PBX in a Flash</description>
1811
+ <example>f5c62ea4c4e9f9a8606400becc01375e</example>
1812
+ <param pos="0" name="hw.vendor" value="PIAF"/>
1813
+ <param pos="0" name="hw.device" value="SIP Gateway"/>
1814
+ <param pos="0" name="hw.product" value="PIAF Virtual Appliance"/>
1815
+ </fingerprint>
1816
+
1692
1817
  <fingerprint pattern="^7b73744799150c888a172daf3d7093bf$">
1693
1818
  <description>Pure Storage Appliance</description>
1694
1819
  <example>7b73744799150c888a172daf3d7093bf</example>
@@ -1698,4 +1823,12 @@
1698
1823
  <param pos="0" name="hw.certainty" value="0.5"/>
1699
1824
  </fingerprint>
1700
1825
 
1826
+ <fingerprint pattern="^1b786be7a46bd96a503a81b7faf86263$">
1827
+ <description>AdGuard Home</description>
1828
+ <example>1b786be7a46bd96a503a81b7faf86263</example>
1829
+ <param pos="0" name="service.vendor" value="AdGuard"/>
1830
+ <param pos="0" name="service.product" value="AdGuard Home"/>
1831
+ <param pos="0" name="service.certainty" value="0.5"/>
1832
+ </fingerprint>
1833
+
1701
1834
  </fingerprints>