taxonomy: add iOS 10 & Dish signatures.

1. iOS 10.x introduced a new vendor-specific information element with an
   Apple OUI in the management frames sent by iOS 10 devices. It is present
   in the Probe Request and Associate Request, and contains 10 bytes of
   data.

   In every model of device we've sampled so far running iOS 10.0.2, it
   contains the same content: 0a00010400000000.

   Tag: Vendor Specific: Apple
       Tag Number: Vendor Specific (221)
       Tag length: 11
       OUI: 00-17-f2
       Vendor Specific
       OUI Type: 10
       Vendor Specific Data: 0a00010400000000

2. We made a mistake in gathering one of the earlier pcaps, uncovered
   when we gathered a signature with iOS10 on the same device: what
   we thought was an iPad 4th gen is actually an iPad Air 1st gen,
   model ME906LL.

   The earlier signature had led to the conclusion that iPad Air 4th
   gen and iPad Air 1st gen have the same signature. This is likely
   not true: we do not have an iPad 4th gen signature yet.

3. iOS 10 also changed the TX Power IE for several models, notably
   iPhone 6 and iPhone 6+ now have distinct signatures and can be
   distinguished.

3. Add Dish Networks Receiver

4. Anonymize MAC addresses in some of the previously submitted pcaps.

5. Rename some of the earlier pcaps to include model number, software
   version, and other metadata.

Change-Id: I2f4c44b87cc072c0209a1e8501f31c556b19d1ca
diff --git a/taxonomy/ethernet.py b/taxonomy/ethernet.py
index f20c209..ec5bab8 100644
--- a/taxonomy/ethernet.py
+++ b/taxonomy/ethernet.py
@@ -53,6 +53,8 @@
 
     '58:67:1a': ['barnes&noble'],
 
+    '2c:b0:5d': ['dish'],
+
     '30:8c:fb': ['dropcam'],
 
     '00:1a:11': ['google'],
diff --git a/taxonomy/pcaptest.py b/taxonomy/pcaptest.py
index 3e2ea1f..116b4d1 100644
--- a/taxonomy/pcaptest.py
+++ b/taxonomy/pcaptest.py
@@ -51,6 +51,8 @@
   ('', './testdata/pcaps/Samsung Infuse 5GHz.pcap'),
   ('', './testdata/pcaps/Samsung Vibrant 2.4GHz.pcap'),
   ('', './testdata/pcaps/Sony Ericsson Xperia X10 2.4GHz.pcap'),
+  ('', './testdata/pcaps/Sony NSX-48GT1 2.4GHz Broadcast Probe.pcap'),
+  ('', './testdata/pcaps/Sony NSX-48GT1 2.4GHz Specific Probe.pcap'),
 
   # Names where the identified species doesn't exactly match the filename,
   # usually because multiple devices are too similar to distinguish. We name
@@ -65,16 +67,15 @@
   ('Amazon Kindle', './testdata/pcaps/Amazon Kindle Voyage 2.4GHz B054.pcap'),
   ('iPad 1st or 2nd gen', './testdata/pcaps/iPad 1st gen 5GHz.pcap'),
   ('iPad 1st or 2nd gen', './testdata/pcaps/iPad 2nd gen 5GHz.pcap'),
-  ('iPad 4th gen or Air 1st gen', './testdata/pcaps/iPad (4th gen) 5GHz.pcap'),
-  ('iPad 4th gen or Air 1st gen', './testdata/pcaps/iPad (4th gen) 2.4GHz.pcap'),
-  ('iPad 4th gen or Air 1st gen', './testdata/pcaps/iPad Air 5GHz.pcap'),
-  ('iPad 4th gen or Air 1st gen', './testdata/pcaps/iPad Air 2.4GHz.pcap'),
-  ('iPhone 6/6+', './testdata/pcaps/iPhone 6 5GHz.pcap'),
-  ('iPhone 6/6+', './testdata/pcaps/iPhone 6+ 5GHz.pcap'),
+  ('iPhone 6/6+', './testdata/pcaps/iPhone 6 5GHz iOS 9.pcap'),
+  ('iPhone 6/6+', './testdata/pcaps/iPhone 6+ 5GHz iOS 9.pcap'),
   ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s 2.4GHz.pcap'),
+  ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s 5GHz.pcap'),
   ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s+ 2.4GHz.pcap'),
   ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s+ 2.4GHz RRM.pcap'),
-  ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s 5GHz.pcap'),
+  ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s 2.4GHz MKRD2LL iOS 10.0.2 Specific Probe.pcap'),
+  ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s+ 2.4GHz iOS 10.0.2 Broadcast Probe.pcap'),
+  ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s+ 2.4GHz iOS 10.0.2 Specific Probe.pcap'),
   ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s+ 5GHz.pcap'),
   ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s+ 5GHz RRM.pcap'),
   ('iPod Touch 1st or 2nd gen', './testdata/pcaps/iPod Touch 1st gen 2.4GHz.pcap'),
diff --git a/taxonomy/testdata/dhcp.leases b/taxonomy/testdata/dhcp.leases
index 51d4538..c1b8de9 100644
--- a/taxonomy/testdata/dhcp.leases
+++ b/taxonomy/testdata/dhcp.leases
@@ -12,7 +12,7 @@
 1432237016 c8:69:cd:5e:b5:43 192.168.42.5 Apple-TV *
 1432237016 6c:29:95:7c:25:fe 192.168.42.6 * *
 1432237016 b0:34:95:02:66:83 192.168.42.7 iPaad-4th-gen *
-1432237016 04:69:f8:6b:99:5e 192.168.42.8 iPad-Air-2nd-gen *
+1432237016 04:69:f8:00:00:00 192.168.42.8 iPad-Air-2nd-gen *
 1432237016 1c:e6:2b:9b:41:91 192.168.42.9 iPaad-Mini-1st-gen *
 1432237016 84:8e:0c:99:48:d5 192.168.42.10 iPaad-Mini-2nd-gen *
 1432237016 24:ab:81:e4:74:bc 192.168.42.11 iPhoone-4 *
