recog 3.0.1 → 3.0.3

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
  SHA256:
3
- metadata.gz: ca2e3909b1b60418e80721625975ab8025e8dcaaaee59754dccb128b25661f00
4
- data.tar.gz: 68be49a8c47fc1bb2b6a0f64d02c18a8fc29b67ee60b62060542be2216979e5c
3
+ metadata.gz: f61ccb4f953facea4bbf95ccbd3deb144d8f0763d9be1355cba70a6eb4dc9c79
4
+ data.tar.gz: 8fa728463dfc0f3dd783fd3f535965b70e62f6e47eb8960e269076e6ddf3c43f
5
5
  SHA512:
6
- metadata.gz: 2e0f749e0a8b313a8ba9845c39aa72ce08108e4c5b4e3785d689ae9e726aeb72b31b23da6e1e4610fff4dcd1caad966ee9578ab887a425cf2f414ee377b7b001
7
- data.tar.gz: 7714d9bca0d70f27efd756460f0f167a46c69ee45c38da8a70bdfb5271256decb92375c8281efe67529e5b7e3a897b3e3e2fc20b7a62075b12db9abf940635a6
6
+ metadata.gz: 1f2ed5453f4dc800bcf750592ca16ec25f89c2e93ec7528b2a2a71bada7399bd5d3ea149acb1888006826d8fea0b4a6186b3c7ea4a519febebe99e3be8c6efcf
7
+ data.tar.gz: c515c0183b55cf8a38dd03d2865d7ef208c75930854b00f69ade77494b0fe0f7162d244a5806d9451ec7442675c93c2070d2a59ef25d1355b241f4a0922c5d7a
checksums.yaml.gz.sig ADDED
Binary file
@@ -1,3 +1,5 @@
1
+ require 'json'
2
+
1
3
  module Recog
2
4
  class MatchReporter
3
5
  attr_reader :formatter
@@ -24,14 +26,46 @@ class MatchReporter
24
26
  @line_count += 1
25
27
  end
26
28
 
27
- def match(text)
29
+ def match(match_data)
28
30
  @match_count += 1
29
- formatter.success_message(text)
31
+ if @options.json_format
32
+ # remove data field from all matches and promote to a top-level field
33
+ data_field = match_data[0]["data"]
34
+ match_data.each { |h| h.delete("data") }
35
+ new_object = {
36
+ 'data' => data_field,
37
+ }
38
+
39
+ if @options.multi_match
40
+ new_object['matches'] = match_data
41
+ else
42
+ new_object['match'] = match_data[0]
43
+ end
44
+ msg = new_object.to_json
45
+ else
46
+ match_prefix = match_data.size > 1 ? 'MATCHES' : 'MATCH'
47
+ msg = "#{match_prefix}: #{match_data.map(&:inspect).join(',')}"
48
+ end
49
+ formatter.success_message("#{msg}")
30
50
  end
31
51
 
32
52
  def failure(text)
33
53
  @fail_count += 1
34
- formatter.failure_message(text)
54
+ if @options.json_format
55
+ new_object = {
56
+ 'data' => text,
57
+ 'match_failure' => true
58
+ }
59
+ if @options.multi_match
60
+ new_object['matches'] = nil
61
+ else
62
+ new_object['match'] = nil
63
+ end
64
+ msg = new_object.to_json
65
+ else
66
+ msg = "FAIL: #{text}"
67
+ end
68
+ formatter.failure_message("#{msg}")
35
69
  end
36
70
 
37
71
  def print_summary
data/lib/recog/matcher.rb CHANGED
@@ -29,26 +29,21 @@ class Matcher
29
29
  line = line.to_s.unpack("C*").pack("C*").strip.gsub(/\\[rn]/, '')
30
30
  found_extractions = false
31
31
 
32
- all_extractions = []
32
+ extraction_data = []
33
33
  fingerprints.each do |fp|
34
34
  extractions = fp.match(line)
35
35
  if extractions
36
36
  found_extractions = true
37
37
  extractions['data'] = line
38
- if multi_match
39
- all_extractions << extractions
40
- else
41
- reporter.match "MATCH: #{extractions.inspect}"
42
- break
43
- end
38
+ extraction_data << extractions
39
+ break unless multi_match
44
40
  end
45
41
  end
46
42
 
47
43
  if found_extractions
48
- match_prefix = all_extractions.size > 1 ? 'MATCHES' : 'MATCH'
49
- reporter.match "#{match_prefix}: #{all_extractions.map(&:inspect).join(',')}" if multi_match
44
+ reporter.match extraction_data
50
45
  else
