recog 2.3.20 → 2.3.23

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.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +8 -0
  3. data/.github/workflows/ci.yml +1 -1
  4. data/.github/workflows/verify.yml +89 -0
  5. data/.vscode/bin/monitor-recog-fingerprints.sh +54 -0
  6. data/.vscode/extensions.json +5 -0
  7. data/.vscode/settings.json +8 -0
  8. data/.vscode/tasks.json +77 -0
  9. data/CONTRIBUTING.md +8 -0
  10. data/README.md +17 -0
  11. data/bin/recog_standardize +28 -13
  12. data/bin/recog_verify +42 -8
  13. data/cpe-remap.yaml +62 -3
  14. data/features/data/schema_failure.xml +4 -0
  15. data/features/data/tests_with_failures.xml +6 -0
  16. data/features/support/hooks.rb +9 -0
  17. data/features/verify.feature +85 -21
  18. data/identifiers/fields.txt +6 -5
  19. data/identifiers/hw_device.txt +8 -0
  20. data/identifiers/hw_family.txt +8 -0
  21. data/identifiers/hw_product.txt +54 -0
  22. data/identifiers/os_device.txt +2 -0
  23. data/identifiers/os_family.txt +2 -0
  24. data/identifiers/os_product.txt +18 -2
  25. data/identifiers/service_product.txt +26 -0
  26. data/identifiers/vendor.txt +62 -1
  27. data/lib/recog/db.rb +2 -1
  28. data/lib/recog/fingerprint.rb +33 -6
  29. data/lib/recog/fingerprint_parse_error.rb +10 -0
  30. data/lib/recog/nizer.rb +1 -82
  31. data/lib/recog/verifier.rb +9 -9
  32. data/lib/recog/verify_reporter.rb +17 -6
  33. data/lib/recog/version.rb +1 -1
  34. data/requirements.txt +1 -1
  35. data/spec/data/external_example_fingerprint/hp_printer_ex_01.txt +1 -0
  36. data/spec/data/external_example_fingerprint/hp_printer_ex_02.txt +1 -0
  37. data/spec/data/external_example_fingerprint.xml +8 -0
  38. data/spec/data/external_example_illegal_path_fingerprint.xml +7 -0
  39. data/spec/lib/fingerprint_self_test_spec.rb +1 -0
  40. data/spec/lib/recog/db_spec.rb +84 -61
  41. data/spec/lib/recog/fingerprint_spec.rb +4 -4
  42. data/spec/lib/recog/verify_reporter_spec.rb +73 -4
  43. data/tools/dev/hooks/pre-commit +21 -0
  44. data/update_cpes.py +130 -37
  45. data/xml/apache_os.xml +98 -56
  46. data/xml/architecture.xml +15 -1
  47. data/xml/dhcp_vendor_class.xml +206 -0
  48. data/xml/dns_versionbind.xml +26 -13
  49. data/xml/favicons.xml +236 -47
  50. data/xml/fingerprints.xsd +9 -1
  51. data/xml/ftp_banners.xml +213 -197
  52. data/xml/h323_callresp.xml +101 -101
  53. data/xml/hp_pjl_id.xml +84 -84
  54. data/xml/html_title.xml +715 -45
  55. data/xml/http_cookies.xml +143 -80
  56. data/xml/http_servers.xml +510 -310
  57. data/xml/http_wwwauth.xml +177 -75
  58. data/xml/imap_banners.xml +10 -10
  59. data/xml/mdns_device-info_txt.xml +421 -26
  60. data/xml/mysql_banners.xml +3 -2
  61. data/xml/nntp_banners.xml +12 -9
  62. data/xml/ntp_banners.xml +97 -97
  63. data/xml/operating_system.xml +98 -83
  64. data/xml/pop_banners.xml +27 -27
  65. data/xml/rsh_resp.xml +3 -3
  66. data/xml/sip_banners.xml +46 -8
  67. data/xml/sip_user_agents.xml +180 -27
  68. data/xml/smb_native_lm.xml +5 -5
  69. data/xml/smb_native_os.xml +28 -25
  70. data/xml/smtp_banners.xml +258 -254
  71. data/xml/smtp_ehlo.xml +1 -1
  72. data/xml/smtp_help.xml +11 -11
  73. data/xml/smtp_noop.xml +2 -2
  74. data/xml/snmp_sysdescr.xml +1554 -1429
  75. data/xml/snmp_sysobjid.xml +27 -27
  76. data/xml/ssh_banners.xml +27 -20
  77. data/xml/telnet_banners.xml +256 -57
  78. data/xml/tls_jarm.xml +48 -6
  79. data/xml/x11_banners.xml +3 -3
  80. data/xml/x509_issuers.xml +69 -2
  81. data/xml/x509_subjects.xml +144 -33
  82. metadata +24 -4
  83. data/lib/recog/verifier_factory.rb +0 -13
@@ -14,6 +14,16 @@
14
14
  version of OS X plus 4. E.g. osxvers=13 means OS X 10.9
15
15
  -->
16
16
 
17
+ <fingerprint pattern="^osxvers=21">
18
+ <description>OS X 12.0 (Monterey)</description>
19
+ <example>osxvers=21</example>
20
+ <param pos="0" name="os.vendor" value="Apple"/>
21
+ <param pos="0" name="os.family" value="Mac OS X"/>
22
+ <param pos="0" name="os.product" value="Mac OS X"/>
23
+ <param pos="0" name="os.version" value="12.0"/>
24
+ <param pos="0" name="os.cpe23" value="cpe:/o:apple:mac_os_x:12.0"/>
25
+ </fingerprint>
26
+
17
27
  <fingerprint pattern="^osxvers=20">
18
28
  <description>OS X 11.0 (Big Sur)</description>
19
29
  <example>osxvers=20</example>
@@ -229,7 +239,7 @@
229
239
 
230
240
  <!-- TODO: Break this down into specific models and generations -->
231
241
 
232
- <fingerprint pattern="^model=(?:AirPort6|TimeCapsule).*$">
242
+ <fingerprint pattern="^model=(?:AirPort6|TimeCapsule)">
233
243
  <description>Time Capsule</description>
234
244
  <example>model=AirPort6</example>
235
245
  <example>model=AirPort6,106</example>
@@ -259,6 +269,7 @@
259
269
  <param pos="0" name="hw.family" value="MacBook Pro"/>
260
270
  <param pos="0" name="hw.product" value="MacBook Pro (13-inch, M1, 2020)"/>
261
271
  <param pos="0" name="hw.device" value="Laptop"/>
272
+ <param pos="0" name="hw.cpe23" value="cpe:/h:apple:macbook_pro:-"/>
262
273
  </fingerprint>
263
274
 
264
275
  <fingerprint pattern="^model=MacBookPro16,1$">
@@ -272,6 +283,7 @@
272
283
  <param pos="0" name="hw.family" value="MacBook Pro"/>
273
284
  <param pos="0" name="hw.product" value="MacBook Pro (16-inch, 2019)"/>
274
285
  <param pos="0" name="hw.device" value="Laptop"/>
286
+ <param pos="0" name="hw.cpe23" value="cpe:/h:apple:macbook_pro:-"/>
275
287
  </fingerprint>
276
288
 
277
289
  <fingerprint pattern="^model=MacBookPro16,[23]$">
@@ -286,6 +298,7 @@
286
298
  <param pos="0" name="hw.family" value="MacBook Pro"/>
287
299
  <param pos="0" name="hw.product" value="MacBook Pro (13-inch, 2020)"/>
288
300
  <param pos="0" name="hw.device" value="Laptop"/>
301
+ <param pos="0" name="hw.cpe23" value="cpe:/h:apple:macbook_pro:-"/>
289
302
  </fingerprint>
290
303
 
291
304
  <fingerprint pattern="^model=MacBookPro15,4$">