@@ -22,14 +22,14 @@
 1432237016 f0:db:e2:61:db:fa 192.168.42.13 iPhoone-6 *
 1432237016 c8:85:50:e9:74:58 192.168.42.14 iPhoone-6+ *
 1432237016 00:cd:fe:a7:47:96 192.168.42.15 iPhoone-6s *
-1432237016 68:db:ca:37:10:d8 192.168.42.16 iPhoone-6s+ *
+1432237016 68:db:ca:00:00:00 192.168.42.16 iPhoone-6s+ *
 1432237016 00:1d:4f:0f:ee:14 192.168.42.17 iPood-Touch-1 *
 1432237016 f0:b4:79:9d:28:0d 192.168.42.18 iPood-Touch-4 *
 1432237016 3c:15:c2:d0:1b:0e 192.168.42.19 MacBoookPro2013 *
 1432237016 10:2f:6b:ec:78:ff 192.168.42.20 NokiaLumia635 *
 1432237016 08:05:81:21:68:57 192.168.42.21 Roku4 *
 1432237016 5c:f6:dc:16:6a:17 192.168.42.22 SamsungSmartTV *
-1432237016 6c:40:08:55:76:8a 192.168.42.23 iPhoone-5s *
+1432237016 6c:40:08:00:00:00 192.168.42.23 iPhoone-5s *
 1432237016 00:23:12:28:de:6e 192.168.42.24 AppleTV1
 1432237016 28:cf:da:24:f4:ab 192.168.42.25 AppleTV2
 1432237016 68:64:4b:11:ce:2b 192.168.42.26 AppleTV3A
@@ -69,7 +69,11 @@
 1432237016 a4:d1:d2:00:00:00 192.168.42.58 iPaadOldiOS
 1432237016 70:48:0f:00:00:00 192.168.42.59 iPadPro12_9
 1432237016 6c:c2:17:00:00:00 192.168.42.60 HPPrinter
-1432237016 dc:2b:2a:95:bc:77 192.168.42.61 iPhoone 6s+
+1432237016 dc:2b:2a:00:00:00 192.168.42.61 iPhoone 6s+
 1432237016 2c:33:61:00:00:00 192.168.42.62 iPhoone 7
 1432237016 58:bd:a3:00:00:00 192.168.42.63 Wii
 1432237016 28:0d:fc:00:00:00 192.168.42.64 Playstation 3
+1432237016 2c:1f:23:00:00:00 192.168.42.65 iPaadAir2ndGen
+1432237016 e0:b5:2d:00:00:00 192.168.42.66 iPhoone-6+
+1432237016 6c:72:e7:00:00:00 192.168.42.67 iPhoone-6s
+1432237016 f0:db:e2:00:00:00 192.168.42.68 iPhoone-6
diff --git a/taxonomy/testdata/dhcp.signatures b/taxonomy/testdata/dhcp.signatures
index 614f33d..cff85e2 100644
--- a/taxonomy/testdata/dhcp.signatures
+++ b/taxonomy/testdata/dhcp.signatures
@@ -4,7 +4,7 @@
 c8:69:cd:5e:b5:43 1,121,3,6,15,119,252
 6c:29:95:7c:25:fe 1,121,33,3,6,12,15,26,28,51,54,58,59,119,252
 b0:34:95:02:66:83 1,3,6,15,119,252
-04:69:f8:6b:99:5e 1,3,6,15,119,252
+04:69:f8:00:00:00 1,3,6,15,119,252
 1c:e6:2b:9b:41:91 1,3,6,15,119,252
 84:8e:0c:99:48:d5 1,3,6,15,119,252
 24:ab:81:e4:74:bc 1,3,6,15,119,252
@@ -14,14 +14,14 @@
 f0:db:e2:61:db:fa 1,3,6,15,119,252
 c8:85:50:e9:74:58 1,3,6,15,119,252
 00:cd:fe:a7:47:96 1,3,6,15,119,252
-68:db:ca:37:10:d8 1,3,6,15,119,252
+68:db:ca:00:00:00 1,3,6,15,119,252
 00:1d:4f:0f:ee:14 1,3,6,15,119,95,252,44,46,47
 f0:b4:79:9d:28:0d 1,3,6,15,119,252
 3c:15:c2:d0:1b:0e 1,3,6,15,119,95,252,44,46
 10:2f:6b:ec:78:ff 1,15,3,6,44,46,47,31,33,121,249,252,43
 08:05:81:21:68:57 1,3,6,15,12
 5c:f6:dc:16:6a:17 1,3,6,12,15,28,42,125
-6c:40:08:55:76:8a 1,3,6,15,119,252
+6c:40:08:00:00:00 1,3,6,15,119,252
 00:23:12:28:de:6e 1,3,6,15,112,113,78,79,95,252
 28:cf:da:24:f4:ab 1,3,6,15,119,252
 68:64:4b:11:ce:2b 1,3,6,15,119,252
@@ -61,7 +61,11 @@
 a4:d1:d2:00:00:00 1,3,6,15,119,252
 70:48:0f:00:00:00 1,3,6,15,119,252
 6c:c2:17:00:00:00 6,3,1,15,66,67,13,44,12,81,252
-dc:2b:2a:95:bc:77 1,3,6,15,119,252
+dc:2b:2a:00:00:00 1,3,6,15,119,252
 2c:33:61:00:00:00 1,3,6,15,119,252
 58:bd:a3:00:00:00 1,3,6,15,28,33
 28:0d:fc:00:00:00 1,3,15,6
+2c:1f:23:00:00:00 1,121,3,6,15,119,252
+e0:b5:2d:00:00:00 1,121,3,6,15,119,252
+6c:72:e7:00:00:00 1,121,3,6,15,119,252
+f0:db:e2:00:00:00 1,121,3,6,15,119,252
diff --git a/taxonomy/testdata/pcaps/Dish Network Receiver 2.4GHz ViP722k Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Dish Network Receiver 2.4GHz ViP722k Broadcast Probe.pcap
new file mode 100644
index 0000000..d3c7ea8
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Dish Network Receiver 2.4GHz ViP722k Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Dish Network Receiver 2.4GHz ViP722k Specific Probe.pcap b/taxonomy/testdata/pcaps/Dish Network Receiver 2.4GHz ViP722k Specific Probe.pcap
new file mode 100644
index 0000000..3985f98
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Dish Network Receiver 2.4GHz ViP722k Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Sony NSX-48GT1 2.4GHz Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Sony NSX-48GT1 2.4GHz Broadcast Probe.pcap
new file mode 100644
index 0000000..dbf2886
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Sony NSX-48GT1 2.4GHz Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Sony NSX-48GT1 2.4GHz Specific Probe.pcap b/taxonomy/testdata/pcaps/Sony NSX-48GT1 2.4GHz Specific Probe.pcap
new file mode 100644
index 0000000..ca5728d
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Sony NSX-48GT1 2.4GHz Specific Probe.pcap
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/iPad \0504th gen\051 5GHz.pcap" "b/taxonomy/testdata/pcaps/iPad \0504th gen\051 5GHz.pcap"
deleted file mode 100644
index f7158b7..0000000
--- "a/taxonomy/testdata/pcaps/iPad \0504th gen\051 5GHz.pcap"
+++ /dev/null
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz ME906LL iOS 10.0.2 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz ME906LL iOS 10.0.2 Broadcast Probe.pcap
new file mode 100644
index 0000000..a671244
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz ME906LL iOS 10.0.2 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz ME906LL iOS 10.0.2 Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz ME906LL iOS 10.0.2 Specific Probe.pcap
new file mode 100644
index 0000000..72bd72e
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz ME906LL iOS 10.0.2 Specific Probe.pcap
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/iPad \0504th gen\051 2.4GHz.pcap" b/taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz ME906LL iOS 9 Specific Probe.pcap
similarity index 83%
rename from "taxonomy/testdata/pcaps/iPad \0504th gen\051 2.4GHz.pcap"
rename to taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz ME906LL iOS 9 Specific Probe.pcap
index 7eb0924..21a1acc 100644
--- "a/taxonomy/testdata/pcaps/iPad \0504th gen\051 2.4GHz.pcap"
+++ b/taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz ME906LL iOS 9 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 2.4GHz.pcap b/taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz.pcap
similarity index 100%
rename from taxonomy/testdata/pcaps/iPad Air 2.4GHz.pcap
rename to taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz ME906LL iOS 10.0.2 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz ME906LL iOS 10.0.2 Broadcast Probe.pcap
new file mode 100644
index 0000000..4aea434
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz ME906LL iOS 10.0.2 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz ME906LL iOS 10.0.2 Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz ME906LL iOS 10.0.2 Specific Probe.pcap
new file mode 100644
index 0000000..b73645e
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz ME906LL iOS 10.0.2 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 5GHz.pcap b/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz.pcap
similarity index 100%
rename from taxonomy/testdata/pcaps/iPad Air 5GHz.pcap
rename to taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz MGTX2LL iOS 10.0.2.pcap b/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz MGTX2LL iOS 10.0.2.pcap
new file mode 100644
index 0000000..a5a99aa
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz MGTX2LL iOS 10.0.2.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz MGTX2LL.pcap b/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz MGTX2LL.pcap
new file mode 100644
index 0000000..cf87d66
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz MGTX2LL.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz MH1J2LL iOS 10.0.2 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz MH1J2LL iOS 10.0.2 Broadcast Probe.pcap
new file mode 100644
index 0000000..6426214
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz MH1J2LL iOS 10.0.2 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz MH1J2LL iOS 10.0.2 Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz MH1J2LL iOS 10.0.2 Specific Probe.pcap
new file mode 100644
index 0000000..7fe499a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz MH1J2LL iOS 10.0.2 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz.pcap b/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz.pcap
deleted file mode 100644
index d900fed..0000000
--- a/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz.pcap
+++ /dev/null
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz MGTX2LL iOS 10.0.2.pcap b/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz MGTX2LL iOS 10.0.2.pcap
new file mode 100644
index 0000000..e6ffc18
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz MGTX2LL iOS 10.0.2.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz MGTX2LL.pcap b/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz MGTX2LL.pcap
new file mode 100644
index 0000000..06513ca
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz MGTX2LL.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz MH1J2LL iOS 10.0.2 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz MH1J2LL iOS 10.0.2 Broadcast Probe.pcap
new file mode 100644
index 0000000..9a22b8a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz MH1J2LL iOS 10.0.2 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz MH1J2LL iOS 10.0.2 Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz MH1J2LL iOS 10.0.2 Specific Probe.pcap
new file mode 100644
index 0000000..a398f73
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz MH1J2LL iOS 10.0.2 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz.pcap b/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz.pcap
deleted file mode 100644
index 67ff550..0000000
--- a/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz.pcap
+++ /dev/null
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz.pcap b/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz MD528LL.pcap
similarity index 100%
rename from taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz.pcap
rename to taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz MD528LL.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz.pcap b/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz MD528LL.pcap
similarity index 100%
rename from taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz.pcap
rename to taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz MD528LL.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 2.4GHz MD654LL iOS 10.0.2 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz MD654LL iOS 10.0.2 Broadcast Probe.pcap
new file mode 100644
index 0000000..0a0a5ec
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz MD654LL iOS 10.0.2 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 2.4GHz MD654LL iOS 10.0.2 Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz MD654LL iOS 10.0.2 Specific Probe.pcap
new file mode 100644
index 0000000..d715d41
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz MD654LL iOS 10.0.2 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 5GHz MD654LL iOS 10.0.2 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 5GHz MD654LL iOS 10.0.2 Broadcast Probe.pcap
new file mode 100644
index 0000000..0e05542
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 5GHz MD654LL iOS 10.0.2 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 5GHz MD654LL iOS 10.0.2 Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 5GHz MD654LL iOS 10.0.2 Specific Probe.pcap
new file mode 100644
index 0000000..4f624a7
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 5GHz MD654LL iOS 10.0.2 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz iOS 10.0.2 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz iOS 10.0.2 Broadcast Probe.pcap
new file mode 100644
index 0000000..097cbc1
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz iOS 10.0.2 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz iOS 10.0.2 Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz iOS 10.0.2 Specific Probe.pcap
new file mode 100644
index 0000000..6ae7358
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz iOS 10.0.2 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz.pcap b/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz.pcap
index 4a966ac..d8f7ed4 100644
--- a/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz.pcap
+++ b/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5s 5GHz iOS 10.0.2 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5s 5GHz iOS 10.0.2 Broadcast Probe.pcap
new file mode 100644
index 0000000..1ded7bc
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5s 5GHz iOS 10.0.2 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5s 5GHz iOS 10.0.2 Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5s 5GHz iOS 10.0.2 Specific Probe.pcap
new file mode 100644
index 0000000..ac2757b
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5s 5GHz iOS 10.0.2 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5s 5GHz.pcap b/taxonomy/testdata/pcaps/iPhone 5s 5GHz.pcap
index 23cd7de..15bffe0 100644
--- a/taxonomy/testdata/pcaps/iPhone 5s 5GHz.pcap
+++ b/taxonomy/testdata/pcaps/iPhone 5s 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6 2.4GHz MG552LL iOS 10.0.2 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6 2.4GHz MG552LL iOS 10.0.2 Broadcast Probe.pcap
new file mode 100644
index 0000000..7ff9271
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6 2.4GHz MG552LL iOS 10.0.2 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6 2.4GHz MG552LL iOS 10.0.2 Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6 2.4GHz MG552LL iOS 10.0.2 Specific Probe.pcap
new file mode 100644
index 0000000..a592849
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6 2.4GHz MG552LL iOS 10.0.2 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6 2.4GHz.pcap b/taxonomy/testdata/pcaps/iPhone 6 2.4GHz iOS 9.pcap
similarity index 100%
rename from taxonomy/testdata/pcaps/iPhone 6 2.4GHz.pcap
rename to taxonomy/testdata/pcaps/iPhone 6 2.4GHz iOS 9.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6 5GHz MG552LL iOS 10.0.2 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6 5GHz MG552LL iOS 10.0.2 Broadcast Probe.pcap
new file mode 100644
index 0000000..1d83763
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6 5GHz MG552LL iOS 10.0.2 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6 5GHz.pcap b/taxonomy/testdata/pcaps/iPhone 6 5GHz iOS 9.pcap
similarity index 100%
rename from taxonomy/testdata/pcaps/iPhone 6 5GHz.pcap
rename to taxonomy/testdata/pcaps/iPhone 6 5GHz iOS 9.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz MGC02LL iOS 10.0.2 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz MGC02LL iOS 10.0.2 Broadcast Probe.pcap
new file mode 100644
index 0000000..1ca5f73
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz MGC02LL iOS 10.0.2 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz MGC02LL iOS 10.0.2 Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz MGC02LL iOS 10.0.2 Specific Probe.pcap
new file mode 100644
index 0000000..f5a8f47
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz MGC02LL iOS 10.0.2 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz.pcap b/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz iOS 9.pcap
similarity index 100%
rename from taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz.pcap
rename to taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz iOS 9.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6+ 5GHz MGC02LL iOS 10.0.2 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6+ 5GHz MGC02LL iOS 10.0.2 Broadcast Probe.pcap
new file mode 100644
index 0000000..a2cee5c
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6+ 5GHz MGC02LL iOS 10.0.2 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6+ 5GHz.pcap b/taxonomy/testdata/pcaps/iPhone 6+ 5GHz iOS 9.pcap
similarity index 100%
rename from taxonomy/testdata/pcaps/iPhone 6+ 5GHz.pcap
rename to taxonomy/testdata/pcaps/iPhone 6+ 5GHz iOS 9.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz MKRD2LL iOS 10.0.2 Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz MKRD2LL iOS 10.0.2 Specific Probe.pcap
new file mode 100644
index 0000000..20776c4
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz MKRD2LL iOS 10.0.2 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s 5GHz GHz MKRD2LL iOS 10.0.2 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s 5GHz GHz MKRD2LL iOS 10.0.2 Broadcast Probe.pcap
new file mode 100644
index 0000000..36cac21
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s 5GHz GHz MKRD2LL iOS 10.0.2 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s 5GHz GHz MKRD2LL iOS 10.0.2 Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s 5GHz GHz MKRD2LL iOS 10.0.2 Specific Probe.pcap
new file mode 100644
index 0000000..e8a9eda
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s 5GHz GHz MKRD2LL iOS 10.0.2 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz RRM.pcap b/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz RRM.pcap
index 28cbed8..21e2825 100644
--- a/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz RRM.pcap
+++ b/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz RRM.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz iOS 10.0.2 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz iOS 10.0.2 Broadcast Probe.pcap
new file mode 100644
index 0000000..f2e77cf
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz iOS 10.0.2 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz iOS 10.0.2 Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz iOS 10.0.2 Specific Probe.pcap
new file mode 100644
index 0000000..7e4d2ed
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz iOS 10.0.2 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz.pcap b/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz.pcap
index 6b0e932..b67817c 100644
--- a/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz.pcap
+++ b/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz RRM.pcap b/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz RRM.pcap
index 1ba43ad..4da3754 100644
--- a/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz RRM.pcap
+++ b/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz RRM.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz iOS 10.0.2 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz iOS 10.0.2 Broadcast Probe.pcap
new file mode 100644
index 0000000..74364bf
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz iOS 10.0.2 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz iOS 10.0.2 Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz iOS 10.0.2 Specific Probe.pcap
new file mode 100644
index 0000000..6cb8b42
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz iOS 10.0.2 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz.pcap b/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz.pcap
index fdb82f9..cd9f32f 100644
--- a/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz.pcap
+++ b/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz.pcap
Binary files differ
diff --git a/taxonomy/wifi.py b/taxonomy/wifi.py
index 36c92fc..4d7d155 100644
--- a/taxonomy/wifi.py
+++ b/taxonomy/wifi.py
@@ -188,6 +188,10 @@
     'wifi4|probe:0,1,50,45,3,221(001018,2),221(00904c,51),htcap:107c,htagg:1a,htmcs:0000ffff|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:107c,htagg:1a,htmcs:0000ffff,txpow:1608|os:directv':
         ('DirecTV', 'HR44 or HF54', '2.4GHz'),
 
