recog 2.3.23 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +25 -16
  4. data/Rakefile +2 -9
  5. data/lib/recog/db_manager.rb +1 -1
  6. data/lib/recog/version.rb +1 -1
  7. data/{bin → recog/bin}/recog_match +0 -1
  8. data/{xml → recog/xml}/apache_modules.xml +0 -0
  9. data/{xml → recog/xml}/apache_os.xml +0 -0
  10. data/{xml → recog/xml}/architecture.xml +0 -0
  11. data/{xml → recog/xml}/dhcp_vendor_class.xml +9 -9
  12. data/{xml → recog/xml}/dns_versionbind.xml +0 -0
  13. data/{xml → recog/xml}/favicons.xml +63 -1
  14. data/{xml → recog/xml}/fingerprints.xsd +0 -0
  15. data/{xml → recog/xml}/ftp_banners.xml +0 -0
  16. data/{xml → recog/xml}/h323_callresp.xml +0 -0
  17. data/{xml → recog/xml}/hp_pjl_id.xml +0 -0
  18. data/{xml → recog/xml}/html_title.xml +47 -0
  19. data/{xml → recog/xml}/http_cookies.xml +19 -0
  20. data/{xml → recog/xml}/http_servers.xml +74 -1
  21. data/{xml → recog/xml}/http_wwwauth.xml +13 -0
  22. data/{xml → recog/xml}/imap_banners.xml +0 -0
  23. data/{xml → recog/xml}/ldap_searchresult.xml +0 -0
  24. data/{xml → recog/xml}/mdns_device-info_txt.xml +0 -0
  25. data/{xml → recog/xml}/mdns_workstation_txt.xml +0 -0
  26. data/{xml → recog/xml}/mysql_banners.xml +0 -0
  27. data/{xml → recog/xml}/mysql_error.xml +0 -0
  28. data/{xml → recog/xml}/nntp_banners.xml +0 -0
  29. data/{xml → recog/xml}/ntp_banners.xml +0 -0
  30. data/{xml → recog/xml}/operating_system.xml +0 -0
  31. data/{xml → recog/xml}/pop_banners.xml +0 -0
  32. data/{xml → recog/xml}/rsh_resp.xml +0 -0
  33. data/{xml → recog/xml}/rtsp_servers.xml +0 -0
  34. data/{xml → recog/xml}/sip_banners.xml +0 -0
  35. data/{xml → recog/xml}/sip_user_agents.xml +0 -0
  36. data/{xml → recog/xml}/smb_native_lm.xml +0 -0
  37. data/{xml → recog/xml}/smb_native_os.xml +0 -0
  38. data/{xml → recog/xml}/smtp_banners.xml +0 -0
  39. data/{xml → recog/xml}/smtp_debug.xml +0 -0
  40. data/{xml → recog/xml}/smtp_ehlo.xml +0 -0
  41. data/{xml → recog/xml}/smtp_expn.xml +0 -0
  42. data/{xml → recog/xml}/smtp_help.xml +0 -0
  43. data/{xml → recog/xml}/smtp_mailfrom.xml +0 -0
  44. data/{xml → recog/xml}/smtp_noop.xml +0 -0
  45. data/{xml → recog/xml}/smtp_quit.xml +0 -0
  46. data/{xml → recog/xml}/smtp_rcptto.xml +0 -0
  47. data/{xml → recog/xml}/smtp_rset.xml +0 -0
  48. data/{xml → recog/xml}/smtp_turn.xml +0 -0
  49. data/{xml → recog/xml}/smtp_vrfy.xml +0 -0
  50. data/{xml → recog/xml}/snmp_sysdescr.xml +21 -6
  51. data/{xml → recog/xml}/snmp_sysobjid.xml +11 -0
  52. data/{xml → recog/xml}/ssh_banners.xml +0 -0
  53. data/{xml → recog/xml}/telnet_banners.xml +34 -1
  54. data/{xml → recog/xml}/tls_jarm.xml +8 -0
  55. data/{xml → recog/xml}/x11_banners.xml +0 -0
  56. data/{xml → recog/xml}/x509_issuers.xml +13 -2
  57. data/{xml → recog/xml}/x509_subjects.xml +0 -0
  58. data/recog.gemspec +9 -5
  59. data/spec/spec_helper.rb +4 -0
  60. metadata +56 -145
  61. data/.github/ISSUE_TEMPLATE/bug_report.md +0 -37
  62. data/.github/ISSUE_TEMPLATE/feature_request.md +0 -17
  63. data/.github/ISSUE_TEMPLATE/fingerprint_request.md +0 -27
  64. data/.github/PULL_REQUEST_TEMPLATE +0 -24
  65. data/.github/SECURITY.md +0 -35
  66. data/.github/dependabot.yml +0 -8
  67. data/.github/workflows/ci.yml +0 -26
  68. data/.github/workflows/verify.yml +0 -89
  69. data/.gitignore +0 -23
  70. data/.rspec +0 -3
  71. data/.ruby-gemset +0 -1
  72. data/.ruby-version +0 -1
  73. data/.snyk +0 -10
  74. data/.travis.yml +0 -25
  75. data/.vscode/bin/monitor-recog-fingerprints.sh +0 -54
  76. data/.vscode/extensions.json +0 -5
  77. data/.vscode/settings.json +0 -8
  78. data/.vscode/tasks.json +0 -77
  79. data/CONTRIBUTING.md +0 -278
  80. data/bin/recog_cleanup +0 -16
  81. data/bin/recog_export +0 -81
  82. data/bin/recog_standardize +0 -163
  83. data/bin/recog_verify +0 -98
  84. data/cpe-remap.yaml +0 -374
  85. data/features/data/failing_banners_fingerprints.xml +0 -20
  86. data/features/data/matching_banners_fingerprints.xml +0 -23
  87. data/features/data/multiple_banners_fingerprints.xml +0 -32
  88. data/features/data/no_tests.xml +0 -3
  89. data/features/data/sample_banner.txt +0 -2
  90. data/features/data/schema_failure.xml +0 -4
  91. data/features/data/successful_tests.xml +0 -18
  92. data/features/data/tests_with_failures.xml +0 -26
  93. data/features/data/tests_with_warnings.xml +0 -17
  94. data/features/match.feature +0 -36
  95. data/features/support/aruba.rb +0 -3
  96. data/features/support/env.rb +0 -6
  97. data/features/support/hooks.rb +0 -9
  98. data/features/verify.feature +0 -112
  99. data/identifiers/README.md +0 -70
  100. data/identifiers/fields.txt +0 -105
  101. data/identifiers/hw_device.txt +0 -86
  102. data/identifiers/hw_family.txt +0 -121
  103. data/identifiers/hw_product.txt +0 -463
  104. data/identifiers/os_architecture.txt +0 -10
  105. data/identifiers/os_device.txt +0 -77
  106. data/identifiers/os_family.txt +0 -235
  107. data/identifiers/os_product.txt +0 -357
  108. data/identifiers/service_family.txt +0 -249
  109. data/identifiers/service_product.txt +0 -778
  110. data/identifiers/vendor.txt +0 -859
  111. data/misc/convert_mysql_err +0 -61
  112. data/misc/order.xsl +0 -17
  113. data/requirements.txt +0 -2
  114. data/spec/lib/fingerprint_self_test_spec.rb +0 -175
  115. data/tools/dev/hooks/pre-commit +0 -21
  116. data/update_cpes.py +0 -343
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a185ae988081b761341e8b8799c23feb5eb2ab85c2da2ce63fffe4f2d7ddcac3
4
- data.tar.gz: 89e4ab65e87d190c3ea276d18771edd9c6fc75cb5a0863440be61d165ae5b80c
3
+ metadata.gz: ca2e3909b1b60418e80721625975ab8025e8dcaaaee59754dccb128b25661f00
4
+ data.tar.gz: 68be49a8c47fc1bb2b6a0f64d02c18a8fc29b67ee60b62060542be2216979e5c
5
5
  SHA512:
6
- metadata.gz: ff83575470bf78d4e5a5c464e0dfeb12ac310ecc856fde6919bf3f7a5e3ba9b69d2be479f9a0cab4cc2c03f7babb6f21673d7015d5cf3182587f86ab3f45f0cf
7
- data.tar.gz: 68a7dad6b6cbafc8dac0ac46a0ae7aab6f64c0095c314fa126da107f05b3befff3e4f9f2af41836aa96437746dceeb17718927acc824d842cb9f4a56b234da34
6
+ metadata.gz: 2e0f749e0a8b313a8ba9845c39aa72ce08108e4c5b4e3785d689ae9e726aeb72b31b23da6e1e4610fff4dcd1caad966ee9578ab887a425cf2f414ee377b7b001
7
+ data.tar.gz: 7714d9bca0d70f27efd756460f0f167a46c69ee45c38da8a70bdfb5271256decb92375c8281efe67529e5b7e3a897b3e3e2fc20b7a62075b12db9abf940635a6
data/LICENSE CHANGED
@@ -1,5 +1,5 @@
1
1
  Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
2
- Source: https://github.com/rapid7/recog
2
+ Source: https://github.com/rapid7/recog-ruby
3
3
 
4
4
  Files: *
5
5
  Copyright: 2014, Rapid7, Inc.
data/README.md CHANGED
@@ -1,41 +1,50 @@
1
- # Recog: A Recognition Framework
1
+ # Recog-Ruby: A Recognition Framework
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/recog.svg)](http://badge.fury.io/rb/recog)
4
- [![Build Status](https://travis-ci.org/rapid7/recog.svg?branch=master)](https://travis-ci.org/rapid7/recog)
4
+ [![CI Workflow](https://github.com/rapid7/recog-ruby/actions/workflows/ci.yml/badge.svg)](https://github.com/rapid7/recog-ruby/actions/workflows/ci.yml)
5
5
 
6
6
 
7
- Recog is a framework for identifying products, services, operating systems, and hardware by matching fingerprints against data returned from various network probes. Recog makes it simple to extract useful information from web server banners, snmp system description fields, and a whole lot more.
7
+ Recog is a framework for identifying products, services, operating systems, and hardware by matching fingerprints against data returned from various network probes. Recog makes it simple to extract useful information from web server banners, SNMP system description fields, and a whole lot more.
8
8
 
9
- Recog is open source, please see the [LICENSE](https://raw.githubusercontent.com/rapid7/recog/master/LICENSE) file for more information.
9
+ The Recog-Ruby repository contains the Ruby language implementation of the Recog recognition framework library and the [Recog](https://github.com/rapid7/recog) content, XML fingerprint files, as a git submodule. That makes it easy to develop, test, and use the contained fingerprints.
10
+
11
+ Recog-Ruby is open source, please see the [LICENSE](LICENSE) file for more information.
10
12
 
11
13
  ## Table of Contents
12
14
 
15
+ 1. [Repository split](#repository-split)
13
16
  1. [Installation](#installation)
14
17
  1. [Maturity](#maturity)
15
18
  1. [Fingerprints](#fingerprints)
16
19
  1. [Contributing](#contributing)
17
20
 
21
+ ## Repository split
22
+
23
+ On March 31, 2022, the Recog content - XML fingerprint files and utilities - were split from the Recog framework library implementation. The original [Recog](https://github.com/rapid7/recog) repository now contains the Recog content and the [Recog-Ruby](https://github.com/rapid7/recog-ruby) repository contains the Ruby language implementation. The Recog content is included in Recog-Ruby as a git submodule and is nested under the `recog` directory. All post-split Recog gem versions equal or greater than 3.0.0 will: 1. contain the XML fingerprint directory under the `recog` directory, and 2. only include the `recog_match` tool since the other tools are focused on fingerprint management.
24
+
25
+ [^back to top](#recog-ruby-a-recognition-framework)
26
+
18
27
  ## Installation
19
28
 
20
- Recog consists of both XML fingerprint files and an assortment of code, mostly in Ruby, that makes it easy to develop, test, and use the contained fingerprints. In order to use the included ruby code, a recent version of Ruby (2.31+) is required, along with Rubygems and the `bundler` gem. Once these dependencies are in place, use the following commands to grab the latest source code and install any additional dependencies.
29
+ In order to use the included Ruby code, a recent version of Ruby (2.31+) is required, along with Rubygems and the `bundler` gem. Once these dependencies are in place, use the following commands to grab the latest source code and install any additional dependencies.
21
30
 
22
31
  ```shell
23
- $ git clone git@github.com:rapid7/recog.git
24
- $ cd recog
32
+ $ git clone --recurse-submodules git@github.com:rapid7/recog-ruby.git
33
+ $ cd recog-ruby
25
34
  $ bundle install
26
35
  ```
27
36
 
28
- [^back to top](#recog-a-recognition-framework)
37
+ [^back to top](#recog-ruby-a-recognition-framework)
29
38
 
30
39
  ## Maturity
31
40
 
32
- Please note that while the XML fingerprints themselves are quite stable and well-tested, the Ruby codebase in Recog is still fairly new and subject to change quickly. Please contact us (research[at]rapid7.com) before leveraging the Recog code within any production projects.
41
+ Please note that while the XML fingerprints themselves are quite stable and well-tested, the Ruby codebase is still fairly new and subject to change quickly. Please contact us (research[at]rapid7.com) before leveraging the Recog code within any production projects.
33
42
 
34
- [^back to top](#recog-a-recognition-framework)
43
+ [^back to top](#recog-ruby-a-recognition-framework)
35
44
 
36
45
  ## Fingerprints
37
46
 
38
- The fingerprints within Recog are stored in XML files, each of which is designed to match a specific protocol response string or field. For example, the file [ssh_banners.xml](https://github.com/rapid7/recog/blob/master/xml/ssh_banners.xml) can determine the os, vendor, and sometimes hardware product by matching the initial SSH daemon banner string.
47
+ The fingerprints within [Recog](https://github.com/rapid7/recog) are stored in XML files, each of which is designed to match a specific protocol response string or field. For example, the file [ssh_banners.xml](https://github.com/rapid7/recog/blob/master/xml/ssh_banners.xml) can determine the os, vendor, and sometimes hardware product by matching the initial SSH daemon banner string.
39
48
 
40
49
  A fingerprint file consists of an XML document like the following:
41
50
 
@@ -69,12 +78,12 @@ The `param` elements contain a `pos` attribute, which indicates what capture fie
69
78
 
70
79
  The `example` string can be base64 encoded to permit the use of unprintable characters. To signal this to Recog an `_encoding` attribute with the value of `base64` is added to the `example` element. Based64 encoded text that is longer than 80 characters may be wrapped with newlines as shown below to aid in readability.
71
80
 
72
- ````xml
81
+ ```xml
73
82
  <example _encoding="base64">
74
83
  dGllczGEAAAAlQQWMS4yLjg0MC4xMTM1NTYuMS40LjgwMAQuZGF0YS5yZW1vdmVkLjCEAAAAK
75
84
  AQdZG9tYWluQ29udHJvbGxlckZ1bmN0aW9uYWxpdHkxhAAAAAMEATc=
76
85
  </example>
77
- ````
86
+ ```
78
87
 
79
88
  Additionally, examples can be placed in a directory with the same base name as the XML file, in the same directory as the XML file:
80
89
 
@@ -93,12 +102,12 @@ They can then be loaded using the `_filename` attribute:
93
102
 
94
103
  This is useful for long examples.
95
104
 
96
- [^back to top](#recog-a-recognition-framework)
105
+ [^back to top](#recog-ruby-a-recognition-framework)
97
106
 
98
107
  ## Contributing
99
108
 
100
- The users and maintainers of Recog would greatly appreciate any contributions
109
+ The users and maintainers of Recog-Ruby would greatly appreciate any contributions
101
110
  you can make to the project. For guidelines and instructions please see
102
111
  [CONTRIBUTING.MD](CONTRIBUTING.md)
103
112
 
104
- [^back to top](#recog-a-recognition-framework)
113
+ [^back to top](#recog-ruby-a-recognition-framework)
data/Rakefile CHANGED
@@ -2,7 +2,7 @@ require "bundler/gem_tasks"
2
2
 
3
3
  require 'rspec/core/rake_task'
4
4
  RSpec::Core::RakeTask.new do |t|
5
- t.pattern = "spec/**/*_spec.rb"
5
+ t.pattern = ['spec/**/*_spec.rb', 'recog/spec/**/*_spec.rb']
6
6
  end
7
7
 
8
8
  require 'yard'
@@ -11,12 +11,5 @@ YARD::Rake::YardocTask.new do |t|
11
11
  t.files = ['lib/**/*.rb', '-', 'README.md']
12
12
  end
13
13
 
14
- require 'cucumber'
15
- require 'cucumber/rake/task'
16
-
17
- Cucumber::Rake::Task.new(:features) do |t|
18
- t.cucumber_opts = "features --format pretty"
19
- end
20
-
21
14
  task :default => [ :tests, :yard ]
22
- task :tests => [ :spec, :features ]
15
+ task :tests => [ :spec ]
@@ -5,7 +5,7 @@ class DBManager
5
5
 
6
6
  attr_accessor :path, :databases
7
7
 
8
- DefaultDatabasePath = File.expand_path( File.join( File.dirname(__FILE__), "..", "..", "xml") )
8
+ DefaultDatabasePath = File.expand_path(File.join(File.expand_path(__dir__), ["..", "..", "recog", "xml"]))
9
9
 
10
10
  def initialize(path = DefaultDatabasePath)
11
11
  self.path = path
data/lib/recog/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Recog
2
- VERSION = '2.3.23'
2
+ VERSION = '3.0.1'
3
3
  end
@@ -1,6 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- $:.unshift(File.expand_path(File.join(File.dirname(__FILE__), "..", "lib")))
4
3
  require 'optparse'
5
4
  require 'ostruct'
6
5
  require 'recog'
File without changes
File without changes
File without changes
@@ -108,16 +108,16 @@
108
108
 
109
109
  <fingerprint pattern="^Aruba\s(JL\d+A)\s(\d+[A-Z]?)\S+\sSwitch(?:\sdslforum.org)?$">
110
110
  <description>HP Aruba Network Switch</description>
111
- <example hw.product="JL075A" hw.family="3810M">Aruba JL075A 3810M-16SFP+-2-slot Switch</example>
112
- <example hw.product="JL253A" hw.family="2930F">Aruba JL253A 2930F-24G-4SFP+ Switch dslforum.org</example>
113
- <example hw.product="JL256A" hw.family="2930F">Aruba JL256A 2930F-48G-PoE+-4SFP+ Switch</example>
114
- <example hw.product="JL258A" hw.family="2930F">Aruba JL258A 2930F-8G-PoE+-2SFP+ Switch</example>
115
- <example hw.product="JL357A" hw.family="2540">Aruba JL357A 2540-48G-PoE+-4SFP+ Switch</example>
116
- <param pos="0" name="hw.device" value="Switch"/>
117
- <param pos="0" name="hw.vendor" value="Aruba Networks"/>
118
- <param pos="1" name="hw.product"/>
119
- <param pos="2" name="hw.family"/>
111
+ <example hw.model="JL075A" hw.product="3810M">Aruba JL075A 3810M-16SFP+-2-slot Switch</example>
112
+ <example hw.model="JL253A" hw.product="2930F">Aruba JL253A 2930F-24G-4SFP+ Switch dslforum.org</example>
113
+ <example hw.model="JL256A" hw.product="2930F">Aruba JL256A 2930F-48G-PoE+-4SFP+ Switch</example>
114
+ <example hw.model="JL258A" hw.product="2930F">Aruba JL258A 2930F-8G-PoE+-2SFP+ Switch</example>
115
+ <example hw.model="JL357A" hw.product="2540">Aruba JL357A 2540-48G-PoE+-4SFP+ Switch</example>
120
116
  <param pos="0" name="os.vendor" value="Aruba Networks"/>
117
+ <param pos="0" name="hw.vendor" value="Aruba Networks"/>
118
+ <param pos="2" name="hw.product"/>
119
+ <param pos="1" name="hw.model"/>
120
+ <param pos="0" name="hw.device" value="Switch"/>
121
121
  </fingerprint>
122
122
 
123
123
  <fingerprint pattern="^AXIS,(?:PTZ Dome )?Network Camera,(.*),([\d\.]+)$">
File without changes
@@ -1287,10 +1287,11 @@
1287
1287
  <param pos="0" name="hw.certainty" value="0.5"/>
1288
1288
  </fingerprint>
1289
1289
 
1290
- <fingerprint pattern="^c60ea375c39d1ab273c4d1bee717287a|9052ab290483b0bd75c05b857c182bba$">
1290
+ <fingerprint pattern="^c60ea375c39d1ab273c4d1bee717287a|9052ab290483b0bd75c05b857c182bba|3acbef1d83ac34f19a2631d6c1a4ac57$">
1291
1291
  <description>Synology DSM</description>
1292
1292
  <example>c60ea375c39d1ab273c4d1bee717287a</example>
1293
1293
  <example>9052ab290483b0bd75c05b857c182bba</example>
1294
+ <example>3acbef1d83ac34f19a2631d6c1a4ac57</example>
1294
1295
  <param pos="0" name="hw.vendor" value="Synology"/>
1295
1296
  <param pos="0" name="hw.family" value="DiskStation"/>
1296
1297
  <param pos="0" name="hw.device" value="NAS"/>
@@ -2030,4 +2031,65 @@
2030
2031
  <param pos="0" name="hw.vendor" value="Eltex"/>
2031
2032
  </fingerprint>
2032
2033
 
2034
+ <fingerprint pattern="^1ecd8df7909afd77188cee9c33042c55$">
2035
+ <description>WatchGuard Fireware XTM web interface</description>
2036
+ <example>1ecd8df7909afd77188cee9c33042c55</example>
2037
+ <param pos="0" name="service.vendor" value="WatchGuard"/>
2038
+ <param pos="0" name="service.product" value="Fireware XTM"/>
2039
+ <param pos="0" name="service.device" value="Firewall"/>
2040
+ <param pos="0" name="service.cpe23" value="cpe:/a:watchguard:fireware_xtm:-"/>
2041
+ <param pos="0" name="service.component.vendor" value="nginx"/>
2042
+ <param pos="0" name="service.component.product" value="nginx"/>
2043
+ <param pos="0" name="service.component.cpe23" value="cpe:/a:f5:nginx:-"/>
2044
+ <param pos="0" name="os.vendor" value="WatchGuard"/>
2045
+ <param pos="0" name="os.product" value="Fireware"/>
2046
+ <param pos="0" name="os.device" value="Firewall"/>
2047
+ <param pos="0" name="os.cpe23" value="cpe:/o:watchguard:fireware:-"/>
2048
+ </fingerprint>
2049
+
2050
+ <fingerprint pattern="^20197040d99f50747a953d163fef982e$">
2051
+ <description>WSO2 Carbon - service-oriented platform for WSO2 products</description>
2052
+ <example>20197040d99f50747a953d163fef982e</example>
2053
+ <param pos="0" name="service.vendor" value="WSO2"/>
2054
+ <param pos="0" name="service.product" value="Carbon"/>
2055
+ <param pos="0" name="service.cpe23" value="cpe:/a:wso2:carbon:-"/>
2056
+ </fingerprint>
2057
+
2058
+ <fingerprint pattern="^e562faa1b6f61ff53762e59d738b8fc0$">
2059
+ <description>openHAB - open-source home automation</description>
2060
+ <example>e562faa1b6f61ff53762e59d738b8fc0</example>
2061
+ <param pos="0" name="service.vendor" value="openHAB"/>
2062
+ <param pos="0" name="service.product" value="openHAB"/>
2063
+ <param pos="0" name="service.cpe23" value="cpe:/a:openhab:openhab:-"/>
2064
+ </fingerprint>
2065
+
2066
+ <fingerprint pattern="^ff66cb4b6922631e08d1538b361a2d2b$">
2067
+ <description>Home Assistant - open-source home automation</description>
2068
+ <example>ff66cb4b6922631e08d1538b361a2d2b</example>
2069
+ <param pos="0" name="service.vendor" value="Home-Assistant"/>
2070
+ <param pos="0" name="service.product" value="Home-Assistant"/>
2071
+ <param pos="0" name="service.cpe23" value="cpe:/a:home-assistant:home-assistant:-"/>
2072
+ </fingerprint>
2073
+
2074
+ <fingerprint pattern="^7d33656392385d5ce695db69c7736608$">
2075
+ <description>Alentis Electronics NetPing PDU web interface</description>
2076
+ <example>7d33656392385d5ce695db69c7736608</example>
2077
+ <param pos="0" name="os.vendor" value="Alentis Electronics"/>
2078
+ <param pos="0" name="os.product" value="NetPing Firmware"/>
2079
+ <param pos="0" name="os.device" value="Power Device"/>
2080
+ <param pos="0" name="hw.vendor" value="Alentis Electronics"/>
2081
+ <param pos="0" name="hw.product" value="NetPing"/>
2082
+ <param pos="0" name="hw.device" value="Power Device"/>
2083
+ </fingerprint>
2084
+
2085
+ <fingerprint pattern="^e174f317b4491295c63e5bc9d9b6115b|cd2461f62d76fbbc905fa15160c0788f|37fdaeebc861719280205e7107b78d52$">
2086
+ <description>dotCMS Content Management Platform</description>
2087
+ <example>e174f317b4491295c63e5bc9d9b6115b</example>
2088
+ <example>cd2461f62d76fbbc905fa15160c0788f</example>
2089
+ <example>37fdaeebc861719280205e7107b78d52</example>
2090
+ <param pos="0" name="service.vendor" value="dotCMS"/>
2091
+ <param pos="0" name="service.product" value="dotCMS"/>
2092
+ <param pos="0" name="service.cpe23" value="cpe:/a:dotcms:dotcms:-"/>
2093
+ </fingerprint>
2094
+
2033
2095
  </fingerprints>
File without changes
File without changes
File without changes
File without changes
@@ -438,9 +438,14 @@
438
438
  <example>Fireware XTM User Authentication</example>
439
439
  <param pos="0" name="service.vendor" value="WatchGuard"/>
440
440
  <param pos="0" name="service.product" value="Fireware XTM"/>
441
+ <param pos="0" name="service.device" value="Firewall"/>
441
442
  <param pos="0" name="service.cpe23" value="cpe:/a:watchguard:fireware_xtm:-"/>
443
+ <param pos="0" name="service.component.vendor" value="nginx"/>
444
+ <param pos="0" name="service.component.product" value="nginx"/>
445
+ <param pos="0" name="service.component.cpe23" value="cpe:/a:f5:nginx:-"/>
442
446
  <param pos="0" name="os.vendor" value="WatchGuard"/>
443
447
  <param pos="0" name="os.product" value="Fireware"/>
448
+ <param pos="0" name="os.device" value="Firewall"/>
444
449
  <param pos="0" name="os.cpe23" value="cpe:/o:watchguard:fireware:-"/>
445
450
  </fingerprint>
446
451
 
@@ -3838,6 +3843,48 @@
3838
3843
  <param pos="0" name="hw.family" value="Vigor"/>
3839
3844
  </fingerprint>
3840
3845
 
3846
+ <fingerprint pattern="^WSO2 API Manager|\[Publisher Portal\]WSO2 APIM$">
3847
+ <description>WSO2 API Manager</description>
3848
+ <example>WSO2 API Manager</example>
3849
+ <example>[Publisher Portal]WSO2 APIM</example>
3850
+ <param pos="0" name="service.vendor" value="WSO2"/>
3851
+ <param pos="0" name="service.product" value="API Manager"/>
3852
+ <param pos="0" name="service.cpe23" value="cpe:/a:wso2:api_manager:-"/>
3853
+ <param pos="0" name="service.component.vendor" value="WSO2"/>
3854
+ <param pos="0" name="service.component.product" value="Carbon"/>
3855
+ <param pos="0" name="service.component.cpe23" value="cpe:/a:wso2:carbon:-"/>
3856
+ </fingerprint>
3857
+
3858
+ <fingerprint pattern="^WSO2 Management Console$">
3859
+ <description>WSO2 Identity Server</description>
3860
+ <example>WSO2 Management Console</example>
3861
+ <param pos="0" name="service.vendor" value="WSO2"/>
3862
+ <param pos="0" name="service.product" value="Identity Server"/>
3863
+ <param pos="0" name="service.cpe23" value="cpe:/a:wso2:identity_server:-"/>
3864
+ <param pos="0" name="service.component.vendor" value="WSO2"/>
3865
+ <param pos="0" name="service.component.product" value="Carbon"/>
3866
+ <param pos="0" name="service.component.cpe23" value="cpe:/a:wso2:carbon:-"/>
3867
+ </fingerprint>
3868
+
3869
+ <fingerprint pattern="^WSO2 Enterprise Integrator \(WSO2 EI\)$">
3870
+ <description>WSO2 Enterprise Integrator</description>
3871
+ <example>WSO2 Enterprise Integrator (WSO2 EI)</example>
3872
+ <param pos="0" name="service.vendor" value="WSO2"/>
3873
+ <param pos="0" name="service.product" value="Enterprise Integrator"/>
3874
+ <param pos="0" name="service.cpe23" value="cpe:/a:wso2:enterprise_integrator:-"/>
3875
+ <param pos="0" name="service.component.vendor" value="WSO2"/>
3876
+ <param pos="0" name="service.component.product" value="Carbon"/>
3877
+ <param pos="0" name="service.component.cpe23" value="cpe:/a:wso2:carbon:-"/>
3878
+ </fingerprint>
3879
+
3880
+ <fingerprint pattern="^dotCMS Content Management Platform$">
3881
+ <description>dotCMS Content Management Platform</description>
3882
+ <example>dotCMS Content Management Platform</example>
3883
+ <param pos="0" name="service.vendor" value="dotCMS"/>
3884
+ <param pos="0" name="service.product" value="dotCMS"/>
3885
+ <param pos="0" name="service.cpe23" value="cpe:/a:dotcms:dotcms:-"/>
3886
+ </fingerprint>
3887
+
3841
3888
  <!-- Specific Eltex fingerprints to enable CPE generation -->
3842
3889
 
3843
3890
  <fingerprint pattern="^Eltex - NTP-RG-1402G$">
@@ -697,6 +697,25 @@
697
697
  <param pos="0" name="service.cpe23" value="cpe:/a:mongo-express_project:mongo-express:-"/>
698
698
  </fingerprint>
699
699
 
700
+ <fingerprint pattern="^adscsrf=">
701
+ <description>ManageEngine ADSelfService Plus</description>
702
+ <example>adscsrf=cffff6b5-bd68-4c35-92ef-e45127e68289;path=/;priority=high</example>
703
+ <param pos="0" name="service.vendor" value="ManageEngine"/>
704
+ <param pos="0" name="service.product" value="ADSelfService Plus"/>
705
+ <param pos="0" name="service.cpe23" value="cpe:/a:zohocorp:manageengine_adselfservice_plus:-"/>
706
+ </fingerprint>
707
+
708
+ <fingerprint pattern="^(dmid|opvc|sitevisitscookie)=">
709
+ <description>dotCMS Content Management Platform</description>
710
+ <example cookie="dmid">dmid=dcd46b93-54ab-4a43-a023-99154f879c3e; Max-Age=153792000; Expires=Thu, 18-Mar-2027 21:28:37 GMT; Path=/; HttpOnly; SameSite=Strict</example>
711
+ <example cookie="opvc">opvc=9e6302af-896a-40ae-a330-22655ee22c5f; Path=/; HttpOnly; SameSite=Strict</example>
712
+ <example cookie="sitevisitscookie">sitevisitscookie=1; Max-Age=153792000; Expires=Thu, 18-Mar-2027 21:28:37 GMT; Path=/; HttpOnly; SameSite=Strict</example>
713
+ <param pos="1" name="cookie"/>
714
+ <param pos="0" name="service.vendor" value="dotCMS"/>
715
+ <param pos="0" name="service.product" value="dotCMS"/>
716
+ <param pos="0" name="service.cpe23" value="cpe:/a:dotcms:dotcms:-"/>
717
+ </fingerprint>
718
+
700
719
  <!--
701
720
  Ignore various cookies that are very generic cookies for session IDs
702
721
  that are not necessarily indicative of any particular
@@ -2991,6 +2991,20 @@
2991
2991
  <param pos="0" name="service.cpe23" value="cpe:/a:boa:boa:{service.version}"/>
2992
2992
  </fingerprint>
2993
2993
 
2994
+ <fingerprint pattern="^Hydra/([\d.]+)(?: GnuTLS/([\d.]+))?$">
2995
+ <description>Hydra - high performance multi threaded HTTP web server</description>
2996
+ <example service.version="0.1.8">Hydra/0.1.8</example>
2997
+ <example service.version="0.1.8" service.component.version="2.12.23">Hydra/0.1.8 GnuTLS/2.12.23</example>
2998
+ <param pos="0" name="service.vendor" value="Hydra Project"/>
2999
+ <param pos="0" name="service.product" value="Hydra"/>
3000
+ <param pos="1" name="service.version"/>
3001
+ <param pos="0" name="service.cpe23" value="cpe:/a:hydra_project:hydra:{service.version}"/>
3002
+ <param pos="0" name="service.component.vendor" value="GNU"/>
3003
+ <param pos="0" name="service.component.product" value="GnuTLS"/>
3004
+ <param pos="2" name="service.component.version"/>
3005
+ <param pos="0" name="service.component.cpe23" value="cpe:/a:gnu:gnutls:{service.component.version}"/>
3006
+ </fingerprint>
3007
+
2994
3008
  <!-- HiSilicon is OEMd by a number of DVR manufacturers -->
2995
3009
 
2996
3010
  <fingerprint pattern="^Cross Web Server$">
@@ -3038,9 +3052,10 @@
3038
3052
  <param pos="0" name="service.product" value="2wire"/>
3039
3053
  </fingerprint>
3040
3054
 
3041
- <fingerprint pattern="^(?:(?:\d{1,3}\.){3}\d{1,3}):\d{1,4}$">
3055
+ <fingerprint pattern="^(?:(?:\d{1,3}\.){3}\d{1,3}):\d{1,5}$">
3042
3056
  <description>A banner consisting of an IPv4 address and port -- assert nothing.</description>
3043
3057
  <example>192.168.0.4:9999</example>
3058
+ <example>192.168.0.5:65535</example>
3044
3059
  <param pos="0" name="hw.certainty" value="0.0"/>
3045
3060
  <param pos="0" name="os.certainty" value="0.0"/>
3046
3061
  <param pos="0" name="service.certainty" value="0.0"/>
@@ -3158,6 +3173,15 @@
3158
3173
  <param pos="0" name="service.cpe23" value="cpe:/a:cloudflare:load_balancing:-"/>
3159
3174
  </fingerprint>
3160
3175
 
3176
+ <fingerprint pattern="^Microsoft-Azure-Application-Gateway\/(v\d+)$">
3177
+ <description>Microsoft Azure Application Gateway</description>
3178
+ <example service.version="v2">Microsoft-Azure-Application-Gateway/v2</example>
3179
+ <param pos="0" name="service.vendor" value="Microsoft"/>
3180
+ <param pos="0" name="service.family" value="Azure"/>
3181
+ <param pos="0" name="service.product" value="Azure Application Gateway"/>
3182
+ <param pos="1" name="service.version"/>
3183
+ </fingerprint>
3184
+
3161
3185
  <fingerprint pattern="^gSOAP/([\d\.]+)$">
3162
3186
  <description>gSOAP</description>
3163
3187
  <example service.version="2.7">gSOAP/2.7</example>
@@ -3167,6 +3191,14 @@
3167
3191
  <param pos="0" name="service.cpe23" value="cpe:/a:genivia:gsoap:{service.version}"/>
3168
3192
  </fingerprint>
3169
3193
 
3194
+ <fingerprint pattern="^AliyunOSS$">
3195
+ <description>Alibaba Cloud Object Storage Service (OSS)</description>
3196
+ <example>AliyunOSS</example>
3197
+ <param pos="0" name="service.vendor" value="Alibaba"/>
3198
+ <param pos="0" name="service.family" value="Cloud"/>
3199
+ <param pos="0" name="service.product" value="Object Storage Service"/>
3200
+ </fingerprint>
3201
+
3170
3202
  <!-- Apple QuickTime streaming server -->
3171
3203
 
3172
3204
  <fingerprint pattern="^QTSS\/([\d\.]+) \(Build\/[\d\.]+; Platform\/MacOSX; Release\/Panther">
@@ -4502,6 +4534,14 @@
4502
4534
  <param pos="0" name="service.cpe23" value="cpe:/a:caddyserver:caddy:-"/>
4503
4535
  </fingerprint>
4504
4536
 
4537
+ <fingerprint pattern="^fasthttp$">
4538
+ <description>FastHTTP - Fast HTTP package for Go</description>
4539
+ <example>fasthttp</example>
4540
+ <param pos="0" name="service.vendor" value="FastHTTP Project"/>
4541
+ <param pos="0" name="service.product" value="FastHTTP"/>
4542
+ <param pos="0" name="service.cpe23" value="cpe:/a:fasthttp_project:fasthttp:-"/>
4543
+ </fingerprint>
4544
+
4505
4545
  <fingerprint pattern="^MoxaHttp/(\d\.\d)$">
4506
4546
  <description>Moxa devices - service used on multiple families of devices</description>
4507
4547
  <example service.version="2.3">MoxaHttp/2.3</example>
@@ -4754,5 +4794,38 @@
4754
4794
  <param pos="0" name="hw.device" value="VoIP Gateway"/>
4755
4795
  </fingerprint>
4756
4796
 
4797
+ <fingerprint pattern="^WSO2 Carbon Server$">
4798
+ <description>WSO2 Carbon - service-oriented platform for WSO2 products</description>
4799
+ <example>WSO2 Carbon Server</example>
4800
+ <param pos="0" name="service.vendor" value="WSO2"/>
4801
+ <param pos="0" name="service.product" value="Carbon"/>
4802
+ <param pos="0" name="service.cpe23" value="cpe:/a:wso2:carbon:-"/>
4803
+ <param pos="0" name="service.component.vendor" value="Apache"/>
4804
+ <param pos="0" name="service.component.product" value="Tomcat"/>
4805
+ <param pos="0" name="service.component.family" value="Tomcat"/>
4806
+ <param pos="0" name="service.component.cpe23" value="cpe:/a:apache:tomcat:-"/>
4807
+ </fingerprint>
4808
+
4809
+ <fingerprint pattern="^ballerina(?:\/([\d.]+(?:-[a-zA-Z0-9.-]+)?))?$">
4810
+ <description>Ballerina - programming language HTTP module</description>
4811
+ <example>ballerina</example>
4812
+ <example service.version="0.991.0">ballerina/0.991.0</example>
4813
+ <example service.version="0.982.1-SNAPSHOT">ballerina/0.982.1-SNAPSHOT</example>
4814
+ <param pos="0" name="service.vendor" value="Ballerina"/>
4815
+ <param pos="0" name="service.product" value="Ballerina"/>
4816
+ <param pos="1" name="service.version"/>
4817
+ <param pos="0" name="service.cpe23" value="cpe:/a:ballerina:ballerina:{service.version}"/>
4818
+ </fingerprint>
4819
+
4820
+ <fingerprint pattern="^((?:Mini|ZTE) web server) ([\d.]+) ZTE corp \d{4}\.$">
4821
+ <description>Assorted ZTE CPE device web server</description>
4822
+ <example service.product="Mini web server" service.version="1.0">Mini web server 1.0 ZTE corp 2005.</example>
4823
+ <example service.product="ZTE web server" service.version="1.0">ZTE web server 1.0 ZTE corp 2015.</example>
4824
+ <param pos="0" name="service.vendor" value="ZTE"/>
4825
+ <param pos="1" name="service.product"/>
4826
+ <param pos="2" name="service.version"/>
4827
+ <param pos="0" name="service.certainty" value="0.5"/>
4828
+ <param pos="0" name="hw.vendor" value="ZTE"/>
4829
+ </fingerprint>
4757
4830
 
4758
4831
  </fingerprints>
@@ -680,6 +680,19 @@
680
680
  <param pos="0" name="os.device" value="Router"/>
681
681
  </fingerprint>
682
682
 
683
+ <fingerprint pattern="(?i)^Basic realm=&quot;NetPing \d+/PWR-220\s*v\d+/(?:ETH|SMS|GSM(?:3G)?)&quot;">
684
+ <description>Alentis Electronics NetPing PDU</description>
685
+ <example>Basic realm="NetPing 2/PWR-220v2/SMS"</example>
686
+ <example>Basic realm="NetPing 2/PWR-220 v12/ETH"</example>
687
+ <example>Basic realm="NetPing 4/PWR-220v3/SMS"</example>
688
+ <param pos="0" name="os.vendor" value="Alentis Electronics"/>
689
+ <param pos="0" name="os.product" value="NetPing Firmware"/>
690
+ <param pos="0" name="os.device" value="Power Device"/>
691
+ <param pos="0" name="hw.vendor" value="Alentis Electronics"/>
692
+ <param pos="0" name="hw.product" value="NetPing"/>
693
+ <param pos="0" name="hw.device" value="Power Device"/>
694
+ </fingerprint>
695
+
683
696
  <!-- a variety of headers we currently just ignore -->
684
697
 
685
698
  <fingerprint pattern="(?i)^NTLM$">
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes