recog 1.0.14 → 1.0.15

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e644a53b22cb83686c20e04a157cf4c449ab2949
4
- data.tar.gz: 57ebf0489c9e197013abb195d286ecba48ddc76e
3
+ metadata.gz: ce44c3b625cc253b8729d4aac5677dbda2f71c46
4
+ data.tar.gz: b4ab896d1fc5e06370a73fc51efc339e24e13794
5
5
  SHA512:
6
- metadata.gz: 1095c9c7208450e6d8c3ab4cd98e0f2ff4f0f05fec8a08a2aaf27a712af0780772e9710516218c97859fde2b998eaae6b2872549dbc07c9acc1822eeca0e90fa
7
- data.tar.gz: 84ed98140d16270b44113b7a3120312cf0ddd77064708c261cbd080c74922275fe3961b9da7a870123585c5a86bd5dd5517cf085836f316682d8c5e28d0b706d
6
+ metadata.gz: 4bad5f89498020b13dc9d667004f6d07ab1a39aec9feaefd39a75714bfbf16fef7a180dfd0c8c949b06b2409b680a976a487d450037948a728b5c82269396ec9
7
+ data.tar.gz: 1056e591a107d473509c8f9c99058c399ad2d604eb0aa77401722a8c9dc88e4179e3eda201beca530c306c0013ca9ed79249d6ecadcc6ebfc54f37128551cabe
data/.travis.yml CHANGED
@@ -1,4 +1,5 @@
1
1
  language: ruby
2
+ cache: bundler
2
3
  rvm:
3
4
  - 2.1.5
4
5
  - 1.9.3
data/Gemfile CHANGED
@@ -8,4 +8,5 @@ group :test do
8
8
  gem 'rspec', '>= 2.99'
9
9
  gem 'cucumber', '~> 1.3.8'
10
10
  gem 'aruba', '~> 0.5.3'
11
+ gem 'regexp_parser', '~> 0.2.0'
11
12
  end
@@ -45,26 +45,6 @@ class Fingerprint
45
45
  match_data = @regex.match(match_string)
46
46
  return if match_data.nil?
47
47
 
48
- # sanity check any positional extractions
49
- positions = @params.values.map(&:first).map(&:to_i)
50
- captures_size = match_data.captures.size
51
- if @params.empty? && captures_size > 0
52
- raise "Non-asserting fingerprint with regex #{@regex} captures #{captures_size} time(s); 0 are needed"
53
- else
54
- if captures_size > 0
55
- max_pos = positions.max
56
- # if it is actually looking to extract, ensure that there is enough to extract
57
- if max_pos > 0 && captures_size < max_pos
58
- raise "Regex #{@regex} only has #{captures_size} captures; cannot extract from position #{max_pos}"
59
- end
60
- # if there is not extraction but capturing is happening, fail since this is a waste
61
- if captures_size > max_pos
62
- raise "Regex #{@regex} captures #{captures_size - max_pos} too many (#{captures_size} vs #{max_pos})"
63
- end
64
- end
65
- end
66
-
67
- # now do extraction
68
48
  result = { 'matched' => @name }
69
49
  @params.each_pair do |k,v|
70
50
  pos = v[0]
data/lib/recog/matcher.rb CHANGED
@@ -22,27 +22,14 @@ class Matcher
22
22
  reporter.increment_line_count
23
23
 
24
24
  line = line.to_s.unpack("C*").pack("C*").strip.gsub(/\\[rn]/, '')
25
- found = nil
25
+ extractions = nil
26
26
  fingerprints.each do |fp|
27
- m = line.match(fp.regex)
28
- if m
29
- found = [fp, m]
30
- break
31
- end
27
+ break if (extractions = fp.match(line))
32
28
  end
33
29
 
34
- if found
35
- info = { }
36
- fp, m = found
37
- fp.params.each_pair do |k,v|
38
- if v[0] == 0
39
- info[k] = v[1]
40
- else
41
- info[k] = m[ v[0] ]
42
- end
43
- end
44
- info['data'] = line
45
- reporter.match "MATCH: #{info.inspect}"
30
+ if extractions
31
+ extractions['data'] = line
32
+ reporter.match "MATCH: #{extractions.inspect}"
46
33
  else
47
34
  reporter.failure "FAIL: #{line}"
48
35
  end
data/lib/recog/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Recog
2
- VERSION = '1.0.14'
2
+ VERSION = '1.0.15'
3
3
  end
@@ -1,4 +1,5 @@
1
1
  require 'recog/db'
2
+ require 'regexp_parser'
2
3
 
3
4
  describe Recog::DB do
4
5
  Dir[File.expand_path File.join('xml', '*.xml')].each do |xml_file_name|
@@ -27,6 +28,30 @@ describe Recog::DB do
27
28
  expect(fp.regex.class).to be ::Regexp
28
29
  end
29
30
 
31
+ it 'uses capturing regular expressions properly' do
32
+ # the list of index-based captures that the fingerprint is expecting
33
+ expected_capture_positions = fp.params.values.map(&:first).map(&:to_i).select { |i| i > 0 }
34
+ if fp.params.empty? && expected_capture_positions.size > 0
35
+ fail "Non-asserting fingerprint with regex #{fp.regex} captures #{expected_capture_positions.size} time(s); 0 are needed"
36
+ else
37
+ # parse the regex and count the number of captures
38
+ actual_capture_positions = []
39
+ capture_number = 1
40
+ Regexp::Scanner.scan(fp.regex).each do |token_parts|
41
+ if token_parts.first == :group && ![:close, :passive].include?(token_parts[1])
42
+ actual_capture_positions << capture_number
43
+ capture_number += 1
44
+ end
45
+ end
46
+ # compare the captures actually performed to those being used and ensure that they contain
47
+ # the same elements regardless of order, preventing, over-, under- and other forms of mis-capturing.
48
+ actual_capture_positions = actual_capture_positions.sort.uniq
49
+ expected_capture_positions = expected_capture_positions.sort.uniq
50
+ expect(actual_capture_positions).to eq(expected_capture_positions),
51
+ "Regex didn't capture (#{actual_capture_positions}) exactly what fingerprint extracted (#{expected_capture_positions})"
52
+ end
53
+ end
54
+
30
55
  # Not yet enforced
