recog 2.0.20 → 2.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9840be337edfe94340d597b7c884322ec9f6ded6
4
- data.tar.gz: f6b743905f3451ce0da0845c1dc52c52c8fcd0ae
3
+ metadata.gz: 969c6735f1e28f4b06b58cf6aeb2387e7a879d43
4
+ data.tar.gz: 80407444535dd5bf122f235efb832e3b947afebd
5
5
  SHA512:
6
- metadata.gz: 3b9a720a95c14f830053bbeef0fcafe56439776836298554ff93adb22a7c16688daa6f4c3ef6e827442743f5d19f6c9c30a6cc90e87c520ef455538bc0a8f6b1
7
- data.tar.gz: 8bf330d416aaeeba9f3a3285a4c25f65e009b46f77664803bd61e87ee6eaad2fb2ea2844a4d1ed03806d3273688fd508794c38553f32f3c409922569e873e46a
6
+ metadata.gz: 62da53601bfd944679ce5dd786c0217fc592e16063e5743e8b41729cd7e8ec4a9108ff99bd79ec93755c4d810333edf7b3c081de56d4db762a5bb9a7e6356992
7
+ data.tar.gz: 7f679e4e3159371bace557257ffe512a40bc340440c6120b7c6d5b015052978dcf5e17ec3e81e695648569784542a91d23a5a116648e9b2deadbe1f29e477b96
@@ -1,3 +1,3 @@
1
1
  module Recog
2
- VERSION = '2.0.20'
2
+ VERSION = '2.0.21'
3
3
  end
@@ -46,7 +46,7 @@ describe Recog::DB do
46
46
  actual_capture_positions = []
47
47
  capture_number = 1
48
48
  Regexp::Scanner.scan(fp.regex).each do |token_parts|
49
- if token_parts.first == :group && ![:close, :passive].include?(token_parts[1])
49
+ if token_parts.first == :group && ![:close, :passive, :options].include?(token_parts[1])
50
50
  actual_capture_positions << capture_number
51
51
  capture_number += 1
52
52
  end
@@ -56,7 +56,7 @@ describe Recog::DB do
56
56
  actual_capture_positions = actual_capture_positions.sort.uniq
57
57
  expected_capture_positions = expected_capture_positions.sort.uniq
58
58
  expect(actual_capture_positions).to eq(expected_capture_positions),
59
- "Regex didn't capture (#{actual_capture_positions}) exactly what fingerprint extracted (#{expected_capture_positions})"
59
+ "Regex has #{actual_capture_positions.size} capture groups, but the fingerprint expected #{expected_capture_positions.size} extractions."
60
60
  end
61
61
  end
62
62
 