+    # Noted from a ViP722k, likely matches other models
+    'wifi4|probe:0,1,50,45,221(001018,2),221(00904c,51),htcap:186c,htagg:1a,htmcs:0000ffff|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:186c,htagg:1a,htmcs:0000ffff,txpow:1408|oui:dish':
+        ('Dish Network Receiver', '', '2.4GHz'),
+
     'wifi4|probe:0,1,45,htcap:106e,htagg:01,htmcs:000000ff|assoc:0,1,45,33,36,48,221(0050f2,2),htcap:106e,htagg:01,htmcs:000000ff,txpow:0e00|oui:dropcam':
         ('Dropcam', '', '5GHz'),
     'wifi4|probe:0,1,50,45,htcap:002c,htagg:01,htmcs:000000ff|assoc:0,1,50,45,48,221(0050f2,2),htcap:002c,htagg:01,htmcs:000000ff|oui:dropcam':
@@ -298,17 +302,29 @@
     'wifi4|probe:0,1,50,45,3,221(001018,2),221(00904c,51),htcap:0100,htagg:19,htmcs:000000ff|assoc:0,1,33,36,48,50,45,70,221(001018,2),221(00904c,51),221(0050f2,2),htcap:0100,htagg:19,htmcs:000000ff,txpow:150c|os:ios':
         ('iPad', '3rd gen', '2.4GHz'),
 
+    # iPad Air 1st gen with iOS 9
     'wifi4|probe:0,1,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:01fe,htagg:1b,htmcs:0000ffff,extcap:00000804|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:01fe,htagg:1b,htmcs:0000ffff,txpow:e708|os:ios':
-        ('iPad', '4th gen or Air 1st gen', '5GHz'),
+        ('iPad', 'Air 1st gen', '5GHz'),
     'wifi4|probe:0,1,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:01fe,htagg:1b,htmcs:0000ffff,extcap:00000804|assoc:0,1,33,36,48,45,70,221(001018,2),221(00904c,51),221(0050f2,2),htcap:01fe,htagg:1b,htmcs:0000ffff,txpow:e708|os:ios':
-        ('iPad', '4th gen or Air 1st gen', '5GHz'),
+        ('iPad', 'Air 1st gen', '5GHz'),
     'wifi4|probe:0,1,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:01fe,htagg:1b,htmcs:0000ffff,extcap:00000004|assoc:0,1,33,36,48,45,70,221(001018,2),221(00904c,51),221(0050f2,2),htcap:01fe,htagg:1b,htmcs:0000ffff,txpow:e708|os:ios':
-        ('iPad', '4th gen or Air 1st gen', '5GHz'),
+        ('iPad', 'Air 1st gen', '5GHz'),
     'wifi4|probe:0,1,50,3,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:01bc,htagg:1b,htmcs:0000ffff,extcap:00000804|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:01bc,htagg:1b,htmcs:0000ffff,txpow:1805|os:ios':
-        ('iPad', '4th gen or Air 1st gen', '2.4GHz'),
+        ('iPad', 'Air 1st gen', '2.4GHz'),
     'wifi4|probe:0,1,50,3,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:01bc,htagg:1b,htmcs:0000ffff,extcap:00000804|assoc:0,1,33,36,48,50,45,70,221(001018,2),221(00904c,51),221(0050f2,2),htcap:01bc,htagg:1b,htmcs:0000ffff,txpow:1805|os:ios':
-        ('iPad', '4th gen or Air 1st gen', '2.4GHz'),
+        ('iPad', 'Air 1st gen', '2.4GHz'),
 
+    # iPad Air 1st gen with iOS 10
+    'wifi4|probe:0,1,45,127,221(0017f2,10),107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:01fe,htagg:1b,htmcs:0000ffff,extcap:00000804|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),221(0017f2,10),htcap:01fe,htagg:1b,htmcs:0000ffff,txpow:e708|os:ios':
+        ('iPad', 'Air 1st gen', '5GHz'),
+    'wifi4|probe:0,1,45,127,221(0017f2,10),107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:01fe,htagg:1b,htmcs:0000ffff,extcap:00000804|assoc:0,1,33,36,48,45,70,221(001018,2),221(00904c,51),221(0050f2,2),221(0017f2,10),htcap:01fe,htagg:1b,htmcs:0000ffff,txpow:e708|os:ios':
+        ('iPad', 'Air 1st gen', '5GHz'),
+    'wifi4|probe:0,1,50,3,45,127,221(0017f2,10),107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:01bc,htagg:1b,htmcs:0000ffff,extcap:00000804|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),221(0017f2,10),htcap:01bc,htagg:1b,htmcs:0000ffff,txpow:1805|os:ios':
+        ('iPad', 'Air 1st gen', '2.4GHz'),
+    'wifi4|probe:0,1,50,3,45,127,221(0017f2,10),107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:01bc,htagg:1b,htmcs:0000ffff,extcap:00000804|assoc:0,1,33,36,48,50,45,70,221(001018,2),221(00904c,51),221(0050f2,2),221(0017f2,10),htcap:01bc,htagg:1b,htmcs:0000ffff,txpow:1805|os:ios':
+        ('iPad', 'Air 1st gen', '2.4GHz'),
+
+    # iPad Air 2nd gen with iOS 9. Signatures identical to iPhone 6s, use name to distinguish them.
     'wifi4|probe:0,1,45,127,107,191,221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:0400088400000040|assoc:0,1,33,36,48,70,45,127,191,221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0400000000000040|name:ipad':
         ('iPad', 'Air 2nd gen', '5GHz'),
     'wifi4|probe:0,1,45,127,107,191,221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffe,extcap:0400088400000040|assoc:0,1,33,36,48,70,45,127,191,221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0400000000000040|name:ipad':
@@ -328,6 +344,16 @@
     'wifi4|probe:0,1,50,3,45,127,107,221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,extcap:0400088400000040|assoc:0,1,50,33,36,48,70,45,127,221(001018,2),221(0050f2,2),htcap:002d,htagg:17,htmcs:0000ffff,txpow:1502,extcap:0000000000000040|os:ios':
         ('iPad', 'Air 2nd gen', '2.4GHz'),
 
+    # iPad Air 2nd gen with iOS 10 changed the 5GHz tx power, no longer identical to iPhone 6s.
+    'wifi4|probe:0,1,45,127,107,191,221(0017f2,10),221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:0400088400000040|assoc:0,1,33,36,48,45,127,191,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1302,extcap:0400000000000040|os:ios':
+        ('iPad', 'Air 2nd gen', '5GHz'),
+    'wifi4|probe:0,1,45,127,107,191,221(0017f2,10),221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:0400088400000040|assoc:0,1,33,36,48,70,45,127,191,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1302,extcap:0400000000000040|os:ios':
+        ('iPad', 'Air 2nd gen', '5GHz'),
+    'wifi4|probe:0,1,50,3,45,127,107,221(0017f2,10),221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,extcap:0400088400000040|assoc:0,1,50,33,36,48,45,127,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:002d,htagg:17,htmcs:0000ffff,txpow:1502,extcap:0000000000000040|os:ios':
+        ('iPad', 'Air 2nd gen', '2.4GHz'),
+    'wifi4|probe:0,1,50,3,45,127,107,221(0017f2,10),221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,extcap:0400088400000040|assoc:0,1,50,33,36,48,70,45,127,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:002d,htagg:17,htmcs:0000ffff,txpow:1502,extcap:0000000000000040|os:ios':
+        ('iPad', 'Air 2nd gen', '2.4GHz'),
+
     'wifi4|probe:0,1,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0062,htagg:1a,htmcs:000000ff,extcap:00000004|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:0062,htagg:1a,htmcs:000000ff,txpow:1807|os:ios':
         ('iPad Mini', '1st gen', '5GHz'),
     'wifi4|probe:0,1,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0062,htagg:1a,htmcs:000000ff,extcap:00000004|assoc:0,1,33,36,48,45,70,221(001018,2),221(00904c,51),221(0050f2,2),htcap:0062,htagg:1a,htmcs:000000ff,txpow:1807|os:ios':
@@ -377,6 +403,7 @@
     'wifi4|probe:0,1,50,45,3,221(001018,2),221(00904c,51),htcap:0100,htagg:19,htmcs:000000ff|assoc:0,1,48,50,45,70,221(001018,2),221(00904c,51),221(0050f2,2),htcap:0100,htagg:19,htmcs:000000ff|os:ios':
         ('iPhone 4s', '', '2.4GHz'),
 
+    # iPhone 5 with iOS 9 and prior.
     'wifi4|probe:0,1,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0062,htagg:1a,htmcs:000000ff,extcap:00000004|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:0062,htagg:1a,htmcs:000000ff,txpow:1504|os:ios':
         ('iPhone 5', '', '5GHz'),
     'wifi4|probe:0,1,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0062,htagg:1a,htmcs:000000ff,extcap:00000004|assoc:0,1,33,36,48,45,70,221(001018,2),221(00904c,51),221(0050f2,2),htcap:0062,htagg:1a,htmcs:000000ff,txpow:1504|os:ios':
@@ -386,6 +413,16 @@
     'wifi4|probe:0,1,50,3,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0020,htagg:1a,htmcs:000000ff,extcap:00000004|assoc:0,1,33,36,48,50,45,70,221(001018,2),221(00904c,51),221(0050f2,2),htcap:0020,htagg:1a,htmcs:000000ff,txpow:1403|os:ios':
         ('iPhone 5', '', '2.4GHz'),
 
+    # iPhone 5 with iOS 10.
+    'wifi4|probe:0,1,45,127,221(0017f2,10),107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0062,htagg:1a,htmcs:000000ff,extcap:00000004|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),221(0017f2,10),htcap:0062,htagg:1a,htmcs:000000ff,txpow:1504|os:ios':
+        ('iPhone 5', '', '5GHz'),
+    'wifi4|probe:0,1,45,127,221(0017f2,10),107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0062,htagg:1a,htmcs:000000ff,extcap:00000004|assoc:0,1,33,36,48,45,70,221(001018,2),221(00904c,51),221(0050f2,2),221(0017f2,10),htcap:0062,htagg:1a,htmcs:000000ff,txpow:1504|os:ios':
+        ('iPhone 5', '', '5GHz'),
+    'wifi4|probe:0,1,50,3,45,127,221(0017f2,10),107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0020,htagg:1a,htmcs:000000ff,extcap:00000004|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),221(0017f2,10),htcap:0020,htagg:1a,htmcs:000000ff,txpow:1403|os:ios':
+        ('iPhone 5', '', '2.4GHz'),
+    'wifi4|probe:0,1,50,3,45,127,221(0017f2,10),107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0020,htagg:1a,htmcs:000000ff,extcap:00000004|assoc:0,1,33,36,48,50,45,70,221(001018,2),221(00904c,51),221(0050f2,2),221(0017f2,10),htcap:0020,htagg:1a,htmcs:000000ff,txpow:1403|os:ios':
+        ('iPhone 5', '', '2.4GHz'),
+
     'wifi4|probe:0,1,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0062,htagg:1a,htmcs:000000ff,extcap:00000004|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:0062,htagg:1a,htmcs:000000ff,txpow:1805|os:ios':
         ('iPhone 5c', '', '5GHz'),
     'wifi4|probe:0,1,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0062,htagg:1a,htmcs:000000ff,extcap:00000804|assoc:0,1,33,36,48,45,70,221(001018,2),221(00904c,51),221(0050f2,2),htcap:0062,htagg:1a,htmcs:000000ff,txpow:1805|os:ios':
@@ -405,10 +442,18 @@
         ('iPhone 5s', '', '5GHz'),
     'wifi4|probe:0,1,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0062,htagg:1a,htmcs:000000ff,extcap:00000004|assoc:0,1,33,36,48,45,70,221(001018,2),221(00904c,51),221(0050f2,2),htcap:0062,htagg:1a,htmcs:000000ff,txpow:1603|os:ios':
         ('iPhone 5s', '', '5GHz'),
+    'wifi4|probe:0,1,45,127,221(0017f2,10),107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0062,htagg:1a,htmcs:000000ff,extcap:00000804|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),221(0017f2,10),htcap:0062,htagg:1a,htmcs:000000ff,txpow:1603|os:ios':
+        ('iPhone 5s', '', '5GHz'),
+    'wifi4|probe:0,1,45,127,221(0017f2,10),107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0062,htagg:1a,htmcs:000000ff,extcap:00000804|assoc:0,1,33,36,48,45,70,221(001018,2),221(00904c,51),221(0050f2,2),221(0017f2,10),htcap:0062,htagg:1a,htmcs:000000ff,txpow:1603|os:ios':
+        ('iPhone 5s', '', '5GHz'),
     'wifi4|probe:0,1,50,3,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0020,htagg:1a,htmcs:000000ff,extcap:00000804|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:0020,htagg:1a,htmcs:000000ff,txpow:1805|os:ios':
         ('iPhone 5s', '', '2.4GHz'),
     'wifi4|probe:0,1,50,3,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0020,htagg:1a,htmcs:000000ff,extcap:00000804|assoc:0,1,33,36,48,50,45,70,221(001018,2),221(00904c,51),221(0050f2,2),htcap:0020,htagg:1a,htmcs:000000ff,txpow:1805|os:ios':
         ('iPhone 5s', '', '2.4GHz'),
+    'wifi4|probe:0,1,50,3,45,127,221(0017f2,10),107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0020,htagg:1a,htmcs:000000ff,extcap:00000804|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),221(0017f2,10),htcap:0020,htagg:1a,htmcs:000000ff,txpow:1805|os:ios':
+        ('iPhone 5s', '', '2.4GHz'),
+    'wifi4|probe:0,1,50,3,45,127,221(0017f2,10),107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0020,htagg:1a,htmcs:000000ff,extcap:00000804|assoc:0,1,33,36,48,50,45,70,221(001018,2),221(00904c,51),221(0050f2,2),221(0017f2,10),htcap:0020,htagg:1a,htmcs:000000ff,txpow:1805|os:ios':
+        ('iPhone 5s', '', '2.4GHz'),
 
     'wifi4|probe:0,1,45,127,107,191,221(0050f2,8),221(001018,2),htcap:0063,htagg:17,htmcs:000000ff,vhtcap:0f805032,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:0400088400000040|assoc:0,1,33,36,48,70,45,127,191,221(001018,2),221(0050f2,2),htcap:0063,htagg:17,htmcs:000000ff,vhtcap:0f805032,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:e002,extcap:0400000000000040|os:ios':
         ('iPhone 6/6+', '', '5GHz'),
@@ -433,6 +478,41 @@
     'wifi4|probe:0,1,50,3,45,127,107,221(00904c,51),221(0050f2,8),221(001018,2),htcap:0021,htagg:17,htmcs:000000ff,extcap:0400088400000040|assoc:0,1,50,33,36,48,70,45,127,221(001018,2),221(0050f2,2),htcap:0021,htagg:17,htmcs:000000ff,txpow:1402,extcap:0000000000000040|os:ios':
         ('iPhone 6+', '', '2.4GHz'),
 
+    # iPhone 6 with iOS 10 changed txpow, now distinguishable from iPhone 6+.
+    'wifi4|probe:0,1,45,127,107,191,221(0017f2,10),221(0050f2,8),221(001018,2),htcap:0063,htagg:17,htmcs:000000ff,vhtcap:0f805032,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:0400088400000040|assoc:0,1,33,36,48,45,127,191,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:0063,htagg:17,htmcs:000000ff,vhtcap:0f805032,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:1202,extcap:0400000000000040|os:ios':
+        ('iPhone 6', '', '5GHz'),
+    'wifi4|probe:0,1,45,127,107,191,221(0017f2,10),221(0050f2,8),221(001018,2),htcap:0063,htagg:17,htmcs:000000ff,vhtcap:0f805032,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:0400088400000040|assoc:0,1,33,36,48,70,45,127,191,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:0063,htagg:17,htmcs:000000ff,vhtcap:0f805032,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:1202,extcap:0400000000000040|os:ios':
+        ('iPhone 6', '', '5GHz'),
+    'wifi4|probe:0,1,50,3,45,127,107,221(0017f2,10),221(0050f2,8),221(001018,2),htcap:0021,htagg:17,htmcs:000000ff,extcap:0400088400000040|assoc:0,1,50,33,36,48,45,127,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:0021,htagg:17,htmcs:000000ff,txpow:1302,extcap:0000000000000040|os:ios':
+        ('iPhone 6', '', '2.4GHz'),
+    'wifi4|probe:0,1,50,3,45,127,107,221(0017f2,10),221(0050f2,8),221(001018,2),htcap:0021,htagg:17,htmcs:000000ff,extcap:0400088400000040|assoc:0,1,50,33,36,48,70,45,127,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:0021,htagg:17,htmcs:000000ff,txpow:1302,extcap:0000000000000040|os:ios':
+        ('iPhone 6', '', '2.4GHz'),
+
+    # iPhone 6+ with iOS 10 changed txpow, now distinguishable from iPhone 6.
+    'wifi4|probe:0,1,45,127,107,191,221(0017f2,10),221(0050f2,8),221(001018,2),htcap:0063,htagg:17,htmcs:000000ff,vhtcap:0f805032,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:0400088400000040|assoc:0,1,33,36,48,45,127,191,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:0063,htagg:17,htmcs:000000ff,vhtcap:0f805032,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:1302,extcap:0400000000000040|os:ios':
+        ('iPhone 6+', '', '5GHz'),
+    'wifi4|probe:0,1,45,127,107,191,221(0017f2,10),221(0050f2,8),221(001018,2),htcap:0063,htagg:17,htmcs:000000ff,vhtcap:0f805032,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:0400088400000040|assoc:0,1,33,36,48,70,45,127,191,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:0063,htagg:17,htmcs:000000ff,vhtcap:0f805032,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:1302,extcap:0400000000000040|os:ios':
+        ('iPhone 6+', '', '5GHz'),
+    'wifi4|probe:0,1,50,3,45,127,107,221(0017f2,10),221(0050f2,8),221(001018,2),htcap:0021,htagg:17,htmcs:000000ff,extcap:0400088400000040|assoc:0,1,50,33,36,48,45,127,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:0021,htagg:17,htmcs:000000ff,txpow:1402,extcap:0000000000000040|os:ios':
+        ('iPhone 6+', '', '2.4GHz'),
+    'wifi4|probe:0,1,50,3,45,127,107,221(0017f2,10),221(0050f2,8),221(001018,2),htcap:0021,htagg:17,htmcs:000000ff,extcap:0400088400000040|assoc:0,1,50,33,36,48,70,45,127,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:0021,htagg:17,htmcs:000000ff,txpow:1402,extcap:0000000000000040|os:ios':
+        ('iPhone 6+', '', '2.4GHz'),
+
+    # iPhone 6s/6s+ with iOS 10 changed txpow, now distinguishable on 5GHz. 2.4GHz signatures are identical.
+    'wifi4|probe:0,1,45,127,107,191,221(0017f2,10),221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:000000ff,vhtcap:0f815832,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:0400088400000040|assoc:0,1,33,36,48,45,127,191,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1302,extcap:0400000000000040|os:ios':
+        ('iPhone 6s', '', '5GHz'),
+    'wifi4|probe:0,1,45,127,107,191,221(0017f2,10),221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:000000ff,vhtcap:0f815832,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:0400088400000040|assoc:0,1,33,36,48,70,45,127,191,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1302,extcap:0400000000000040|os:ios':
+        ('iPhone 6s', '', '5GHz'),
+    'wifi4|probe:0,1,45,127,107,191,221(0017f2,10),221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:000000ff,vhtcap:0f815832,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:0400088400000040|assoc:0,1,33,36,48,45,127,191,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1102,extcap:0400000000000040|os:ios':
+        ('iPhone 6s+', '', '5GHz'),
+    'wifi4|probe:0,1,45,127,107,191,221(0017f2,10),221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:000000ff,vhtcap:0f815832,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:0400088400000040|assoc:0,1,33,36,48,70,45,127,191,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1102,extcap:0400000000000040|os:ios':
+        ('iPhone 6s+', '', '5GHz'),
+    'wifi4|probe:0,1,50,3,45,127,107,221(0017f2,10),221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:000000ff,extcap:0400088400000040|assoc:0,1,50,33,36,48,45,127,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:002d,htagg:17,htmcs:0000ffff,txpow:1202,extcap:0000000000000040|os:ios':
+        ('iPhone 6s/6s+', '', '2.4GHz'),
+    'wifi4|probe:0,1,50,3,45,127,107,221(0017f2,10),221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:000000ff,extcap:0400088400000040|assoc:0,1,50,33,36,48,70,45,127,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:002d,htagg:17,htmcs:0000ffff,txpow:1202,extcap:0000000000000040|os:ios':
+        ('iPhone 6s/6s+', '', '2.4GHz'),
+
+    # iOS 9 and earlier signature is identical between iPhone 6s and 6s+
     'wifi4|probe:0,1,45,127,107,191,221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:0400088400000040|assoc:0,1,33,36,48,70,45,127,191,221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0400000000000040|os:ios':
         ('iPhone 6s/6s+', '', '5GHz'),
     'wifi4|probe:0,1,45,127,107,191,221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffe,extcap:0400088400000040|assoc:0,1,33,36,48,70,45,127,191,221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0400000000000040|os:ios':