31
56
  # it "has test cases" do
32
57
  # expect(fp.tests.length).not_to equal(0)
@@ -38,7 +63,7 @@ describe Recog::DB do
38
63
  expect(match).to_not be_nil, 'Regex did not match'
39
64
  # test any extractions specified in the example
40
65
  example.attributes.each_pair do |k,v|
41
- expect(match[k]).to eq(v), "Regex didn't extracted expected value for fingerprint attribute #{k}"
66
+ expect(match[k]).to eq(v), "Regex didn't extract expected value for fingerprint attribute #{k} -- got #{match[k]} instead of #{v}"
42
67
  end
43
68
  end
44
69
 
@@ -117,11 +117,11 @@ to fingerprint H.323 servers.
117
117
  <param pos="2" name="service.version"/>
118
118
  </fingerprint>
119
119
 
120
- <fingerprint pattern="^0x(82000002|a5000001)\:(.*)\:.*?(\d*\.*\d*\.*\d*).*$" flags="REG_ICASE">
120
+ <fingerprint pattern="^0x(?:82000002|a5000001)\:(.*)\:.*?(\d*\.*\d*\.*\d*).*$" flags="REG_ICASE">
121
121
  <description>Ericsson H.323 Server</description>
122
122
  <param pos="0" name="service.vendor" value="Ericsson"/>
123
- <param pos="2" name="service.product"/>
124
- <param pos="3" name="service.version"/>
123
+ <param pos="1" name="service.product"/>
124
+ <param pos="2" name="service.version"/>
125
125
  </fingerprint>
126
126
 
127
127
  <fingerprint pattern="^0x8a000003\:(.*)\:.*?(\d*\.*\d*\.*\d*).*$" flags="REG_ICASE">
@@ -657,11 +657,11 @@ to fingerprint H.323 servers.
657
657
  <param pos="2" name="service.version"/>
658
658
  </fingerprint>
659
659
 
660
- <fingerprint pattern="^0xb500(4c54|600d)\:(.*)\:.*?(\d*\.*\d*\.*\d*).*$" flags="REG_ICASE">
660
+ <fingerprint pattern="^0xb500(?:4c54|600d)\:(.*)\:.*?(\d*\.*\d*\.*\d*).*$" flags="REG_ICASE">
661
661
  <description>Lucent Technologies H.323 Server</description>
662
662
  <param pos="0" name="service.vendor" value="Lucent Technologies"/>
663
- <param pos="2" name="service.product"/>
664
- <param pos="3" name="service.version"/>
663
+ <param pos="1" name="service.product"/>
664
+ <param pos="2" name="service.version"/>
665
665
  </fingerprint>
666
666
 
667
667
  <fingerprint pattern="^0xb5004d47\:(.*)\:.*?(\d*\.*\d*\.*\d*).*$" flags="REG_ICASE">
data/xml/http_cookies.xml CHANGED
@@ -231,7 +231,7 @@ servers.
231
231
  <param pos="0" name="service.product" value="Alteon Web Switch"/>
232
232
  </fingerprint>
233
233
 
234
- <fingerprint pattern="^((SS_X_)?CSINTERSESSIONID)=.*">
234
+ <fingerprint pattern="^((?:SS_X_)?CSINTERSESSIONID)=.*">
235
235
  <description>OpenMarket/FatWire Content Server (www.fatwire.com)</description>
236
236
  <param pos="1" name="cookie"/>
237
237
  <param pos="0" name="service.vendor" value="FatWire"/>
data/xml/pop_banners.xml CHANGED
@@ -8,7 +8,7 @@ matched against these patterns to fingerprint POP3 servers.
8
8
 
9
9
  <fingerprint pattern="^([^ ]+) +Cyrus POP3 v(\d+\.\d+.*)-OS X(?: Server)? ([\d\.]+).* server ready">
10
10
  <description>OSX Cyrus POP</description>
11
- <example>8.8.8.8 Cyrus POP3 v2.3.8-OS X Server 10.5: 9A562 server ready &lt;1999107648.1324502155@8.8.8.8&gt;</example>
11
+ <example host.domain="8.8.8.8" service.version="2.3.8" os.version="10.5">8.8.8.8 Cyrus POP3 v2.3.8-OS X Server 10.5: 9A562 server ready &lt;1999107648.1324502155@8.8.8.8&gt;</example>
12
12
  <param pos="0" name="service.family" value="Cyrus"/>
13
13
  <param pos="0" name="service.product" value="Cyrus POP"/>
14
14
  <param pos="0" name="service.vendor" value="CMU"/>
@@ -18,17 +18,18 @@ matched against these patterns to fingerprint POP3 servers.
18
18
  <param pos="0" name="os.product" value="Mac OS X"/>
19
19
  <param pos="0" name="os.device" value="General"/>
20
20
  <param pos="3" name="os.version"/>
21
+ <param pos="1" name="host.domain"/>
21
22
  </fingerprint>
22
23
 
23
- <fingerprint pattern="^([^ ]+) +Cyrus POP3 v([\d\.]+)[^OS\s+X].*$">
24
+ <fingerprint pattern="^([^ ]+) +Cyrus POP3 v([\d\.]+)">
24
25
  <description>CMU Cyrus POP</description>