@@ -299,6 +312,7 @@
299
312
  <param pos="0" name="hw.family" value="MacBook Pro"/>
300
313
  <param pos="0" name="hw.product" value="MacBook Pro (13-inch, 2019, Two Thunderbolt 3 ports)"/>
301
314
  <param pos="0" name="hw.device" value="Laptop"/>
315
+ <param pos="0" name="hw.cpe23" value="cpe:/h:apple:macbook_pro:-"/>
302
316
  </fingerprint>
303
317
 
304
318
  <fingerprint pattern="^model=MacBookPro15,3$">
@@ -312,6 +326,7 @@
312
326
  <param pos="0" name="hw.family" value="MacBook Pro"/>
313
327
  <param pos="0" name="hw.product" value="MacBook Pro (15-inch, 2019)"/>
314
328
  <param pos="0" name="hw.device" value="Laptop"/>
329
+ <param pos="0" name="hw.cpe23" value="cpe:/h:apple:macbook_pro:-"/>
315
330
  </fingerprint>
316
331
 
317
332
  <fingerprint pattern="^model=MacBookPro15,2$">
@@ -325,6 +340,7 @@
325
340
  <param pos="0" name="hw.family" value="MacBook Pro"/>
326
341
  <param pos="0" name="hw.product" value="MacBook Pro (13-inch, 2018, Four Thunderbolt 3 ports)"/>
327
342
  <param pos="0" name="hw.device" value="Laptop"/>
343
+ <param pos="0" name="hw.cpe23" value="cpe:/h:apple:macbook_pro:-"/>
328
344
  </fingerprint>
329
345
 
330
346
  <fingerprint pattern="^model=MacBookPro15,1$">
@@ -338,6 +354,7 @@
338
354
  <param pos="0" name="hw.family" value="MacBook Pro"/>
339
355
  <param pos="0" name="hw.product" value="MacBook Pro (15-inch, 2018)"/>
340
356
  <param pos="0" name="hw.device" value="Laptop"/>
357
+ <param pos="0" name="hw.cpe23" value="cpe:/h:apple:macbook_pro:-"/>
341
358
  </fingerprint>
342
359
 
343
360
  <fingerprint pattern="^model=MacBookPro14,3$">
@@ -429,6 +446,7 @@
429
446
  <param pos="0" name="hw.family" value="MacBook Pro"/>
430
447
  <param pos="0" name="hw.product" value="MacBook Pro (Retina, 13-inch, Early 2015)"/>
431
448
  <param pos="0" name="hw.device" value="Laptop"/>
449
+ <param pos="0" name="hw.cpe23" value="cpe:/h:apple:macbook_pro:-"/>
432
450
  </fingerprint>
433
451
 
434
452
  <fingerprint pattern="^model=MacBookPro11,[45]$">
@@ -443,6 +461,7 @@
443
461
  <param pos="0" name="hw.family" value="MacBook Pro"/>
444
462
  <param pos="0" name="hw.product" value="MacBook Pro (Retina, 15-inch, Mid 2015)"/>
445
463
  <param pos="0" name="hw.device" value="Laptop"/>
464
+ <param pos="0" name="hw.cpe23" value="cpe:/h:apple:macbook_pro:-"/>
446
465
  </fingerprint>
447
466
 
448
467
  <fingerprint pattern="^model=MacBookPro11,3$">
@@ -746,6 +765,7 @@
746
765
  <param pos="0" name="hw.family" value="MacBook"/>
747
766
  <param pos="0" name="hw.product" value="MacBook Air (M1, 2020)"/>
748
767
  <param pos="0" name="hw.device" value="Laptop"/>
768
+ <param pos="0" name="hw.cpe23" value="cpe:/h:apple:macbook_air:-"/>
749
769
  </fingerprint>
750
770
 
751
771
  <fingerprint pattern="^model=MacBookAir9,1$">
@@ -759,6 +779,7 @@
759
779
  <param pos="0" name="hw.family" value="MacBook"/>
760
780
  <param pos="0" name="hw.product" value="MacBook Air (Retina, 13-inch, 2020)"/>
761
781
  <param pos="0" name="hw.device" value="Laptop"/>
782
+ <param pos="0" name="hw.cpe23" value="cpe:/h:apple:macbook_air:-"/>
762
783
  </fingerprint>
763
784
 
764
785
  <fingerprint pattern="^model=MacBookAir8,2$">
@@ -772,6 +793,7 @@
772
793
  <param pos="0" name="hw.family" value="MacBook"/>
773
794
  <param pos="0" name="hw.product" value="MacBook Air (Retina, 13-inch, 2019)"/>
774
795
  <param pos="0" name="hw.device" value="Laptop"/>
796
+ <param pos="0" name="hw.cpe23" value="cpe:/h:apple:macbook_air:-"/>
775
797
  </fingerprint>
776
798
 
777
799
  <fingerprint pattern="^model=MacBookAir8,1$">
@@ -785,6 +807,7 @@
785
807
  <param pos="0" name="hw.family" value="MacBook"/>
786
808
  <param pos="0" name="hw.product" value="MacBook Air (Retina, 13-inch, 2018)"/>
787
809
  <param pos="0" name="hw.device" value="Laptop"/>
810
+ <param pos="0" name="hw.cpe23" value="cpe:/h:apple:macbook_air:-"/>
788
811
  </fingerprint>
789
812
 
790
813
  <fingerprint pattern="^model=MacBookAir7,2$">
@@ -798,6 +821,7 @@
798
821
  <param pos="0" name="hw.family" value="MacBook"/>
799
822
  <param pos="0" name="hw.product" value="MacBook Air (13-inch, 2017)"/>
800
823
  <param pos="0" name="hw.device" value="Laptop"/>
824
+ <param pos="0" name="hw.cpe23" value="cpe:/h:apple:macbook_air:-"/>
801
825
  </fingerprint>
802
826
 
803
827
  <fingerprint pattern="^model=MacBookAir7,1$">
@@ -1225,6 +1249,34 @@
1225
1249
 
1226
1250
  <!-- iMAC - Reference for the following: https://support.apple.com/en-us/HT201634 -->
1227
1251
 
1252
+ <fingerprint pattern="^model=(?:J457AP|iMac21,2)$">
1253
+ <description>iMac (24-inch, M1, 2021) with Two Thunderbolt / USB 4 port</description>
1254
+ <example>model=iMac21,2</example>
1255
+ <example>model=J457AP</example>
1256
+ <param pos="0" name="os.vendor" value="Apple"/>
1257
+ <param pos="0" name="os.family" value="Mac OS X"/>
1258
+ <param pos="0" name="os.product" value="Mac OS X"/>
1259
+ <param pos="0" name="os.cpe23" value="cpe:/o:apple:mac_os_x:-"/>
1260
+ <param pos="0" name="hw.vendor" value="Apple"/>
1261
+ <param pos="0" name="hw.family" value="iMac"/>
1262
+ <param pos="0" name="hw.product" value="iMac (24-inch, M1, 2021)"/>
1263
+ <param pos="0" name="hw.device" value="Desktop"/>
1264
+ </fingerprint>
1265
+
1266
+ <fingerprint pattern="^model=(?:J456AP|iMac21,1)$">
1267
+ <description>iMac (24-inch, M1, 2021) with Two Thunderbolt / USB 4 ports and Two USB 3 ports</description>
1268
+ <example>model=iMac21,1</example>
1269
+ <example>model=J456AP</example>
1270
+ <param pos="0" name="os.vendor" value="Apple"/>
1271
+ <param pos="0" name="os.family" value="Mac OS X"/>
1272
+ <param pos="0" name="os.product" value="Mac OS X"/>
1273
+ <param pos="0" name="os.cpe23" value="cpe:/o:apple:mac_os_x:-"/>
1274
+ <param pos="0" name="hw.vendor" value="Apple"/>
1275
+ <param pos="0" name="hw.family" value="iMac"/>
1276
+ <param pos="0" name="hw.product" value="iMac (24-inch, M1, 2021)"/>
1277
+ <param pos="0" name="hw.device" value="Desktop"/>
1278
+ </fingerprint>
1279
+
1228
1280
  <fingerprint pattern="^model=iMac20,1$">
1229
1281
  <description>iMac (Retina 5K, 27-inch, 2020)</description>
1230
1282
  <example>model=iMac20,1</example>
@@ -1236,6 +1288,7 @@
1236
1288
  <param pos="0" name="hw.family" value="iMac"/>
1237
1289
  <param pos="0" name="hw.product" value="iMac (Retina 5K, 27-inch, 2020)"/>
1238
1290
  <param pos="0" name="hw.device" value="Desktop"/>
1291
+ <param pos="0" name="hw.cpe23" value="cpe:/h:apple:imac:-"/>
1239
1292
  </fingerprint>
1240
1293
 
1241
1294
  <fingerprint pattern="^model=iMac19,1$">
@@ -1249,6 +1302,7 @@
1249
1302
  <param pos="0" name="hw.family" value="iMac"/>
1250
1303
  <param pos="0" name="hw.product" value="iMac (Retina 5K, 27-inch, 2019)"/>
1251
1304
  <param pos="0" name="hw.device" value="Desktop"/>
1305
+ <param pos="0" name="hw.cpe23" value="cpe:/h:apple:imac:-"/>
1252
1306
  </fingerprint>
1253
1307
 
1254
1308
  <fingerprint pattern="^model=iMac19,2$">
@@ -1262,6 +1316,7 @@
1262
1316
  <param pos="0" name="hw.family" value="iMac"/>
1263
1317
  <param pos="0" name="hw.product" value="iMac (Retina 4K, 21.5-inch, 2019)"/>
1264
1318
  <param pos="0" name="hw.device" value="Desktop"/>
1319
+ <param pos="0" name="hw.cpe23" value="cpe:/h:apple:imac:-"/>
1265
1320
  </fingerprint>
1266
1321
 
1267
1322
  <fingerprint pattern="^model=iMacPro1,1$">
@@ -1288,6 +1343,7 @@
1288
1343
  <param pos="0" name="hw.family" value="iMac"/>
1289
1344
  <param pos="0" name="hw.product" value="iMac (Retina 5K, 27-inch, 2017)"/>
1290
1345
  <param pos="0" name="hw.device" value="Desktop"/>
1346
+ <param pos="0" name="hw.cpe23" value="cpe:/h:apple:imac:-"/>
1291
1347
  </fingerprint>
1292
1348
 
1293
1349
  <fingerprint pattern="^model=iMac18,2$">
@@ -1539,10 +1595,11 @@
1539
1595
 
1540
1596
  <!-- iPad Pro - Reference for the following: https://www.theiphonewiki.com/ -->
1541
1597
 
1542
- <fingerprint pattern="^model=J42[01]AP$">
1598
+ <fingerprint pattern="^model=(?:J42[01]AP|iPad8,11)$">
1543
1599
  <description>iPad Pro (12.9-inch, 4th generation)</description>
1544
1600
  <example>model=J420AP</example>
1545
1601
  <example>model=J421AP</example>
1602
+ <example>model=iPad8,11</example>
1546
1603
  <param pos="0" name="os.vendor" value="Apple"/>
1547
1604
  <param pos="0" name="os.family" value="iOS"/>
1548
1605
  <param pos="0" name="os.product" value="iOS"/>
@@ -1553,9 +1610,10 @@
1553
1610
  <param pos="0" name="hw.device" value="Tablet"/>
1554
1611
  </fingerprint>
1555
1612
 
1556
- <fingerprint pattern="^model=J41[78]AP$">
1613
+ <fingerprint pattern="^model=(?:J41[78]AP|iPad8,10)$">
1557
1614
  <description>iPad Pro (11-inch, 2nd generation)</description>
1558
1615
  <example>model=J417AP</example>
1616
+ <example>model=iPad8,10</example>
1559
1617
  <param pos="0" name="os.vendor" value="Apple"/>
1560
1618
  <param pos="0" name="os.family" value="iOS"/>
1561
1619
  <param pos="0" name="os.product" value="iOS"/>
@@ -1566,10 +1624,31 @@
1566
1624
  <param pos="0" name="hw.device" value="Tablet"/>
1567
1625
  </fingerprint>
1568
1626
 
1569
- <fingerprint pattern="^model=J32[01]x?AP$">
1627
+ <fingerprint pattern="^model=(?:J51[78]x?AP|iPad13,[4567])$">
1628
+ <description>iPad Pro (11-inch, 3rd generation)</description>
1629
+ <example>model=J517AP</example>
1630
+ <example>model=J517xAP</example>
1631
+ <example>model=J518AP</example>
1632
+ <example>model=J518xAP</example>
1633
+ <example>model=iPad13,4</example>
1634
+ <example>model=iPad13,5</example>
1635
+ <example>model=iPad13,6</example>
1636
+ <example>model=iPad13,7</example>
1637
+ <param pos="0" name="os.vendor" value="Apple"/>
1638
+ <param pos="0" name="os.family" value="iOS"/>
1639
+ <param pos="0" name="os.product" value="iOS"/>
1640
+ <param pos="0" name="os.cpe23" value="cpe:/o:apple:iphone_os:-"/>
1641
+ <param pos="0" name="hw.vendor" value="Apple"/>
1642
+ <param pos="0" name="hw.family" value="iPad Pro"/>
1643
+ <param pos="0" name="hw.product" value="iPad Pro (11-inch, 3rd generation)"/>
1644
+ <param pos="0" name="hw.device" value="Tablet"/>
1645
+ </fingerprint>
1646
+
1647
+ <fingerprint pattern="^model=(?:J32[01]x?AP|iPad8,5)$">
1570
1648
  <description>iPad Pro (12.9-inch, 3rd generation)</description>
1571
1649
  <example>model=J320AP</example>
1572
1650
  <example>model=J321xAP</example>
1651
+ <example>model=iPad8,5</example>
1573
1652
  <param pos="0" name="os.vendor" value="Apple"/>
1574
1653
  <param pos="0" name="os.family" value="iOS"/>
1575
1654
  <param pos="0" name="os.product" value="iOS"/>
@@ -1580,10 +1659,11 @@
1580
1659
  <param pos="0" name="hw.device" value="Tablet"/>
1581
1660
  </fingerprint>
1582
1661
 
1583
- <fingerprint pattern="^model=J31[78]x?AP$">
1662
+ <fingerprint pattern="^model=(?:J31[78]x?AP|iPad8,1)$">
1584
1663
  <description>iPad Pro (11-inch)</description>
1585
1664
  <example>model=J317AP</example>
1586
1665
  <example>model=J318xAP</example>
1666
+ <example>model=iPad8,1</example>
1587
1667
  <param pos="0" name="os.vendor" value="Apple"/>
1588
1668
  <param pos="0" name="os.family" value="iOS"/>
1589
1669
  <param pos="0" name="os.product" value="iOS"/>
@@ -1651,10 +1731,59 @@
1651
1731
 
1652
1732
  <!-- iPad -->
1653
1733
 
1654
- <fingerprint pattern="^model=J7[12]bAP$">
1734
+ <fingerprint pattern="^model=(?:J18[12]AP|iPad12,[12])$">
1735
+ <description>iPad (9th generation)</description>
1736
+ <example>model=J181AP</example>
1737
+ <example>model=J182AP</example>
1738
+ <example>model=iPad12,1</example>
1739
+ <example>model=iPad12,2</example>
1740
+ <param pos="0" name="os.vendor" value="Apple"/>
1741
+ <param pos="0" name="os.family" value="iOS"/>
1742
+ <param pos="0" name="os.product" value="iOS"/>
1743
+ <param pos="0" name="os.cpe23" value="cpe:/o:apple:iphone_os:-"/>
1744
+ <param pos="0" name="hw.vendor" value="Apple"/>
1745
+ <param pos="0" name="hw.family" value="iPad"/>
1746
+ <param pos="0" name="hw.product" value="iPad (9th generation)"/>
1747
+ <param pos="0" name="hw.device" value="Tablet"/>
1748
+ </fingerprint>
1749
+
1750
+ <fingerprint pattern="^model=(?:J17[12]aAP|iPad11,[67])$">
1751
+ <description>iPad (8th generation)</description>
1752
+ <example>model=J172aAP</example>
1753
+ <example>model=J171aAP</example>
1754
+ <example>model=iPad11,6</example>
1755
+ <example>model=iPad11,7</example>
1756
+ <param pos="0" name="os.vendor" value="Apple"/>
1757
+ <param pos="0" name="os.family" value="iOS"/>
1758
+ <param pos="0" name="os.product" value="iOS"/>
1759
+ <param pos="0" name="os.cpe23" value="cpe:/o:apple:iphone_os:-"/>
1760
+ <param pos="0" name="hw.vendor" value="Apple"/>
1761
+ <param pos="0" name="hw.family" value="iPad"/>
1762
+ <param pos="0" name="hw.product" value="iPad (8th generation)"/>
1763
+ <param pos="0" name="hw.device" value="Tablet"/>
1764
+ </fingerprint>
1765
+
1766
+ <fingerprint pattern="^model=(?:J17[12]AP|iPad7,1[12])$">
1767
+ <description>iPad (7th generation)</description>
1768
+ <example>model=J171AP</example>
1769
+ <example>model=J172AP</example>
1770
+ <example>model=iPad7,11</example>
1771
+ <example>model=iPad7,12</example>
1772
+ <param pos="0" name="os.vendor" value="Apple"/>
1773
+ <param pos="0" name="os.family" value="iOS"/>
1774
+ <param pos="0" name="os.product" value="iOS"/>
1775
+ <param pos="0" name="os.cpe23" value="cpe:/o:apple:iphone_os:-"/>
1776
+ <param pos="0" name="hw.vendor" value="Apple"/>
1777
+ <param pos="0" name="hw.family" value="iPad"/>
1778
+ <param pos="0" name="hw.product" value="iPad (7th generation)"/>
1779
+ <param pos="0" name="hw.device" value="Tablet"/>
1780
+ </fingerprint>
1781
+
1782
+ <fingerprint pattern="^model=(?:J7[12]bAP|iPad7,5)$">
1655
1783
  <description>iPad (6th generation)</description>
1656
1784
  <example>model=J72bAP</example>
1657
1785
  <example>model=J71bAP</example>
1786
+ <example>model=iPad7,5</example>
1658
1787
  <param pos="0" name="os.vendor" value="Apple"/>
1659
1788
  <param pos="0" name="os.family" value="iOS"/>
1660
1789
  <param pos="0" name="os.product" value="iOS"/>
@@ -1665,9 +1794,11 @@
1665
1794
  <param pos="0" name="hw.device" value="Tablet"/>
1666
1795
  </fingerprint>
1667
1796
 
1668
- <fingerprint pattern="^model=J71[ts]AP$">
1797
+ <fingerprint pattern="^model=(?:J71[ts]AP|iPad6,11)$">
1669
1798
  <description>iPad (5th generation)</description>
1670
1799
  <example>model=J71tAP</example>
1800
+ <example>model=J71sAP</example>
1801
+ <example>model=iPad6,11</example>
1671
1802
  <param pos="0" name="os.vendor" value="Apple"/>
1672
1803
  <param pos="0" name="os.family" value="iOS"/>
1673
1804
  <param pos="0" name="os.product" value="iOS"/>
@@ -1693,6 +1824,22 @@
1693
1824
 
1694
1825
  <!-- iPad Air -->
1695
1826
 
1827
+ <fingerprint pattern="^model=(?:J30[78]AP|iPad13,[12])$">
1828
+ <description>iPad Air (4th generation)</description>
1829
+ <example>model=J307AP</example>
1830
+ <example>model=J308AP</example>
1831
+ <example>model=iPad13,1</example>
1832
+ <example>model=iPad13,2</example>
1833
+ <param pos="0" name="os.vendor" value="Apple"/>
1834
+ <param pos="0" name="os.family" value="iOS"/>
1835
+ <param pos="0" name="os.product" value="iOS"/>
1836
+ <param pos="0" name="os.cpe23" value="cpe:/o:apple:iphone_os:-"/>
1837
+ <param pos="0" name="hw.vendor" value="Apple"/>
1838
+ <param pos="0" name="hw.family" value="iPad Air"/>
1839
+ <param pos="0" name="hw.product" value="iPad Air (4th generation)"/>
1840
+ <param pos="0" name="hw.device" value="Tablet"/>
1841
+ </fingerprint>
1842
+
1696
1843
  <fingerprint pattern="^model=J21[78]AP$">
1697
1844
  <description>iPad Air (3rd generation)</description>
1698
1845
  <example>model=J218AP</example>
@@ -1706,9 +1853,10 @@
1706
1853
  <param pos="0" name="hw.device" value="Tablet"/>
1707
1854
  </fingerprint>
1708
1855
 
1709
- <fingerprint pattern="^model=J8[12]AP$">
1856
+ <fingerprint pattern="^model=(?:J8[12]AP|iPad5,3)$">
1710
1857
  <description>iPad Air 2</description>
1711
1858
  <example>model=J81AP</example>
1859
+ <example>model=iPad5,3</example>
1712
1860
  <param pos="0" name="os.vendor" value="Apple"/>
1713
1861
  <param pos="0" name="os.family" value="iOS"/>
1714
1862
  <param pos="0" name="os.product" value="iOS"/>
@@ -1734,6 +1882,22 @@
1734
1882
 
1735
1883
  <!-- iPad mini -->
1736
1884
 
1885
+ <fingerprint pattern="^model=(?:J31[01]AP|iPad14,[12])$">
1886
+ <description>iPad mini (6th generation)</description>
1887
+ <example>model=J310AP</example>
1888
+ <example>model=J311AP</example>
1889
+ <example>model=iPad14,1</example>
1890
+ <example>model=iPad14,2</example>
1891
+ <param pos="0" name="os.vendor" value="Apple"/>
1892
+ <param pos="0" name="os.family" value="iOS"/>
1893
+ <param pos="0" name="os.product" value="iOS"/>
1894
+ <param pos="0" name="os.cpe23" value="cpe:/o:apple:iphone_os:-"/>
1895
+ <param pos="0" name="hw.vendor" value="Apple"/>
1896
+ <param pos="0" name="hw.family" value="iPad mini"/>
1897
+ <param pos="0" name="hw.product" value="iPad mini (6th generation)"/>
1898
+ <param pos="0" name="hw.device" value="Tablet"/>
1899
+ </fingerprint>
1900
+
1737
1901
  <fingerprint pattern="^model=J21[01]AP$">
1738
1902
  <description>iPad mini (5th generation)</description>
1739
1903
  <example>model=J210AP</example>
@@ -1747,9 +1911,10 @@
1747
1911
  <param pos="0" name="hw.device" value="Tablet"/>
1748
1912
  </fingerprint>
1749
1913
 
1750
- <fingerprint pattern="^model=J9[67]AP$">
1914
+ <fingerprint pattern="^model=(?:J9[67]AP|iPad5,2)$">
1751
1915
  <description>iPad mini 4</description>
1752
1916
  <example>model=J97AP</example>
1917
+ <example>model=iPad5,2</example>
1753
1918
  <param pos="0" name="os.vendor" value="Apple"/>
1754
1919
  <param pos="0" name="os.family" value="iOS"/>
1755
1920
  <param pos="0" name="os.product" value="iOS"/>
@@ -1760,9 +1925,10 @@
1760
1925
  <param pos="0" name="hw.device" value="Tablet"/>
1761
1926
  </fingerprint>
1762
1927
 
1763
- <fingerprint pattern="^model=J8[567]mAP$">
1928
+ <fingerprint pattern="^model=(?:J8[567]mAP|iPad4,9)$">
1764
1929
  <description>iPad mini 3</description>
1765
1930
  <example>model=J87mAP</example>
1931
+ <example>model=iPad4,9</example>
1766
1932
  <param pos="0" name="os.vendor" value="Apple"/>
1767
1933
  <param pos="0" name="os.family" value="iOS"/>
1768
1934
  <param pos="0" name="os.product" value="iOS"/>
@@ -1802,10 +1968,25 @@
1802
1968
 
1803
1969
  <!-- HomePod -->
1804
1970
 
1805
- <fingerprint pattern="^model=B238a?AP$">
1971
+ <fingerprint pattern="^model=(?:B520AP|AudioAccessory5,1)$">
1972
+ <description>HomePod mini</description>
1973
+ <example>model=B520AP</example>
1974
+ <example>model=AudioAccessory5,1</example>
1975
+ <param pos="0" name="os.vendor" value="Apple"/>
1976
+ <param pos="0" name="os.family" value="audioOS"/>
1977
+ <param pos="0" name="os.product" value="audioOS"/>
1978
+ <param pos="0" name="hw.vendor" value="Apple"/>
1979
+ <param pos="0" name="hw.family" value="HomePod"/>
1980
+ <param pos="0" name="hw.product" value="HomePod mini"/>
1981
+ <param pos="0" name="hw.device" value="Media Server"/>
1982
+ </fingerprint>
1983
+
1984
+ <fingerprint pattern="^model=(?:B238a?AP|AudioAccessory1,[12])$">
1806
1985
  <description>HomePod</description>
1807
1986
  <example>model=B238aAP</example>
1808
1987
  <example>model=B238AP</example>
1988
+ <example>model=AudioAccessory1,1</example>
1989
+ <example>model=AudioAccessory1,2</example>
1809
1990
  <param pos="0" name="os.vendor" value="Apple"/>
1810
1991
  <param pos="0" name="os.family" value="audioOS"/>
1811
1992
  <param pos="0" name="os.product" value="audioOS"/>
@@ -1817,6 +1998,22 @@
1817
1998
 
1818
1999
  <!-- Apple TV -->
1819
2000
 
2001
+ <fingerprint pattern="^model=(?:J305AP|AppleTV11,1)$">
2002
+ <description>Apple TV 4K (2nd generation)</description>
2003
+ <example>model=J305AP</example>
2004
+ <example>model=AppleTV11,1</example>
2005
+ <param pos="0" name="os.vendor" value="Apple"/>
2006
+ <param pos="0" name="os.family" value="tvOS"/>
2007
+ <param pos="0" name="os.product" value="tvOS"/>
2008
+ <param pos="0" name="os.certainty" value="0.10"/>
2009
+ <param pos="0" name="os.cpe23" value="cpe:/o:apple:tvos:-"/>
2010
+ <param pos="0" name="hw.vendor" value="Apple"/>
2011
+ <param pos="0" name="hw.family" value="Apple TV"/>
2012
+ <param pos="0" name="hw.product" value="Apple TV 4K (2nd generation)"/>
2013
+ <param pos="0" name="hw.device" value="Media Server"/>
2014
+ <param pos="0" name="hw.certainty" value="0.10"/>
2015
+ </fingerprint>
2016
+
1820
2017
  <fingerprint pattern="^model=(?:J105aAP|AppleTV6,2)$">
1821
2018
  <description>Apple TV 4K</description>
1822
2019
  <example>model=J105aAP</example>
@@ -1824,11 +2021,13 @@
1824
2021
  <param pos="0" name="os.vendor" value="Apple"/>
1825
2022
  <param pos="0" name="os.family" value="tvOS"/>
1826
2023
  <param pos="0" name="os.product" value="tvOS"/>
2024
+ <param pos="0" name="os.certainty" value="0.10"/>
1827
2025
  <param pos="0" name="os.cpe23" value="cpe:/o:apple:tvos:-"/>
1828
2026
  <param pos="0" name="hw.vendor" value="Apple"/>
1829
2027
  <param pos="0" name="hw.family" value="Apple TV"/>
1830
2028
  <param pos="0" name="hw.product" value="Apple TV 4K"/>
1831
2029
  <param pos="0" name="hw.device" value="Media Server"/>
2030
+ <param pos="0" name="hw.certainty" value="0.10"/>
1832
2031
  </fingerprint>
1833
2032
 
1834
2033
  <fingerprint pattern="^model=(?:J42dAP|AppleTV5,3)$">
@@ -1838,11 +2037,13 @@
1838
2037
  <param pos="0" name="os.vendor" value="Apple"/>
1839
2038
  <param pos="0" name="os.family" value="tvOS"/>
1840
2039
  <param pos="0" name="os.product" value="tvOS"/>
2040
+ <param pos="0" name="os.certainty" value="0.10"/>
1841
2041
  <param pos="0" name="os.cpe23" value="cpe:/o:apple:tvos:-"/>
1842
2042
  <param pos="0" name="hw.vendor" value="Apple"/>
1843
2043
  <param pos="0" name="hw.family" value="Apple TV"/>
1844
2044
  <param pos="0" name="hw.product" value="Apple TV (4th generation)"/>
1845
2045
  <param pos="0" name="hw.device" value="Media Server"/>
2046
+ <param pos="0" name="hw.certainty" value="0.10"/>
1846
2047
  </fingerprint>
1847
2048
 
1848
2049
  <fingerprint pattern="^model=(?:J33[Ii]?AP|AppleTV3,[21])$">
@@ -1855,11 +2056,13 @@
1855
2056
  <param pos="0" name="os.vendor" value="Apple"/>
1856
2057
  <param pos="0" name="os.family" value="tvOS"/>
1857
2058
  <param pos="0" name="os.product" value="tvOS"/>
2059
+ <param pos="0" name="os.certainty" value="0.10"/>
1858
2060
  <param pos="0" name="os.cpe23" value="cpe:/o:apple:tvos:-"/>
1859
2061
  <param pos="0" name="hw.vendor" value="Apple"/>
1860
2062
  <param pos="0" name="hw.family" value="Apple TV"/>
1861
2063
  <param pos="0" name="hw.product" value="Apple TV (3rd generation)"/>
1862
2064
  <param pos="0" name="hw.device" value="Media Server"/>
2065
+ <param pos="0" name="hw.certainty" value="0.10"/>
1863
2066
  </fingerprint>
1864
2067
 
1865
2068
  <fingerprint pattern="^model=(?:K66AP|AppleTV2,1)$">
@@ -1869,19 +2072,78 @@
1869
2072
  <param pos="0" name="os.vendor" value="Apple"/>
1870
2073
  <param pos="0" name="os.family" value="tvOS"/>
1871
2074
  <param pos="0" name="os.product" value="tvOS"/>
2075
+ <param pos="0" name="os.certainty" value="0.10"/>
1872
2076
  <param pos="0" name="os.cpe23" value="cpe:/o:apple:tvos:-"/>
1873
2077
  <param pos="0" name="hw.vendor" value="Apple"/>
1874
2078
  <param pos="0" name="hw.family" value="Apple TV"/>
1875
2079
  <param pos="0" name="hw.product" value="Apple TV (2nd generation)"/>