51
- reporter.failure "FAIL: #{line}"
46
+ reporter.failure line
52
47
  end
53
48
 
54
49
  if reporter.stop?
data/lib/recog/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Recog
2
- VERSION = '3.0.1'
2
+ VERSION = '3.0.3'
3
3
  end
@@ -5,7 +5,7 @@ require 'ostruct'
5
5
  require 'recog'
6
6
  require 'recog/matcher_factory'
7
7
 
8
- options = OpenStruct.new(color: false, detail: false, fail_fast: false, multi_match: false)
8
+ options = OpenStruct.new(color: false, detail: false, json_format: false, fail_fast: false, multi_match: false)
9
9
 
10
10
  option_parser = OptionParser.new do |opts|
11
11
  opts.banner = "Usage: #{$0} [options] XML_FINGERPRINT_FILE [BANNERS_FILE]"
@@ -13,12 +13,18 @@ option_parser = OptionParser.new do |opts|
13
13
  opts.separator ""
14
14
  opts.separator "Options"
15
15
 
16
- opts.on("-f", "--format FORMATTER",
16
+ opts.on("-f", "--format FORMATTER", [:summary, :detail, :json],
17
17
  "Choose a formatter.",
18
18
  " [s]ummary (default - failure/match msgs)",
19
- " [d]etail (msgs with total counts)") do |format|
20
- if format.start_with? 'd'
19
+ " [d]etail (msgs with total counts)",
20
+ " [j]son (JSON failure/match msgs)") do |format|
21
+ if format == :summary
22
+ options.detail = false
23
+ options.json_format = false
24
+ elsif format == :detail
21
25
  options.detail = true
26
+ elsif format == :json
27
+ options.json_format = true
22
28
  end
23
29
  end
24
30
 
@@ -41,9 +47,17 @@ option_parser = OptionParser.new do |opts|
41
47
  exit
42
48
  end
43
49
  end
44
- option_parser.parse!(ARGV)
45
50
 
46
- if ARGV.count != 1 && ARGV.count != 2
51
+
52
+ begin
53
+ option_parser.parse!(ARGV)
54
+ rescue OptionParser::ParseError => e
55
+ puts e.message
56
+ puts option_parser
57
+ exit(1)
58
+ end
59
+
60
+ if ARGV.count < 1 || ARGV.count > 2
47
61
  puts option_parser
48
62
  exit(1)
49
63
  end
@@ -8,13 +8,17 @@
8
8
  and inform (8) messages.
9
9
  -->
10
10
 
11
- <fingerprint pattern="^Mfg=(?:Fuji)?(?i:Xerox);Typ=(?:MFP|printer);Mod=(?:Xerox )?(\S+) ([a-zA-Z0-9]+).*;Ser=([A-Z0-9]{9})(?:;Loc=.*)?$">
11
+ <fingerprint pattern="^[Mm]fg=(?:Fuji)?(?i:Xerox);[Tt]yp=(?:MFP|AIO|[Pp]rinter);[Mm]od=(?:Xerox )?(\S+) ([a-zA-Z0-9]+).*;[Ss]er=([A-Z0-9]{9,10})(?:;[Ll]oc=.*)?$">
12
12
  <description>Xerox Multifunction Printer</description>
13
13
  <example hw.family="VersaLink" hw.model="C405" hw.serial_number="ABC123456">Mfg=Xerox;Typ=MFP;Mod=VersaLink C405;Ser=ABC123456;Loc=Print Room</example>
14
14
  <example hw.family="AltaLink" hw.model="C8055" hw.serial_number="1AB234567">Mfg=Xerox;Typ=MFP;Mod=Xerox AltaLink C8055 Multifunction Printer;Ser=1AB234567;Loc=Print Room2</example>
15
15
  <example hw.family="WorkCentre" hw.model="3345" hw.serial_number="1AB234567">Mfg=XEROX;Typ=MFP;Mod=WorkCentre 3345;Ser=1AB234567;Loc=</example>
16
16
  <example hw.family="WorkCentre" hw.model="7845" hw.serial_number="AB1234567">Mfg=Xerox;Typ=MFP;Mod=Xerox WorkCentre 7845 v1 Multifunction System;Ser=AB1234567;Loc=</example>
17
17
  <example hw.family="Phaser" hw.model="6500DN" hw.serial_number="ABC123456">Mfg=FujiXerox;Typ=printer;Mod=Phaser 6500DN;Ser=ABC123456</example>
18
+ <example hw.family="Phaser" hw.model="6600DN" hw.serial_number="ABC123456">Mfg=Xerox;Typ=Printer;Mod=Phaser 6600DN;Ser=ABC123456;Loc=</example>
19
+ <example hw.family="AltaLink" hw.model="B8045" hw.serial_number="A1B234567">mfg=Xerox;typ=MFP;mod=Xerox AltaLink B8045 MFP;ser=A1B234567;loc=Print Room 3</example>
20
+ <example hw.family="VersaLink" hw.model="B7035" hw.serial_number="1AB234567C">Mfg=Xerox;Typ=MFP;Mod=VersaLink B7035;Ser=1AB234567C</example>
21
+ <example hw.family="WorkCentre" hw.model="3615" hw.serial_number="A1B234567">Mfg=Xerox;Typ=AIO;Mod=WorkCentre 3615;Ser=A1B234567</example>
18
22
  <param pos="0" name="hw.device" value="Printer"/>
19
23
  <param pos="0" name="hw.vendor" value="Xerox"/>
20
24
  <param pos="1" name="hw.family"/>
@@ -95,9 +99,44 @@
95
99
  <param pos="0" name="os.device" value="Printer"/>
96
100
  </fingerprint>
97
101
 
98
- <fingerprint pattern="^Polycom-(VVX\d{3})$">
102
+ <fingerprint pattern="^Mfg=DELL;Typ=Printer;Mod=Dell ([A-Z]?\d{4}dn)(?:\sLaser Printer)?;Ser=([A-Z0-9]{7});$">
103
+ <description>Dell Laser Printer</description>
104
+ <example hw.model="B2360dn" hw.serial_number="ABCDEF1">Mfg=DELL;Typ=Printer;Mod=Dell B2360dn Laser Printer;Ser=ABCDEF1;</example>
105
+ <example hw.model="2330dn" hw.serial_number="123ABCD">Mfg=DELL;Typ=Printer;Mod=Dell 2330dn Laser Printer;Ser=123ABCD;</example>
106
+ <example hw.model="S2830dn" hw.serial_number="1A2BC34">Mfg=DELL;Typ=Printer;Mod=Dell S2830dn;Ser=1A2BC34;</example>
107
+ <param pos="0" name="hw.device" value="Printer"/>
108
+ <param pos="0" name="hw.vendor" value="Dell"/>
109
+ <param pos="1" name="hw.model"/>
110
+ <param pos="2" name="hw.serial_number"/>
111
+ <param pos="0" name="os.vendor" value="Dell"/>
112
+ <param pos="0" name="os.device" value="Printer"/>
113
+ </fingerprint>
114
+
115
+ <fingerprint pattern="^Mfg=Dell;Typ=printer;Mod=Dell Color Printer (S\d{4}cdn);Ser=([0-9]{6})$">
116
+ <description>Dell Color Printer</description>
117
+ <example hw.model="S3840cdn" hw.serial_number="123456">Mfg=Dell;Typ=printer;Mod=Dell Color Printer S3840cdn;Ser=123456</example>
118
+ <param pos="0" name="hw.device" value="Printer"/>
119
+ <param pos="0" name="hw.vendor" value="Dell"/>
120
+ <param pos="1" name="hw.model"/>
121
+ <param pos="2" name="hw.serial_number"/>
122
+ <param pos="0" name="os.vendor" value="Dell"/>
123
+ <param pos="0" name="os.device" value="Printer"/>
124
+ </fingerprint>
125
+
126
+ <fingerprint pattern="^Dell Color MFP (S\d{4}cdn)$$">
127
+ <description>Dell Color Multifunction Printer</description>
128
+ <example hw.model="S2825cdn">Dell Color MFP S2825cdn</example>
129
+ <param pos="0" name="hw.device" value="Printer"/>
130
+ <param pos="0" name="hw.vendor" value="Dell"/>
131
+ <param pos="1" name="hw.model"/>
132
+ <param pos="0" name="os.vendor" value="Dell"/>
133
+ <param pos="0" name="os.device" value="Printer"/>
134
+ </fingerprint>
135
+
136
+ <fingerprint pattern="^(?:Polycom|Poly)-(VVX(?:-[A-Z])?\d{3})$">
99
137
  <description>Polycom IP Phone</description>
100
138
  <example hw.product="VVX410" hw.model="VVX410">Polycom-VVX410</example>
139
+ <example hw.product="VVX-D230" hw.model="VVX-D230">Poly-VVX-D230</example>
101
140
  <param pos="0" name="hw.device" value="VoIP"/>
102
141
  <param pos="0" name="hw.vendor" value="Polycom"/>
103
142
  <param pos="0" name="hw.family" value="VVX"/>
@@ -106,6 +145,37 @@
106
145
  <param pos="0" name="os.vendor" value="Polycom"/>
107
146
  </fingerprint>
108
147
 
148
+ <fingerprint pattern="^Polycom-SSIP([4-7]000)$">
149
+ <description>Polycom SoundStation IP Phone</description>
150
+ <example hw.product="SoundStation IP 6000" hw.model="6000">Polycom-SSIP6000</example>
151
+ <example hw.product="SoundStation IP 7000" hw.model="7000">Polycom-SSIP7000</example>
152
+ <param pos="0" name="hw.device" value="VoIP"/>
153
+ <param pos="0" name="hw.vendor" value="Polycom"/>
154
+ <param pos="0" name="hw.family" value="SoundStation IP"/>
155
+ <param pos="1" name="hw.model"/>
156
+ <param pos="0" name="hw.product" value="{hw.family} {hw.model}"/>
157
+ </fingerprint>
158
+
159
+ <fingerprint pattern="^digium_(D\d{2})_(\d_\d{1,2}_\d{1,2})$">
160
+ <description>Digium D Series IP Phone</description>
161
+ <example hw.model="D65" os.version="2_9_10">digium_D65_2_9_10</example>
162
+ <param pos="0" name="hw.vendor" value="Digium"/>
163
+ <param pos="0" name="hw.device" value="VoIP"/>
164
+ <param pos="1" name="hw.model"/>
165
+ <param pos="0" name="os.vendor" value="Digium"/>
166
+ <param pos="0" name="os.product" value="Digium Firmware"/>
167
+ <param pos="2" name="os.version"/>
168
+ <param pos="0" name="os.device" value="VoIP"/>
169
+ </fingerprint>
170
+
171
+ <fingerprint pattern="^ipphone.mitel.com$">
172
+ <description>Mitel IP Phone</description>
173
+ <example>ipphone.mitel.com</example>
174
+ <param pos="0" name="hw.device" value="VoIP"/>
175
+ <param pos="0" name="hw.vendor" value="Mitel"/>
176
+ <param pos="0" name="os.device" value="VoIP"/>
177
+ </fingerprint>
178
+
109
179
  <fingerprint pattern="^Aruba\s(JL\d+A)\s(\d+[A-Z]?)\S+\sSwitch(?:\sdslforum.org)?$">
110
180
  <description>HP Aruba Network Switch</description>
111
181
  <example hw.model="JL075A" hw.product="3810M">Aruba JL075A 3810M-16SFP+-2-slot Switch</example>
@@ -171,6 +241,16 @@
171
241
  <param pos="0" name="os.cpe23" value="cpe:/o:google:android:{os.version}"/>
172
242
  </fingerprint>
173
243
 
244
+ <fingerprint pattern="^HUAWEI:android:" certainty="0.8">
245
+ <description>Huawei Android Device</description>
246
+ <example>HUAWEI:android:ABC</example>
247
+ <param pos="0" name="hw.vendor" value="Huawei"/>
248
+ <param pos="0" name="os.vendor" value="Google"/>
249
+ <param pos="0" name="os.family" value="Linux"/>
250
+ <param pos="0" name="os.product" value="Android"/>
251
+ <param pos="0" name="os.cpe23" value="cpe:/o:google:android:-"/>
252
+ </fingerprint>
253
+
174
254
  <fingerprint pattern="^dhcpcd-(?:[\d\.]+):Linux-([\d\.]+).*:(\S*):">
175
255
  <description>Linux</description>
176
256
  <example os.version="4.14.78" os.arch="armv7l">dhcpcd-6.11.5:Linux-4.14.78:armv7l:Freescale</example>
@@ -203,4 +283,141 @@
203
283
  <param pos="0" name="os.family" value="Windows"/>
204
284
  </fingerprint>
205
285
 
