recog 0.01

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. data/.gitignore +3 -0
  2. data/.rspec +2 -0
  3. data/Gemfile +9 -0
  4. data/Gemfile.lock +42 -0
  5. data/LICENSE +23 -0
  6. data/README.md +63 -0
  7. data/bin/recog_export.rb +81 -0
  8. data/bin/recog_match.rb +51 -0
  9. data/bin/recog_verify.rb +45 -0
  10. data/features/match.feature +16 -0
  11. data/features/support/env.rb +5 -0
  12. data/features/verify.feature +31 -0
  13. data/features/xml/banners.xml +2 -0
  14. data/features/xml/failing_banners_fingerprints.xml +20 -0
  15. data/features/xml/matching_banners_fingerprints.xml +22 -0
  16. data/features/xml/no_tests.xml +53 -0
  17. data/features/xml/successful_tests.xml +33 -0
  18. data/features/xml/tests_with_failures.xml +10 -0
  19. data/features/xml/tests_with_warnings.xml +10 -0
  20. data/lib/recog.rb +3 -0
  21. data/lib/recog/db.rb +38 -0
  22. data/lib/recog/db_manager.rb +27 -0
  23. data/lib/recog/fingerprint.rb +60 -0
  24. data/lib/recog/formatter.rb +51 -0
  25. data/lib/recog/match_reporter.rb +77 -0
  26. data/lib/recog/matcher.rb +60 -0
  27. data/lib/recog/matcher_factory.rb +14 -0
  28. data/lib/recog/nizer.rb +263 -0
  29. data/lib/recog/verifier.rb +46 -0
  30. data/lib/recog/verifier_factory.rb +13 -0
  31. data/lib/recog/verify_reporter.rb +85 -0
  32. data/lib/recog/version.rb +3 -0
  33. data/recog.gemspec +34 -0
  34. data/spec/data/best_os_match_1.yml +17 -0
  35. data/spec/data/best_os_match_2.yml +17 -0
  36. data/spec/data/best_service_match_1.yml +17 -0
  37. data/spec/data/smb_native_os.txt +31 -0
  38. data/spec/data/test_fingerprints.xml +24 -0
  39. data/spec/lib/db_spec.rb +89 -0
  40. data/spec/lib/formatter_spec.rb +69 -0
  41. data/spec/lib/match_reporter_spec.rb +90 -0
  42. data/spec/lib/nizer_spec.rb +124 -0
  43. data/spec/lib/verify_reporter_spec.rb +112 -0
  44. data/xml/apache_os.xml +295 -0
  45. data/xml/architecture.xml +45 -0
  46. data/xml/ftp_banners.xml +808 -0
  47. data/xml/h323_callresp.xml +701 -0
  48. data/xml/hp_pjl_id.xml +435 -0
  49. data/xml/http_cookies.xml +379 -0
  50. data/xml/http_servers.xml +3326 -0
  51. data/xml/http_wwwauth.xml +412 -0
  52. data/xml/imap_banners.xml +267 -0
  53. data/xml/nntp_banners.xml +51 -0
  54. data/xml/ntp_banners.xml +538 -0
  55. data/xml/pop_banners.xml +452 -0
  56. data/xml/rsh_resp.xml +90 -0
  57. data/xml/sip_banners.xml +14 -0
  58. data/xml/smb_native_os.xml +385 -0
  59. data/xml/smtp_banners.xml +1738 -0
  60. data/xml/smtp_debug.xml +45 -0
  61. data/xml/smtp_ehlo.xml +53 -0
  62. data/xml/smtp_expn.xml +95 -0
  63. data/xml/smtp_help.xml +212 -0
  64. data/xml/smtp_mailfrom.xml +24 -0
  65. data/xml/smtp_noop.xml +45 -0
  66. data/xml/smtp_quit.xml +31 -0
  67. data/xml/smtp_rcptto.xml +33 -0
  68. data/xml/smtp_rset.xml +23 -0
  69. data/xml/smtp_turn.xml +23 -0
  70. data/xml/smtp_vrfy.xml +109 -0
  71. data/xml/snmp_sysdescr.xml +8008 -0
  72. data/xml/snmp_sysobjid.xml +284 -0
  73. data/xml/ssh_banners.xml +790 -0
  74. data/xml/upnp_banners.xml +590 -0
  75. metadata +190 -0
@@ -0,0 +1,590 @@
1
+ <?xml version="1.0"?>
2
+ <!-- UPnP Server headers are matched against these patterns to fingerprint UPnP servers. -->
3
+
4
+ <fingerprints matches="ssdp_header.server">
5
+ <fingerprint pattern="^Linux/(\S+) UPnP/[\d\.]+ miniupnpd/([\d\.]+)$">
6
+ <example>Linux/Cross_compiled UPnP/1.0 miniupnpd/1.0</example>
7
+ <example>Linux/2.6.29.6-217.2.3.fc11.i686.PAE UPnP/1.0 miniupnpd/1.0</example>
8
+ <example>Linux/2.6.34.9-69.fc13.i686.PAE UPnP/1.0 miniupnpd/1.0</example>
9
+ <example>Linux/2.6.32.26-175.fc12.i686.PAE UPnP/1.0 miniupnpd/1.0</example>
10
+ <example>Linux/2.6.18-194.8.1.el5 UPnP/1.0 miniupnpd/1.0</example>
11
+ <example>Linux/2.6.29-gentoo-r5 UPnP/1.0 miniupnpd/1.0</example>
12
+ <example>Linux/2.6.15 UPnP/1.0 miniupnpd/1.0</example>
13
+ <example>Linux/2.6.33.3-85.fc13.i686.PAE UPnP/1.0 miniupnpd/1.0</example>
14
+ <example>Linux/2.6.20-1.2320.fc5smp UPnP/1.0 miniupnpd/1.0</example>
15
+ <example>Linux/2.6.27.21-78.2.41.fc9.i686 UPnP/1.0 miniupnpd/1.0</example>
16
+ <example>Linux/2.6.40.3-0.fc15.i686.PAE UPnP/1.0 miniupnpd/1.0</example>
17
+ <example>Linux/2.6.38.6-26.rc1.fc15.i686.PAE UPnP/1.0 miniupnpd/1.0</example>
18
+ <example>Linux/2.6.15-1.2054_FC5smp UPnP/1.0 miniupnpd/1.0</example>
19
+ <example>Linux/2.6.9-78.0.17.ELsmp UPnP/1.0 miniupnpd/1.0</example>
20
+ <example>Linux/2.6.35.6-45.fc14.i686 UPnP/1.0 miniupnpd/1.0</example>
21
+ <example>Linux/2.6.11.12 UPnP/1.0 miniupnpd/1.0</example>
22
+ <example>Linux/2.6.35.11-83.fc14.i686 UPnP/1.0 miniupnpd/1.0</example>
23
+ <example>Linux/2.6.15-1.2054_FC5 UPnP/1.0 miniupnpd/1.0</example>
24
+ <example>Linux/2.4.21-47.ELsmp UPnP/1.0 miniupnpd/1.0</example>
25
+ <example>Linux/2.6.18 UPnP/1.0 miniupnpd/1.0</example>
26
+ <example>Linux/2.4.21 UPnP/1.0 miniupnpd/1.0</example>
27
+ <description>Linux MiniUPnPd UPnP Server</description>
28
+ <param pos="0" name="service.vendor" value="Unknown"/>
29
+ <param pos="0" name="service.product" value="MiniUPnP"/>
30
+ <param pos="2" name="service.version"/>
31
+ <param pos="0" name="os.vendor" value="Unknown"/>
32
+ <param pos="0" name="os.product" value="Linux"/>
33
+ <param pos="1" name="os.version"/>
34
+ </fingerprint>
35
+
36
+ <fingerprint pattern="^Tomato UPnP/\S+ MiniUPnPd/(\S+)$">
37
+ <example>Tomato UPnP/1.0 MiniUPnPd/1.2</example>
38
+ <example>Tomato UPnP/1.0 MiniUPnPd/1.4</example>
39
+ <description>Tomato UPnP Server</description>
40
+ <param pos="0" name="service.vendor" value="Tomato"/>
41
+ <param pos="0" name="service.product" value="MiniUPnP"/>
42
+ <param pos="1" name="service.version"/>
43
+ </fingerprint>
44
+
45
+ <fingerprint pattern="^(RT-\w+) UPnP/\S+ MiniUPnPd/(\S+)$">
46
+ <example>RT-G32 UPnP/1.0 MiniUPnPd/1.2</example>
47
+ <description>Asus WAP UPnP Server</description>
48
+ <param pos="0" name="service.vendor" value="Asus"/>
49
+ <param pos="0" name="service.product" value="MiniUPnP"/>
50
+ <param pos="2" name="service.version"/>
51
+ <param pos="0" name="os.vendor" value="Asus"/>
52
+ <param pos="1" name="os.product"/>
53
+ <param pos="0" name="os.device" value="WAP"/>
54
+ </fingerprint>
55
+
56
+ <fingerprint pattern="^DrayTek/Vigor(\S+) UPnP/\S+ miniupnpd/(\S+)$">
57
+ <example>DrayTek/Vigor2130 UPnP/1.0 miniupnpd/1.0</example>
58
+ <description>DrayTek Vigor router UPnP Server</description>
59
+ <param pos="0" name="service.vendor" value="DrayTek"/>
60
+ <param pos="0" name="service.product" value="MiniUPnP"/>
61
+ <param pos="2" name="service.version"/>
62
+ <param pos="0" name="os.vendor" value="DrayTek"/>
63
+ <param pos="0" name="os.family" value="Vigor"/>
64
+ <param pos="1" name="os.product"/>
65
+ <param pos="0" name="os.device" value="Router"/>
66
+ </fingerprint>
67
+
68
+ <fingerprint pattern="^OpenWRT/kamikaze UPnP/\S+ MiniUPnPd/(\S+)$">
69
+ <example>OpenWRT/kamikaze UPnP/1.0 MiniUPnPd/1.5</example>
70
+ <example>OpenWRT/kamikaze UPnP/1.0 MiniUPnPd/1.2</example>
71
+ <example>OpenWRT/kamikaze UPnP/1.0 MiniUPnPd/1.4</example>
72
+ <description>OpenWRT Kamikaze WAP UPnP Server</description>
73
+ <param pos="0" name="service.vendor" value="OpenWRT"/>
74
+ <param pos="0" name="service.product" value="MiniUPnP"/>
75
+ <param pos="1" name="service.version"/>
76
+ <param pos="0" name="os.vendor" value="Linux"/>
77
+ <param pos="0" name="os.family" value="OpenWRT"/>
78
+ <param pos="0" name="os.product" value="Kamikaze"/>
79
+ <param pos="0" name="os.device" value="WAP"/>
80
+ </fingerprint>
81
+
82
+ <fingerprint pattern="^Netgear/\S+ UPnP/\S+ miniupnpd/(\S+)$">
83
+ <example>Netgear/1.0 UPnP/1.0 miniupnpd/1.0</example>
84
+ <example>Netgear/1.0 UPnP/1.0 miniupnpd/1.0</example>
85
+ <description>Netgear DG834G or WNDR3300 WAP UPnP Server</description>
86
+ <param pos="0" name="service.vendor" value="Netgear"/>
87
+ <param pos="0" name="service.product" value="MiniUPnP"/>
88
+ <param pos="1" name="service.version"/>
89
+ <param pos="0" name="os.vendor" value="Netgear"/>
90
+ <param pos="0" name="os.product" value="Unknown"/>
91
+ <param pos="0" name="os.device" value="WAP"/>
92
+ </fingerprint>
93
+
94
+ <fingerprint pattern="^[^/]+/(\S+) DLNADOC/\S+ UPnP/\S+ MiniDLNA/(\S+)$">
95
+ <example>Debian/4.0r8 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
96
+ <example>Debian/6.0 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
97
+ <example>Debian/6.0.2 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
98
+ <example>Debian/6.0.4 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
99
+ <example>Debian/6.0.6 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
100
+ <example>FreeBSD/10.0-CURRENT DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0.24</example>
101
+ <example>FreeBSD/7.3-RELEASE DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
102
+ <example>FreeBSD/7.3-RELEASE DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0.24</example>
103
+ <example>FreeBSD/7.3-STABLE DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
104
+ <example>FreeBSD/7.4-RELEASE-p10 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0.24</example>
105
+ <example>FreeBSD/7.4-RELEASE-p9 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0.24</example>
106
+ <example>FreeBSD/7.4-STABLE DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0.24</example>
107
+ <example>FreeBSD/8.1-RELEASE-p1 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0.24</example>
108
+ <example>FreeBSD/8.1-RELEASE-p2 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0.24</example>
109
+ <example>FreeBSD/8.2-RELEASE-p4 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0.24</example>
110
+ <example>Linux/2.4.37 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
111
+ <example>Linux/2.6.22.19 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0.25</example>
112
+ <example>Linux/2.6.31.9-174.fc12.x86_64 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
113
+ <example>Linux/2.6.32.21-168.fc12.i686.PAE DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
114
+ <example>Linux/2.6.33-7.atr DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
115
+ <example>Linux/2.6.36 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
116
+ <example>SUSE LINUX/11.1 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
117
+ <example>Ubuntu/11.04 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
118
+ <example>VHS-4/1 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
119
+ <example>Debian/testing/unstable DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
120
+ <example>Debian/unstable DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
121
+ <example>Linux/2.6.12.6-arm1 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
122
+ <example>Debian/wheezy/sid DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
123
+ <example>Gentoo/1.12.11.1 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
124
+ <example>Linux/2.6.24.111 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
125
+ <example>RedHatEnterpriseClient/5.6 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
126
+ <example>Ubuntu/12.04 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
127
+ <example>Ubuntu/9.04 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
128
+ <example>Debian/5.0 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
129
+ <example>Debian/squeeze/sid DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
130
+ <example>FreeBSD/8.3-RELEASE DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0.24</example>
131
+ <example>FreeBSD/8.3-STABLE DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0.24</example>
132
+ <example>Debian/6.0.5 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
133
+ <example>FreeBSD/9.0-RELEASE-p1 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0.24</example>
134
+ <example>Linux/3.3.8-gentoo DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0.24</example>
135
+ <example>Linux/Cross_compiled DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
136
+ <example>CentOS/5.6 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
137
+ <example>Ubuntu/10.04 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
138
+ <example>RAIDiator/4.1 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
139
+ <example>Linux/2.6.31 DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
140
+ <example>Linux/2.6.36+ DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.0</example>
141
+ <description>DLNADOC UPnP Server</description>
142
+ <param pos="0" name="service.vendor" value="Unknown"/>
143
+ <param pos="0" name="service.product" value="MiniDLNA"/>
144
+ <param pos="2" name="service.version"/>
145
+ <param pos="0" name="os.vendor" value="Linux"/>
146
+ <param pos="0" name="os.product" value="Linux"/>
147
+ <param pos="1" name="os.version"/>
148
+ </fingerprint>
149
+
150
+ <fingerprint pattern="^Linux Mips (\S+) UPnP/\S+ MiniUPnPd/(\S+)$">
151
+ <example>Linux Mips 2.4.20 UPnP/1.0 MiniUPnPd/1.2</example>
152
+ <description>Linux MIPS UPnP Server</description>
153
+ <param pos="0" name="service.vendor" value="Linux"/>
154
+ <param pos="0" name="service.product" value="MiniUPnP"/>
155
+ <param pos="2" name="service.version"/>
156
+ <param pos="0" name="os.vendor" value="Linux"/>
157
+ <param pos="0" name="os.product" value="Linux"/>
158
+ <param pos="1" name="os.version"/>
159
+ </fingerprint>
160
+
161
+ <fingerprint pattern="^SmoothWall Express/\S+ UPnP/\S+ miniupnpd/(\S+)$">
162
+ <example>SmoothWall Express/3.0 UPnP/1.0 miniupnpd/1.0</example>
163
+ <description>Smoothwall Express UPnP Server</description>
164
+ <param pos="0" name="service.vendor" value="Smoothwall"/>
165
+ <param pos="0" name="service.product" value="MiniUPnP"/>
166
+ <param pos="1" name="service.version"/>
167
+ </fingerprint>
168
+
169
+ <fingerprint pattern="^(\S+) \d+/Service Pack \d+, UPnP/[\d\.]+, TVersity Media Server$">
170
+ <example>5.2.3790 2/Service Pack 1, UPnP/1.0, TVersity Media Server</example>
171
+ <example>5.0.2195 2/Service Pack 4, UPnP/1.0, TVersity Media Server</example>
172
+ <example>5.1.2600 2/Service Pack 2, UPnP/1.0, TVersity Media Server</example>
173
+ <example>6.0.6001 2/Service Pack 1, UPnP/1.0, TVersity Media Server</example>
174
+ <example>5.2.3790 2/Service Pack 2, UPnP/1.0, TVersity Media Server</example>
175
+ <example>6.1.7601 2/Service Pack 1, UPnP/1.0, TVersity Media Server</example>
176
+ <example>6.0.6002 2/Service Pack 2, UPnP/1.0, TVersity Media Server</example>
177
+ <example>5.1.2600 2/Service Pack 3, UPnP/1.0, TVersity Media Server</example>
178
+ <description>TVersity Media Server UPnP Server</description>
179
+ <param pos="0" name="service.vendor" value="TVersity"/>
180
+ <param pos="0" name="service.product" value="Media Server"/>
181
+ <param pos="1" name="service.version"/>
182
+ </fingerprint>
183
+
184
+ <fingerprint pattern="^(\S+) 2/, UPnP/\S+, TVersity Media Server$">
185
+ <example>6.2.8400 2/, UPnP/1.0, TVersity Media Server</example>
186
+ <example>6.2.9200 2/, UPnP/1.0, TVersity Media Server</example>
187
+ <example>6.0.6000 2/, UPnP/1.0, TVersity Media Server</example>
188
+ <example>6.1.7600 2/, UPnP/1.0, TVersity Media Server</example>
189
+ <description>TVersity Media Server UPnP Server</description>
190
+ <param pos="0" name="service.vendor" value="TVersity"/>
191
+ <param pos="0" name="service.product" value="Media Server"/>
192
+ <param pos="1" name="service.version"/>
193
+ </fingerprint>
194
+
195
+ <fingerprint pattern="^LINUX/([\d\.]+) UPnP/[\d\.]+ BRCM400/([\d\.]+)$">
196
+ <example>LINUX/2.4 UPnP/1.0 BRCM400/1.0</example>
197
+ <description>Belkin/Linksys BRCM400 Wireless Router UPnP Server</description>
198
+ <param pos="0" name="service.vendor" value="Linksys"/>
199
+ <param pos="0" name="service.product" value="BRCM400"/>
200
+ <param pos="2" name="service.version"/>
201
+ <param pos="0" name="os.vendor" value="Linksys"/>
202
+ <param pos="0" name="os.product" value="Linux"/>
203
+ <param pos="1" name="os.version"/>
204
+ <param pos="0" name="os.device" value="Router"/>
205
+ </fingerprint>
206
+
207
+ <fingerprint pattern="^Linux-(\S+), UPnP/[\d\.]+, PMS/([\d\.]+)$">
208
+ <example>Linux-amd64-2.6.18-238.9.1.el5, UPnP/1.0, PMS/1.52.1</example>
209
+ <example>Linux-amd64-2.6.31-14-generic, UPnP/1.0, PMS/1.50.0</example>
210
+ <example>Linux-amd64-3.0.0-25-generic, UPnP/1.0, PMS/1.20.412</example>
211
+ <example>Linux-amd64-3.0.0-25-generic, UPnP/1.0, PMS/1.30.1</example>
212
+ <example>Linux-amd64-3.0.0-25-server, UPnP/1.0, PMS/1.70.0</example>
213
+ <example>Linux-amd64-3.0.0-26-generic, UPnP/1.0, PMS/1.30.1</example>
214
+ <example>Linux-amd64-3.0.0-26-generic, UPnP/1.0, PMS/1.50.0</example>
215
+ <example>Linux-amd64-3.0.0-26-server, UPnP/1.0, PMS/1.20.412</example>
216
+ <example>Linux-amd64-3.0.0-26-server, UPnP/1.0, PMS/1.70.0</example>
217
+ <example>Linux-amd64-3.0.0-27-generic, UPnP/1.0, PMS/1.30.1</example>
218
+ <example>Linux-amd64-3.0.43-1-lts, UPnP/1.0, PMS/1.70.0</example>
219
+ <example>Linux-amd64-3.2.0-0.bpo.2-amd64, UPnP/1.0, PMS/1.52.1</example>
220
+ <example>Linux-amd64-3.2.0-0.bpo.2-amd64, UPnP/1.0, PMS/1.53.0</example>
221
+ <example>Linux-amd64-3.2.0-0.bpo.2-amd64, UPnP/1.0, PMS/1.54.0</example>
222
+ <example>Linux-amd64-3.2.0-0.bpo.2-amd64, UPnP/1.0, PMS/1.60.0</example>
223
+ <example>Linux-amd64-3.2.0-0.bpo.2-amd64, UPnP/1.0, PMS/1.70.0</example>
224
+ <example>Linux-amd64-3.2.0-0.bpo.3-amd64, UPnP/1.0, PMS/1.53.0</example>
225
+ <example>Linux-amd64-3.2.0-2-amd64, UPnP/1.0, PMS/1.30.1</example>
226
+ <example>Linux-amd64-3.2.0-2-amd64, UPnP/1.0, PMS/1.50.1</example>
227
+ <example>Linux-amd64-3.2.0-2-amd64, UPnP/1.0, PMS/1.60.0</example>
228
+ <example>Linux-amd64-3.2.0-24-generic, UPnP/1.0, PMS/1.20.412</example>
229
+ <example>Linux-amd64-3.6.5-1-ARCH, UPnP/1.0, PMS/1.70.0</example>
230
+ <example>Linux-ppc-2.6.32-5-powerpc, UPnP/1.0, PMS/1.70.0</example>
231
+ <example>Linux-i386-2.6.32-gentoo-r7, UPnP/1.0, PMS/1.50.0</example>
232
+ <example>Linux-i386-3.2.0-32-generic-pae, UPnP/1.0, PMS/1.50.0</example>
233
+ <example>Linux-i386-2.6.32-5-686, UPnP/1.0, PMS/1.20.412</example>
234
+ <example>Linux-i386-3.2.0-32-generic, UPnP/1.0, PMS/1.50.0</example>
235
+ <example>Linux-i386-3.4.4-5.fc17.i686.PAE, UPnP/1.0, PMS/1.60.0</example>
236
+ <example>Linux-amd64-2.6.35-28-generic, UPnP/1.0, PMS/1.21.0</example>
237
+ <example>Linux-amd64-3.2.0-24-generic, UPnP/1.0, PMS/1.52.1</example>
238
+ <example>Linux-amd64-3.2.0-26-generic, UPnP/1.0, PMS/1.50.0</example>
239
+ <example>Linux-amd64-3.2.0-29-generic, UPnP/1.0, PMS/1.50.0</example>
240
+ <example>Linux-amd64-3.2.0-32-generic, UPnP/1.0, PMS/1.50.0</example>
241
+ <example>Linux-amd64-3.0.0-17-generic, UPnP/1.0, PMS/1.52.1</example>
242
+ <example>Linux-i386-2.6.31-23-generic-pae, UPnP/1.0, PMS/1.20.409</example>
243
+ <example>Linux-i386-2.6.32-41-generic, UPnP/1.0, PMS/1.50.0</example>
244
+ <example>Linux-i386-2.6.32-5-686, UPnP/1.0, PMS/1.50.0</example>
245
+ <example>Linux-amd64-3.2.12-gentoo, UPnP/1.0, PMS/1.50.1</example>
246
+ <example>Linux-i386-2.6.33.2, UPnP/1.0, PMS/1.21.1</example>
247
+ <example>Linux-amd64-2.6.32-5-amd64, UPnP/1.0, PMS/1.50.0</example>
248
+ <description>PlayStation3 Media Server UPnP Server</description>
249
+ <param pos="0" name="service.vendor" value="Sony"/>
250
+ <param pos="0" name="service.product" value="PMS"/>
251
+ <param pos="2" name="service.version"/>
252
+ <param pos="0" name="os.vendor" value="Linux"/>
253
+ <param pos="0" name="os.product" value="Linux"/>
254
+ <param pos="1" name="os.version"/>
255
+ </fingerprint>
256
+
257
+ <fingerprint pattern="^Windows_XP-(\S+), UPnP/[\d\.]+, PMS/([\d\.]+)$">
258
+ <example>Windows_XP-amd64-5.2, UPnP/1.0, PMS/1.54.0</example>
259
+ <example>Windows_XP-x86-5.1, UPnP/1.0, PMS/1.20.400</example>
260
+ <example>Windows_XP-x86-5.1, UPnP/1.0, PMS/1.31.0</example>
261
+ <example>Windows_XP-x86-5.1, UPnP/1.0, PMS/1.71.0</example>
262
+ <example>Windows_XP-x86-5.1, UPnP/1.0, PMS/1.72.0</example>
263
+ <example>Windows_XP-x86-5.1, UPnP/1.0, PMS/1.10.1</example>
264
+ <example>Windows_XP-x86-5.1, UPnP/1.0, PMS/1.21.0</example>
265
+ <example>Windows_XP-x86-5.1, UPnP/1.0, PMS/1.22.0</example>
266
+ <example>Windows_XP-x86-5.2, UPnP/1.0, PMS/1.30.1</example>
267
+ <example>Windows_XP-x86-5.2, UPnP/1.0, PMS/1.52.1</example>
268
+ <example>Windows_XP-x86-5.1, UPnP/1.0, PMS/1.21.1</example>
269
+ <example>Windows_XP-x86-5.1, UPnP/1.0, PMS/1.52.0</example>
270
+ <example>Windows_XP-x86-5.1, UPnP/1.0, PMS/1.23.0</example>
271
+ <example>Windows_XP-x86-5.1, UPnP/1.0, PMS/1.20.392</example>
272
+ <example>Windows_XP-x86-5.1, UPnP/1.0, PMS/1.20.412</example>
273
+ <example>Windows_XP-x86-5.1, UPnP/1.0, PMS/1.50.1</example>
274
+ <example>Windows_XP-x86-5.1, UPnP/1.0, PMS/1.53.0</example>
275
+ <example>Windows_XP-x86-5.1, UPnP/1.0, PMS/1.25.1</example>
276
+ <example>Windows_XP-x86-5.1, UPnP/1.0, PMS/1.30.1</example>
277
+ <example>Windows_XP-x86-5.1, UPnP/1.0, PMS/1.10.51</example>
278
+ <example>Windows_XP-x86-5.1, UPnP/1.0, PMS/1.50.0</example>
279
+ <example>Windows_XP-x86-5.1, UPnP/1.0, PMS/1.52.1</example>
280
+ <example>Windows_XP-x86-5.1, UPnP/1.0, PMS/1.40.0</example>
281
+ <example>Windows_XP-x86-5.1, UPnP/1.0, PMS/1.60.0</example>
282
+ <example>Windows_XP-x86-5.1, UPnP/1.0, PMS/1.70.1</example>
283
+ <example>Windows_XP-x86-5.1, UPnP/1.0, PMS/1.54.0</example>
284
+ <description>PlayStation3 Media Server UPnP Server</description>
285
+ <param pos="0" name="service.vendor" value="Sony"/>
286
+ <param pos="0" name="service.product" value="PMS"/>
287
+ <param pos="2" name="service.version"/>
288
+ <param pos="0" name="os.vendor" value="Microsoft"/>
289
+ <param pos="0" name="os.product" value="Windows XP"/>
290
+ <param pos="1" name="os.version"/>
291
+ </fingerprint>
292
+
293
+ <fingerprint pattern="^Windows_7-x86-(\S+), UPnP/[\d\.]+, PMS/([\d\.]+)$">
294
+ <example>Windows_7-x86-6.1, UPnP/1.0, PMS/1.20</example>
295
+ <example>Windows_7-x86-6.1, UPnP/1.0, PMS/1.22.0</example>
296
+ <example>Windows_7-x86-6.1, UPnP/1.0, PMS/1.25.1</example>
297
+ <example>Windows_7-x86-6.1, UPnP/1.0, PMS/1.51.0</example>
298
+ <example>Windows_7-x86-6.1, UPnP/1.0, PMS/1.20.412</example>
299
+ <example>Windows_7-x86-6.1, UPnP/1.0, PMS/1.71.0</example>
300
+ <example>Windows_7-x86-6.1, UPnP/1.0, PMS/1.20.409</example>
301
+ <example>Windows_7-x86-6.1, UPnP/1.0, PMS/1.72.0</example>
302
+ <example>Windows_7-x86-6.1, UPnP/1.0, PMS/1.10.51</example>
303
+ <example>Windows_7-x86-6.1, UPnP/1.0, PMS/1.40.0</example>
304
+ <example>Windows_7-x86-6.1, UPnP/1.0, PMS/1.53.0</example>
305
+ <example>Windows_7-x86-6.1, UPnP/1.0, PMS/1.52.0</example>
306
+ <example>Windows_7-x86-6.1, UPnP/1.0, PMS/1.50.1</example>
307
+ <example>Windows_7-x86-6.1, UPnP/1.0, PMS/1.30.1</example>
308
+ <example>Windows_7-x86-6.1, UPnP/1.0, PMS/1.50.0</example>
309
+ <example>Windows_7-x86-6.1, UPnP/1.0, PMS/1.54.0</example>
310
+ <example>Windows_7-x86-6.1, UPnP/1.0, PMS/1.52.1</example>
311
+ <example>Windows_7-x86-6.1, UPnP/1.0, PMS/1.60.0</example>
312
+ <example>Windows_7-x86-6.1, UPnP/1.0, PMS/1.70.1</example>
313
+ <description>PlayStation3 Media Server UPnP Server</description>
314
+ <param pos="0" name="service.vendor" value="Sony"/>
315
+ <param pos="0" name="service.product" value="PMS"/>
316
+ <param pos="2" name="service.version"/>
317
+ <param pos="0" name="os.vendor" value="Microsoft"/>
318
+ <param pos="0" name="os.product" value="Windows 7"/>
319
+ <param pos="1" name="os.version"/>
320
+ </fingerprint>
321
+
322
+ <fingerprint pattern="^Windows_7-x86_64-(\S+), UPnP/[\d\.]+, PMS/([\d\.]+)$">
323
+ <description>PlayStation3 Media Server UPnP Server</description>
324
+ <param pos="0" name="service.vendor" value="Sony"/>
325
+ <param pos="0" name="service.product" value="PMS"/>
326
+ <param pos="2" name="service.version"/>
327
+ <param pos="0" name="os.vendor" value="Microsoft"/>
328
+ <param pos="0" name="os.product" value="Windows 7"/>
329
+ <param pos="1" name="os.version"/>
330
+ </fingerprint>
331
+
332
+ <fingerprint pattern="^Mac_OS_X-x86_64-(\S+), UPnP/[\d\.]+, PMS/([\d\.]+)$">
333
+ <example>Mac_OS_X-x86_64-10.5.8, UPnP/1.0, PMS/1.20</example>
334
+ <example>Mac_OS_X-x86_64-10.5.8, UPnP/1.0, PMS/1.20.404</example>
335
+ <example>Mac_OS_X-x86_64-10.5.8, UPnP/1.0, PMS/1.25.1</example>
336
+ <example>Mac_OS_X-x86_64-10.5.8, UPnP/1.0, PMS/1.51.0</example>
337
+ <example>Mac_OS_X-x86_64-10.5.8, UPnP/1.0, PMS/1.52.1</example>
338
+ <example>Mac_OS_X-x86_64-10.5.8, UPnP/1.0, PMS/1.54.0</example>
339
+ <example>Mac_OS_X-x86_64-10.6.3, UPnP/1.0, PMS/1.20.409</example>
340
+ <example>Mac_OS_X-x86_64-10.6.7, UPnP/1.0, PMS/1.20.409</example>
341
+ <example>Mac_OS_X-x86_64-10.6.8, UPnP/1.0, PMS/1.31.0</example>
342
+ <example>Mac_OS_X-x86_64-10.7, UPnP/1.0, PMS/1.50.0</example>
343
+ <example>Mac_OS_X-x86_64-10.7, UPnP/1.0, PMS/1.52.0</example>
344
+ <example>Mac_OS_X-x86_64-10.7.1, UPnP/1.0, PMS/1.50.1</example>
345
+ <example>Mac_OS_X-x86_64-10.8.1, UPnP/1.0, PMS/1.72.0</example>
346
+ <example>Mac_OS_X-x86_64-10.8.2, UPnP/1.0, PMS/1.10.5</example>
347
+ <example>Mac_OS_X-x86_64-10.8.2, UPnP/1.0, PMS/1.25.1</example>
348
+ <example>Mac_OS_X-x86_64-10.8.2, UPnP/1.0, PMS/1.50.2</example>
349
+ <example>Mac_OS_X-x86_64-10.5.8, UPnP/1.0, PMS/1.30.1</example>
350
+ <example>Mac_OS_X-x86_64-10.5.8, UPnP/1.0, PMS/1.40.0</example>
351
+ <example>Mac_OS_X-x86_64-10.5.8, UPnP/1.0, PMS/1.50.1</example>
352
+ <example>Mac_OS_X-x86_64-10.6.5, UPnP/1.0, PMS/1.50.0</example>
353
+ <example>Mac_OS_X-x86_64-10.6.7, UPnP/1.0, PMS/1.50.0</example>
354
+ <example>Mac_OS_X-x86_64-10.6.8, UPnP/1.0, PMS/1.20</example>
355
+ <example>Mac_OS_X-x86_64-10.7.2, UPnP/1.0, PMS/1.40.0</example>
356
+ <example>Mac_OS_X-x86_64-10.7.2, UPnP/1.0, PMS/1.54.0</example>
357
+ <example>Mac_OS_X-x86_64-10.7.2, UPnP/1.0, PMS/1.60.0</example>
358
+ <example>Mac_OS_X-x86_64-10.7.3, UPnP/1.0, PMS/1.51.0</example>
359
+ <example>Mac_OS_X-x86_64-10.7.3, UPnP/1.0, PMS/1.54.0</example>
360
+ <example>Mac_OS_X-x86_64-10.8, UPnP/1.0, PMS/1.40.0</example>
361
+ <example>Mac_OS_X-x86_64-10.8.1, UPnP/1.0, PMS/1.20.409</example>
362
+ <example>Mac_OS_X-x86_64-10.8.1, UPnP/1.0, PMS/1.52.1</example>
363
+ <example>Mac_OS_X-x86_64-10.8.2, UPnP/1.0, PMS/1.52.0</example>
364
+ <example>Mac_OS_X-x86_64-10.5.8, UPnP/1.0, PMS/1.20.409</example>
365
+ <example>Mac_OS_X-x86_64-10.6.8, UPnP/1.0, PMS/1.51.0</example>
366
+ <example>Mac_OS_X-x86_64-10.7.3, UPnP/1.0, PMS/1.30.1</example>
367
+ <example>Mac_OS_X-x86_64-10.7.3, UPnP/1.0, PMS/1.40.0</example>
368
+ <example>Mac_OS_X-x86_64-10.7.3, UPnP/1.0, PMS/1.70.1</example>
369
+ <example>Mac_OS_X-x86_64-10.8.1, UPnP/1.0, PMS/1.50.0</example>
370
+ <example>Mac_OS_X-x86_64-10.8.1, UPnP/1.0, PMS/1.70.1</example>
371
+ <example>Mac_OS_X-x86_64-10.8.2, UPnP/1.0, PMS/1.30.1</example>
372
+ <example>Mac_OS_X-x86_64-10.8.2, UPnP/1.0, PMS/1.40.0</example>
373
+ <example>Mac_OS_X-x86_64-10.6.8, UPnP/1.0, PMS/1.72.0</example>
374
+ <example>Mac_OS_X-x86_64-10.7.2, UPnP/1.0, PMS/1.30.1</example>
375
+ <example>Mac_OS_X-x86_64-10.7.2, UPnP/1.0, PMS/1.52.1</example>
376
+ <example>Mac_OS_X-x86_64-10.7.3, UPnP/1.0, PMS/1.50.0</example>
377
+ <example>Mac_OS_X-x86_64-10.7.4, UPnP/1.0, PMS/1.50.1</example>
378
+ <example>Mac_OS_X-x86_64-10.7.4, UPnP/1.0, PMS/1.40.0</example>
379
+ <example>Mac_OS_X-x86_64-10.8.2, UPnP/1.0, PMS/1.60.0</example>
380
+ <example>Mac_OS_X-x86_64-10.6.8, UPnP/1.0, PMS/1.30.1</example>
381
+ <example>Mac_OS_X-x86_64-10.6.8, UPnP/1.0, PMS/1.10.5</example>
382
+ <example>Mac_OS_X-x86_64-10.7.4, UPnP/1.0, PMS/1.60.0</example>
383
+ <example>Mac_OS_X-x86_64-10.7.5, UPnP/1.0, PMS/1.70.1</example>
384
+ <example>Mac_OS_X-x86_64-10.7.4, UPnP/1.0, PMS/1.50.0</example>
385
+ <example>Mac_OS_X-x86_64-10.6.8, UPnP/1.0, PMS/1.70.1</example>
386
+ <example>Mac_OS_X-x86_64-10.6.8, UPnP/1.0, PMS/1.52.1</example>
387
+ <example>Mac_OS_X-x86_64-10.7.4, UPnP/1.0, PMS/1.54.0</example>
388
+ <example>Mac_OS_X-x86_64-10.7.4, UPnP/1.0, PMS/1.52.1</example>
389
+ <example>Mac_OS_X-x86_64-10.8.2, UPnP/1.0, PMS/1.70.1</example>
390
+ <description>PlayStation3 Media Server UPnP Server</description>
391
+ <param pos="0" name="service.vendor" value="Sony"/>
392
+ <param pos="0" name="service.product" value="PMS"/>
393
+ <param pos="2" name="service.version"/>
394
+ <param pos="0" name="os.vendor" value="Apple"/>
395
+ <param pos="0" name="os.product" value="Mac OS X"/>
396
+ <param pos="1" name="os.version"/>
397
+ </fingerprint>
398
+
399
+ <fingerprint pattern="^Linux/(\S+), UPnP/\S+, Free UPnP Entertainment Service/ReadyNAS$">
400
+ <description>Free UPnP Entertainment Service UPnP Server</description>
401
+ <param pos="0" name="service.vendor" value="Unknown"/>
402
+ <param pos="0" name="service.product" value="FUPPES"/>
403
+ <param pos="0" name="os.vendor" value="Linux"/>
404
+ <param pos="0" name="os.product" value="Linux"/>
405
+ <param pos="1" name="os.version"/>
406
+ </fingerprint>
407
+
408
+ <fingerprint pattern="^Linux/(\S+), UPnP/(\S+), Free UPnP Entertainment Service/$">
409
+ <description>Free UPnP Entertainment Service UPnP Server</description>
410
+ <param pos="0" name="service.vendor" value="Unknown"/>
411
+ <param pos="0" name="service.product" value="FUPPES"/>
412
+ <param pos="0" name="os.vendor" value="Linux"/>
413
+ <param pos="0" name="os.product" value="Linux"/>
414
+ <param pos="1" name="os.version"/>
415
+ </fingerprint>
416
+
417
+ <fingerprint pattern="^FreeBSD/(\S+), UPnP/\S+, Free UPnP Entertainment Service/$">
418
+ <description>Free UPnP Entertainment Service UPnP Server</description>
419
+ <param pos="0" name="service.vendor" value="Unknown"/>
420
+ <param pos="0" name="service.product" value="FUPPES"/>
421
+ <param pos="0" name="os.vendor" value="FreeBSD"/>
422
+ <param pos="0" name="os.product" value="FreeBSD"/>
423
+ <param pos="1" name="os.version"/>
424
+ </fingerprint>
425
+
426
+ <fingerprint pattern="^ipOS/([\d\.]+) UPnP/[\d\.]+ ipUPnP/([\d\.]+)$">
427
+ <description>D-Link WAP Dynamic DNS UPnP Server</description>
428
+ <param pos="0" name="service.vendor" value="D-Link"/>
429
+ <param pos="0" name="service.product" value="ipUPnP"/>
430
+ <param pos="2" name="service.version"/>
431
+ <param pos="0" name="os.vendor" value="D-Link"/>
432
+ <param pos="0" name="os.product" value="ipOS"/>
433
+ <param pos="1" name="os.version"/>
434
+ <param pos="0" name="os.device" value="WAP"/>
435
+ </fingerprint>
436
+
437
+ <fingerprint pattern="^ipOS/([\d\.]+) UPnP/[\d\.]+ ipGENADevice/([\d\.]+)$">
438
+ <description>D-Link DGL-4300 Gaming Router UPnP Server</description>
439
+ <param pos="0" name="service.vendor" value="D-Link"/>
440
+ <param pos="0" name="service.product" value="ipGENADevice"/>
441
+ <param pos="2" name="service.version"/>
442
+ <param pos="0" name="os.vendor" value="D-Link"/>
443
+ <param pos="0" name="os.product" value="ipOS"/>
444
+ <param pos="1" name="os.version"/>
445
+ <param pos="0" name="os.device" value="Router"/>
446
+ </fingerprint>
447
+
448
+ <fingerprint pattern="^ipos/([\d\.]+) UPnP/[\d\.]+ (TL-\w+)/(\S+)$">
449
+ <example>ipos/7.0 UPnP/1.0 TL-WR841N/6.0/7.0</example>
450
+ <example>ipos/7.0 UPnP/1.0 TL-WR841N/8.0</example>
451
+ <example>ipos/7.0 UPnP/1.0 TL-WR740N/4.0</example>
452
+ <example>ipos/7.0 UPnP/1.0 TL-WR940N/1.0</example>
453
+ <example>ipos/7.0 UPnP/1.0 TL-WR741N/4.0</example>
454
+ <example>ipos/7.0 UPnP/1.0 TL-WR740N/1.0</example>
455
+ <example>ipos/7.0 UPnP/1.0 TL-WR741N/1.0/2.0</example>
456
+ <example>ipos/7.0 UPnP/1.0 TL-WR740N/1.0/2.0</example>
457
+ <example>ipos/7.0 UPnP/1.0 TL-WR941N/2.0</example>
458
+ <description>TP-Link WAP UPnP Server</description>
459
+ <param pos="0" name="service.vendor" value="TP-Link"/>
460
+ <param pos="2" name="service.product"/>
461
+ <param pos="3" name="service.version"/>
462
+ <param pos="0" name="os.vendor" value="TP-Link"/>
463
+ <param pos="0" name="os.product" value="ipOS"/>
464
+ <param pos="1" name="os.version"/>
465
+ <param pos="0" name="os.device" value="WAP"/>
466
+ </fingerprint>
467
+
468
+ <fingerprint pattern="^Linux/(\S+), UPnP/[\d\.]+, Portable SDK for UPnP devices/(\S+)$">
469
+ <example>Linux/2.4.20-46.7asp, UPnP/1.0, Portable SDK for UPnP devices/1.6.17</example>
470
+ <example>Linux/2.6.10-iop1-1, UPnP/1.0, Portable SDK for UPnP devices/1.4.1</example>
471
+ <example>Linux/2.6.12-5.1-brcmstb-dm800, UPnP/1.0, Portable SDK for UPnP devices/1.6.0</example>
472
+ <example>Linux/2.6.12.6-VENUS, UPnP/1.0, Portable SDK for UPnP devices/1.6.10</example>
473
+ <example>Linux/2.6.12.6-arm1-040, UPnP/1.0, Portable SDK for UPnP devices/1.6.5.2</example>
474
+ <example>Linux/2.6.13, UPnP/1.0, Portable SDK for UPnP devices/1.6.0</example>
475
+ <example>Linux/2.6.18_pro500-davinci_N03A_IPCAM_1.0-g5c649288-dirty, UPnP/1.0, Portable SDK for UPnP devices/1.6.6</example>
476
+ <example>Linux/2.6.28, UPnP/1.0, Portable SDK for UPnP devices/1.6.10</example>
477
+ <example>Linux/2.6.28-11-server, UPnP/1.0, Portable SDK for UPnP devices/1.6.6</example>
478
+ <example>Linux/2.6.28-17-generic, UPnP/1.0, Portable SDK for UPnP devices/1.6.6</example>
479
+ <example>Linux/2.6.28.1-xxxx-std-ipv4-32, UPnP/1.0, Portable SDK for UPnP devices/1.4.3</example>
480
+ <example>Linux/2.6.32-220.7.1.el6.x86_64, UPnP/1.0, Portable SDK for UPnP devices/1.6.14</example>
481
+ <example>Linux/2.6.32-24-generic, UPnP/1.0, Portable SDK for UPnP devices/1.6.6</example>
482
+ <example>Linux/2.6.32-279.1.1.el6.x86_64, UPnP/1.0, Portable SDK for UPnP devices/1.6.13</example>
483
+ <example>Linux/2.6.32-279.11.1.el6.x86_64, UPnP/1.0, Portable SDK for UPnP devices/1.6.14</example>
484
+ <example>Linux/2.6.32-279.14.1.el6.x86_64, UPnP/1.0, Portable SDK for UPnP devices/1.6.14</example>
485
+ <example>Linux/2.6.32-279.14.1.el6.x86_64, UPnP/1.0, Portable SDK for UPnP devices/1.6.15</example>
486
+ <description>Portable SDK for UPnP Server</description>
487
+ <param pos="0" name="service.vendor" value="Unknown"/>
488
+ <param pos="0" name="service.product" value="libupnp"/>
489
+ <param pos="2" name="service.version"/>
490
+ <param pos="0" name="os.vendor" value="Unknown"/>
491
+ <param pos="0" name="os.product" value="Linux"/>
492
+ <param pos="1" name="os.version"/>
493
+ </fingerprint>
494
+
495
+ <fingerprint pattern="^Linux/(\S+) UPnP/[\d\.]+ DLNADOC/[\d\.]+ Portable SDK for UPnP devices/(\S+)$">
496
+ <example>Linux/3.0.8 UPnP/1.0 DLNADOC/1.50 Portable SDK for UPnP devices/1.6.6</example>
497
+ <example>Linux/2.6.23.17_stm23_0125dorade00 UPnP/1.0 DLNADOC/1.50 Portable SDK for UPnP devices/1.4.6-5</example>
498
+ <description>DLNADOC Portable SDK for UPnP Server</description>
499
+ <param pos="0" name="service.vendor" value="Unknown"/>
500
+ <param pos="0" name="service.product" value="libupnp"/>
501
+ <param pos="2" name="service.version"/>
502
+ <param pos="0" name="os.vendor" value="Unknown"/>
503
+ <param pos="0" name="os.product" value="Linux"/>
504
+ <param pos="1" name="os.version"/>
505
+ </fingerprint>
506
+
507
+ <fingerprint pattern="^Linux/(\S+), UPnP/[\d\.]+, Intel SDK for UPnP devices ?/(\S+)$">
508
+ <example>Linux/3.2.0-3-686-pae, UPnP/1.0, Intel SDK for UPnP devices/1.3.1</example>
509
+ <example>Linux/3.2.21, UPnP/1.0, Intel SDK for UPnP devices/1.3.1</example>
510
+ <example>Linux/3.2.23-smp, UPnP/1.0, Intel SDK for UPnP devices/1.3.1</example>
511
+ <example>Linux/3.2.29-smp, UPnP/1.0, Intel SDK for UPnP devices/1.3.1</example>
512
+ <example>Linux/3.4.0, UPnP/1.0, Intel SDK for UPnP devices/1.3.1</example>
513
+ <example>Linux/3.4.4, UPnP/1.0, Intel SDK for UPnP devices/1.3.1</example>
514
+ <example>Linux/3.4.5, UPnP/1.0, Intel SDK for UPnP devices/1.3.1</example>
515
+ <example>Linux/2.6.17.WB_WPCM450.1.3, UPnP/1.0, Intel SDK for UPnP devices/1.3.1</example>
516
+ <example>Linux/2.6.11.12, UPnP/1.0, Intel SDK for UPnP devices /1.2</example>
517
+ <example>Linux/2.6.27, UPnP/1.0, Intel SDK for UPnP devices /1.2</example>
518
+ <example>Linux/2.6.23.17-Pegasus, UPnP/1.0, Intel SDK for UPnP devices /1.2</example>
519
+ <example>Linux/2.6.16-star, UPnP/1.0, Intel SDK for UPnP devices/1.3.1</example>
520
+ <example>Linux/2.6.10_dev-malta-mips2_fp_le, UPnP/1.0, Intel SDK for UPnP devices /1.2</example>
521
+ <example>Linux/2.4.18_mvl30-ixdp425, UPnP/1.0, Intel SDK for UPnP devices/1.3.1</example>
522
+ <example>Linux/2.6.20.21-pmc, UPnP/1.0, Intel SDK for UPnP devices/1.3.1</example>
523
+ <example>Linux/2.4.20, UPnP/1.0, Intel SDK for UPnP devices/1.3.1</example>
524
+ <example>Linux/2.4.30, UPnP/1.0, Intel SDK for UPnP devices /1.2</example>
525
+ <example>Linux/2.6.21, UPnP/1.0, Intel SDK for UPnP devices /1.2</example>
526
+ <example>Linux/2.4.18-MIPS-01.00, UPnP/1.0, Intel SDK for UPnP devices /1.2</example>
527
+ <example>Linux/2.4.17_mvl21-malta-mips_fp_le, UPnP/1.0, Intel SDK for UPnP devices /1.2</example>
528
+ <example>Linux/2.4.18-rmk7, UPnP/1.0, Intel SDK for UPnP devices /1.2</example>
529
+ <description>Intel SDK for UPnP Server</description>
530
+ <param pos="0" name="service.vendor" value="Unknown"/>
531
+ <param pos="0" name="service.product" value="libupnp"/>
532
+ <param pos="2" name="service.version"/>
533
+ <param pos="0" name="os.vendor" value="Unknown"/>
534
+ <param pos="0" name="os.product" value="Linux"/>
535
+ <param pos="1" name="os.version"/>
536
+ </fingerprint>
537
+
538
+ <fingerprint pattern="^Linux, UPnP/[\d\.]+, Intel SDK for UPnP devices ?/(\S+)$">
539
+ <example>Linux, UPnP/1.0, Intel SDK for UPnP devices /1.2</example>
540
+ <description>Intel SDK for UPnP Server</description>
541
+ <param pos="0" name="service.vendor" value="Unknown"/>
542
+ <param pos="0" name="service.product" value="libupnp"/>
543
+ <param pos="1" name="service.version"/>
544
+ </fingerprint>
545
+
546
+ <fingerprint pattern="^Darwin/(\S+), UPnP/\S+, Portable SDK for UPnP devices/(\S+)$">
547
+ <example>Darwin/10.2.0, UPnP/1.0, Portable SDK for UPnP devices/1.6.6</example>
548
+ <example>Darwin/10.3.1, UPnP/1.0, Portable SDK for UPnP devices/1.6.17</example>
549
+ <example>Darwin/10.4.0, UPnP/1.0, Portable SDK for UPnP devices/1.6.13</example>
550
+ <example>Darwin/10.4.0, UPnP/1.0, Portable SDK for UPnP devices/1.6.17</example>
551
+ <example>Darwin/11.0.0, UPnP/1.0, Portable SDK for UPnP devices/1.6.6</example>
552
+ <example>Darwin/12.2.0, UPnP/1.0, Portable SDK for UPnP devices/1.6.7</example>
553
+ <example>Darwin/12.2.1, UPnP/1.0, Portable SDK for UPnP devices/1.6.6</example>
554
+ <example>Darwin/9.8.0, UPnP/1.0, Portable SDK for UPnP devices/1.6.7</example>
555
+ <example>Darwin/11.3.0, UPnP/1.0, Portable SDK for UPnP devices/1.6.6</example>
556
+ <example>Darwin/13.0.0, UPnP/1.0, Portable SDK for UPnP devices/1.6.13</example>
557
+ <example>Darwin/11.4.2, UPnP/1.0, Portable SDK for UPnP devices/1.6.7</example>
558
+ <example>Darwin/12.1.0, UPnP/1.0, Portable SDK for UPnP devices/1.6.6</example>
559
+ <example>Darwin/10.8.0, UPnP/1.0, Portable SDK for UPnP devices/1.6.7</example>
560
+ <example>Darwin/11.4.0, UPnP/1.0, Portable SDK for UPnP devices/1.6.7</example>
561
+ <example>Darwin/12.0.0, UPnP/1.0, Portable SDK for UPnP devices/1.6.6</example>
562
+ <example>Darwin/11.2.0, UPnP/1.0, Portable SDK for UPnP devices/1.6.6</example>
563
+ <example>Darwin/9.8.0, UPnP/1.0, Portable SDK for UPnP devices/1.6.6</example>
564
+ <example>Darwin/13.0.0, UPnP/1.0, Portable SDK for UPnP devices/1.6.17</example>
565
+ <example>Darwin/11.0.0, UPnP/1.0, Portable SDK for UPnP devices/1.6.17</example>
566
+ <example>Darwin/12.2.0, UPnP/1.0, Portable SDK for UPnP devices/1.6.6</example>
567
+ <example>Darwin/11.4.2, UPnP/1.0, Portable SDK for UPnP devices/1.6.6</example>
568
+ <example>Darwin/11.4.0, UPnP/1.0, Portable SDK for UPnP devices/1.6.6</example>
569
+ <example>Darwin/11.0.0, UPnP/1.0, Portable SDK for UPnP devices/1.6.13</example>
570
+ <example>Darwin/10.8.0, UPnP/1.0, Portable SDK for UPnP devices/1.6.6</example>
571
+ <description>Portable SDK for UPnP Server</description>
572
+ <param pos="0" name="service.vendor" value="Unknown"/>
573
+ <param pos="0" name="service.product" value="libupnp"/>
574
+ <param pos="2" name="service.version"/>
575
+ <param pos="0" name="os.vendor" value="Apple"/>
576
+ <param pos="0" name="os.product" value="Mac OS X"/>
577
+ <param pos="1" name="os.version"/>
578
+ </fingerprint>
579
+
580
+ <fingerprint pattern="^UPnP/\S+, DLNADOC/\S+, Platinum/(\S+)$">
581
+ <example>UPnP/1.0, DLNADOC/1.50, Platinum/0.5.1</example>
582
+ <example>UPnP/1.0, DLNADOC/1.50, Platinum/0.6.6.0</example>
583
+ <example>UPnP/1.0, DLNADOC/1.50, Platinum/0.5.4.0</example>
584
+ <example>UPnP/1.0, DLNADOC/1.50, Platinum/0.5.3.0</example>
585
+ <description>Xbox Media Center UPnP Server</description>
586
+ <param pos="0" name="service.vendor" value="Microsoft"/>
587
+ <param pos="0" name="service.product" value="XBMC"/>
588
+ <param pos="1" name="service.version"/>
589
+ </fingerprint>
590
+ </fingerprints>