1876
2080
  <param pos="0" name="hw.device" value="Media Server"/>
2081
+ <param pos="0" name="hw.certainty" value="0.10"/>
1877
2082
  </fingerprint>
1878
2083
 
1879
2084
  <!-- iPhones - Reference for the following: https://www.theiphonewiki.com/wiki/Category:Devices
1880
2085
  and http://phonedb.net/ -->
1881
2086
 
1882
- <fingerprint pattern="^model=D79AP$">
2087
+ <fingerprint pattern="^model=(?:D64AP|iPhone14,3)$">
2088
+ <description>iPhone 13 Pro Max</description>
2089
+ <example>model=D64AP</example>
2090
+ <example>model=iPhone14,3</example>
2091
+ <param pos="0" name="os.vendor" value="Apple"/>
2092
+ <param pos="0" name="os.family" value="iOS"/>
2093
+ <param pos="0" name="os.product" value="iOS"/>
2094
+ <param pos="0" name="os.cpe23" value="cpe:/o:apple:iphone_os:-"/>
2095
+ <param pos="0" name="hw.vendor" value="Apple"/>
2096
+ <param pos="0" name="hw.family" value="iPhone"/>
2097
+ <param pos="0" name="hw.product" value="iPhone 13 Pro Max"/>
2098
+ <param pos="0" name="hw.device" value="Mobile Phone"/>
2099
+ </fingerprint>
2100
+
2101
+ <fingerprint pattern="^model=(?:D63AP|iPhone14,2)$">
2102
+ <description>iPhone 13 Pro</description>
2103
+ <example>model=D63AP</example>
2104
+ <example>model=iPhone14,2</example>
2105
+ <param pos="0" name="os.vendor" value="Apple"/>
2106
+ <param pos="0" name="os.family" value="iOS"/>
2107
+ <param pos="0" name="os.product" value="iOS"/>
2108
+ <param pos="0" name="os.cpe23" value="cpe:/o:apple:iphone_os:-"/>
2109
+ <param pos="0" name="hw.vendor" value="Apple"/>
2110
+ <param pos="0" name="hw.family" value="iPhone"/>
2111
+ <param pos="0" name="hw.product" value="iPhone 13 Pro"/>
2112
+ <param pos="0" name="hw.device" value="Mobile Phone"/>
2113
+ </fingerprint>
2114
+
2115
+ <fingerprint pattern="^model=(?:D16AP|iPhone14,4)$">
2116
+ <description>iPhone 13 mini</description>
2117
+ <example>model=D16AP</example>
2118
+ <example>model=iPhone14,4</example>
2119
+ <param pos="0" name="os.vendor" value="Apple"/>
2120
+ <param pos="0" name="os.family" value="iOS"/>
2121
+ <param pos="0" name="os.product" value="iOS"/>
2122
+ <param pos="0" name="os.cpe23" value="cpe:/o:apple:iphone_os:-"/>
2123
+ <param pos="0" name="hw.vendor" value="Apple"/>
2124
+ <param pos="0" name="hw.family" value="iPhone"/>
2125
+ <param pos="0" name="hw.product" value="iPhone 13 mini"/>
2126
+ <param pos="0" name="hw.device" value="Mobile Phone"/>
2127
+ </fingerprint>
2128
+
2129
+ <fingerprint pattern="^model=(?:D17AP|iPhone14,5)$">
2130
+ <description>iPhone 13)</description>
2131
+ <example>model=D17AP</example>
2132
+ <example>model=iPhone14,5</example>
2133
+ <param pos="0" name="os.vendor" value="Apple"/>
2134
+ <param pos="0" name="os.family" value="iOS"/>
2135
+ <param pos="0" name="os.product" value="iOS"/>
2136
+ <param pos="0" name="os.cpe23" value="cpe:/o:apple:iphone_os:-"/>
2137
+ <param pos="0" name="hw.vendor" value="Apple"/>
2138
+ <param pos="0" name="hw.family" value="iPhone"/>
2139
+ <param pos="0" name="hw.product" value="iPhone 13"/>
2140
+ <param pos="0" name="hw.device" value="Mobile Phone"/>
2141
+ </fingerprint>
2142
+
2143
+ <fingerprint pattern="^model=(?:D79AP|iPhone12,8)$">
1883
2144
  <description>iPhone SE (2020)</description>
1884
2145
  <example>model=D79AP</example>
2146
+ <example>model=iPhone12,8</example>
1885
2147
  <param pos="0" name="os.vendor" value="Apple"/>
1886
2148
  <param pos="0" name="os.family" value="iOS"/>
1887
2149
  <param pos="0" name="os.product" value="iOS"/>
@@ -1892,9 +2154,10 @@
1892
2154
  <param pos="0" name="hw.device" value="Mobile Phone"/>
1893
2155
  </fingerprint>
1894
2156
 
1895
- <fingerprint pattern="^model=D54pAP$">
2157
+ <fingerprint pattern="^model=(?:D54pAP|iPhone13,4)$">
1896
2158
  <description>iPhone 12 Pro Max 5G</description>
1897
2159
  <example>model=D54pAP</example>
2160
+ <example>model=iPhone13,4</example>
1898
2161
  <param pos="0" name="os.vendor" value="Apple"/>
1899
2162
  <param pos="0" name="os.family" value="iOS"/>
1900
2163
  <param pos="0" name="os.product" value="iOS"/>
@@ -1905,9 +2168,10 @@
1905
2168
  <param pos="0" name="hw.device" value="Mobile Phone"/>
1906
2169
  </fingerprint>
1907
2170
 
1908
- <fingerprint pattern="^model=D53pAP$">
2171
+ <fingerprint pattern="^model=(?:D53pAP|iPhone13,3)$">
1909
2172
  <description>iPhone 12 Pro 5G</description>
1910
2173
  <example>model=D53pAP</example>
2174
+ <example>model=iPhone13,3</example>
1911
2175
  <param pos="0" name="os.vendor" value="Apple"/>
1912
2176
  <param pos="0" name="os.family" value="iOS"/>
1913
2177
  <param pos="0" name="os.product" value="iOS"/>
@@ -1918,9 +2182,10 @@
1918
2182
  <param pos="0" name="hw.device" value="Mobile Phone"/>
1919
2183
  </fingerprint>
1920
2184
 
1921
- <fingerprint pattern="^model=D53gAP$">
2185
+ <fingerprint pattern="^model=(?:D53gAP|iPhone13,2)$">
1922
2186
  <description>iPhone 12 5G</description>
1923
2187
  <example>model=D53gAP</example>
2188
+ <example>model=iPhone13,2</example>
1924
2189
  <param pos="0" name="os.vendor" value="Apple"/>
1925
2190
  <param pos="0" name="os.family" value="iOS"/>
1926
2191
  <param pos="0" name="os.product" value="iOS"/>
@@ -1931,10 +2196,11 @@
1931
2196
  <param pos="0" name="hw.device" value="Mobile Phone"/>
1932
2197
  </fingerprint>
1933
2198
 
1934
- <fingerprint pattern="^model=D52g?AP$">
2199
+ <fingerprint pattern="^model=(?:D52g?AP|Phone13,1)$">
1935
2200
  <description>iPhone 12 Mini 5G</description>
1936
2201
  <example>model=D52gAP</example>
1937
2202
  <example>model=D52AP</example>
2203
+ <example>model=Phone13,1</example>
1938
2204
  <param pos="0" name="os.vendor" value="Apple"/>
1939
2205
  <param pos="0" name="os.family" value="iOS"/>
1940
2206
  <param pos="0" name="os.product" value="iOS"/>
@@ -1945,10 +2211,11 @@
1945
2211
  <param pos="0" name="hw.device" value="Mobile Phone"/>
1946
2212
  </fingerprint>
1947
2213
 
1948
- <fingerprint pattern="^model=D431p?AP$">
2214
+ <fingerprint pattern="^model=(?:D431p?AP|iPhone12,5)$">
1949
2215
  <description>iPhone 11 Pro Max</description>
1950
2216
  <example>model=D431pAP</example>
1951
2217
  <example>model=D431AP</example>
2218
+ <example>model=iPhone12,5</example>
1952
2219
  <param pos="0" name="os.vendor" value="Apple"/>
1953
2220
  <param pos="0" name="os.family" value="iOS"/>
1954
2221
  <param pos="0" name="os.product" value="iOS"/>
@@ -1959,10 +2226,11 @@
1959
2226
  <param pos="0" name="hw.device" value="Mobile Phone"/>
1960
2227
  </fingerprint>
1961
2228
 
1962
- <fingerprint pattern="^model=D421p?AP$">
2229
+ <fingerprint pattern="^model=(?:D421p?AP|iPhone12,3)$">
1963
2230
  <description>iPhone 11 Pro</description>
1964
2231
  <example>model=D421pAP</example>
1965
2232
  <example>model=D421AP</example>
2233
+ <example>model=iPhone12,3</example>
1966
2234
  <param pos="0" name="os.vendor" value="Apple"/>
1967
2235
  <param pos="0" name="os.family" value="iOS"/>
1968
2236
  <param pos="0" name="os.product" value="iOS"/>
@@ -1973,10 +2241,26 @@
1973
2241
  <param pos="0" name="hw.device" value="Mobile Phone"/>
1974
2242
  </fingerprint>
1975
2243
 
1976
- <fingerprint pattern="^model=D331p?AP$">
2244
+ <fingerprint pattern="^model=(?:N104AP|iPhone12,1)$">
2245
+ <description>iPhone 11</description>
2246
+ <example>model=N104AP</example>
2247
+ <example>model=iPhone12,1</example>
2248
+ <param pos="0" name="os.vendor" value="Apple"/>
2249
+ <param pos="0" name="os.family" value="iOS"/>
2250
+ <param pos="0" name="os.product" value="iOS"/>
2251
+ <param pos="0" name="os.cpe23" value="cpe:/o:apple:iphone_os:-"/>
2252
+ <param pos="0" name="hw.vendor" value="Apple"/>
2253
+ <param pos="0" name="hw.family" value="iPhone"/>
2254
+ <param pos="0" name="hw.product" value="iPhone 11"/>
2255
+ <param pos="0" name="hw.device" value="Mobile Phone"/>
2256
+ </fingerprint>
2257
+
2258
+ <fingerprint pattern="^model=(?:D331p?AP|iPhone11,[46])$">
1977
2259
  <description>iPhone XS Max</description>
1978
2260
  <example>model=D331pAP</example>
1979
2261
  <example>model=D331AP</example>
2262
+ <example>model=iPhone11,6</example>
2263
+ <example>model=iPhone11,4</example>
1980
2264
  <param pos="0" name="os.vendor" value="Apple"/>
1981
2265
  <param pos="0" name="os.family" value="iOS"/>
1982
2266
  <param pos="0" name="os.product" value="iOS"/>
@@ -1987,9 +2271,10 @@
1987
2271
  <param pos="0" name="hw.device" value="Mobile Phone"/>
1988
2272
  </fingerprint>
1989
2273
 
1990
- <fingerprint pattern="^model=D321AP$">
2274
+ <fingerprint pattern="^model=(?:D321AP|iPhone11,2)$">
1991
2275
  <description>iPhone XS</description>
1992
2276
  <example>model=D321AP</example>
2277
+ <example>model=iPhone11,2</example>
1993
2278
  <param pos="0" name="os.vendor" value="Apple"/>
1994
2279
  <param pos="0" name="os.family" value="iOS"/>
1995
2280
  <param pos="0" name="os.product" value="iOS"/>
@@ -2000,9 +2285,10 @@
2000
2285
  <param pos="0" name="hw.device" value="Mobile Phone"/>
2001
2286
  </fingerprint>
2002
2287
 
2003
- <fingerprint pattern="^model=N841AP$">
2288
+ <fingerprint pattern="^model=(?:N841AP|iPhone11,8)$">
2004
2289
  <description>iPhone XR</description>
2005
2290
  <example>model=N841AP</example>
2291
+ <example>model=iPhone11,8</example>
2006
2292
  <param pos="0" name="os.vendor" value="Apple"/>
2007
2293
  <param pos="0" name="os.family" value="iOS"/>
2008
2294
  <param pos="0" name="os.product" value="iOS"/>
@@ -2013,10 +2299,12 @@
2013
2299
  <param pos="0" name="hw.device" value="Mobile Phone"/>
2014
2300
  </fingerprint>
2015
2301
 
2016
- <fingerprint pattern="^model=D221?AP$">
2302
+ <fingerprint pattern="^model=(?:D221?AP|iPhone10,[36])$">
2017
2303
  <description>iPhone X</description>
2018
2304
  <example>model=D221AP</example>
2019
2305
  <example>model=D22AP</example>
2306
+ <example>model=iPhone10,6</example>
2307
+ <example>model=iPhone10,3</example>
2020
2308
  <param pos="0" name="os.vendor" value="Apple"/>
2021
2309
  <param pos="0" name="os.family" value="iOS"/>
2022
2310
  <param pos="0" name="os.product" value="iOS"/>
@@ -2027,12 +2315,14 @@
2027
2315
  <param pos="0" name="hw.device" value="Mobile Phone"/>
2028
2316
  </fingerprint>
2029
2317
 
2030
- <fingerprint pattern="^model=D211?A?AP$">
2318
+ <fingerprint pattern="^model=(?:D211?A?AP|iPhone10,[25])$">
2031
2319
  <description>iPhone 8 Plus</description>
2032
2320
  <example>model=D21AP</example>
2033
2321
  <example>model=D21AAP</example>
2034
2322
  <example>model=D211AP</example>
2035
2323
  <example>model=D211AAP</example>
2324
+ <example>model=iPhone10,2</example>
2325
+ <example>model=iPhone10,5</example>
2036
2326
  <param pos="0" name="os.vendor" value="Apple"/>
2037
2327
  <param pos="0" name="os.family" value="iOS"/>
2038
2328
  <param pos="0" name="os.product" value="iOS"/>
@@ -2043,12 +2333,14 @@
2043
2333
  <param pos="0" name="hw.device" value="Mobile Phone"/>
2044
2334
  </fingerprint>
2045
2335
 
2046
- <fingerprint pattern="^model=D201?A?AP$">
2336
+ <fingerprint pattern="^model=(?:D201?A?AP|iPhone10,[14])$">
2047
2337
  <description>iPhone 8</description>
2048
2338
  <example>model=D20AP</example>
2049
2339
  <example>model=D20AAP</example>
2050
2340
  <example>model=D201AP</example>
2051
2341
  <example>model=D201AAP</example>
2342
+ <example>model=iPhone10,1</example>
2343
+ <example>model=iPhone10,4</example>
2052
2344
  <param pos="0" name="os.vendor" value="Apple"/>
2053
2345
  <param pos="0" name="os.family" value="iOS"/>
2054
2346
  <param pos="0" name="os.product" value="iOS"/>
@@ -2059,10 +2351,12 @@
2059
2351
  <param pos="0" name="hw.device" value="Mobile Phone"/>
2060
2352
  </fingerprint>
2061
2353
 
2062
- <fingerprint pattern="^model=D111?AP$">
2354
+ <fingerprint pattern="^model=(?:D111?AP|iPhone9,[24])$">
2063
2355
  <description>iPhone 7 Plus</description>
2064
2356
  <example>model=D11AP</example>
2065
2357
  <example>model=D111AP</example>
2358
+ <example>model=iPhone9,2</example>
2359
+ <example>model=iPhone9,4</example>
2066
2360
  <param pos="0" name="os.vendor" value="Apple"/>
2067
2361
  <param pos="0" name="os.family" value="iOS"/>
2068
2362
  <param pos="0" name="os.product" value="iOS"/>
@@ -2073,10 +2367,11 @@
2073
2367
  <param pos="0" name="hw.device" value="Mobile Phone"/>
2074
2368
  </fingerprint>
2075
2369
 
2076
- <fingerprint pattern="^model=D101?AP$">
2370
+ <fingerprint pattern="^model=(?:D101?AP$|iPhone9,3)">
2077
2371
  <description>iPhone 7</description>
2078
2372
  <example>model=D10AP</example>
2079
2373
  <example>model=D101AP</example>
2374
+ <example>model=iPhone9,3</example>
2080
2375
  <param pos="0" name="os.vendor" value="Apple"/>
2081
2376
  <param pos="0" name="os.family" value="iOS"/>
2082
2377
  <param pos="0" name="os.product" value="iOS"/>
@@ -2268,4 +2563,104 @@
2268
2563
  <param pos="0" name="hw.cpe23" value="cpe:/h:apple:iphone:-"/>
2269
2564
  </fingerprint>
2270
2565
 
2566
+ <!-- iPod -->
2567
+
2568
+ <fingerprint pattern="^model=(?:N112AP|iPod9,1)$">
2569
+ <description>iPod Touch (7th generation)</description>
2570
+ <example>model=N112AP</example>
2571
+ <example>model=iPod9,1</example>
2572
+ <param pos="0" name="os.vendor" value="Apple"/>
2573
+ <param pos="0" name="os.family" value="iOS"/>
2574
+ <param pos="0" name="os.product" value="iOS"/>
2575
+ <param pos="0" name="os.cpe23" value="cpe:/o:apple:iphone_os:-"/>
2576
+ <param pos="0" name="hw.vendor" value="Apple"/>
2577
+ <param pos="0" name="hw.family" value="iPod"/>
2578
+ <param pos="0" name="hw.product" value="iPod Touch (7th generation)"/>
2579
+ <param pos="0" name="hw.device" value="Media Player"/>
2580
+ </fingerprint>
2581
+
2582
+ <fingerprint pattern="^model=N102AP$">
2583
+ <description>iPod Touch (6th generation)</description>
2584
+ <example>model=N102AP</example>
2585
+ <param pos="0" name="os.vendor" value="Apple"/>
2586
+ <param pos="0" name="os.family" value="iOS"/>
2587
+ <param pos="0" name="os.product" value="iOS"/>
2588
+ <param pos="0" name="os.cpe23" value="cpe:/o:apple:iphone_os:-"/>
2589
+ <param pos="0" name="hw.vendor" value="Apple"/>
2590
+ <param pos="0" name="hw.family" value="iPod"/>
2591
+ <param pos="0" name="hw.product" value="iPod Touch (6th generation)"/>
2592
+ <param pos="0" name="hw.device" value="Media Player"/>
2593
+ </fingerprint>
2594
+
2595
+ <fingerprint pattern="^model=(?:N78a?AP|iPod5,1)$">
2596
+ <description>iPod Touch (5th generation)</description>
2597
+ <example>model=N78AP</example>
2598
+ <example>model=N78aAP</example>
2599
+ <example>model=iPod5,1</example>
2600
+ <param pos="0" name="os.vendor" value="Apple"/>
2601
+ <param pos="0" name="os.family" value="iOS"/>
2602
+ <param pos="0" name="os.product" value="iOS"/>
2603
+ <param pos="0" name="os.cpe23" value="cpe:/o:apple:iphone_os:-"/>
2604
+ <param pos="0" name="hw.vendor" value="Apple"/>
2605
+ <param pos="0" name="hw.family" value="iPod"/>
2606
+ <param pos="0" name="hw.product" value="iPod Touch (5th generation)"/>
2607
+ <param pos="0" name="hw.device" value="Media Player"/>
2608
+ </fingerprint>
2609
+
2610
+ <fingerprint pattern="^model=(?:N81AP|iPod4,1)$">
2611
+ <description>iPod Touch (4th generation)</description>
2612
+ <example>model=N81AP</example>
2613
+ <example>model=iPod4,1</example>
2614
+ <param pos="0" name="os.vendor" value="Apple"/>
2615
+ <param pos="0" name="os.family" value="iOS"/>
2616
+ <param pos="0" name="os.product" value="iOS"/>
2617
+ <param pos="0" name="os.cpe23" value="cpe:/o:apple:iphone_os:-"/>
2618
+ <param pos="0" name="hw.vendor" value="Apple"/>
2619
+ <param pos="0" name="hw.family" value="iPod"/>
2620
+ <param pos="0" name="hw.product" value="iPod Touch (4th generation)"/>
2621
+ <param pos="0" name="hw.device" value="Media Player"/>
2622
+ </fingerprint>
2623
+
2624
+ <fingerprint pattern="^model=(?:N18AP|iPod3,1)$">
2625
+ <description>iPod Touch (3rd generation)</description>
2626
+ <example>model=N18AP</example>
2627
+ <example>model=iPod3,1</example>
2628
+ <param pos="0" name="os.vendor" value="Apple"/>
2629
+ <param pos="0" name="os.family" value="iOS"/>
2630
+ <param pos="0" name="os.product" value="iOS"/>
2631
+ <param pos="0" name="os.cpe23" value="cpe:/o:apple:iphone_os:-"/>
2632
+ <param pos="0" name="hw.vendor" value="Apple"/>
2633
+ <param pos="0" name="hw.family" value="iPod"/>
2634
+ <param pos="0" name="hw.product" value="iPod Touch (3rd generation)"/>
2635
+ <param pos="0" name="hw.device" value="Media Player"/>
2636
+ </fingerprint>
2637
+
2638
+ <fingerprint pattern="^model=(?:N72AP|iPod2,1)$">
2639
+ <description>iPod Touch (2nd generation)</description>
2640
+ <example>model=N72AP</example>
2641
+ <example>model=iPod2,1</example>
2642
+ <param pos="0" name="os.vendor" value="Apple"/>
2643
+ <param pos="0" name="os.family" value="iOS"/>
2644
+ <param pos="0" name="os.product" value="iOS"/>
2645
+ <param pos="0" name="os.cpe23" value="cpe:/o:apple:iphone_os:-"/>
2646
+ <param pos="0" name="hw.vendor" value="Apple"/>
2647
+ <param pos="0" name="hw.family" value="iPod"/>
2648
+ <param pos="0" name="hw.product" value="iPod Touch (2nd generation)"/>
2649
+ <param pos="0" name="hw.device" value="Media Player"/>
2650
+ </fingerprint>
2651
+
2652
+ <fingerprint pattern="^model=(?:N45AP|iPod1,1)$">
2653
+ <description>iPod Touch (1st generation)</description>
2654
+ <example>model=N45AP</example>
2655
+ <example>model=iPod1,1</example>
2656
+ <param pos="0" name="os.vendor" value="Apple"/>
2657
+ <param pos="0" name="os.family" value="iOS"/>
2658
+ <param pos="0" name="os.product" value="iOS"/>
2659
+ <param pos="0" name="os.cpe23" value="cpe:/o:apple:iphone_os:-"/>
2660
+ <param pos="0" name="hw.vendor" value="Apple"/>
2661
+ <param pos="0" name="hw.family" value="iPod"/>
2662
+ <param pos="0" name="hw.product" value="iPod Touch (1st generation)"/>
2663
+ <param pos="0" name="hw.device" value="Media Player"/>
2664
+ </fingerprint>
2665
+
2271
2666
  </fingerprints>