25
- <example>foo Cyrus POP3 v2.3</example>
26
- <example>foo Cyrus POP3 v2.3.14 server ready &lt;13087751828270990591.1301068892@foo&gt;</example>
26
+ <example host.domain="foo" service.version="2.3">foo Cyrus POP3 v2.3</example>
27
+ <example host.domain="foo" service.version="2.3.14">foo Cyrus POP3 v2.3.14 server ready &lt;13087751828270990591.1301068892@foo&gt;</example>
27
28
  <param pos="0" name="service.vendor" value="CMU"/>
28
29
  <param pos="0" name="service.family" value="Cyrus"/>
29
30
  <param pos="0" name="service.product" value="Cyrus POP"/>
30
- <param pos="1" name="service.version"/>
31
- <param pos="2" name="host.domain"/>
31
+ <param pos="2" name="service.version"/>
32
+ <param pos="1" name="host.domain"/>
32
33
  </fingerprint>
33
34
 
34
35
  <fingerprint pattern="^Lotus Notes POP3 server version X[^ ]+ ready on .*$">
@@ -248,15 +249,15 @@ matched against these patterns to fingerprint POP3 servers.
248
249
 
249
250
  // +OK X1 POP3 Mail Server
250
251
 
251
- // +OK server POP3 server (DeskNow POP3 Server 1.0) ready
252
+ // +OK server POP3 server (DeskNow POP3 Server 1.0) ready
252
253
 
253
254
  // +OK <1185161310.3352@goto15028.com> [XMail 1.24 POP3 Server] service ready; Mon, 23 Jul 2007 11:28:30 +0800
254
255
 
255
256
  // +OK IdeaPop3Server v0.50 ready.
256
257
 
257
- // +OK qxztmail POP3 server (STD Ymailserver v1.8 POP3) ready
258
+ // +OK qxztmail POP3 server (STD Ymailserver v1.8 POP3) ready
258
259
 
259
- // +OK blue.forest-green.lan POP3 server (JAMES POP3 Server 2.2.0) ready
260
+ // +OK blue.forest-green.lan POP3 server (JAMES POP3 Server 2.2.0) ready
260
261
 
261
262
  // +OK xxx CMailServer 5.2 POP3 Service Ready
262
263
 
@@ -299,7 +300,7 @@ matched against these patterns to fingerprint POP3 servers.
299
300
  -ERR sorry, POP server too busy right now. Try again later.
300
301
  -ERR This IP is not configured for POP3 service. Please contact Allstream at 1-888-655-7670.
301
302
  +OK
302
- +OK
303
+ +OK
303
304
  +OK <0bdec6022085d6c34a0e48bb77bf8cf3@juno.thinkburst.com>
304
305
  +OK <869521546.23059@mail.tecedge.net>, POP3 server ready.
305
306
  +OK host CMailServer 5.2 POP3 Service Ready
@@ -307,7 +308,7 @@ matched against these patterns to fingerprint POP3 servers.
307
308
  +OK alakhan.kz POP MDaemon 6.8.4 ready <MDAEMON-F200707231617.AA1715437MD3489@alakhan.kz>
308
309
  +OK alquilerpc.com.mx POP3 Server (Version 1.020h) ready.
309
310
  +OK ArGoSoft Mail Server Pro for WinNT/2000/XP, Version 1.8 (1.8.8.9)
310
- +OK blue.forest-green.lan POP3 server (JAMES POP3 Server 2.2.0) ready
311
+ +OK blue.forest-green.lan POP3 server (JAMES POP3 Server 2.2.0) ready
311
312
  +OK canoeregatta.org POP3 Server (Version 1.020h) ready.
312
313
  +OK codebase.com.au POP MDaemon 9.6.1 ready <MDAEMON-F200707220122.AA2235837MD8039@codebase.com.au>
313
314
  +OK Cubic Circle's v1.31 1998/05/13 POP3 ready <0c9300004104a246@www.dvdld.co.za>
@@ -402,9 +403,9 @@ matched against these patterns to fingerprint POP3 servers.
402
403
  +OK POP3 www.happytails2u.com 2004.89 server ready
403
404
  +OK POP3 www.homebasedwizard.com 2004.89 server ready
404
405
  +OK POP3 www.webmail.imperioe.com 2004.89 server ready
405
- +OK qxztmail POP3 server (STD Ymailserver v1.8 POP3) ready
406
+ +OK qxztmail POP3 server (STD Ymailserver v1.8 POP3) ready
406
407
  +OK Radish (Version 3.0.0-b021) ready
407
- +OK ready
408
+ +OK ready
408
409
  +OK ready <11514.1185210732@freedom.concept69.de>
409
410
  +OK ready <14026.1184992338@s076-129.ub.firstserver.ne.jp>
410
411
  +OK ready <16013.1185110479@p1.in11.squarestart.ne.jp>
@@ -417,7 +418,7 @@ matched against these patterns to fingerprint POP3 servers.
417
418
  +OK recvmail/he.net POP3 Server
418
419
  +OK refinanceloanjones.com POP3 Server (Version 1.020h) ready.
419
420
  +OK samare.it POP MDaemon 6.8.5 ready <MDAEMON-F200707220351.AA513460MD5338@samare.it>
420
- +OK server POP3 server (DeskNow POP3 Server 1.0) ready
421
+ +OK server POP3 server (DeskNow POP3 Server 1.0) ready
421
422
  +OK silexaviacion.com POP3 Server (Version 1.020h) ready.
422
423
  +OK simple-photography.com POP3 Server (Version 1.020h) ready.
423
424
  +OK Solid POP3 server ready
