recog-intrigue 2.3.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +37 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +17 -0
- data/.github/ISSUE_TEMPLATE/fingerprint_request.md +27 -0
- data/.github/PULL_REQUEST_TEMPLATE +24 -0
- data/.gitignore +14 -0
- data/.rbenv-gemset +1 -0
- data/.rspec +3 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +25 -0
- data/.yardopts +1 -0
- data/CONTRIBUTING.md +171 -0
- data/COPYING +23 -0
- data/Gemfile +10 -0
- data/LICENSE +7 -0
- data/README.md +85 -0
- data/Rakefile +22 -0
- data/bin/recog_export +81 -0
- data/bin/recog_match +55 -0
- data/bin/recog_standardize +118 -0
- data/bin/recog_verify +64 -0
- data/cpe-remap.yaml +134 -0
- data/features/data/failing_banners_fingerprints.xml +20 -0
- data/features/data/matching_banners_fingerprints.xml +23 -0
- data/features/data/multiple_banners_fingerprints.xml +32 -0
- data/features/data/no_tests.xml +3 -0
- data/features/data/sample_banner.txt +2 -0
- data/features/data/successful_tests.xml +18 -0
- data/features/data/tests_with_failures.xml +20 -0
- data/features/data/tests_with_warnings.xml +17 -0
- data/features/match.feature +36 -0
- data/features/support/aruba.rb +3 -0
- data/features/support/env.rb +6 -0
- data/features/verify.feature +48 -0
- data/identifiers/README.md +47 -0
- data/identifiers/os_architecture.txt +20 -0
- data/identifiers/os_device.txt +52 -0
- data/identifiers/os_family.txt +160 -0
- data/identifiers/os_product.txt +199 -0
- data/identifiers/service_family.txt +185 -0
- data/identifiers/service_product.txt +255 -0
- data/identifiers/software_class.txt +26 -0
- data/identifiers/software_family.txt +91 -0
- data/identifiers/software_product.txt +333 -0
- data/identifiers/vendor.txt +405 -0
- data/lib/recog.rb +4 -0
- data/lib/recog/db.rb +78 -0
- data/lib/recog/db_manager.rb +31 -0
- data/lib/recog/fingerprint.rb +280 -0
- data/lib/recog/fingerprint/regexp_factory.rb +56 -0
- data/lib/recog/fingerprint/test.rb +18 -0
- data/lib/recog/formatter.rb +51 -0
- data/lib/recog/match_reporter.rb +77 -0
- data/lib/recog/matcher.rb +94 -0
- data/lib/recog/matcher_factory.rb +14 -0
- data/lib/recog/nizer.rb +347 -0
- data/lib/recog/verifier.rb +39 -0
- data/lib/recog/verifier_factory.rb +13 -0
- data/lib/recog/verify_reporter.rb +86 -0
- data/lib/recog/version.rb +3 -0
- data/misc/convert_mysql_err +61 -0
- data/misc/order.xsl +17 -0
- data/recog-intrigue.gemspec +45 -0
- data/requirements.txt +2 -0
- data/spec/data/best_os_match_1.yml +17 -0
- data/spec/data/best_os_match_2.yml +17 -0
- data/spec/data/best_service_match_1.yml +17 -0
- data/spec/data/smb_native_os.txt +25 -0
- data/spec/data/test_fingerprints.xml +36 -0
- data/spec/data/verification_fingerprints.xml +86 -0
- data/spec/data/whitespaced_fingerprint.xml +5 -0
- data/spec/lib/fingerprint_self_test_spec.rb +174 -0
- data/spec/lib/recog/db_spec.rb +98 -0
- data/spec/lib/recog/fingerprint/regexp_factory_spec.rb +73 -0
- data/spec/lib/recog/fingerprint_spec.rb +112 -0
- data/spec/lib/recog/formatter_spec.rb +69 -0
- data/spec/lib/recog/match_reporter_spec.rb +91 -0
- data/spec/lib/recog/nizer_spec.rb +330 -0
- data/spec/lib/recog/verify_reporter_spec.rb +113 -0
- data/spec/spec_helper.rb +82 -0
- data/update_cpes.py +186 -0
- data/xml/apache_modules.xml +1911 -0
- data/xml/apache_os.xml +273 -0
- data/xml/architecture.xml +36 -0
- data/xml/dns_versionbind.xml +761 -0
- data/xml/fingerprints.xsd +128 -0
- data/xml/ftp_banners.xml +1553 -0
- data/xml/h323_callresp.xml +603 -0
- data/xml/hp_pjl_id.xml +358 -0
- data/xml/html_title.xml +1630 -0
- data/xml/http_cookies.xml +411 -0
- data/xml/http_servers.xml +3195 -0
- data/xml/http_wwwauth.xml +595 -0
- data/xml/imap_banners.xml +245 -0
- data/xml/ldap_searchresult.xml +711 -0
- data/xml/mdns_device-info_txt.xml +1796 -0
- data/xml/mdns_workstation_txt.xml +15 -0
- data/xml/mysql_banners.xml +1649 -0
- data/xml/mysql_error.xml +871 -0
- data/xml/nntp_banners.xml +82 -0
- data/xml/ntp_banners.xml +1223 -0
- data/xml/operating_system.xml +629 -0
- data/xml/pop_banners.xml +499 -0
- data/xml/rsh_resp.xml +76 -0
- data/xml/rtsp_servers.xml +76 -0
- data/xml/sip_banners.xml +359 -0
- data/xml/sip_user_agents.xml +221 -0
- data/xml/smb_native_lm.xml +62 -0
- data/xml/smb_native_os.xml +662 -0
- data/xml/smtp_banners.xml +1690 -0
- data/xml/smtp_debug.xml +39 -0
- data/xml/smtp_ehlo.xml +49 -0
- data/xml/smtp_expn.xml +82 -0
- data/xml/smtp_help.xml +157 -0
- data/xml/smtp_mailfrom.xml +20 -0
- data/xml/smtp_noop.xml +44 -0
- data/xml/smtp_quit.xml +29 -0
- data/xml/smtp_rcptto.xml +25 -0
- data/xml/smtp_rset.xml +26 -0
- data/xml/smtp_turn.xml +26 -0
- data/xml/smtp_vrfy.xml +89 -0
- data/xml/snmp_sysdescr.xml +6507 -0
- data/xml/snmp_sysobjid.xml +430 -0
- data/xml/ssh_banners.xml +1968 -0
- data/xml/telnet_banners.xml +1595 -0
- data/xml/x11_banners.xml +232 -0
- data/xml/x509_issuers.xml +134 -0
- data/xml/x509_subjects.xml +1268 -0
- metadata +304 -0
@@ -0,0 +1,39 @@
|
|
1
|
+
module Recog
|
2
|
+
class Verifier
|
3
|
+
attr_reader :fingerprints, :reporter
|
4
|
+
|
5
|
+
def initialize(fingerprints, reporter)
|
6
|
+
@fingerprints = fingerprints
|
7
|
+
@reporter = reporter
|
8
|
+
end
|
9
|
+
|
10
|
+
def verify
|
11
|
+
reporter.report(fingerprints.count) do
|
12
|
+
fingerprints.each do |fp|
|
13
|
+
reporter.print_name fp
|
14
|
+
|
15
|
+
fp.verify_params do |status, message|
|
16
|
+
case status
|
17
|
+
when :warn
|
18
|
+
reporter.warning "WARN: #{message}"
|
19
|
+
when :fail
|
20
|
+
reporter.failure "FAIL: #{message}"
|
21
|
+
when :success
|
22
|
+
reporter.success(message)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
fp.verify_tests do |status, message|
|
26
|
+
case status
|
27
|
+
when :warn
|
28
|
+
reporter.warning "WARN: #{message}"
|
29
|
+
when :fail
|
30
|
+
reporter.failure "FAIL: #{message}"
|
31
|
+
when :success
|
32
|
+
reporter.success(message)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'verifier'
|
2
|
+
require 'formatter'
|
3
|
+
require 'verify_reporter'
|
4
|
+
|
5
|
+
module Recog
|
6
|
+
module VerifierFactory
|
7
|
+
def self.build(options)
|
8
|
+
formatter = Formatter.new(options, $stdout)
|
9
|
+
reporter = VerifyReporter.new(options, formatter)
|
10
|
+
Verifier.new(options.fingerprints, reporter)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
module Recog
|
2
|
+
class VerifyReporter
|
3
|
+
attr_reader :formatter
|
4
|
+
attr_reader :success_count, :warning_count, :failure_count
|
5
|
+
|
6
|
+
def initialize(options, formatter)
|
7
|
+
@options = options
|
8
|
+
@formatter = formatter
|
9
|
+
reset_counts
|
10
|
+
end
|
11
|
+
|
12
|
+
def report(fingerprint_count)
|
13
|
+
reset_counts
|
14
|
+
yield self
|
15
|
+
summarize(fingerprint_count) unless @options.quiet
|
16
|
+
end
|
17
|
+
|
18
|
+
def success(text)
|
19
|
+
@success_count += 1
|
20
|
+
formatter.success_message("#{padding}#{text}") if detail?
|
21
|
+
end
|
22
|
+
|
23
|
+
def warning(text)
|
24
|
+
return unless @options.warnings
|
25
|
+
@warning_count += 1
|
26
|
+
formatter.warning_message("#{padding}#{text}")
|
27
|
+
end
|
28
|
+
|
29
|
+
def failure(text)
|
30
|
+
@failure_count += 1
|
31
|
+
formatter.failure_message("#{padding}#{text}")
|
32
|
+
end
|
33
|
+
|
34
|
+
def print_name(fingerprint)
|
35
|
+
if detail? && fingerprint.tests.any?
|
36
|
+
name = fingerprint.name.empty? ? '[unnamed]' : fingerprint.name
|
37
|
+
formatter.status_message("\n#{name}")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def summarize(fingerprint_count)
|
42
|
+
print_fingerprint_count(fingerprint_count) if detail?
|
43
|
+
print_summary
|
44
|
+
end
|
45
|
+
|
46
|
+
def print_fingerprint_count(count)
|
47
|
+
formatter.status_message("\nVerified #{count} fingerprints:")
|
48
|
+
end
|
49
|
+
|
50
|
+
def print_summary
|
51
|
+
colorize_summary(summary_line)
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def reset_counts
|
57
|
+
@success_count = @failure_count = @warning_count = 0
|
58
|
+
end
|
59
|
+
|
60
|
+
def detail?
|
61
|
+
@options.detail
|
62
|
+
end
|
63
|
+
|
64
|
+
def padding
|
65
|
+
' ' if @options.detail
|
66
|
+
end
|
67
|
+
|
68
|
+
def summary_line
|
69
|
+
summary = "SUMMARY: Test completed with "
|
70
|
+
summary << "#{@success_count} successful"
|
71
|
+
summary << ", #{@warning_count} warnings"
|
72
|
+
summary << ", and #{@failure_count} failures"
|
73
|
+
summary
|
74
|
+
end
|
75
|
+
|
76
|
+
def colorize_summary(summary)
|
77
|
+
if @failure_count > 0
|
78
|
+
formatter.failure_message(summary)
|
79
|
+
elsif @warning_count > 0
|
80
|
+
formatter.warning_message(summary)
|
81
|
+
else
|
82
|
+
formatter.success_message(summary)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# Takes the MySQL error messages from sql/share/errmsg-utf8.txt, locates the
|
4
|
+
# provided error message type (for example, ER_HOST_NOT_PRIVILEGED), then
|
5
|
+
# creates XML snippets for each locale to be used in Recog. Note that this
|
6
|
+
# cannot be used as-is to generate mysql_errors.xml, or oftentimes even parts
|
7
|
+
# -- it merely spits out XML snippets that you can start with; many will still
|
8
|
+
# need to be modified by hand.
|
9
|
+
|
10
|
+
require 'builder'
|
11
|
+
require 'open-uri'
|
12
|
+
require 'securerandom'
|
13
|
+
|
14
|
+
def generate_recog(error_name, locale, error_message)
|
15
|
+
xml = Builder::XmlMarkup.new(target: STDOUT, indent: 2)
|
16
|
+
xml.fingerprint(pattern: error_message) do
|
17
|
+
xml.description "Oracle MySQL error #{error_name} (#{locale})"
|
18
|
+
xml.example(error_message)
|
19
|
+
xml.param(pos: 0, name: 'service.vendor', value: 'Oracle')
|
20
|
+
xml.param(pos: 0, name: 'service.family', value: 'MySQL')
|
21
|
+
xml.param(pos: 0, name: 'service.product', value: 'MySQL')
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
unless ARGV.size == 2
|
26
|
+
fail "Usage: #{$PROGRAM_NAME} <path/URI for errmsg-utf8.txt> <error name>"
|
27
|
+
end
|
28
|
+
|
29
|
+
path = ARGV.first
|
30
|
+
error_name = ARGV.last
|
31
|
+
|
32
|
+
lines = IO.readlines(open(path))
|
33
|
+
|
34
|
+
fail "Nothing read from #{path}" if lines.empty?
|
35
|
+
|
36
|
+
unless (error_start = lines.find_index { |line| line.strip =~ /^#{error_name}(?:\s+\S+)?$/ })
|
37
|
+
fail "Unable to find #{error_name} in #{path}"
|
38
|
+
end
|
39
|
+
|
40
|
+
locale_map = {}
|
41
|
+
lines.slice(error_start + 1, lines.size).each do |line|
|
42
|
+
if /^\s+(?<locale>\S+)\s+"(?<error_message>.*)",?$/ =~ line
|
43
|
+
locale_map[locale] = error_message
|
44
|
+
else
|
45
|
+
break
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# Many of the error messages contain format strings. This can be problematic
|
50
|
+
# in that they need to be removed or otherwise handled as part of the 'pattern'
|
51
|
+
# attribute and appropriately filled in in any example elements. So simply try
|
52
|
+
# a rough count of the possible format strings and warn the user so that they
|
53
|
+
# can deal with it.
|
54
|
+
format_count = locale_map.values.map { |error_message| error_message.scan(/%/).size }.inject(&:+)
|
55
|
+
unless format_count == 0
|
56
|
+
warn("#{format_count} possible format strings found -- you'll need to deal with this")
|
57
|
+
end
|
58
|
+
|
59
|
+
Hash[locale_map.sort].map do |locale, error_message|
|
60
|
+
generate_recog(error_name, locale, error_message)
|
61
|
+
end
|
data/misc/order.xsl
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
3
|
+
<xsl:output encoding="UTF-8" indent="yes" method="xml"/>
|
4
|
+
<xsl:template match="@*|node()">
|
5
|
+
<xsl:copy>
|
6
|
+
<xsl:apply-templates select="@*|node()"/>
|
7
|
+
</xsl:copy>
|
8
|
+
</xsl:template>
|
9
|
+
<xsl:template match="fingerprints/fingerprint">
|
10
|
+
<xsl:copy>
|
11
|
+
<xsl:copy-of select="@*"/>
|
12
|
+
<xsl:apply-templates select="description"/>
|
13
|
+
<xsl:apply-templates select="example"/>
|
14
|
+
<xsl:apply-templates select="param"/>
|
15
|
+
</xsl:copy>
|
16
|
+
</xsl:template>
|
17
|
+
</xsl:stylesheet>
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.push File.expand_path('../lib', __FILE__)
|
3
|
+
require 'recog/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'recog-intrigue'
|
7
|
+
s.version = Recog::VERSION
|
8
|
+
s.required_ruby_version = '>= 2.1'
|
9
|
+
s.authors = [
|
10
|
+
'Rapid7 Research',
|
11
|
+
'jcran'
|
12
|
+
]
|
13
|
+
s.email = [
|
14
|
+
'jcran@intrigue.io'
|
15
|
+
]
|
16
|
+
s.homepage = "https://www.github.com/rapid7/recog"
|
17
|
+
s.summary = %q{Network service fingerprint database, classes, and utilities}
|
18
|
+
s.description = %q{
|
19
|
+
Recog is a framework for identifying products, services, operating systems, and hardware by matching
|
20
|
+
fingerprints against data returned from various network probes. Recog makes it simply to extract useful
|
21
|
+
information from web server banners, snmp system description fields, and a whole lot more.
|
22
|
+
}.gsub(/\s+/, ' ').strip
|
23
|
+
|
24
|
+
s.files = `git ls-files`.split("\n")
|
25
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
26
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
27
|
+
s.require_paths = ['lib']
|
28
|
+
|
29
|
+
# ---- Dependencies ----
|
30
|
+
|
31
|
+
s.add_development_dependency 'rspec'
|
32
|
+
s.add_development_dependency 'yard'
|
33
|
+
if RUBY_PLATFORM =~ /java/
|
34
|
+
# markdown formatting for yard
|
35
|
+
s.add_development_dependency 'kramdown'
|
36
|
+
else
|
37
|
+
# markdown formatting for yard
|
38
|
+
s.add_development_dependency 'redcarpet'
|
39
|
+
end
|
40
|
+
s.add_development_dependency 'cucumber'
|
41
|
+
s.add_development_dependency 'aruba'
|
42
|
+
s.add_development_dependency 'simplecov'
|
43
|
+
|
44
|
+
s.add_runtime_dependency 'nokogiri'
|
45
|
+
end
|
data/requirements.txt
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
---
|
2
|
+
- os.product: Windows 2008
|
3
|
+
os.vendor: Microsoft
|
4
|
+
os.version: Service Pack 2
|
5
|
+
os.certainty: 0.5
|
6
|
+
- os.product: Windows 2008
|
7
|
+
os.vendor: Microsoft
|
8
|
+
os.version: Service Pack 1
|
9
|
+
os.certainty: 0.4
|
10
|
+
- os.product: Windows 2008
|
11
|
+
os.vendor: Microsoft
|
12
|
+
os.certainty: 0.3
|
13
|
+
os.language: English
|
14
|
+
- os.product: Windows 2012
|
15
|
+
os.vendor: Microsoft
|
16
|
+
os.certainty: 0.4
|
17
|
+
os.language: Arabic
|
@@ -0,0 +1,17 @@
|
|
1
|
+
---
|
2
|
+
- os.product: Windows 2008
|
3
|
+
os.vendor: Microsoft
|
4
|
+
os.version: Service Pack 2
|
5
|
+
os.certainty: 1.0
|
6
|
+
- os.product: Windows 2012
|
7
|
+
os.vendor: Microsoft
|
8
|
+
os.version: Service Pack 1
|
9
|
+
os.certainty: 0.7
|
10
|
+
- os.product: Windows 2008
|
11
|
+
os.vendor: Microsoft
|
12
|
+
os.certainty: 0.3
|
13
|
+
os.language: English
|
14
|
+
- os.product: Windows 2012
|
15
|
+
os.vendor: Microsoft
|
16
|
+
os.certainty: 0.8
|
17
|
+
os.language: Arabic
|
@@ -0,0 +1,17 @@
|
|
1
|
+
---
|
2
|
+
- service.product: IIS
|
3
|
+
service.vendor: Microsoft
|
4
|
+
service.version: 6.0
|
5
|
+
service.certainty: 1.0
|
6
|
+
- service.product: Apache
|
7
|
+
service.vendor: Linux
|
8
|
+
service.version: 2.2.4
|
9
|
+
service.certainty: 0.5
|
10
|
+
- service.product: IIS
|
11
|
+
service.vendor: Microsoft
|
12
|
+
service.certainty: 0.5
|
13
|
+
service.language: English
|
14
|
+
- service.product: IIS
|
15
|
+
service.vendor: Microsoft
|
16
|
+
service.certainty: 0.4
|
17
|
+
service.language: Arabic
|
@@ -0,0 +1,25 @@
|
|
1
|
+
Windows Web Server 2008 R2 7601 Service Pack 1
|
2
|
+
Windows Vista (TM) Home Premium 6002 Service Pack 2
|
3
|
+
Windows Server (R) 2008 Standard 6002 Service Pack 2
|
4
|
+
Windows Server (R) 2008 Enterprise without Hyper-V 6001 Service Pack 1
|
5
|
+
Windows Server (R) 2008 Enterprise 6002 Service Pack 2
|
6
|
+
Windows Server (R) 2008 Enterprise 6001 Service Pack 1
|
7
|
+
Windows Server 2012 Standard 9200
|
8
|
+
Windows Server 2012 R2 Standard 9600
|
9
|
+
Windows Server 2008 R2 Standard 7601 Service Pack 1
|
10
|
+
Windows Server 2008 R2 Standard 7600
|
11
|
+
Windows Server 2008 R2 Enterprise 7601 Service Pack 1
|
12
|
+
Windows Server 2008 R2 Enterprise 7600
|
13
|
+
Windows Server 2008 HPC Edition 7600
|
14
|
+
Windows Server 2003 R2 3790 Service Pack 2
|
15
|
+
Windows Server 2003 3790 Service Pack 2
|
16
|
+
Windows (R) Web Server 2008 6002 Service Pack 2
|
17
|
+
Windows MultiPoint Server 2012 Premium 9200
|
18
|
+
Windows 8 Enterprise 9200
|
19
|
+
Windows 8.1 Enterprise 9600
|
20
|
+
Windows 7 Ultimate 7601 Service Pack 1
|
21
|
+
Windows 7 Ultimate 7600
|
22
|
+
Windows 7 Starter 7601 Service Pack 1
|
23
|
+
Windows 7 Home Premium 7600
|
24
|
+
Windows 7 Enterprise 7601 Service Pack 1
|
25
|
+
Windows 7 Enterprise 7600
|
@@ -0,0 +1,36 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<fingerprints>
|
3
|
+
<fingerprint pattern=".*\(iSeries\).*">
|
4
|
+
</fingerprint>
|
5
|
+
|
6
|
+
<fingerprint pattern=".*\(PalmOS\).*">
|
7
|
+
<description>PalmOS</description>
|
8
|
+
<param pos="1" name="os.vendor" value="Palm"/>
|
9
|
+
<param pos="2" name="os.device" value="General"/>
|
10
|
+
</fingerprint>
|
11
|
+
|
12
|
+
<fingerprint pattern="(designjet \S+)" flags="REG_ICASE">
|
13
|
+
<description>HP Designjet printer</description>
|
14
|
+
<description>I should be ignored</description>
|
15
|
+
<param pos="0" name="service.vendor" value="HP"/>
|
16
|
+
</fingerprint>
|
17
|
+
|
18
|
+
<fingerprint pattern="laserjet (.*)(?: series)?" flags="REG_ICASE">
|
19
|
+
<description>HP JetDirect Printer</description>
|
20
|
+
<example>HP LaserJet 4100 Series</example>
|
21
|
+
<example>HP LaserJet 2200</example>
|
22
|
+
<param pos="0" name="service.vendor" value="HP"/>
|
23
|
+
</fingerprint>
|
24
|
+
|
25
|
+
<fingerprint pattern="^Windows XP (\d+) (Service Pack \d+)$">
|
26
|
+
<description>Windows XP</description>
|
27
|
+
<example os.build="2600" os.version="Service Pack 1"
|
28
|
+
>Windows XP 2600 Service Pack 1</example>
|
29
|
+
<param pos="0" name="os.certainty" value="1.0"/>
|
30
|
+
<param pos="0" name="os.vendor" value="Microsoft"/>
|
31
|
+
<param pos="0" name="os.product" value="Windows XP"/>
|
32
|
+
<param pos="1" name="os.build"/>
|
33
|
+
<param pos="2" name="os.version"/>
|
34
|
+
</fingerprint>
|
35
|
+
|
36
|
+
</fingerprints>
|
@@ -0,0 +1,86 @@
|
|
1
|
+
<fingerprints>
|
2
|
+
|
3
|
+
<fingerprint pattern="^[dD]ovecot (?:\((.*)\) )?(?:DA )?ready\.(?: <.+@(.+)>)?$">
|
4
|
+
<description>Dovecot Secure POP Server - no params</description>
|
5
|
+
<example>Dovecot ready.</example>
|
6
|
+
</fingerprint>
|
7
|
+
|
8
|
+
<fingerprint pattern="^[dD]ovecot (?:\((.*)\) )?(?:DA )?ready\.(?: <.+@(.+)>)?$">
|
9
|
+
<description>Dovecot Secure POP Server - no params defined by capture group</description>
|
10
|
+
<example>Dovecot ready.</example>
|
11
|
+
<param pos="0" name="service.family" value="Dovecot"/>
|
12
|
+
<param pos="0" name="service.product" value="Dovecot"/>
|
13
|
+
</fingerprint>
|
14
|
+
|
15
|
+
<fingerprint pattern="^[dD]ovecot (?:\((.*)\) )?(?:DA )?ready\.(?: <.+@(.+)>)?$">
|
16
|
+
<description>Dovecot Secure POP Server - no example</description>
|
17
|
+
<param pos="0" name="service.family" value="Dovecot"/>
|
18
|
+
<param pos="0" name="service.product" value="Dovecot"/>
|
19
|
+
</fingerprint>
|
20
|
+
|
21
|
+
<fingerprint pattern="^[dD]ovecot (?:\((.*)\) )?(?:DA )?ready\.(?: <.+@(.+)>)?$">
|
22
|
+
<description>Dovecot Secure POP Server - one parameter, one example</description>
|
23
|
+
<example host.name="domain">Dovecot ready. <abc11.1.1234abcd.abdcabcdabcd@domain></example>
|
24
|
+
<param pos="0" name="service.family" value="Dovecot"/>
|
25
|
+
<param pos="0" name="service.product" value="Dovecot"/>
|
26
|
+
<param pos="2" name="host.name"/>
|
27
|
+
</fingerprint>
|
28
|
+
|
29
|
+
<fingerprint pattern="^[dD]ovecot (?:\((.*)\) )?(?:DA )?ready\.(?: <.+@(.+)>)?$">
|
30
|
+
<description>Dovecot Secure POP Server - two paremeters, one example</description>
|
31
|
+
<example host.name="domain" os.vendor="Ubuntu">Dovecot (Ubuntu) ready. <abc11.1.1234abcd.abdcabcdabcd@domain></example>
|
32
|
+
<param pos="0" name="service.family" value="Dovecot"/>
|
33
|
+
<param pos="0" name="service.product" value="Dovecot"/>
|
34
|
+
<param pos="1" name="os.vendor"/>
|
35
|
+
<param pos="2" name="host.name"/>
|
36
|
+
</fingerprint>
|
37
|
+
|
38
|
+
<fingerprint pattern="^[dD]ovecot (?:\((.*)\) )?(?:DA )?ready\.(?: <.+@(.+)>)?$">
|
39
|
+
<description>Dovecot Secure POP Server - two parameters, two examples</description>
|
40
|
+
<example host.name="domain">Dovecot ready. <abc11.1.1234abcd.abdcabcdabcd@domain></example>
|
41
|
+
<example os.vendor="Ubuntu">Dovecot (Ubuntu) ready.</example>
|
42
|
+
<param pos="0" name="service.family" value="Dovecot"/>
|
43
|
+
<param pos="0" name="service.product" value="Dovecot"/>
|
44
|
+
<param pos="1" name="os.vendor"/>
|
45
|
+
<param pos="2" name="host.name"/>
|
46
|
+
</fingerprint>
|
47
|
+
|
48
|
+
<fingerprint pattern="^[dD]ovecot (?:\((.*)\) )?(?:DA )?ready\.(?: <.+@(.+)>)?$">
|
49
|
+
<description>Dovecot Secure POP Server - two parameters, one example, one missing param</description>
|
50
|
+
<example host.name="domain">Dovecot ready. <abc11.1.1234abcd.abdcabcdabcd@domain></example>
|
51
|
+
<param pos="0" name="service.family" value="Dovecot"/>
|
52
|
+
<param pos="0" name="service.product" value="Dovecot"/>
|
53
|
+
<param pos="1" name="os.vendor"/>
|
54
|
+
<param pos="2" name="host.name"/>
|
55
|
+
</fingerprint>
|
56
|
+
|
57
|
+
<fingerprint pattern="^[dD]ovecot (?:\((.*)\) )?(?:DA )?ready\.(?: <.+@(.+)>)?$">
|
58
|
+
<description>Dovecot Secure POP Server - two parameters, one example, two missing params</description>
|
59
|
+
<example>Dovecot ready. <abc11.1.1234abcd.abdcabcdabcd@domain></example>
|
60
|
+
<param pos="0" name="service.family" value="Dovecot"/>
|
61
|
+
<param pos="0" name="service.product" value="Dovecot"/>
|
62
|
+
<param pos="1" name="os.vendor"/>
|
63
|
+
<param pos="2" name="host.name"/>
|
64
|
+
</fingerprint>
|
65
|
+
|
66
|
+
<fingerprint pattern="^[dD]ovecot (?:\((.*)\) )?(?:DA )?ready\.(?: <.+@(.+)>)?$">
|
67
|
+
<description>Dovecot Secure POP Server - two parameters, two examples, one missing param</description>
|
68
|
+
<example host.name="domain">Dovecot ready. <abc11.1.1234abcd.abdcabcdabcd@domain></example>
|
69
|
+
<example>Dovecot (Ubuntu) ready.</example>
|
70
|
+
<param pos="0" name="service.family" value="Dovecot"/>
|
71
|
+
<param pos="0" name="service.product" value="Dovecot"/>
|
72
|
+
<param pos="1" name="os.vendor"/>
|
73
|
+
<param pos="2" name="host.name"/>
|
74
|
+
</fingerprint>
|
75
|
+
|
76
|
+
<fingerprint pattern="^[dD]ovecot (?:\((.*)\) )?(?:DA )?ready\.(?: <.+@(.+)>)?$">
|
77
|
+
<description>Dovecot Secure POP Server - two parameters, two examples, two missing params</description>
|
78
|
+
<example>Dovecot ready. <abc11.1.1234abcd.abdcabcdabcd@domain></example>
|
79
|
+
<example>Dovecot (Ubuntu) ready.</example>
|
80
|
+
<param pos="0" name="service.family" value="Dovecot"/>
|
81
|
+
<param pos="0" name="service.product" value="Dovecot"/>
|
82
|
+
<param pos="1" name="os.vendor"/>
|
83
|
+
<param pos="2" name="host.name"/>
|
84
|
+
</fingerprint>
|
85
|
+
|
86
|
+
</fingerprints>
|