@@ -0,0 +1,501 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ Patterns for common names of various operating systems.
4
+ -->
5
+ <fingerprints matches="operating_system.name">
6
+ <!-- Windows begin -->
7
+ <fingerprint pattern="^(?i:(?:Microsoft )?(Windows (?:[a-z]+\s[a-z]+\s|[a-z]+\s)?Server (?:\d{4} R2|\d{4}))(?:,\s|\s)?([a-z]+)?(?: Edition)?(?:\s)?(SP\d|SP \d|Service Pack \d)?)$">
8
+ <description>Windows Server 2003 and later</description>
9
+ <example os.product="Windows Compute Cluster Server 2003">Windows Compute Cluster Server 2003</example>
10
+ <example os.product="Windows Server 2003" os.edition="Standard">Windows Server 2003, Standard Edition</example>
11
+ <example os.product="Windows Server 2003 R2" os.edition="Datacenter">Windows Server 2003 R2, Datacenter Edition</example>
12
+ <example os.product="Windows Small Business Server 2003 R2">Windows Small Business Server 2003 R2</example>
13
+ <example os.product="Windows Server 2008" os.edition="Enterprise">Windows Server 2008 Enterprise Edition</example>
14
+ <example os.product="Windows Small Business Server 2008">Windows Small Business Server 2008</example>
15
+ <example os.product="Windows Server 2012" os.version="Service Pack 1">Windows Server 2012 Service Pack 1</example>
16
+ <example os.product="Windows Server 2012 R2" os.edition="Foundation">Windows Server 2012 R2 Foundation Edition</example>
17
+ <example os.product="Windows Storage Server 2012 R2">Windows Storage Server 2012 R2</example>
18
+ <param pos="0" name="os.vendor" value="Microsoft"/>
19
+ <param pos="0" name="os.family" value="Windows"/>
20
+ <param pos="1" name="os.product"/>
21
+ <param pos="2" name="os.edition"/>
22
+ <param pos="3" name="os.version"/>
23
+ </fingerprint>
24
+ <fingerprint pattern="^(?i:(?:Microsoft )?(Windows (?:XP|Vista|7|8|8.1|10))(?:\s)?((?!Mobile)(?:[a-z]+|[a-z]+, )?(?:[a-z]+|[a-z]+\s[a-z]+)?)?(?: Edition)?(?:\s)?(SP\d|SP \d|Service Pack \d)?)$">
25
+ <description>Windows Desktop XP and later</description>
26
+ <example os.product="Windows XP" os.edition="Professional">Windows XP Professional</example>
27
+ <example os.product="Windows XP" os.edition="Tablet PC">Windows XP Tablet PC Edition</example>
28
+ <example os.product="Windows Vista" os.version="SP1">Windows Vista SP1</example>
29
+ <example os.product="Windows Vista" os.edition="Business N">Windows Vista Business N Edition</example>
30
+ <example os.product="Windows 7" os.edition="Home, Premium N">Windows 7 Home, Premium N Edition</example>
31
+ <example os.product="Windows 8" os.edition="Enterprise">Windows 8 Enterprise Edition</example>
32
+ <example os.product="Windows 8.1">Windows 8.1</example>
33
+ <example os.product="Windows 10" os.edition="Professional">Windows 10 Professional Edition</example>
34
+ <example os.product="Windows 10" os.edition="Enterprise LTSB">Windows 10 Enterprise LTSB</example>
35
+ <param pos="0" name="os.vendor" value="Microsoft"/>
36
+ <param pos="0" name="os.family" value="Windows"/>
37
+ <param pos="1" name="os.product"/>
38
+ <param pos="2" name="os.edition"/>
39
+ <param pos="3" name="os.version"/>
40
+ </fingerprint>
41
+ <fingerprint pattern="^(?i:(?:Microsoft )?Windows 2000(?:\s)?([a-z]+|[a-z]+\s[a-z]+)?(?:\s)?(SP\d|SP \d|Service Pack \d)?)$">
42
+ <description>Windows 2000</description>
43
+ <example os.edition="Professional">Windows 2000 Professional</example>
44
+ <example os.edition="Advanced Server">Windows 2000 Advanced Server</example>
45
+ <param pos="0" name="os.vendor" value="Microsoft"/>
46
+ <param pos="0" name="os.family" value="Windows"/>
47
+ <param pos="0" name="os.product" value="Windows 2000"/>
48
+ <param pos="1" name="os.edition"/>
49
+ <param pos="2" name="os.version"/>
50
+ </fingerprint>
51
+ <fingerprint pattern="^(?i:(?:Microsoft )?Windows NT (\d.\d{1,2})?(?:\s)?([a-z]+|[a-z]+\s[a-z]+)?)$">
52
+ <description>Windows NT</description>
53
+ <example os.version="3.51" os.edition="Server">Windows NT 3.51 Server</example>
54
+ <example os.edition="Workstation">Windows NT Workstation</example>
55
+ <example os.version="4.0" os.edition="Workstation">Windows NT 4.0 Workstation</example>
56
+ <example os.edition="Advanced Server">Windows NT Advanced Server</example>
57
+ <param pos="0" name="os.vendor" value="Microsoft"/>
58
+ <param pos="0" name="os.family" value="Windows"/>
59
+ <param pos="0" name="os.product" value="NT"/>
60
+ <param pos="1" name="os.version"/>
61
+ <param pos="2" name="os.edition"/>
62
+ </fingerprint>
63
+ <fingerprint pattern="^(?i:(?:Microsoft )?Windows 10 Mobile(?:\s(?!Edition)([a-z]+))?(?: Edition)?)$">
64
+ <description>Windows 10 Mobile</description>
65
+ <example os.product="Windows 10 Mobile">Windows 10 Mobile Edition</example>
66
+ <example os.product="Windows 10 Mobile" os.edition="Enterprise">Windows 10 Mobile Enterprise Edition</example>
67
+ <param pos="0" name="os.vendor" value="Microsoft"/>
68
+ <param pos="0" name="os.family" value="Windows"/>
69
+ <param pos="0" name="os.product" value="Windows 10 Mobile"/>
70
+ <param pos="1" name="os.edition"/>
71
+ <param pos="0" name="os.device" value="Mobile"/>
72
+ </fingerprint>
73
+ <fingerprint pattern="^(?i:(?:Microsoft )?Windows Phone (\d|\d\.\d)?)$">
74
+ <description>Windows Phone 7 and later</description>
75
+ <example os.version="7.5">Windows Phone 7.5</example>
76
+ <example os.version="8">Windows Phone 8</example>
77
+ <param pos="0" name="os.vendor" value="Microsoft"/>
78
+ <param pos="0" name="os.family" value="Windows"/>
79
+ <param pos="0" name="os.product" value="Windows Phone"/>
80
+ <param pos="1" name="os.version"/>
81
+ <param pos="0" name="os.device" value="Mobile"/>
82
+ </fingerprint>
83
+ <fingerprint pattern="^(?i:(?:Microsoft )?(Windows\s?(?:95|98|98SE|98 SE|98 Second Edition|ME|Millenium Edition)))$">
84
+ <description>Windows 9x</description>
85
+ <example os.product="Windows 98 SE">Windows 98 SE</example>
86
+ <param pos="0" name="os.vendor" value="Microsoft"/>
87
+ <param pos="0" name="os.family" value="Windows"/>
88
+ <param pos="1" name="os.product"/>
89
+ </fingerprint>
90
+ <fingerprint pattern="^(?i:(?:Microsoft )?Windows(?:\s?\w+?)*?\s?(\d+?(?:\.\d+?)*?)?)$">
91
+ <description>Windows catch-all</description>
92
+ <example os.version="3.11">Windows for Workgroups 3.11</example>
93
+ <example>Microsoft Windows</example>
94
+ <param pos="0" name="os.vendor" value="Microsoft"/>
95
+ <param pos="0" name="os.family" value="Windows"/>
96
+ <param pos="0" name="os.product" value="Windows"/>
97
+ <param pos="0" name="os.certainty" value="0.5"/>
98
+ <param pos="1" name="os.version"/>
99
+ </fingerprint>
100
+ <!-- Windows end -->
101
+
102
+ <!-- Liunx begin -->
103
+ <!-- Arch uses rolling releases where the version name just the date of an ISO release. -->
104
+ <fingerprint pattern="^(?i:Arch Linux\s?(\d+?(?:\.\d+?)*?)?)$">
105
+ <description>Arch Linux</description>
106
+ <example os.version="2016.04.01">Arch Linux 2016.04.01</example>
107
+ <param pos="0" name="os.vendor" value="Arch"/>
108
+ <param pos="0" name="os.family" value="Linux"/>
109
+ <param pos="0" name="os.product" value="Linux"/>
110
+ <param pos="1" name="os.version"/>
111
+ </fingerprint>
112
+ <!-- Red Hat Enterprise Linux derivative -->
113
+ <fingerprint pattern="^(?i:Amazon Linux(?: AMI)?\s?(\d+?(?:\.\d+?)*?)?)$">
114
+ <description>Amazon Linux AMI</description>
115
+ <example os.version="5.11">Amazon Linux AMI 5.11</example>
116
+ <example os.version="6.7">Amazon Linux 6.7</example>
117
+ <example os.version="7">Amazon Linux AMI 7</example>
118
+ <param pos="0" name="os.vendor" value="Amazon"/>
119
+ <param pos="0" name="os.family" value="Linux"/>
120
+ <param pos="0" name="os.product" value="Linux"/>
121
+ <param pos="1" name="os.version"/>
122
+ </fingerprint>
123
+ <!-- Red Hat Enterprise Linux derivative -->
124
+ <fingerprint pattern="^(?i:CentOS(?: Linux)?\s?(\d+?(?:\.\d+?)*?)?)$">
125
+ <description>Centos Linux</description>
126
+ <example os.version="5.11">Centos Linux 5.11</example>
127
+ <example os.version="6.7">CentOS 6.7</example>
128
+ <example os.version="7">CentOS 7</example>
129
+ <param pos="0" name="os.vendor" value="CentOS"/>
130
+ <param pos="0" name="os.family" value="Linux"/>
131
+ <param pos="0" name="os.product" value="Linux"/>
132
+ <param pos="1" name="os.version"/>
133
+ </fingerprint>
134
+ <fingerprint pattern="^(?i:Debian(?: Linux)?\s?(\d+?(?:\.\d+?)*?)?(?:\s[a-z\(\)]+)?)$">
135
+ <description>Debian Linux</description>
136
+ <example os.version="6.0">Debian 6.0</example>
137
+ <example os.version="7">Debian 7 (Wheezy)</example>
138
+ <example os.version="8">Debian Linux 8</example>
139
+ <param pos="0" name="os.vendor" value="Debian"/>
140
+ <param pos="0" name="os.family" value="Linux"/>
141
+ <param pos="0" name="os.product" value="Linux"/>
142
+ <param pos="1" name="os.version"/>
143
+ </fingerprint>
144
+ <fingerprint pattern="^(?i:Fedora(?: Core)?(?: Linux)?\s?(\d+?)?)$">
145
+ <description>Fedora Linux</description>
146
+ <example os.version="6">Fedora Core 6</example>
147
+ <example os.version="25">Fedora 25</example>
148
+ <param pos="0" name="os.vendor" value="Fedora"/>
149
+ <param pos="0" name="os.family" value="Linux"/>
150
+ <param pos="0" name="os.product" value="Linux"/>
151
+ <param pos="1" name="os.version"/>
152
+ </fingerprint>
153
+ <!-- Gentoo currently uses rolling releases with no version, but older versions were typically based on the year of release. -->
154
+ <fingerprint pattern="^(?i:Gentoo(?: Linux)\s?(\d+?(?:\.\d+?)*?)?)$">
155
+ <description>Gentoo Linux</description>
156
+ <example>Gentoo Linux</example>
157
+ <param pos="0" name="os.vendor" value="Gentoo"/>
158
+ <param pos="0" name="os.family" value="Linux"/>
159
+ <param pos="0" name="os.product" value="Linux"/>
160
+ <param pos="1" name="os.version"/>
161
+ </fingerprint>
162
+ <!-- Kali switched to rolling release in January 2016. -->
163
+ <fingerprint pattern="^(?i:Kali(?: Linux)?\s?(\d+?(?:\.\d+?)+?(?:[a-z])?|\d+?)?)$">
164
+ <description>Kali Linux</description>
165
+ <example os.version="1.0.0">Kali Linux 1.0.0</example>
166
+ <example os.version="1.1.0a">Kali 1.1.0a</example>
167
+ <example os.version="2.0">Kali 2.0</example>
168
+ <example os.version="2016.1">Kali 2016.1</example>
169
+ <param pos="0" name="os.vendor" value="Kali"/>
170
+ <param pos="0" name="os.family" value="Linux"/>
171
+ <param pos="0" name="os.product" value="Linux"/>
172
+ <param pos="1" name="os.version"/>
173
+ </fingerprint>
174
+ <!-- Ubuntu derivative -->
175
+ <fingerprint pattern="^(?i:Kubuntu(?: Linux)?\s(\d+?(?:\.\d+?)*?)?\s?(LTS)?)$">
176
+ <description>Kubuntu Linux</description>
177
+ <example os.version="12.04.4">Kubuntu 12.04.4 LTS</example>
178
+ <example os.version="14.04">Kubuntu Linux 14.04</example>
179
+ <example os.version="16.04" os.edition="LTS">Kubuntu 16.04 LTS</example>
180
+ <param pos="0" name="os.vendor" value="Kubuntu"/>
181
+ <param pos="0" name="os.family" value="Linux"/>
182
+ <param pos="0" name="os.product" value="Linux"/>
183
+ <param pos="1" name="os.version"/>
184
+ <param pos="2" name="os.edition"/>
185
+ </fingerprint>
186
+ <!-- Red Hat Enterprise Linux derivative -->
187
+ <fingerprint pattern="^(?i:Oracle(?: Enterprise)? Linux\s?(\d+?(?:\.\d+?)*?)?)$">
188
+ <description>Oracle Enterprise Linux</description>
189
+ <example os.version="5.11">Oracle Enterprise Linux 5.11</example>
190
+ <example os.version="6.7">Oracle Linux 6.7</example>
191
+ <param pos="0" name="os.vendor" value="Oracle"/>
192
+ <param pos="0" name="os.family" value="Enterprise Linux"/>
193
+ <param pos="0" name="os.product" value="Linux"/>
194
+ <param pos="1" name="os.version"/>
195
+ </fingerprint>
196
+ <fingerprint pattern="^(?i:OpenSUSE(?: Linux)?(?: Leap)??\s?(\d+?(?:\.\d+?)*?)?)$">
197
+ <description>OpenSUSE Linux</description>
198
+ <example os.version="10.1">OpenSUSE Linux 10.1</example>
199
+ <example os.version="13.2">OpenSUSE 13.2</example>
200
+ <example os.version="42.1">OpenSUSE Leap 42.1</example>
201
+ <param pos="0" name="os.vendor" value="OpenSUSE"/>
202
+ <param pos="0" name="os.family" value="Linux"/>
203
+ <param pos="0" name="os.product" value="Linux"/>
204
+ <param pos="1" name="os.version"/>
205
+ </fingerprint>
206
+ <fingerprint pattern="^(?i:(?:Red Hat|RedHat|Red-Hat|RHEL)(?: Enterprise)?(?: Linux)?(?: [a-z]+)?\s?(\d+?(?:\.\d+?)*?)?)$">
207
+ <description>Red Hat Enterprise Linux</description>
208
+ <example>Red Hat Enterprise Linux AS</example>
209
+ <example os.version="5.11">Red Hat Enterprise Linux 5.11</example>
210
+ <example os.version="6.7">RedHat 6.7</example>
211
+ <example os.version="7">Red Hat Linux 7</example>
212
+ <example os.version="7.1">RHEL 7.1</example>
213
+ <param pos="0" name="os.vendor" value="Red Hat"/>
214
+ <param pos="0" name="os.family" value="Linux"/>
215
+ <param pos="0" name="os.product" value="Enterprise Linux"/>
216
+ <param pos="1" name="os.version"/>
217
+ </fingerprint>
218
+ <!-- Red Hat Enterprise Linux derivative -->
219
+ <fingerprint pattern="^(?i:Scientific(?: Linux)?\s?(\d+?(?:\.\d+?)*?)?)$">
220
+ <description>Scientific Linux</description>
221
+ <example os.version="5.11">Scientific Linux 5.11</example>
222
+ <example os.version="6.7">Scientific 6.7</example>
223
+ <example os.version="7">Scientific Linux 7</example>
224
+ <param pos="0" name="os.vendor" value="Scientific"/>
225
+ <param pos="0" name="os.family" value="Linux"/>
226
+ <param pos="0" name="os.product" value="Linux"/>
227
+ <param pos="1" name="os.version"/>
228
+ </fingerprint>
229
+ <fingerprint pattern="^(?i:Slackware(?: Linux)\s?(\d+?(?:\.\d+?)*?)?)$">
230
+ <description>Slackware Linux</description>
231
+ <example os.version="14.1">Slackware Linux 14.1</example>
232
+ <param pos="0" name="os.vendor" value="Slackware"/>
233
+ <param pos="0" name="os.family" value="Linux"/>
234
+ <param pos="0" name="os.product" value="Linux"/>
235
+ <param pos="1" name="os.version"/>
236
+ </fingerprint>
237
+ <fingerprint pattern="^(?i:SUSE(?: SLED)?(?: Linux Enterprise Desktop)?\s?(\d+?(?:\.\d+?)*?)?)$">
238
+ <description>SUSE Linux Enterprise Desktop</description>
239
+ <example os.version="11">SUSE SLED 11</example>
240
+ <example os.version="12">SUSE Linux Enterprise Desktop 12</example>
241
+ <param pos="0" name="os.vendor" value="SUSE"/>
242
+ <param pos="0" name="os.family" value="Linux"/>
243
+ <param pos="0" name="os.product" value="Linux Enterprise Desktop"/>
244
+ <param pos="1" name="os.version"/>
245
+ </fingerprint>
246
+ <fingerprint pattern="^(?i:SUSE(?: SLES)?(?: Linux Enterprise Server)?\s?(\d+?(?:\.\d+?)*?)?)$">
247
+ <description>SUSE Linux Enterprise Server</description>
248
+ <example os.version="11">SUSE SLES 11</example>
249
+ <example os.version="12">SUSE Linux Enterprise Server 12</example>
250
+ <param pos="0" name="os.vendor" value="SUSE"/>
251
+ <param pos="0" name="os.family" value="Linux"/>
252
+ <param pos="0" name="os.product" value="Linux Enterprise Server"/>
253
+ <param pos="1" name="os.version"/>
254
+ </fingerprint>
255
+ <fingerprint pattern="^(?i:Ubuntu(?: Linux)?\s(\d+?(?:\.\d+?)*?)?\s?(LTS)?)$">
256
+ <description>Ubuntu Linux</description>
257
+ <example os.version="12.04.4">Ubuntu 12.04.4 LTS</example>
258
+ <example os.version="14.04">Ubuntu Linux 14.04</example>
259
+ <example os.version="16.04" os.edition="LTS">Ubuntu 16.04 LTS</example>
260
+ <param pos="0" name="os.vendor" value="Ubuntu"/>
261
+ <param pos="0" name="os.family" value="Linux"/>
262
+ <param pos="0" name="os.product" value="Linux"/>
263
+ <param pos="1" name="os.version"/>
264
+ <param pos="2" name="os.edition"/>
265
+ </fingerprint>
266
+ <!-- Ubuntu derivative -->
267
+ <fingerprint pattern="^(?i:Xubuntu(?: Linux)?\s(\d+?(?:\.\d+?)*?)?\s?(LTS)?)$">
268
+ <description>Xubuntu Linux</description>
269
+ <example os.version="12.04.4">Xubuntu 12.04.4 LTS</example>
270
+ <example os.version="14.04">Xubuntu Linux 14.04</example>
271
+ <example os.version="16.04" os.edition="LTS">Xubuntu 16.04 LTS</example>
272
+ <param pos="0" name="os.vendor" value="Xubuntu"/>
273
+ <param pos="0" name="os.family" value="Linux"/>
274
+ <param pos="0" name="os.product" value="Linux"/>
275
+ <param pos="1" name="os.version"/>
276
+ <param pos="2" name="os.edition"/>
277
+ </fingerprint>
278
+ <!-- Linux catch-all goes at the bottom-->
279
+ <fingerprint pattern="^(?i:.*Linux?\s?(\d+?(?:\.\d+?)*?)?)$">
280
+ <description>Linux catch-all</description>
281
+ <example os.version="2.42.6">Linux 2.42.6</example>
282
+ <param pos="0" name="os.vendor" value="Linux"/>
283
+ <param pos="0" name="os.family" value="Linux"/>
284
+ <param pos="0" name="os.product" value="Linux"/>
285
+ <param pos="0" name="os.certainty" value="0.5"/>
286
+ <param pos="1" name="os.version"/>
287
+ </fingerprint>
288
+ <!-- Linux end -->
289
+
290
+ <!-- Mac begin -->
291
+ <!-- Match Mac OS Classic first due to weak matching on Mac OS X -->
292
+ <fingerprint pattern="^(?i:(?:Apple )?Mac OS ([7-9](?:\.\d+?)*?))$">
293
+ <description>Mac OS 9</description>
294
+ <example os.version="9">Mac OS 9</example>
295
+ <example os.version="9.0.5">Mac OS 9.0.5</example>
296
+ <param pos="0" name="os.vendor" value="Apple"/>
297
+ <param pos="0" name="os.family" value="Mac OS"/>
298
+ <param pos="0" name="os.product" value="Mac OS"/>
299
+ <param pos="1" name="os.version"/>
300
+ </fingerprint>
301
+ <fingerprint pattern="^(?i:(?:Apple OS X|Apple Mac OS X|Mac OS X|OS X|Mac OS)\s?(\d+?(?:\.\d+?)*?)?)$">
302
+ <description>Mac OS X with version number</description>
303
+ <example os.version="10.10.5">Mac OS X 10.10.5</example>
304
+ <example os.version="10">Mac OS X 10</example>
305
+ <example os.version="10.10">Mac OS 10.10</example>
306
+ <param pos="0" name="os.vendor" value="Apple"/>
307
+ <param pos="0" name="os.family" value="Mac OS X"/>
308
+ <param pos="0" name="os.product" value="Mac OS X"/>
309
+ <param pos="1" name="os.version"/>
310
+ </fingerprint>
311
+ <fingerprint pattern="^(?i:(?:Apple )?Mac OS X Cheetah)$">
312
+ <description>Mac OS X Cheetah</description>
313
+ <example os.version="10.0">Mac OS X Cheetah</example>
314
+ <param pos="0" name="os.vendor" value="Apple"/>
315
+ <param pos="0" name="os.family" value="Mac OS X"/>
316
+ <param pos="0" name="os.product" value="Mac OS X"/>
317
+ <param pos="0" name="os.version" value="10.0"/>
318
+ </fingerprint>
319
+ <fingerprint pattern="^(?i:(?:Apple )?Mac OS X Puma)$">
320
+ <description>Mac OS X Puma</description>
321
+ <example os.version="10.1">Mac OS X Puma</example>
322
+ <param pos="0" name="os.vendor" value="Apple"/>
323
+ <param pos="0" name="os.family" value="Mac OS X"/>
324
+ <param pos="0" name="os.product" value="Mac OS X"/>
325
+ <param pos="0" name="os.version" value="10.1"/>
326
+ </fingerprint>
327
+ <fingerprint pattern="^(?i:(?:Apple )?Mac OS X Jaguar)$">
328
+ <description>Mac OS X Jaguar</description>
329
+ <example os.version="10.2">Mac OS X Jaguar</example>
330
+ <param pos="0" name="os.vendor" value="Apple"/>
331
+ <param pos="0" name="os.family" value="Mac OS X"/>
332
+ <param pos="0" name="os.product" value="Mac OS X"/>
333
+ <param pos="0" name="os.version" value="10.2"/>
334
+ </fingerprint>
335
+ <fingerprint pattern="^(?i:(?:Apple )?Mac OS X Panther)$">
336
+ <description>Mac OS X Panther</description>
337
+ <example os.version="10.3">Mac OS X Panther</example>
338
+ <param pos="0" name="os.vendor" value="Apple"/>
339
+ <param pos="0" name="os.family" value="Mac OS X"/>
340
+ <param pos="0" name="os.product" value="Mac OS X"/>
341
+ <param pos="0" name="os.version" value="10.3"/>
342
+ </fingerprint>
343
+ <fingerprint pattern="^(?i:(?:Apple )?Mac OS X Tiger)$">
344
+ <description>Mac OS X Tiger</description>
345
+ <example os.version="10.4">Mac OS X Tiger</example>
346
+ <param pos="0" name="os.vendor" value="Apple"/>
347
+ <param pos="0" name="os.family" value="Mac OS X"/>
348
+ <param pos="0" name="os.product" value="Mac OS X"/>
349
+ <param pos="0" name="os.version" value="10.4"/>
350
+ </fingerprint>
351
+ <fingerprint pattern="^(?i:(?:Apple )?Mac OS X Leopard)$">
352
+ <description>Mac OS X Leopard</description>
353
+ <example os.version="10.5">Mac OS X Leopard</example>
354
+ <param pos="0" name="os.vendor" value="Apple"/>
355
+ <param pos="0" name="os.family" value="Mac OS X"/>
356
+ <param pos="0" name="os.product" value="Mac OS X"/>
357
+ <param pos="0" name="os.version" value="10.5"/>
358
+ </fingerprint>
359
+ <fingerprint pattern="^(?i:(?:Apple )?Mac OS X Snow Leopard)$">
360
+ <description>Mac OS X Snow Leopard</description>
361
+ <example os.version="10.6">Mac OS X Snow Leopard</example>
362
+ <param pos="0" name="os.vendor" value="Apple"/>
363
+ <param pos="0" name="os.family" value="Mac OS X"/>
364
+ <param pos="0" name="os.product" value="Mac OS X"/>
365
+ <param pos="0" name="os.version" value="10.6"/>
366
+ </fingerprint>
367
+ <fingerprint pattern="^(?i:(?:Apple )?Mac OS X Lion)$">
368
+ <description>Mac OS X Lion</description>
369
+ <example os.version="10.7">Mac OS X Lion</example>
370
+ <param pos="0" name="os.vendor" value="Apple"/>
371
+ <param pos="0" name="os.family" value="Mac OS X"/>
372
+ <param pos="0" name="os.product" value="Mac OS X"/>
373
+ <param pos="0" name="os.version" value="10.7"/>
374
+ </fingerprint>
375
+ <fingerprint pattern="^(?i:(?:Apple )?Mac OS X Mountain Lion)$">
376
+ <description>Mac OS X Mountain Lion</description>
377
+ <example os.version="10.8">Mac OS X Mountain Lion</example>
378
+ <param pos="0" name="os.vendor" value="Apple"/>
379
+ <param pos="0" name="os.family" value="Mac OS X"/>
380
+ <param pos="0" name="os.product" value="Mac OS X"/>
381
+ <param pos="0" name="os.version" value="10.8"/>
382
+ </fingerprint>
383
+ <fingerprint pattern="^(?i:(?:Apple )?Mac OS X Mavericks)$">
384
+ <description>Mac OS X Mavericks</description>
385
+ <example os.version="10.9">Mac OS X Mavericks</example>
386
+ <param pos="0" name="os.vendor" value="Apple"/>
387
+ <param pos="0" name="os.family" value="Mac OS X"/>
388
+ <param pos="0" name="os.product" value="Mac OS X"/>
389
+ <param pos="0" name="os.version" value="10.9"/>
390
+ </fingerprint>
391
+ <fingerprint pattern="^(?i:(?:Apple )?Mac OS X Yosemite)$">
392
+ <description>Mac OS X Yosemite</description>
393
+ <example os.version="10.10">Mac OS X Yosemite</example>
394
+ <param pos="0" name="os.vendor" value="Apple"/>
395
+ <param pos="0" name="os.family" value="Mac OS X"/>
396
+ <param pos="0" name="os.product" value="Mac OS X"/>
397
+ <param pos="0" name="os.version" value="10.10"/>
398
+ </fingerprint>
399
+ <fingerprint pattern="^(?i:(?:Apple )?Mac OS X El Capitan)$">
400
+ <description>Mac OS X El Capitan</description>
401
+ <example os.version="10.11">Mac OS X El Capitan</example>
402
+ <param pos="0" name="os.vendor" value="Apple"/>
403
+ <param pos="0" name="os.family" value="Mac OS X"/>
404
+ <param pos="0" name="os.product" value="Mac OS X"/>
405
+ <param pos="0" name="os.version" value="10.11"/>
406
+ </fingerprint>
407
+ <!-- This can also match Cisco IOS if the vendor name is not present. -->
408
+ <fingerprint pattern="^(?i:(?:Apple )?iOS\s?(\d+?(?:\.\d+?)*?)?)$">
409
+ <description>Apple iOS for iPhone and iPad</description>
410
+ <example os.version="7.1.2">iOS 7.1.2</example>
411
+ <example os.version="8">iOS 8</example>
412
+ <example os.version="9.3">Apple iOS 9.3</example>
413
+ <param pos="0" name="os.vendor" value="Apple"/>
414
+ <param pos="0" name="os.family" value="Apple iOS"/>
415
+ <param pos="0" name="os.product" value="iOS"/>
416
+ <param pos="1" name="os.version"/>
417
+ <param pos="0" name="os.device" value="Mobile"/>
418
+ </fingerprint>
419
+ <!-- Mac end -->
420
+
421
+ <!-- BSD begin -->
422
+ <fingerprint pattern="^(?i:(.*?BSD)\s?(\d+?(?:\.\d+?)*?(?:[\-\/_ ]?\w+?)?(?:-[a-z]\d+?)?)?)$">
423
+ <description>Many BSD family OSes</description>
424
+ <example os.version="10.3-RELEASE" os.product="FreeBSD">FreeBSD 10.3-RELEASE</example>
425
+ <example os.version="10.3-RELEASE-p4" os.product="FreeBSD">FreeBSD 10.3-RELEASE-p4</example>
426
+ <example os.version="7.0" os.product="NetBSD">NetBSD 7.0</example>
427
+ <example os.version="5.9" os.product="OpenBSD">OpenBSD 5.9</example>
428
+ <example os.product="PC-BSD">PC-BSD</example>
429
+ <param pos="1" name="os.vendor"/>
430
+ <param pos="1" name="os.family"/>
431
+ <param pos="1" name="os.product"/>
432
+ <param pos="2" name="os.version"/>
433
+ </fingerprint>
434
+ <!-- BSD end -->
435
+
436
+ <!-- Other Unix-likes begin -->
437
+ <fingerprint pattern="^(?i:(?:Oracle|Sun)?\s?OpenSolaris\s?(\d+?(?:\.\d+?)*?)?)$">
438
+ <description>OpenSolaris</description>
439
+ <example os.version="2009.06">OpenSolaris 2009.06</example>
440
+ <param pos="0" name="os.vendor" value="Sun"/>
441
+ <param pos="0" name="os.family" value="Solaris"/>
442
+ <param pos="0" name="os.product" value="Solaris"/>
443
+ <param pos="1" name="os.version"/>
444
+ </fingerprint>
445
+ <fingerprint pattern="^(?i:(?:Oracle|Sun)?\s?(?:Solaris|SunOS)\s?(\d+?(?:\.\d+?)*?)?)$">
446
+ <description>Solaris</description>
447
+ <example os.version="11.3">Solaris 11.3</example>
448
+ <example os.version="5.11">SunOS 5.11</example>
449
+ <param pos="0" name="os.vendor" value="Sun"/>
450
+ <param pos="0" name="os.family" value="Solaris"/>
451
+ <param pos="0" name="os.product" value="Solaris"/>
452
+ <param pos="1" name="os.version"/>
453
+ </fingerprint>
454
+ <fingerprint pattern="^(?i:(?:IBM\s?)?(AIX|MVS|OS/(?:\d{1,3})|VM/CMS|VM/ESA|z/OS)\s?(\d+?(?:\.\d+?)*?)?)$">
455
+ <description>IBM OSes</description>
456
+ <example os.product="AIX">AIX</example>
457
+ <example os.product="MVS">IBM MVS</example>
458
+ <example os.product="OS/2">IBM OS/2</example>
459
+ <example os.product="OS/390">IBM OS/390</example>
460
+ <example os.product="OS/400">OS/400</example>
461
+ <example os.product="VM/CMS">IBM VM/CMS</example>
462
+ <example os.product="VM/ESA">IBM VM/ESA</example>
463
+ <example os.product="z/OS">IBM z/OS</example>
464
+ <param pos="0" name="os.vendor" value="IBM"/>
465
+ <param pos="1" name="os.family"/>
466
+ <param pos="1" name="os.product"/>
467
+ <param pos="2" name="os.version"/>
468
+ </fingerprint>
469
+ <fingerprint pattern="^(?i:(?:HP\s?)?(Digital UNIX|HP-UX|iLO|OpenVMS|ProLiant|Tru64 UNIX)\s?(\d+?(?:\.\d+?)*?)?)$">
470
+ <description>HP OSes</description>
471
+ <example os.product="HP-UX">HP-UX</example>
472
+ <example os.product="OpenVMS">OpenVMS</example>
473
+ <param pos="0" name="os.vendor" value="HP"/>
474
+ <param pos="1" name="os.family"/>
475
+ <param pos="1" name="os.product"/>
476
+ <param pos="2" name="os.version"/>
477
+ </fingerprint>
478
+ <!-- Other Unix-likes end -->
479
+
480
+ <!-- Network equipment begin -->
481
+ <fingerprint pattern="^(?i:(?:Juniper\s?)?(Junos|Junos OS|ScreenOS)\s?(\d+?(?:\.\d+?)*?)?)$">
482
+ <description>Juniper</description>
483
+ <example>Junos</example>
484
+ <example>ScreenOS</example>
485
+ <param pos="0" name="os.vendor" value="Juniper"/>
486
+ <param pos="1" name="os.family"/>
487
+ <param pos="1" name="os.product"/>
488
+ <param pos="2" name="os.version"/>
489
+ </fingerprint>
490
+ <!-- This needs to be improved if it's not how one would generally present a Cisco OS version. -->
491
+ <fingerprint pattern="^(?i:(?:Cisco\s?)?(ASA|Adaptive Security Appliance|IOS|IOS-XE|IOS-XR|NX-OS|PIX-OS|SAN-OS)\s?(?:Version (\S+))?)$">
492
+ <description>Cisco</description>
493
+ <example>Cisco ASA</example>
494
+ <example>Cisco IOS</example>
495
+ <param pos="0" name="os.vendor" value="Cisco"/>
496
+ <param pos="1" name="os.family"/>
497
+ <param pos="1" name="os.product"/>
498
+ <param pos="2" name="os.version"/>
499
+ </fingerprint>
500
+ <!-- Network equipment end -->
501
+ </fingerprints>
metadata CHANGED
@@ -1,111 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: recog
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.20
4
+ version: 2.0.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rapid7 Research
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-27 00:00:00.000000000 Z
11
+ date: 2016-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: yard
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: redcarpet
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: cucumber
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: aruba
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: simplecov
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - '>='
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: nokogiri
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  description: Recog is a framework for identifying products, services, operating systems,
@@ -121,10 +121,10 @@ executables:
121
121
  extensions: []
122
122
  extra_rdoc_files: []
123
123
  files:
124
- - ".gitignore"
125
- - ".rspec"
126
- - ".travis.yml"
127
- - ".yardopts"
124
+ - .gitignore
125
+ - .rspec
126
+ - .travis.yml
127
+ - .yardopts
128
128
  - CONTRIBUTING.md
129
129
  - COPYING
130
130
  - Gemfile
@@ -194,6 +194,7 @@ files:
194
194
  - xml/mysql_error.xml
195
195
  - xml/nntp_banners.xml
196
196
  - xml/ntp_banners.xml
197
+ - xml/operating_system.xml
197
198
  - xml/pop_banners.xml
198
199
  - xml/rsh_resp.xml
199
200
  - xml/sip_banners.xml
@@ -225,45 +226,19 @@ require_paths:
225
226
  - lib
226
227
  required_ruby_version: !ruby/object:Gem::Requirement
227
228
  requirements:
228
- - - ">="
229
+ - - '>='
229
230
  - !ruby/object:Gem::Version
230
231
  version: '2.1'
231
232
  required_rubygems_version: !ruby/object:Gem::Requirement
232
233
  requirements:
233
- - - ">="
234
+ - - '>='
234
235
  - !ruby/object:Gem::Version
235
236
  version: '0'