286
+ <fingerprint pattern="^(?i)Cisco Systems Inc\. Wireless Phone (\d{4}g?)$" certainty="0.8">
287
+ <description>Cisco Wireless Phone</description>
288
+ <example hw.model="7920">Cisco Systems Inc. Wireless Phone 7920</example>
289
+ <example hw.model="7925G">Cisco Systems Inc. Wireless Phone 7925G</example>
290
+ <param pos="0" name="hw.device" value="VoIP"/>
291
+ <param pos="0" name="hw.vendor" value="Cisco"/>
292
+ <param pos="1" name="hw.model"/>
293
+ <param pos="0" name="hw.product" value="Unified Wireless IP Phone {hw.model}"/>
294
+ <param pos="0" name="os.vendor" value="Cisco"/>
295
+ <param pos="0" name="os.product" value="Unified Wireless IP Phone {hw.model} Firmware"/>
296
+ </fingerprint>
297
+
298
+ <fingerprint pattern="^Cisco systems, Inc\. IP Phone CP(39\d{2})$" certainty="0.8">
299
+ <description>Cisco SIP Phone</description>
300
+ <example hw.model="3911">Cisco systems, Inc. IP Phone CP3911</example>
301
+ <param pos="0" name="hw.device" value="VoIP"/>
302
+ <param pos="0" name="hw.vendor" value="Cisco"/>
303
+ <param pos="1" name="hw.model"/>
304
+ <param pos="0" name="hw.product" value="Unified SIP Phone {hw.model}"/>
305
+ <param pos="0" name="os.vendor" value="Cisco"/>
306
+ <param pos="0" name="os.product" value="Unified SIP Phone {hw.model} Firmware"/>
307
+ </fingerprint>
308
+
309
+ <fingerprint pattern="^Cisco Systems, Inc\. IP Phone CP-(\d{4}(?:G|G-GE|NR)?)$" certainty="0.8">
310
+ <description>Cisco IP Phone</description>
311
+ <example hw.model="6921">Cisco Systems, Inc. IP Phone CP-6921</example>
312
+ <example hw.model="7911G">Cisco Systems, Inc. IP Phone CP-7911G</example>
313
+ <example hw.model="7941G-GE">Cisco Systems, Inc. IP Phone CP-7941G-GE</example>
314
+ <example hw.model="8865NR">Cisco Systems, Inc. IP Phone CP-8865NR</example>
315
+ <param pos="0" name="hw.device" value="VoIP"/>
316
+ <param pos="0" name="hw.vendor" value="Cisco"/>
317
+ <param pos="1" name="hw.model"/>
318
+ <param pos="0" name="hw.product" value="Unified IP Phone {hw.model}"/>
319
+ <param pos="0" name="os.vendor" value="Cisco"/>
320
+ <param pos="0" name="os.product" value="Unified IP Phone {hw.model} Firmware"/>
321
+ </fingerprint>
322
+
323
+ <fingerprint pattern="^Cisco AP c(\d{3,4}[a-z]?)$" certainty="0.8">
324
+ <description>Cisco Aironet Wireless Access Point</description>
325
+ <example hw.model="701">Cisco AP c701</example>
326
+ <example hw.model="1830">Cisco AP c1830</example>
327
+ <example hw.model="1840i">Cisco AP c1840i</example>
328
+ <param pos="0" name="hw.device" value="WAP"/>
329
+ <param pos="0" name="hw.vendor" value="Cisco"/>
330
+ <param pos="1" name="hw.model"/>
331
+ <param pos="0" name="hw.product" value="Aironet {hw.model}"/>
332
+ <param pos="0" name="os.product" value="Aironet {hw.model} Firmware"/>
333
+ <param pos="0" name="os.vendor" value="Cisco"/>
334
+ <param pos="0" name="os.device" value="WAP"/>
335
+ </fingerprint>
336
+
337
+ <fingerprint pattern="^Cisco AP C(9115|9120)AX$" certainty="0.8">
338
+ <description>Cisco Catalyst 9100 Series Wireless Access Point</description>
339
+ <example hw.model="9115">Cisco AP C9115AX</example>
340
+ <example hw.model="9120">Cisco AP C9120AX</example>
341
+ <param pos="0" name="hw.device" value="WAP"/>
342
+ <param pos="0" name="hw.vendor" value="Cisco"/>
343
+ <param pos="1" name="hw.model"/>
344
+ <param pos="0" name="hw.product" value="Catalyst {hw.model} AP"/>
345
+ <param pos="0" name="os.product" value="Catalyst {hw.model} AP Firmware"/>
346
+ <param pos="0" name="os.vendor" value="Cisco"/>
347
+ </fingerprint>
348
+
349
+ <fingerprint pattern="^Cisco (AP80[123])$" certainty="0.8">
350
+ <description>Cisco 800 Series Integrated Access Point</description>
351
+ <example hw.model="AP801">Cisco AP801</example>
352
+ <example hw.model="AP802">Cisco AP802</example>
353
+ <example hw.model="AP803">Cisco AP803</example>
354
+ <param pos="0" name="hw.device" value="WAP"/>
355
+ <param pos="0" name="hw.vendor" value="Cisco"/>
356
+ <param pos="1" name="hw.model"/>
357
+ <param pos="0" name="os.vendor" value="Cisco"/>
358
+ </fingerprint>
359
+
360
+ <fingerprint pattern="^Cisco AIR-CTVM-K9$" certainty="0.8">
361
+ <description>Cisco Virtual Wireless Controller</description>
362
+ <example>Cisco AIR-CTVM-K9</example>
363
+ <param pos="0" name="hw.device" value="Wireless Controller"/>
364
+ <param pos="0" name="hw.vendor" value="Cisco"/>
365
+ <param pos="0" name="hw.model" value="AIR-CTVM-K9"/>
366
+ <param pos="0" name="os.vendor" value="Cisco"/>
367
+ </fingerprint>
368
+
369
+ <fingerprint pattern="^Cisco (AIR-CT55\d{2}-K9)$" certainty="0.8">
370
+ <description>Cisco 5500 Series Wireless Controller</description>
371
+ <example hw.model="AIR-CT5508-K9">Cisco AIR-CT5508-K9</example>
372
+ <param pos="0" name="hw.device" value="Wireless Controller"/>
373
+ <param pos="0" name="hw.vendor" value="Cisco"/>
374
+ <param pos="1" name="hw.model"/>
375
+ <param pos="0" name="os.vendor" value="Cisco"/>
376
+ </fingerprint>
377
+
378
+ <fingerprint pattern="^BrightSign ((?:HS|XD|LS|XT|HD)\d{3,4}(?:-W|-PP)?)$">
379
+ <description>BrightSign Digital Signage Player</description>
380
+ <example hw.model="HS124">BrightSign HS124</example>
381
+ <example hw.model="XD1034">BrightSign XD1034</example>
382
+ <example hw.model="XD1034-W">BrightSign XD1034-W</example>
383
+ <example hw.model="LS424-W">BrightSign LS424-W</example>
384
+ <example hw.model="XT244">BrightSign XT244</example>
385
+ <example hw.model="HD1023">BrightSign HD1023</example>
386
+ <example hw.model="XT1144-PP">BrightSign XT1144-PP</example>
387
+ <param pos="0" name="hw.vendor" value="BrightSign"/>
388
+ <param pos="0" name="hw.device" value="Media Server"/>
389
+ <param pos="1" name="hw.model"/>
390
+ <param pos="0" name="os.vendor" value="BrightSign"/>
391
+ <param pos="0" name="os.family" value="Linux"/>
392
+ <param pos="0" name="os.device" value="Media Server"/>
393
+ <param pos="0" name="os.product" value="{hw.model} Firmware"/>
394
+ </fingerprint>
395
+
396
+ <fingerprint pattern="^iDRAC$">
397
+ <description>Integrated Dell Remote Access Controller</description>
398
+ <example>iDRAC</example>
399
+ <param pos="0" name="hw.vendor" value="Dell"/>
400
+ <param pos="0" name="hw.product" value="iDRAC"/>
401
+ </fingerprint>
402
+
403
+ <fingerprint pattern="^udhcp(?:c|\s)([0-1]\.\d+\.\d(?:-pre)?)$">
404
+ <description>Linux System using Busybox</description>
405
+ <example service.version="1.22.1">udhcp 1.22.1</example>
406
+ <example service.version="1.21.1">udhcpc1.21.1</example>
407
+ <example service.version="0.9.9-pre">udhcp 0.9.9-pre</example>
408
+ <param pos="0" name="service.vendor" value="Busybox"/>
409
+ <param pos="1" name="service.version"/>
410
+ <param pos="0" name="os.family" value="Linux"/>
411
+ <param pos="0" name="os.certainty" value="0.1"/>
412
+ </fingerprint>
413
+
414
+ <fingerprint pattern="^ccp\.avaya\.com$">
415
+ <description>Avaya device</description>
416
+ <example>ccp.avaya.com</example>
417
+ <param pos="0" name="hw.vendor" value="Avaya"/>
418
+ <param pos="0" name="hw.certainty" value="0.8"/>
419
+ <param pos="0" name="os.vendor" value="Avaya"/>
420
+ <param pos="0" name="os.certainty" value="0.8"/>
421
+ </fingerprint>
422
+
206
423
  </fingerprints>