@@ -139,24 +139,24 @@
139
139
  </fingerprint>
140
140
 
141
141
  <!-- TODO: Need an example string -->
142
- <fingerprint pattern="^Windows \(R\) Storage Server 2008 (\w+|\w+ \w+|\w+ \w+ \w+) (\d+) (Service Pack \d+)$">
142
+ <fingerprint pattern="^Windows \(R\) Storage Server 2008 (?:\w+|\w+ \w+|\w+ \w+ \w+) (\d+) (Service Pack \d+)$">
143
143
  <description>Windows Server 2008 Storage (SP)</description>
144
144
  <param pos="0" name="os.certainty" value="1.0"/>
145
145
  <param pos="0" name="os.vendor" value="Microsoft"/>
146
146
  <param pos="0" name="os.product" value="Windows Server 2008"/>
147
147
  <param pos="0" name="os.edition" value="Storage"/>
148
- <param pos="2" name="os.build"/>
149
- <param pos="3" name="os.version"/>
148
+ <param pos="1" name="os.build"/>
149
+ <param pos="2" name="os.version"/>
150
150
  </fingerprint>
151
151
 
152
152
  <!-- TODO: Need an example string -->
153
- <fingerprint pattern="^Windows \(R\) Storage Server 2008 (\w+|\w+ \w+|\w+ \w+ \w+) (\d+)$">
153
+ <fingerprint pattern="^Windows \(R\) Storage Server 2008 (?:\w+|\w+ \w+|\w+ \w+ \w+) (\d+)$">
154
154
  <description>Windows Web Server 2008 Storage</description>
155
155
  <param pos="0" name="os.certainty" value="1.0"/>
156
156
  <param pos="0" name="os.vendor" value="Microsoft"/>
157
157
  <param pos="0" name="os.product" value="Windows Server 2008"/>
158
158
  <param pos="0" name="os.edition" value="Storage"/>
159
- <param pos="3" name="os.build"/>
159
+ <param pos="1" name="os.build"/>
160
160
  </fingerprint>
161
161
 
162
162
  <fingerprint pattern="^Windows Server 2008 HPC Edition (\d+) (Service Pack \d+)$">
@@ -337,25 +337,25 @@
337
337
  <param pos="2" name="os.build"/>
338
338
  </fingerprint>
339
339
 
340
- <fingerprint pattern="^Windows MultiPoint Server 2012 (\w+|\w+ \w+|\w+ \w+ \w+) (\d+) (Service Pack \d+)$">
340
+ <fingerprint pattern="^Windows MultiPoint Server 2012 (?:\w+|\w+ \w+|\w+ \w+ \w+) (\d+) (Service Pack \d+)$">
341
341
  <description>Windows MultiPoint Server 2012 (SP)</description>
342
- <example>Windows MultiPoint Server 2012 Premium 9201 Service Pack 1</example>
342
+ <example os.build="9201" os.version="Service Pack 1">Windows MultiPoint Server 2012 Premium 9201 Service Pack 1</example>
343
343
  <param pos="0" name="os.certainty" value="1.0"/>
344
344
  <param pos="0" name="os.vendor" value="Microsoft"/>
345
345
  <param pos="0" name="os.product" value="Windows Server 2012"/>
346
346
  <param pos="0" name="os.edition" value="MultiPoint"/>
347
- <param pos="2" name="os.build"/>
348
- <param pos="3" name="os.version"/>
347
+ <param pos="1" name="os.build"/>
348
+ <param pos="2" name="os.version"/>
349
349
  </fingerprint>
350
350
 
351
- <fingerprint pattern="^Windows MultiPoint Server 2012 (\w+|\w+ \w+|\w+ \w+ \w+) (\d+)$">
351
+ <fingerprint pattern="^Windows MultiPoint Server 2012 (?:\w+|\w+ \w+|\w+ \w+ \w+) (\d+)$">
352
352
  <description>Windows MultiPoint Server 2012</description>
353
- <example>Windows MultiPoint Server 2012 Premium 9200</example>
353
+ <example os.build="9200">Windows MultiPoint Server 2012 Premium 9200</example>
354
354
  <param pos="0" name="os.certainty" value="1.0"/>
355
355
  <param pos="0" name="os.vendor" value="Microsoft"/>
356
356
  <param pos="0" name="os.product" value="Windows Server 2012"/>
357
357
  <param pos="0" name="os.edition" value="MultiPoint"/>
358
- <param pos="2" name="os.build"/>
358
+ <param pos="1" name="os.build"/>
359
359
  </fingerprint>
360
360
 
361
361
  <!-- TODO: Detect vendor, distribution, and package versions -->
data/xml/smtp_banners.xml CHANGED
@@ -15,7 +15,7 @@ These XML files are used in this order:
15
15
  smtp_turn.xml
16
16
  smtp_rset.xml
17
17
  smtp_quit.xml
18
-
18
+
19
19
  The system or service fingerprint with the highest certainty overwrites the others.
20
20
  -->
21
21
 
@@ -55,17 +55,19 @@ The system or service fingerprint with the highest certainty overwrites the othe
55
55
  AnalogX proxy
56
56
  http://www.analogx.com/contents/download/network/proxy.htm
57
57
  </description>
58
+ <example host.name="192.168.1.1" service.version="4.15">192.168.1.1 SMTP AnalogX Proxy 4.15 (Release) ready</example>
58
59
  <param pos="0" name="service.vendor" value="AnalogX"/>
59
60
  <param pos="0" name="service.family" value="Proxy"/>
60
61
  <param pos="0" name="service.product" value="Proxy"/>
61
- <param pos="1" name="service.version"/>
62
+ <param pos="2" name="service.version"/>
63
+ <param pos="1" name="host.name"/>
62
64
  </fingerprint>
63
65
 
64
66
  <fingerprint pattern="^ArGoSoft Mail Server, Version [^ ]+ \(([^ ]+\.[^ ]+\.[^ ]+\.[^ ]+)\) *$">
65
67
  <description>
66
68
  ArGoSoft Mail Server is fully functional STMP/POP3/Finger server for Windows 95/98/NT/2000.
67
69
  http://www.argosoft.com/applications/mailserver/
68
- Example: 220 ArGoSoft Mail Server, Version 1.4 (1.4.0.3)
70
+ Example: 220 ArGoSoft Mail Server, Version 1.4 (1.4.0.3)
69
71
  </description>
70
72
  <param pos="0" name="service.vendor" value="ArGoSoft"/>
71
73
  <param pos="0" name="service.family" value="Mail Server"/>
@@ -124,7 +126,7 @@ The system or service fingerprint with the highest certainty overwrites the othe
124
126
  <param pos="0" name="service.version" value="4"/>
125
127
  </fingerprint>
126
128
 
127
- <fingerprint pattern="^([\*20 ]+)$">
129
+ <fingerprint pattern="^[\*20 ]+$">
128
130
  <description>
129
131
  Cisco PIX firewall: PIX sits between an internal SMTP server and the rest of the world.
130
132
 
@@ -275,7 +277,7 @@ The system or service fingerprint with the highest certainty overwrites the othe
275
277
  <param pos="0" name="service.product" value="IIS"/>
276
278
  <param pos="3" name="service.version"/>
277
279
  <param pos="1" name="host.name"/>
278
- <param pos="2" name="system.time"/>
280
+ <param pos="2" name="system.time"/>
279
281
  <param pos="0" name="system.time.format" value="EEE, dd MMM yyyy HH:mm:ss zzz"/>
280
282
  <param pos="0" name="os.vendor" value="Microsoft"/>
281
283
  <param pos="0" name="os.family" value="Windows"/>
@@ -330,7 +332,7 @@ The system or service fingerprint with the highest certainty overwrites the othe
330
332
  <param pos="1" name="host.name"/>
331
333
  </fingerprint>
332
334
 
333
- <fingerprint pattern="^([^ ]+) +SMTP/smap Ready\.$">
335
+ <fingerprint pattern="^(?:[^ ]+) +SMTP/smap Ready\.$">
334
336
  <description>
335
337
  TIS FWTK and derivatives
336
338
  http://www.tis.com/research/software/
@@ -418,11 +420,12 @@ The system or service fingerprint with the highest certainty overwrites the othe
418
420
  Syntegra/CDC IntraStore TurboSendmail, part of the IntraStore server which runs on
419
421
  the following platforms ONLY: Linux, HP-UX, Solaris, AIX, and Windows NT/2000
420
422
  see http://www.cdc.com for more information
421
- example: 220 tigger.disneyonline.com (IntraStore TurboSendmail) ESMTP Service ready
422
423
  </description>
424
+ <example host.name="192.168.1.1">192.168.1.1 (IntraStore TurboSendmail) ESMTP Service ready</example>
423
425
  <param pos="0" name="service.vendor" value="BT"/>
424
426
  <param pos="0" name="service.family" value="IntraStore"/>
425
427
  <param pos="0" name="service.product" value="IntraStore"/>
428
+ <param pos="1" name="host.name"/>
426
429
  </fingerprint>
427
430
 
428
431
  <fingerprint pattern="^([^ ]+) \(Mail-Max Version (\d+\.\d+\.\d+\.\d+), (.+, .+)\) ESMTP Mail Server Ready. *$">
@@ -436,7 +439,7 @@ The system or service fingerprint with the highest certainty overwrites the othe
436
439
  <param pos="0" name="system.time.format" value="EEE, dd MMM yyyy HH:mm:ss zzz"/>
437
440
  <param pos="1" name="host.name"/>
438
441
  <param pos="2" name="service.version"/>
439
- <param pos="3" name="system.time"/>
442
+ <param pos="3" name="system.time"/>
440
443
  </fingerprint>
441
444
 
442
445
  <fingerprint pattern="^([^ ]+) \(Mail-Max Version (\d+\.\d+), (.+, .+)\) ESMTP Mail Server Ready. *$">
@@ -450,7 +453,7 @@ The system or service fingerprint with the highest certainty overwrites the othe
450
453
  <param pos="0" name="system.time.format" value="EEE, dd MMM yyyy HH:mm:ss zzz"/>
451
454
  <param pos="1" name="host.name"/>
452
455
  <param pos="2" name="service.version"/>
453
- <param pos="3" name="system.time"/>
456
+ <param pos="3" name="system.time"/>
454
457
  </fingerprint>
455
458
 
456
459
  <fingerprint pattern="^([^ ]+) +MailSite ESMTP Receiver Version ([^ ]+\.[^ ]+\.[^ ]+\.[^ ]+) Ready *$">
@@ -491,7 +494,7 @@ The system or service fingerprint with the highest certainty overwrites the othe
491
494
 
492
495
  <fingerprint pattern="^([^ ]+) +ESMTP MDaemon ([^ ]+\.[^ ]+\.[^ ]+) UNREGISTERED; *(.+) *$">
493
496
  <description>
494
- MDaemon mail server
497
+ MDaemon mail server
495
498
  220 foo.bar ESMTP MDaemon 4.0.5 UNREGISTERED; Sat, 06 Oct 2001 09:10:56 +0400
496
499
  </description>
497
500
  <param pos="0" name="service.vendor" value="Alt-N"/>
@@ -511,7 +514,7 @@ The system or service fingerprint with the highest certainty overwrites the othe
511
514
 
512
515
  <fingerprint pattern="^([^ ]+) +ESMTP MDaemon ([^ ]+\.[^ ]+\.[^ ]+); *(.+) *$">
513
516
  <description>
514
- MDaemon mail server
517
+ MDaemon mail server
515
518
  220 foo.bar ESMTP MDaemon 4.0.2; Sat, 06 Oct 2001 01:46:44 -0500
516
519
  </description>
517
520
  <param pos="0" name="service.vendor" value="Alt-N"/>
@@ -530,7 +533,7 @@ The system or service fingerprint with the highest certainty overwrites the othe
530
533
 
531
534
  <fingerprint pattern="^([^ ]+) +ESMTP MDaemon ([^ ]+\.[^ ]+\.[^ ]+) ready *$">
532
535
  <description>
533
- MDaemon mail server
536
+ MDaemon mail server
534
537
  220 foo.bar ESMTP MDaemon 3.5.7 ready
535
538
  </description>
536
539
  <param pos="0" name="service.vendor" value="Alt-N"/>
@@ -547,7 +550,7 @@ The system or service fingerprint with the highest certainty overwrites the othe
547
550
 
548
551
  <fingerprint pattern="^([^ ]+) +ESMTP service ready \[[0-9]+\] MDaemon v([^ ]+\.[^ ]+) ([^ ]+) *$">
549
552
  <description>
550
- MDaemon mail server
553
+ MDaemon mail server
551
554
  220 foo.bar.com ESMTP service ready [1] MDaemon v2.84 R
552
555
  </description>
553
556
  <param pos="0" name="service.vendor" value="Alt-N"/>
@@ -565,7 +568,7 @@ The system or service fingerprint with the highest certainty overwrites the othe
565
568
 
566
569
  <fingerprint pattern="^([^ ]+) +ESMTP service ready \[[0-9]+\] using MDaemon v([^ ]+\.[^ ]+\.[^ ]+) ([^ ]+) *$">
567
570
  <description>
568
- MDaemon mail server
571
+ MDaemon mail server
569
572
  220 foo.bar.com ESMTP service ready [1] using MDaemon v3.0.3 R
570
573
  </description>
571
574
  <param pos="0" name="service.vendor" value="Alt-N"/>
@@ -583,7 +586,7 @@ The system or service fingerprint with the highest certainty overwrites the othe
583
586
 
584
587
  <fingerprint pattern="^([^ ]+) +ESMTP service ready \[[0-9]+\] MDaemon v([^ ]+\.[^ ]+) ([^ ]+) ([^ ]+) *$">
585
588
  <description>
586
- MDaemon mail server
589
+ MDaemon mail server
587
590
  220 foo.bar.com ESMTP service ready [1] MDaemon v2.7 SP5 R
588
591
  </description>
589
592
  <param pos="0" name="service.vendor" value="Alt-N"/>
@@ -602,7 +605,7 @@ The system or service fingerprint with the highest certainty overwrites the othe
602
605
 
603
606
  <fingerprint pattern="^([^ ]+) +ESMTP service ready \[[0-9]+\] MDaemon v([^ ]+)\.([^ ]+)\.([^ ]+)\.([^ ]+) ([^ ]+) *$">
604
607
  <description>
605
- MDaemon mail server
608
+ MDaemon mail server
606
609
  220 foo.bar.com ESMTP service ready [1] MDaemon v2.8.7.0 R
607
610
  </description>
608
611
  <param pos="0" name="service.vendor" value="Alt-N"/>
@@ -623,7 +626,7 @@ The system or service fingerprint with the highest certainty overwrites the othe
623
626
 
624
627
  <fingerprint pattern="^([^ ]+) +ESMTP service ready \[[0-9]+\] \(MDaemon v([^ ]+\.[^ ]+) ([^ ]+) ([^ ]+)\) *$">
625
628
  <description>
626
- MDaemon mail server
629
+ MDaemon mail server
627
630
  220 foo.bar.com ESMTP service ready [2] (MDaemon v2.7 SP4 R)
628
631
  </description>
629
632
  <param pos="0" name="service.vendor" value="Alt-N"/>
@@ -642,7 +645,7 @@ The system or service fingerprint with the highest certainty overwrites the othe
642
645
 
643
646
  <fingerprint pattern="^([^ ]+) +ESMTP service ready \[[0-9]+\] \(MDaemon v([^ ]+\.[^ ]+) ([^ ]+) ([^ ]+) ([^ ]+)\) *$">
644
647
  <description>
645
- MDaemon mail server
648
+ MDaemon mail server
646
649
  220 foo.bar.com ESMTP service ready [1] (MDaemon v2.5 rB b1 32-T)
647
650
  </description>
648
651
  <param pos="0" name="service.vendor" value="Alt-N"/>
@@ -700,7 +703,7 @@ The system or service fingerprint with the highest certainty overwrites the othe
700
703
  <param pos="0" name="system.time.format" value="EEE, dd MMM yyyy HH:mm:ss zzz"/>
701
704
  <param pos="1" name="service.version"/>
702
705
  <param pos="2" name="service.version.version"/>
703
- <param pos="3" name="service.version.version.version"/>
706
+ <param pos="3" name="service.version.version.version"/>
704
707
  <param pos="4" name="mercur.os.info"/>
705
708
  <param pos="5" name="system.time"/>
706
709
  </fingerprint>
@@ -797,7 +800,7 @@ The system or service fingerprint with the highest certainty overwrites the othe
797
800
 
798
801
  <fingerprint pattern="^([^ ]+) Lotus SMTP MTA Service Ready *$">
799
802
  <description>
800
- Lotus Notes 4 SMTP MTA
803
+ Lotus Notes 4 SMTP MTA
801
804
  </description>
802
805
  <param pos="0" name="service.vendor" value="Lotus"/>
803
806
  <param pos="0" name="service.family" value="Lotus Domino"/>
@@ -808,7 +811,7 @@ The system or service fingerprint with the highest certainty overwrites the othe
808
811
 
809
812
  <fingerprint pattern="^([^ ]+) ESMTP Service \(Lotus Domino Release (\d+\.\d+\.\w+)\) ready at (.+) *$">
810
813
  <description>
811
- Lotus Domino 5 SMTP MTA
814
+ Lotus Domino 5 SMTP MTA
812
815
  220 foo.bar.com ESMTP Service (Lotus Domino Release 5.0.5) ready at Wed, 19 Dec 2001 19:54:55 -0500
813
816
  </description>
814
817
  <param pos="0" name="service.vendor" value="Lotus"/>
@@ -822,7 +825,7 @@ The system or service fingerprint with the highest certainty overwrites the othe
822
825
 
823
826
  <fingerprint pattern="^([^ ]+) ESMTP Service \(Lotus Domino Release (\d+\.\w+)\) ready at (.+) *$">
824
827
  <description>
825
- Lotus Domino 5 SMTP MTA
828
+ Lotus Domino 5 SMTP MTA
826
829
  example: 220 foo.bar.com ESMTP Service (Lotus Domino Release 5.0a) ready at Wed, 20 Jun 2001 08:59:17 +0200
827
830
  </description>
828
831
  <param pos="0" name="service.vendor" value="Lotus"/>
@@ -836,17 +839,17 @@ The system or service fingerprint with the highest certainty overwrites the othe
836
839
 
837
840
  <fingerprint pattern="^([^ ]+) ESMTP Service \(Lotus Domino Release (\d+\.\d+\.\w+) \(Intl\)\) ready at (.+) *$">
838
841
  <description>
839
- Lotus Domino 5 SMTP MTA, International product version
842
+ Lotus Domino 5 SMTP MTA, International product version
840
843
  example: 220 foo.bar.com ESMTP Service (Lotus Domino Release 5.0.5 (Intl)) ready at Tue, 6 Feb 2001 18:54:23 -0500
841
844
  </description>
842
845
  <param pos="0" name="service.vendor" value="Lotus"/>
843
846
  <param pos="0" name="service.family" value="Lotus Domino"/>
844
847
  <param pos="0" name="service.product" value="Lotus Domino"/>
845
848
  <param pos="0" name="system.time.format" value="EEE, dd MMM yyyy HH:mm:ss zzz"/>
846
- <param pos="0" name="notes.intl" value="yes"/>
849
+ <param pos="0" name="notes.intl" value="yes"/>
847
850
  <param pos="1" name="host.name"/>
848
851
  <param pos="2" name="service.version"/>
849
- <param pos="3" name="system.time"/>
852
+ <param pos="3" name="system.time"/>
850
853
  </fingerprint>
851
854
 
852
855
  <fingerprint pattern="^([^ ]+) ESMTP Service \(Lotus Domino Build (\d+\.\d+)\) ready at (.+) *$">
@@ -894,10 +897,10 @@ The system or service fingerprint with the highest certainty overwrites the othe
894
897
  versions 3.x and earlier of NTMail http://www.gordano.com (it was called Internet Shopper's something or other)
895
898
  example: 220 mail.Networkengineering WindowsNT SMTP Server v3.03.0018/1.aio1/SP ESMTP ready at Wed, 25 Jul 2001 23:03:11 -0400
896
899
  example: 220 mars.wvwc.edu WindowsNT SMTP Server v3.03.0018/1.ajhf/SP ESMTP ready at Thu, 29 Oct 1998 18:01:30 -0500
897
- example: 220 mail.someisp.net WindowsNT SMTP Server v3.03.0017/1.aihl/SP ESMTP ready at Sun, 6 Jun 1999 10:39:30 -0400
900
+ example: 220 mail.someisp.net WindowsNT SMTP Server v3.03.0017/1.aihl/SP ESMTP ready at Sun, 6 Jun 1999 10:39:30 -0400
898
901
  example: 220 nt03s02.switchlink.be WindowsNT SMTP Server v3.03.0014/1.aiss/SP ESMTP ready at Fri, 17 Apr 1998 16:59:04 +0100
899
902
  example: 220 www.afsc.org WindowsNT SMTP Server v3.03.0017/1.abkz/SP ESMTP ready at Mon, 2 Oct 2000 11:50:29 -0400
900
- example: 220 wwmerchant.osopinion.com WindowsNT SMTP Server v3.03.0017/4c.adur/SP ESMTP ready at Fri, 26 Mar 1999 13:20:30 -0700
903
+ example: 220 wwmerchant.osopinion.com WindowsNT SMTP Server v3.03.0017/4c.adur/SP ESMTP ready at Fri, 26 Mar 1999 13:20:30 -0700
901
904
  example: 220 digital-hoon.tecdm.dmi.co.kr WindowsNT SMTP Server v3.02.07/2c.aaaj ready at Thu, 5 Dec 1996 22:46:12 +0000
902
905
  </description>
903
906
  <param pos="0" name="service.vendor" value="Gordano"/>
@@ -1012,31 +1015,16 @@ The system or service fingerprint with the highest certainty overwrites the othe
1012
1015
  <param pos="1" name="host.name"/>
1013
1016
  </fingerprint>
1014
1017
 
1015
- <fingerprint pattern="^([^ ]+) ESMTP server \(Post\.Office v([^ ]+\.[^ ]+\.[^ ]+) release (.+) ID# ([^ ]+)\) ready (.+) *$">
1018
+ <fingerprint pattern="^([^ ]+) ESMTP server \(Post\.Office v([^ ]+) release (.+) ID# ([^ ]+)\) ready (.+) *$">
1016
1019
  <description>
1017
1020
  Post.Office (3 version numbers)
1018
- example: 220 birg.connect.co.at ESMTP server (Post.Office v3.1 release PO205e ID# 0-42000U100L2S100) ready Tue, 6 Feb 2001 19:38:32 +0100
1019
1021
  </description>
1022
+ <example host.name="192.168.1.1" service.version="3.1" postoffice.build="PO205e" postoffice.id="0-42000U100L2S100" system.time="Tue, 6 Feb 2001 19:38:32 +0100">192.168.1.1 ESMTP server (Post.Office v3.1 release PO205e ID# 0-42000U100L2S100) ready Tue, 6 Feb 2001 19:38:32 +0100</example>
1020
1023
  <param pos="0" name="service.family" value="Post.Office"/>
1021
1024
  <param pos="0" name="service.product" value="Post.Office"/>
1022
- <param pos="0" name="system.time.format" value="EEE, dd MMM yyyy HH:mm:ss zzz"/>
1023
- <param pos="1" name="host.name"/>
1024
1025
  <param pos="2" name="service.version"/>
1025
- <param pos="3" name="postoffice.build"/>
1026
- <param pos="3" name="postoffice.id"/>
1027
- <param pos="4" name="system.time"/>
1028
- </fingerprint>
1029
-
1030
- <fingerprint pattern="^([^ ]+) ESMTP server \(P|post\.O|office v([^ ]+\.[^ ]+) release (.+) ID# ([^ ]+)\) ready (.+) *$">
1031
- <description>
1032
- Post.Office (2 version numbers)
1033
- example: 220 birg.connect.co.at ESMTP server (Post.Office v3.1 release PO205e ID# 0-42000U100L2S100) ready Tue, 6 Feb 2001 19:38:32 +0100
1034
- </description>
1035
- <param pos="0" name="service.family" value="Post.Office"/>
1036
- <param pos="0" name="service.product" value="Post.Office"/>
1037
1026
  <param pos="0" name="system.time.format" value="EEE, dd MMM yyyy HH:mm:ss zzz"/>
1038
1027
  <param pos="1" name="host.name"/>
1039
- <param pos="2" name="service.version"/>
1040
1028
  <param pos="3" name="postoffice.build"/>
1041
1029
  <param pos="4" name="postoffice.id"/>
1042
1030
  <param pos="5" name="system.time"/>
@@ -1079,7 +1067,7 @@ The system or service fingerprint with the highest certainty overwrites the othe
1079
1067
  <param pos="0" name="system.time.format" value="EEE, dd MMM yyyy HH:mm:ss zzz"/>
1080
1068
  <param pos="1" name="host.name"/>
1081
1069
  <param pos="2" name="service.version"/>
1082
- <param pos="3" name="sendmail.hpux.phne.version"/>
1070
+ <param pos="3" name="sendmail.hpux.phne.version"/>
1083
1071
  <param pos="4" name="sendmail.config.version"/>
1084
1072
  <param pos="5" name="system.time"/>
1085
1073
  </fingerprint>
@@ -1527,7 +1515,7 @@ The system or service fingerprint with the highest certainty overwrites the othe
1527
1515
  <!-- these suckers can have LOTS of version numbers -->
1528
1516
  <fingerprint pattern="^([^ ]+) -- Server ESMTP \(Sun Internet Mail Server sims\.([^\.]+\.[^\.]+\.[^\.]+\.[^\.]+\.[^\.]+\.[^\.]+\.[^\.]+)\)$">
1529
1517
  <description>
1530
- 220 mercury.doc.ntu.ac.uk -- Server ESMTP (Sun Internet Mail Server sims.4.0.1999.06.13.00.20)
1518
+ 220 mercury.doc.ntu.ac.uk -- Server ESMTP (Sun Internet Mail Server sims.4.0.1999.06.13.00.20)
1531
1519
  </description>
1532
1520
  <param pos="0" name="service.vendor" value="Sun"/>
1533
1521
  <param pos="0" name="service.family" value="Internet Mail Server"/>
@@ -1604,7 +1592,7 @@ The system or service fingerprint with the highest certainty overwrites the othe
1604
1592
  <param pos="0" name="service.product" value="VOPMail"/>
1605
1593
  <param pos="1" name="host.name"/>
1606
1594
  <param pos="2" name="service.version"/>
1607
- </fingerprint>
1595
+ </fingerprint>
1608
1596
 
1609
1597
  <fingerprint pattern="^([^ ]+) VPOP3 SMTP Server Ready *$">
1610
1598
  <description>
@@ -1718,12 +1706,12 @@ The system or service fingerprint with the highest certainty overwrites the othe
1718
1706
  <param pos="0" name="service.family" value="ZMailer"/>
1719
1707
  <param pos="0" name="service.product" value="ZMailer"/>
1720
1708
  <param pos="0" name="system.time.format" value="EEE, dd MMM yyyy HH:mm:ss zzz"/>
1721
- <param pos="0" name="zmailer.ident" value="yes"/>
1709
+ <param pos="0" name="zmailer.ident" value="yes"/>
1722
1710
  <param pos="1" name="host.name"/>
1723
1711
  <param pos="2" name="service.version"/>
1724
1712
  <param pos="3" name="service.version.version"/>
1725
1713
  <param pos="4" name="system.time"/>
1726
- </fingerprint>
1714
+ </fingerprint>
1727
1715
 
1728
1716
  <fingerprint pattern="^([^ ]+) E?SMTP(?: Ready\.?)?$">
1729
1717
  <description>