236
237
  requirements: []
237
238
  rubyforge_project:
238
- rubygems_version: 2.2.5
239
+ rubygems_version: 2.2.2
239
240
  signing_key:
240
241
  specification_version: 4
241
242
  summary: Network service fingerprint database, classes, and utilities
242
- test_files:
243
- - features/data/failing_banners_fingerprints.xml
244
- - features/data/matching_banners_fingerprints.xml
245
- - features/data/multiple_banners_fingerprints.xml
246
- - features/data/no_tests.xml
247
- - features/data/sample_banner.txt
248
- - features/data/successful_tests.xml
249
- - features/data/tests_with_failures.xml
250
- - features/data/tests_with_warnings.xml
251
- - features/match.feature
252
- - features/support/env.rb
253
- - features/verify.feature
254
- - spec/data/best_os_match_1.yml
255
- - spec/data/best_os_match_2.yml
256
- - spec/data/best_service_match_1.yml
257
- - spec/data/smb_native_os.txt
258
- - spec/data/test_fingerprints.xml
259
- - spec/data/whitespaced_fingerprint.xml
260
- - spec/lib/fingerprint_self_test_spec.rb
261
- - spec/lib/recog/db_spec.rb
262
- - spec/lib/recog/fingerprint/regexp_factory_spec.rb
263
- - spec/lib/recog/fingerprint_spec.rb
264
- - spec/lib/recog/formatter_spec.rb
265
- - spec/lib/recog/match_reporter_spec.rb
266
- - spec/lib/recog/nizer_spec.rb
267
- - spec/lib/recog/verify_reporter_spec.rb
268
- - spec/spec_helper.rb
243
+ test_files: []
269
244
  has_rdoc: