Merge "/bin/wifi: Fix a MAC parsing bug."
diff --git a/cmds/dhcpvendorlookup.gperf b/cmds/dhcpvendorlookup.gperf
index 884625a..e1e0c40 100644
--- a/cmds/dhcpvendorlookup.gperf
+++ b/cmds/dhcpvendorlookup.gperf
@@ -46,10 +46,10 @@
MicroChip Network Stack| "Microchip board", "Microchip board"
Motorola_AP| "Motorola Wifi AP", "Motorola Wifi AP"
OptiIpPhone| "Siemens IP Phone", "Siemens IP Phone"
-PS3| "Sony Playstation", "PS3"
-PS4| "Sony Playstation", "PS4"
-PS Vita| "Sony Playstation", "PS-Vita"
-PS Vita TV| "Sony Playstation", "PS-Vita"
+PS3| "Playstation", "3"
+PS4| "Playstation", "4"
+PS Vita| "Playstation", "Vita"
+PS Vita TV| "Playstation", "Vita"
Ruckus CPE| "Ruckus Wifi AP", "Ruckus Wifi AP"
SAMSUNG Network Printer| "Samsung Printer", "Samsung Printer"
SEC_ITP| "Samsung IP Phone", "Samsung IP Phone"
diff --git a/taxonomy/.gitignore b/taxonomy/.gitignore
index b1c9bfa..4f84e9a 100644
--- a/taxonomy/.gitignore
+++ b/taxonomy/.gitignore
@@ -1,2 +1,3 @@
/build
tax_signature
+anonymize_pcap
diff --git a/taxonomy/Makefile b/taxonomy/Makefile
index 1acd7b2..7de62f7 100644
--- a/taxonomy/Makefile
+++ b/taxonomy/Makefile
@@ -2,11 +2,14 @@
all: build
-test: tax_signature
+test: tax_signature anonymize_pcap
set -e; \
for d in $(wildcard tests/*_test.py); do \
PYTHONPATH=. $(PYTHON) $$d; \
done
+ for d in $(wildcard tests/*_test.sh); do \
+ $$d; \
+ done
PYTHONPATH=. $(PYTHON) ./pcaptest.py
PREFIX=/usr
@@ -31,12 +34,13 @@
CFLAGS += -g -Os -Wall -Werror $(EXTRACFLAGS)
LDFLAGS += $(EXTRALDFLAGS)
-
-SRCS = tax_signature.c
INCS =
-tax_signature: $(SRCS) $(INCS)
- $(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) -lpcap
+tax_signature: tax_signature.o $(INCS)
+ $(CC) $(CFLAGS) -I$(HOSTDIR)/usr/include tax_signature.c -o $@ $(LDFLAGS) -lpcap
+
+anonymize_pcap: anonymize_pcap.o $(INCS)
+ $(CC) $(CFLAGS) -I$(HOSTDIR)/usr/include anonymize_pcap.c -o $@ $(LDFLAGS) -lpcap
clean:
- rm -f tax_signature *.o
+ rm -f tax_signature anonymize_pcap *.o
diff --git a/taxonomy/anonymize_pcap.c b/taxonomy/anonymize_pcap.c
new file mode 100644
index 0000000..a68c075
--- /dev/null
+++ b/taxonomy/anonymize_pcap.c
@@ -0,0 +1,322 @@
+/*
+ * Copyright 2016 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <fcntl.h>
+#include <limits.h>
+#include <linux/audit.h>
+#include <linux/filter.h>
+#include <linux/seccomp.h>
+#include <pcap.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/prctl.h>
+#include <sys/resource.h>
+#include <sys/stat.h>
+#include <sys/syscall.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <endian.h>
+
+typedef uint8_t u8;
+typedef uint16_t u16;
+typedef uint32_t u32;
+#define le_to_host16 le16toh
+#define le_to_host32 le32toh
+
+struct ieee80211_radiotap_hdr {
+ uint8_t it_version;
+ uint8_t it_pad;
+ uint16_t it_len;
+ uint32_t it_present;
+} __attribute__ ((packed));
+
+struct ieee80211_mgmt {
+ uint16_t frame_control;
+ uint16_t duration;
+ uint8_t da[6];
+ uint8_t sa[6];
+ uint8_t bssid[6];
+ uint16_t seq_ctrl;
+ union {
+ struct {
+ uint16_t cap;
+ uint16_t listen;
+ uint8_t variable[0];
+ } __attribute__ ((packed)) assoc_req;
+ struct {
+ uint8_t variable[0];
+ } __attribute__ ((packed)) probe_req;
+ struct {
+ uint32_t timestamp1;
+ uint32_t timestamp2;
+ uint16_t beacon_interval;
+ uint16_t capabilities;
+ uint8_t variable[0];
+ } __attribute__ ((packed)) probe_resp;
+ struct {
+ uint32_t timestamp1;
+ uint32_t timestamp2;
+ uint16_t beacon_interval;
+ uint16_t capabilities;
+ uint8_t variable[0];
+ } __attribute__ ((packed)) beacon;
+ } u;
+} __attribute__ ((packed));
+
+
+#define ASSOC_REQ 0
+#define PROBE_REQ 4
+#define PROBE_RESP 5
+#define BEACON 8
+#define AUTH_REQ 11
+
+
+int usage(const char *progname)
+{
+ fprintf(stderr, "usage: %s -f pcap\n", progname);
+ exit(1);
+}
+
+
+/* from the very helpful https://eigenstate.org/notes/seccomp */
+void enable_seccomp()
+{
+ #define ArchField offsetof(struct seccomp_data, arch)
+ #define Allow(syscall) \
+ BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, __NR_##syscall, 0, 1), \
+ BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_ALLOW)
+
+ struct sock_filter filter[] = {
+ /* validate arch */
+#ifdef __x86_64__
+ BPF_STMT(BPF_LD+BPF_W+BPF_ABS, ArchField),
+ BPF_JUMP( BPF_JMP+BPF_JEQ+BPF_K, AUDIT_ARCH_X86_64, 1, 0),
+ BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_KILL),
+#else
+#error Please add support for this architecture to the SECCOMP BPF code.
+#endif
+
+ /* load syscall */
+ BPF_STMT(BPF_LD+BPF_W+BPF_ABS, offsetof(struct seccomp_data, nr)),
+
+ /* list of allowed syscalls */
+ Allow(exit_group),
+ Allow(read),
+ Allow(rename),
+ Allow(write),
+ Allow(stat),
+ Allow(close),
+ Allow(munmap),
+ Allow(mmap),
+ Allow(fstat),
+
+ /* and if we don't match above, die */
+ BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_KILL),
+ };
+
+ struct sock_fprog filterprog = {
+ .len = sizeof(filter)/sizeof(filter[0]),
+ .filter = filter
+ };
+
+ /* set up the restricted environment */
+ if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)) {
+ perror("prctl(PR_SET_NO_NEW_PRIVS)");
+ exit(1);
+ }
+ if (prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &filterprog) == -1) {
+ perror("prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER)");
+ exit(1);
+ }
+}
+
+
+int is_broadcast_mac(uint8_t *mac)
+{
+ if (mac[0] == 0xff && mac[1] == 0xff && mac[2] == 0xff &&
+ mac[3] == 0xff && mac[4] == 0xff && mac[5] == 0xff) {
+ return 1;
+ }
+
+ return 0;
+}
+
+
+void rewrite_ssid(uint8_t *ie, size_t ie_len)
+{
+ while (ie_len >= 2) {
+ u8 id, elen;
+
+ id = *ie++;
+ elen = *ie++;
+ ie_len -= 2;
+
+ if (elen > ie_len) {
+ break;
+ }
+
+ /* Replace SSID with 'XXXXXXXX' */
+ if ((id == 0) && (elen > 0)) {
+ int i;
+ for (i = 0; i < elen; ++i) {
+ ie[i] = 'X';
+ }
+ }
+
+ ie += elen;
+ ie_len -= elen;
+ }
+}
+
+
+int main(int argc, char **argv)
+{
+ int opt;
+ pcap_t *handle;
+ pcap_dumper_t *outhandle;
+ char errbuf[PCAP_ERRBUF_SIZE];
+ struct rlimit lim;
+ struct pcap_pkthdr hdr;
+ const uint8_t *pkt;
+ const char *filename = NULL;
+ char outfile[PATH_MAX];
+ struct stat in_st, out_st;
+ FILE *pcapfp, *outfp;
+
+ while ((opt = getopt(argc, argv, "f:")) != -1) {
+ switch(opt){
+ case 'f':
+ filename = optarg;
+ break;
+ default:
+ usage(argv[0]);
+ break;
+ }
+ }
+
+ if (filename == NULL) {
+ usage(argv[0]);
+ }
+ if ((pcapfp = fopen(filename, "rb")) == NULL) {
+ perror("fopen(pcapfile)");
+ exit(1);
+ }
+
+ snprintf(outfile, sizeof(outfile), "%s.anon", filename);
+ if ((outfp = fopen(outfile, "wb")) == NULL) {
+ perror("fopen(outfile)");
+ exit(1);
+ }
+
+ /* No more files should be opened after this. */
+ if (getrlimit(RLIMIT_NOFILE, &lim)) {
+ perror("getrlimit");
+ exit(1);
+ }
+ lim.rlim_cur = 0;
+ if (setrlimit(RLIMIT_NOFILE, &lim)) {
+ perror("setrlimit");
+ exit(1);
+ }
+
+ /* We're about to parse packets, limit damage if we process
+ * something malicious. */
+ enable_seccomp();
+
+ if ((handle = pcap_fopen_offline(pcapfp, errbuf)) == NULL) {
+ perror("Cannot open pcap file");
+ exit(1);
+ }
+ if (pcap_datalink(handle) != DLT_IEEE802_11_RADIO) {
+ fprintf(stderr, "pcap file is not DLT_IEEE802_11_RADIO");
+ exit(1);
+ }
+
+ if ((outhandle = pcap_dump_fopen(handle, outfp)) == NULL) {
+ perror("Cannot open output pcap file");
+ exit(1);
+ }
+
+ while ((pkt = pcap_next(handle, &hdr)) != NULL) {
+ struct ieee80211_radiotap_hdr *rtap;
+ struct ieee80211_mgmt *mlme;
+ uint16_t fc, type, subtype;
+
+ rtap = (struct ieee80211_radiotap_hdr *)pkt;
+ mlme = (struct ieee80211_mgmt *)(pkt + rtap->it_len);
+ fc = le_to_host16(mlme->frame_control);
+ type = (fc >> 2) & 0x0003;
+ subtype = (fc >> 4) & 0x000f;
+
+ if (type == 0 && subtype == ASSOC_REQ) {
+ uint8_t *ie = mlme->u.assoc_req.variable;
+ size_t ie_len = hdr.caplen - (ie - (uint8_t *)mlme) - rtap->it_len - 4;
+ rewrite_ssid(ie, ie_len);
+ }
+
+ if (type == 0 && subtype == PROBE_REQ) {
+ uint8_t *ie = mlme->u.probe_req.variable;
+ size_t ie_len = hdr.caplen - (ie - (uint8_t *)mlme) - rtap->it_len - 4;
+ rewrite_ssid(ie, ie_len);
+ }
+
+ if (type == 0 && subtype == PROBE_RESP) {
+ uint8_t *ie = mlme->u.probe_resp.variable;
+ size_t ie_len = hdr.caplen - (ie - (uint8_t *)mlme) - rtap->it_len - 4;
+ rewrite_ssid(ie, ie_len);
+ }
+
+ if (type == 0 && subtype == BEACON) {
+ uint8_t *ie = mlme->u.beacon.variable;
+ size_t ie_len = hdr.caplen - (ie - (uint8_t *)mlme) - rtap->it_len - 4;
+ rewrite_ssid(ie, ie_len);
+ }
+
+ /* Anonymize the MAC addresses (but preserve OUI). */
+ mlme->sa[3] = mlme->sa[4] = mlme->sa[5] = 0;
+ if (!is_broadcast_mac(mlme->da)) {
+ mlme->da[3] = mlme->da[4] = mlme->da[5] = 0;
+ }
+ if (!is_broadcast_mac(mlme->bssid)) {
+ mlme->bssid[3] = mlme->bssid[4] = mlme->bssid[5] = 0;
+ }
+
+ pcap_dump((u_char *)outhandle, &hdr, pkt);
+ }
+
+ pcap_dump_close(outhandle);
+
+ if (stat(filename, &in_st) || stat(outfile, &out_st)) {
+ perror("stat");
+ exit(1);
+ }
+ if (in_st.st_size != out_st.st_size) {
+ fprintf(stderr, "Output truncated: got %jd bytes, want %jd bytes",
+ out_st.st_size, in_st.st_size);
+ exit(1);
+ }
+ if (rename(outfile, filename)) {
+ perror("rename");
+ exit(1);
+ }
+
+ exit(0);
+}
diff --git a/taxonomy/ethernet.py b/taxonomy/ethernet.py
index 295652d..f73cb9e 100644
--- a/taxonomy/ethernet.py
+++ b/taxonomy/ethernet.py
@@ -90,6 +90,7 @@
'84:7a:88': ['htc'],
'90:e7:c4': ['htc'],
'a0:f4:50': ['htc'],
+ 'ac:37:43': ['htc'],
'b4:ce:f6': ['htc'],
'd8:b3:77': ['htc'],
'e8:99:c4': ['htc'],
diff --git a/taxonomy/pcaptest.py b/taxonomy/pcaptest.py
index 116b4d1..fc5806e 100644
--- a/taxonomy/pcaptest.py
+++ b/taxonomy/pcaptest.py
@@ -65,9 +65,17 @@
('Amazon Kindle', './testdata/pcaps/Amazon Kindle Touch 2.4GHz Specific Probe B011.pcap'),
('Amazon Kindle', './testdata/pcaps/Amazon Kindle Voyage 2.4GHz B013.pcap'),
('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'),
- ('iPhone 6/6+', './testdata/pcaps/iPhone 6 5GHz iOS 9.pcap'),
+ ('iPad 1st or 2nd gen', './testdata/pcaps/iPad 1st gen 5GHz GFRG210 iOS5.1.1 MB292LL Specific Probe.pcap'),
+ ('iPad 1st or 2nd gen', './testdata/pcaps/iPad 2nd gen 5GHz GFRG210 iOS9.3.5 FC979LL Specific Probe.pcap'),
+ ('iPad 1st or 2nd gen', './testdata/pcaps/iPad 2nd gen 5GHz Google Wifi iOS9.3.5 FC979LL Specific Probe.pcap'),
+ ('iPad 1st or 2nd gen', './testdata/pcaps/iPad 1st gen 5GHz OnHub iOS5.1.1 MB292LL Broadcast Probe.pcap'),
+ ('iPad 1st or 2nd gen', './testdata/pcaps/iPad 1st gen 5GHz Google Wifi iOS5.1.1 MB292LL Broadcast Probe.pcap'),
+ ('iPad 1st or 2nd gen', './testdata/pcaps/iPad 2nd gen 5GHz OnHub iOS9.3.5 FC979LL Broadcast Probe.pcap'),
+ ('iPad 1st or 2nd gen', './testdata/pcaps/iPad 2nd gen 5GHz OnHub iOS9.3.5 FC979LL Specific Probe.pcap'),
+ ('iPad 1st or 2nd gen', './testdata/pcaps/iPad 2nd gen 5GHz GFRG210 iOS9.3.5 FC979LL Broadcast Probe.pcap'),
+ ('iPad 1st or 2nd gen', './testdata/pcaps/iPad 1st gen 5GHz GFRG210 iOS5.1.1 MB292LL Broadcast Probe.pcap'),
+ ('iPad 1st or 2nd gen', './testdata/pcaps/iPad 2nd gen 5GHz Google Wifi iOS9.3.5 FC979LL Broadcast Probe.pcap'),
+ ('iPhone 6/6+', './testdata/pcaps/iPhone 6 5GHz GFRG210 iOS 9 MG552LL.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'),
@@ -78,6 +86,24 @@
('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'),
+ ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s 2.4GHz GFRG210 iOS10.2 MKRD2LL Broadcast Probe.pcap'),
+ ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s 2.4GHz GFRG210 iOS10.2 MKRD2LL Specific Probe.pcap'),
+ ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s 2.4GHz OnHub iOS10.2 MKRD2LL Broadcast Probe.pcap'),
+ ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s 2.4GHz Google Wifi iOS10.2 MKRD2LL Broadcast Probe.pcap'),
+ ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s 2.4GHz OnHub iOS10.2 MKRD2LL Specific Probe.pcap'),
+ ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s 2.4GHz Google Wifi iOS10.2 MKRD2LL Specific Probe.pcap'),
+ ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s+ 2.4GHz Google Wifi iOS10.2 MKV22LL Broadcast Probe.pcap'),
+ ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s+ 2.4GHz OnHub iOS10.2 MKV22LL Broadcast Probe.pcap'),
+ ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s+ 2.4GHz OnHub iOS10.2 MKV22LL Specific Probe.pcap'),
+ ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s+ 2.4GHz Google Wifi iOS10.2 MKV22LL Specific Probe.pcap'),
+ ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s+ 2.4GHz GFRG210 iOS10.2 MKV22LL Broadcast Probe.pcap'),
+ ('iPhone 7/7+', './testdata/pcaps/iPhone 7 2.4GHz GFRG210 iOS10.2 MN8H2LL Broadcast Probe.pcap'),
+ ('iPhone 7/7+', './testdata/pcaps/iPhone 7+ 2.4GHz.pcap'),
+ ('iPhone 7/7+', './testdata/pcaps/iPhone 7 2.4GHz GFRG210 iOS10.2 MN8H2LL Specific Probe.pcap'),
+ ('iPhone 7/7+', './testdata/pcaps/iPhone 7 2.4GHz Google Wifi iOS10.2 MN8H2LL Broadcast Probe.pcap'),
+ ('iPhone 7/7+', './testdata/pcaps/iPhone 7 2.4GHz OnHub iOS10.2 MN8H2LL Specific Probe.pcap'),
+ ('iPhone 7/7+', './testdata/pcaps/iPhone 7 2.4GHz OnHub iOS10.2 MN8H2LL Broadcast Probe.pcap'),
+ ('iPhone 7/7+', './testdata/pcaps/iPhone 7 2.4GHz Google Wifi iOS10.2 MN8H2LL Specific Probe.pcap'),
('iPod Touch 1st or 2nd gen', './testdata/pcaps/iPod Touch 1st gen 2.4GHz.pcap'),
('Moto G or Moto X', './testdata/pcaps/Moto X 2.4GHz Specific.pcap'),
('Moto G or Moto X', './testdata/pcaps/Moto X 2.4GHz.pcap'),
@@ -88,6 +114,16 @@
('Roku 4 or TV', './testdata/pcaps/Roku 4 5GHz.pcap'),
('Samsung Galaxy Note or S2+', './testdata/pcaps/Samsung Galaxy S2+ 5GHz.pcap'),
('Samsung Galaxy Note or S2+', './testdata/pcaps/Samsung Galaxy Note 5GHz.pcap'),
+ ('Samsung Galaxy Note or S2+', './testdata/pcaps/Samsung Galaxy Note 5GHz GFRG210 An4.0.4 SGH-T879 Broadcast Probe.pcap'),
+ ('Samsung Galaxy Note or S2+', './testdata/pcaps/Samsung Galaxy Note 5GHz GFRG210 An4.0.4 SGH-T879 Specific Probe.pcap'),
+ ('Samsung Galaxy Note or S2+', './testdata/pcaps/Samsung Galaxy Note 5GHz OnHub An4.0.4 SGH-T879 Broadcast Probe.pcap'),
+ ('Samsung Galaxy Note or S2+', './testdata/pcaps/Samsung Galaxy Note 5GHz OnHub An4.0.4 SGH-T879 Specific Probe.pcap'),
+ ('Samsung Galaxy Note or S2+', './testdata/pcaps/Samsung Galaxy Note 5GHz Google Wifi An4.0.4 SGH-T879 Specific Probe.pcap'),
+ ('Samsung Galaxy Note or S2+', './testdata/pcaps/Samsung Galaxy Note 5GHz Google Wifi An4.0.4 SGH-T879 Broadcast Probe.pcap'),
+ ('Samsung Galaxy Note 5 or S7 Edge', './testdata/pcaps/Samsung Galaxy S7 Edge 5GHz GFRG210 An6.0.1 SM-G935F Specific Probe.pcap'),
+ ('Samsung Galaxy Note 5 or S7 Edge', './testdata/pcaps/Samsung Galaxy S7 Edge 5GHz GFRG210 An6.0.1 SM-G935F Broadcast Probe.pcap'),
+ ('Samsung Galaxy Note 5 or S7 Edge', './testdata/pcaps/Samsung Galaxy Note 5 5GHz GFRG210 An6.0.1 SM-N920C Broadcast Probe.pcap'),
+ ('Samsung Galaxy Note 5 or S7 Edge', './testdata/pcaps/Samsung Galaxy Note 5 5GHz GFRG210 An6.0.1 SM-N920C Specific Probe.pcap'),
('Samsung Galaxy S2 or Infuse', './testdata/pcaps/Samsung Galaxy S2 2.4GHz.pcap'),
('Samsung Galaxy S2 or Infuse', './testdata/pcaps/Samsung Infuse 2.4GHz.pcap'),
('Sony Xperia Z4 or Z5', './testdata/pcaps/Sony Xperia Z5 5GHz.pcap'),
diff --git a/taxonomy/testdata/anonymize_pcap/chromebook_unanonymized.pcap b/taxonomy/testdata/anonymize_pcap/chromebook_unanonymized.pcap
new file mode 100644
index 0000000..9cb877c
--- /dev/null
+++ b/taxonomy/testdata/anonymize_pcap/chromebook_unanonymized.pcap
Binary files differ
diff --git a/taxonomy/testdata/dhcp.leases b/taxonomy/testdata/dhcp.leases
index f46e1f1..4d6c71c 100644
--- a/taxonomy/testdata/dhcp.leases
+++ b/taxonomy/testdata/dhcp.leases
@@ -11,11 +11,11 @@
duid 00:01:00:01:00:00:11:03:f4:f5:e8:00:00:01
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 b0:34:95:00:00:00 192.168.42.7 iPaad-Air-1st-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 1c:e6:2b:00:00:00 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 *
+1432237016 24:ab:81:00:00:00 192.168.42.11 iPhoone-4 *
1432237016 54:26:96:29:3e:39 192.168.42.12 iPhoone-5 *
1432237016 54:26:96:27:8a:10 192.168.42.12 iPhoone-5 *
1432237016 f0:db:e2:5e:a3:1a 192.168.42.13 iPhoone-6 *
@@ -30,51 +30,54 @@
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: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
-1432237016 b8:ff:61:85:9f:39 192.168.42.27 iPaad-2
-1432237016 fc:25:3f:d7:de:5a 192.168.42.28 iPaad-3
-1432237016 9c:f3:87:cc:38:1e 192.168.42.29 MacBoookAir2014
-1432237016 34:23:87:5c:86:39 192.168.42.30 HPChromeboook
-1432237016 34:af:2c:ff:80:ef 192.168.42.31 WiiU
-1432237016 00:26:4a:e6:b7:4e 192.168.42.32 iPhoone-3GS
-1432237016 d0:23:db:a2:e5:02 192.168.42.33 iPhoone-4s
-1432237016 00:26:4a:c2:89:58 192.168.42.33 iPhoone-3GS
-1432237016 74:c2:46:fc:bb:d6 192.168.42.34 AmazonDashButton
-1432237016 04:0c:ce:cf:40:2c 192.168.42.35 MacbookAir2010
-1432237016 8c:2d:aa:9c:ce:0f 192.168.42.36 iPood-5
-1432237016 dc:86:d8:a0:c8:de 192.168.42.37 iPhoone-5c
-1432237016 54:ae:27:32:ef:7f 192.168.42.38 iPaad-Air-1
-1432237016 00:1e:c2:24:7f:10 192.168.42.39 iPhoone-2
-1432237016 00:23:12:99:30:93 192.168.42.39 iPhoone-3
-1432237016 34:c8:03:89:d3:e8 192.168.42.40 Nokia-Lumia-920
-1432237016 14:91:82:07:c7:ed 192.168.42.41 WeMo
-1432237016 08:05:81:c5:1f:31 192.168.42.42 Roku3
-1432237016 5c:93:a2:00:00:00 192.168.42.43 Playstation 4
-1432237016 e0:c7:67:00:00:00 192.168.42.44 iPhoone SE
-1432237016 a4:8d:3b:00:00:00 192.168.42.45 VizioSmartTV
-1432237016 00:11:d9:00:00:00 192.168.42.46 TiVoBOLT
-1432237016 ac:3a:7a:00:00:00 192.168.42.47 Roku3-4230
-1432237016 d4:63:fe:00:00:00 192.168.42.48 LGSmartTV
-1432237016 bc:14:85:00:00:00 192.168.42.49 SamsungTizenTV
-1432237016 78:bd:bc:00:00:00 192.168.42.50 SamsungTizenTV
-1432237016 54:88:0e:00:00:00 192.168.42.51 SamsungLED75TV
-1432237016 bc:30:7d:00:00:00 192.168.42.52 PanasonicTV
-1432237016 60:12:8b:00:00:00 192.168.42.53 CanonPixma
-1432237016 88:87:17:00:00:00 192.168.42.54 CanonPixma
-1432237016 cc:95:d7:00:00:00 192.168.42.55 VizioTV
-1432237016 c0:f2:fb:00:00:00 192.168.42.56 iPaadMini3
-1432237016 04:52:f3:00:00:00 192.168.42.57 iPaadMini4
-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: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
-1432237016 b8:53:ac:00:00:00 192.168.42.67 iPhoone-7
+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 *
+1432237016 b8:ff:61:00:00:00 192.168.42.27 iPaad-2 *
+1432237016 fc:25:3f:00:00:00 192.168.42.28 iPaad-3 *
+1432237016 9c:f3:87:cc:38:1e 192.168.42.29 MacBoookAir2014 *
+1432237016 34:23:87:5c:86:39 192.168.42.30 HPChromeboook *
+1432237016 34:af:2c:ff:80:ef 192.168.42.31 WiiU *
+1432237016 00:26:4a:e6:b7:4e 192.168.42.32 iPhoone-3GS *
+1432237016 d0:23:db:a2:e5:02 192.168.42.33 iPhoone-4s *
+1432237016 00:26:4a:c2:89:58 192.168.42.33 iPhoone-3GS *
+1432237016 74:c2:46:fc:bb:d6 192.168.42.34 AmazonDashButton *
+1432237016 04:0c:ce:cf:40:2c 192.168.42.35 MacbookAir2010 *
+1432237016 8c:2d:aa:9c:ce:0f 192.168.42.36 iPood-5 *
+1432237016 dc:86:d8:a0:c8:de 192.168.42.37 iPhoone-5c *
+1432237016 54:ae:27:32:ef:7f 192.168.42.38 iPaad-Air-1 *
+1432237016 00:1e:c2:24:7f:10 192.168.42.39 iPhoone-2 *
+1432237016 00:23:12:99:30:93 192.168.42.39 iPhoone-3 *
+1432237016 34:c8:03:89:d3:e8 192.168.42.40 Nokia-Lumia-920 *
+1432237016 14:91:82:07:c7:ed 192.168.42.41 WeMo *
+1432237016 08:05:81:c5:1f:31 192.168.42.42 Roku3 *
+1432237016 5c:93:a2:00:00:00 192.168.42.43 Playstation 4 *
+1432237016 e0:c7:67:00:00:00 192.168.42.44 iPhoone SE *
+1432237016 a4:8d:3b:00:00:00 192.168.42.45 VizioSmartTV *
+1432237016 00:11:d9:00:00:00 192.168.42.46 TiVoBOLT *
+1432237016 ac:3a:7a:00:00:00 192.168.42.47 Roku3-4230 *
+1432237016 d4:63:fe:00:00:00 192.168.42.48 LGSmartTV *
+1432237016 bc:14:85:00:00:00 192.168.42.49 SamsungTizenTV *
+1432237016 78:bd:bc:00:00:00 192.168.42.50 SamsungTizenTV *
+1432237016 54:88:0e:00:00:00 192.168.42.51 SamsungLED75TV *
+1432237016 bc:30:7d:00:00:00 192.168.42.52 PanasonicTV *
+1432237016 60:12:8b:00:00:00 192.168.42.53 CanonPixma *
+1432237016 88:87:17:00:00:00 192.168.42.54 CanonPixma *
+1432237016 cc:95:d7:00:00:00 192.168.42.55 VizioTV *
+1432237016 c0:f2:fb:00:00:00 192.168.42.56 iPaadMini3 *
+1432237016 04:52:f3:00:00:00 192.168.42.57 iPaadMini4 *
+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: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 iPadAir2ndGen *
+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 *
+1432237016 b8:53:ac:00:00:00 192.168.42.67 iPhoone-7 *
+1432237016 54:26:96:00:00:00 192.168.42.68 iPhoone-5 *
+1432237016 20:3c:ae:00:00:00 192.168.42.69 iPhoone-7 *
+1432237016 d0:23:db:00:00:00 192.168.42.70 iPhoone-4s *
diff --git a/taxonomy/testdata/dhcp.signatures b/taxonomy/testdata/dhcp.signatures
index 5afd0d6..cd01395 100644
--- a/taxonomy/testdata/dhcp.signatures
+++ b/taxonomy/testdata/dhcp.signatures
@@ -3,11 +3,11 @@
3c:15:c2:00:00:01 1,3,6,15,119,95,252,44,46
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
+b0:34:95:00:00:00 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
+1c:e6:2b:00:00:00 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
+24:ab:81:00:00:00 1,3,6,15,119,252
54:26:96:29:3e:39 1,3,6,15,119,252
54:26:96:27:8a:10 1,3,6,15,119,252
f0:db:e2:5e:a3:1a 1,3,6,15,119,252
@@ -25,8 +25,8 @@
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
-b8:ff:61:85:9f:39 1,3,6,15,119,252
-fc:25:3f:d7:de:5a 1,3,6,15,119,252
+b8:ff:61:00:00:00 1,3,6,15,119,252
+fc:25:3f:00:00:00 1,3,6,15,119,252
9c:f3:87:cc:38:1e 1,3,6,15,119,95,252,44,46
34:23:87:5c:86:39 1,121,33,3,6,12,15,26,28,51,54,58,59,119,252
34:af:2c:ff:80:ef 1,3,6,15
@@ -70,3 +70,6 @@
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
b8:53:ac:00:00:00 1,121,3,6,15,119,252
+54:26:96:00:00:00 1,121,3,6,15,119,252
+20:3c:ae:00:00:00 1,121,3,6,15,119,252
+d0:23:db:00:00:00 1,3,6,15,119,252
diff --git a/taxonomy/testdata/pcaps/Amazon Kindle 2.4GHz OnHub Kindle4.1.3 B00E Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Amazon Kindle 2.4GHz OnHub Kindle4.1.3 B00E Broadcast Probe.pcap
new file mode 100644
index 0000000..64b9d60
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Amazon Kindle 2.4GHz OnHub Kindle4.1.3 B00E Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Amazon Kindle 2.4GHz OnHub Kindle4.1.3 B00E Specific Probe.pcap b/taxonomy/testdata/pcaps/Amazon Kindle 2.4GHz OnHub Kindle4.1.3 B00E Specific Probe.pcap
new file mode 100644
index 0000000..6d9ea3a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Amazon Kindle 2.4GHz OnHub Kindle4.1.3 B00E Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 7 2013 edition 2.4GHz Google Wifi An6.0.1 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Nexus 7 2013 edition 2.4GHz Google Wifi An6.0.1 Broadcast Probe.pcap
new file mode 100644
index 0000000..6d30425
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 7 2013 edition 2.4GHz Google Wifi An6.0.1 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 7 2013 edition 2.4GHz Google Wifi An6.0.1 Specific Probe.pcap b/taxonomy/testdata/pcaps/Nexus 7 2013 edition 2.4GHz Google Wifi An6.0.1 Specific Probe.pcap
new file mode 100644
index 0000000..296bbc1
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 7 2013 edition 2.4GHz Google Wifi An6.0.1 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 7 2013 edition 2.4GHz OnHub An6.0.1 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Nexus 7 2013 edition 2.4GHz OnHub An6.0.1 Broadcast Probe.pcap
new file mode 100644
index 0000000..afebaf3
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 7 2013 edition 2.4GHz OnHub An6.0.1 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 7 2013 edition 2.4GHz OnHub An6.0.1 Specific Probe.pcap b/taxonomy/testdata/pcaps/Nexus 7 2013 edition 2.4GHz OnHub An6.0.1 Specific Probe.pcap
new file mode 100644
index 0000000..612dd67
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 7 2013 edition 2.4GHz OnHub An6.0.1 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 7 2013 edition 5GHz Google Wifi An6.0.1 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Nexus 7 2013 edition 5GHz Google Wifi An6.0.1 Broadcast Probe.pcap
new file mode 100644
index 0000000..d40fc40
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 7 2013 edition 5GHz Google Wifi An6.0.1 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 7 2013 edition 5GHz Google Wifi An6.0.1 Specific Probe.pcap b/taxonomy/testdata/pcaps/Nexus 7 2013 edition 5GHz Google Wifi An6.0.1 Specific Probe.pcap
new file mode 100644
index 0000000..7dfe55d
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 7 2013 edition 5GHz Google Wifi An6.0.1 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 7 2013 edition 5GHz OnHub An6.0.1 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Nexus 7 2013 edition 5GHz OnHub An6.0.1 Broadcast Probe.pcap
new file mode 100644
index 0000000..1494eff
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 7 2013 edition 5GHz OnHub An6.0.1 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 7 2013 edition 5GHz OnHub An6.0.1 Specific Probe.pcap b/taxonomy/testdata/pcaps/Nexus 7 2013 edition 5GHz OnHub An6.0.1 Specific Probe.pcap
new file mode 100644
index 0000000..023e433
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 7 2013 edition 5GHz OnHub An6.0.1 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz GFRG210 An7.1.1 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz GFRG210 An7.1.1 Broadcast Probe.pcap
new file mode 100644
index 0000000..0a8e66a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz GFRG210 An7.1.1 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz GFRG210 An7.1.1 Pixel XL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz GFRG210 An7.1.1 Pixel XL Broadcast Probe.pcap
new file mode 100644
index 0000000..03c40dd
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz GFRG210 An7.1.1 Pixel XL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz GFRG210 An7.1.1 Pixel XL Specific Probe.pcap b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz GFRG210 An7.1.1 Pixel XL Specific Probe.pcap
new file mode 100644
index 0000000..34553fd
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz GFRG210 An7.1.1 Pixel XL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz GFRG210 An7.1.1 Specific Probe.pcap b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz GFRG210 An7.1.1 Specific Probe.pcap
new file mode 100644
index 0000000..5a02884
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz GFRG210 An7.1.1 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz Google Wifi An7.1.1 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz Google Wifi An7.1.1 Broadcast Probe.pcap
new file mode 100644
index 0000000..670090f
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz Google Wifi An7.1.1 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz Google Wifi An7.1.1 Pixel XL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz Google Wifi An7.1.1 Pixel XL Broadcast Probe.pcap
new file mode 100644
index 0000000..fe9daf3
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz Google Wifi An7.1.1 Pixel XL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz Google Wifi An7.1.1 Pixel XL Specific Probe.pcap b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz Google Wifi An7.1.1 Pixel XL Specific Probe.pcap
new file mode 100644
index 0000000..e664066
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz Google Wifi An7.1.1 Pixel XL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz Google Wifi An7.1.1 Specific Probe.pcap b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz Google Wifi An7.1.1 Specific Probe.pcap
new file mode 100644
index 0000000..3af003d
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz Google Wifi An7.1.1 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz OnHub An7.1.1 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz OnHub An7.1.1 Broadcast Probe.pcap
new file mode 100644
index 0000000..ab6c396
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz OnHub An7.1.1 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz OnHub An7.1.1 Pixel XL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz OnHub An7.1.1 Pixel XL Broadcast Probe.pcap
new file mode 100644
index 0000000..a3e410f
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz OnHub An7.1.1 Pixel XL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz OnHub An7.1.1 Pixel XL Specific Probe.pcap b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz OnHub An7.1.1 Pixel XL Specific Probe.pcap
new file mode 100644
index 0000000..cff06c6
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz OnHub An7.1.1 Pixel XL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz OnHub An7.1.1 Specific Probe.pcap b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz OnHub An7.1.1 Specific Probe.pcap
new file mode 100644
index 0000000..7888f29
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Pixel Phone 2.4GHz OnHub An7.1.1 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Pixel Phone 5GHz GFRG210 An7.1.1 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Pixel Phone 5GHz GFRG210 An7.1.1 Broadcast Probe.pcap
new file mode 100644
index 0000000..56a3f73
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Pixel Phone 5GHz GFRG210 An7.1.1 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Pixel Phone 5GHz GFRG210 An7.1.1 Pixel XL Specific Probe.pcap b/taxonomy/testdata/pcaps/Pixel Phone 5GHz GFRG210 An7.1.1 Pixel XL Specific Probe.pcap
new file mode 100644
index 0000000..5217ed8
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Pixel Phone 5GHz GFRG210 An7.1.1 Pixel XL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Pixel Phone 5GHz GFRG210 An7.1.1 Specific Probe.pcap b/taxonomy/testdata/pcaps/Pixel Phone 5GHz GFRG210 An7.1.1 Specific Probe.pcap
new file mode 100644
index 0000000..3f1dd53
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Pixel Phone 5GHz GFRG210 An7.1.1 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Pixel Phone 5GHz Google Wifi An7.1.1 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Pixel Phone 5GHz Google Wifi An7.1.1 Broadcast Probe.pcap
new file mode 100644
index 0000000..d11801c
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Pixel Phone 5GHz Google Wifi An7.1.1 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Pixel Phone 5GHz Google Wifi An7.1.1 Pixel XL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Pixel Phone 5GHz Google Wifi An7.1.1 Pixel XL Broadcast Probe.pcap
new file mode 100644
index 0000000..1bc612e
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Pixel Phone 5GHz Google Wifi An7.1.1 Pixel XL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Pixel Phone 5GHz Google Wifi An7.1.1 Pixel XL Specific Probe.pcap b/taxonomy/testdata/pcaps/Pixel Phone 5GHz Google Wifi An7.1.1 Pixel XL Specific Probe.pcap
new file mode 100644
index 0000000..4dbd9ad
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Pixel Phone 5GHz Google Wifi An7.1.1 Pixel XL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Pixel Phone 5GHz Google Wifi An7.1.1 Specific Probe.pcap b/taxonomy/testdata/pcaps/Pixel Phone 5GHz Google Wifi An7.1.1 Specific Probe.pcap
new file mode 100644
index 0000000..9495a0c
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Pixel Phone 5GHz Google Wifi An7.1.1 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Pixel Phone 5GHz OnHub An7.1.1 Pixel XL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Pixel Phone 5GHz OnHub An7.1.1 Pixel XL Broadcast Probe.pcap
new file mode 100644
index 0000000..a41a8a5
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Pixel Phone 5GHz OnHub An7.1.1 Pixel XL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Pixel Phone 5GHz OnHub An7.1.1 Pixel XL Specific Probe.pcap b/taxonomy/testdata/pcaps/Pixel Phone 5GHz OnHub An7.1.1 Pixel XL Specific Probe.pcap
new file mode 100644
index 0000000..f5b3c9a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Pixel Phone 5GHz OnHub An7.1.1 Pixel XL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Pixel Phone 5GHz OnHub An7.1.1 Specific Probe.pcap b/taxonomy/testdata/pcaps/Pixel Phone 5GHz OnHub An7.1.1 Specific Probe.pcap
new file mode 100644
index 0000000..24e9d0f
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Pixel Phone 5GHz OnHub An7.1.1 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz GFRG210 An4.0.4 SGH-T879 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz GFRG210 An4.0.4 SGH-T879 Broadcast Probe.pcap
new file mode 100644
index 0000000..3aba5c0
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz GFRG210 An4.0.4 SGH-T879 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz GFRG210 An4.0.4 SGH-T879 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz GFRG210 An4.0.4 SGH-T879 Specific Probe.pcap
new file mode 100644
index 0000000..3acff4c
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz GFRG210 An4.0.4 SGH-T879 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz Google Wifi An4.0.4 SGH-T879 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz Google Wifi An4.0.4 SGH-T879 Broadcast Probe.pcap
new file mode 100644
index 0000000..d86f8bd
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz Google Wifi An4.0.4 SGH-T879 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz Google Wifi An4.0.4 SGH-T879 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz Google Wifi An4.0.4 SGH-T879 Specific Probe.pcap
new file mode 100644
index 0000000..3626aec
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz Google Wifi An4.0.4 SGH-T879 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz OnHub An4.0.4 SGH-T879 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz OnHub An4.0.4 SGH-T879 Broadcast Probe.pcap
new file mode 100644
index 0000000..1a86944
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz OnHub An4.0.4 SGH-T879 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz OnHub An4.0.4 SGH-T879 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz OnHub An4.0.4 SGH-T879 Specific Probe.pcap
new file mode 100644
index 0000000..455d937
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz OnHub An4.0.4 SGH-T879 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz.pcap
deleted file mode 100644
index db09cba..0000000
--- a/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz.pcap
+++ /dev/null
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 2.4GHz GFRG210 An5.0 SM-N900 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 2.4GHz GFRG210 An5.0 SM-N900 Broadcast Probe.pcap
new file mode 100644
index 0000000..c14d265
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 2.4GHz GFRG210 An5.0 SM-N900 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 2.4GHz GFRG210 An5.0 SM-N900 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 2.4GHz GFRG210 An5.0 SM-N900 Specific Probe.pcap
new file mode 100644
index 0000000..2b04f1b
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 2.4GHz GFRG210 An5.0 SM-N900 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 2.4GHz Google Wifi An5.0 SM-N900 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 2.4GHz Google Wifi An5.0 SM-N900 Broadcast Probe.pcap
new file mode 100644
index 0000000..b5ba9e5
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 2.4GHz Google Wifi An5.0 SM-N900 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 2.4GHz Google Wifi An5.0 SM-N900 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 2.4GHz Google Wifi An5.0 SM-N900 Specific Probe.pcap
new file mode 100644
index 0000000..bddfed9
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 2.4GHz Google Wifi An5.0 SM-N900 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 2.4GHz OnHub An5.0 SM-N900 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 2.4GHz OnHub An5.0 SM-N900 Broadcast Probe.pcap
new file mode 100644
index 0000000..5ec87d9
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 2.4GHz OnHub An5.0 SM-N900 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 2.4GHz OnHub An5.0 SM-N900 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 2.4GHz OnHub An5.0 SM-N900 Specific Probe.pcap
new file mode 100644
index 0000000..a1e46f1
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 2.4GHz OnHub An5.0 SM-N900 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz GFRG210 An5.0 SM-N900 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz GFRG210 An5.0 SM-N900 Broadcast Probe.pcap
new file mode 100644
index 0000000..82ee93b
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz GFRG210 An5.0 SM-N900 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz GFRG210 An5.0 SM-N900 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz GFRG210 An5.0 SM-N900 Specific Probe.pcap
new file mode 100644
index 0000000..9aba548
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz GFRG210 An5.0 SM-N900 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz Google Wifi An5.0 SM-N900 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz Google Wifi An5.0 SM-N900 Broadcast Probe.pcap
new file mode 100644
index 0000000..17881d0
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz Google Wifi An5.0 SM-N900 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz Google Wifi An5.0 SM-N900 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz Google Wifi An5.0 SM-N900 Specific Probe.pcap
new file mode 100644
index 0000000..00127ed
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz Google Wifi An5.0 SM-N900 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz OnHub An5.0 SM-N900 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz OnHub An5.0 SM-N900 Broadcast Probe.pcap
new file mode 100644
index 0000000..68e2ec5
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz OnHub An5.0 SM-N900 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 2.4GHz GFRG210 An6.0.1 SM-N920C Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 2.4GHz GFRG210 An6.0.1 SM-N920C Broadcast Probe.pcap
new file mode 100644
index 0000000..421ffe2
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 2.4GHz GFRG210 An6.0.1 SM-N920C Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 2.4GHz GFRG210 An6.0.1 SM-N920C Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 2.4GHz GFRG210 An6.0.1 SM-N920C Specific Probe.pcap
new file mode 100644
index 0000000..7aeca1c
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 2.4GHz GFRG210 An6.0.1 SM-N920C Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 2.4GHz Google Wifi An6.0.1 SM-N920C Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 2.4GHz Google Wifi An6.0.1 SM-N920C Broadcast Probe.pcap
new file mode 100644
index 0000000..06c9757
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 2.4GHz Google Wifi An6.0.1 SM-N920C Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 2.4GHz Google Wifi An6.0.1 SM-N920C Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 2.4GHz Google Wifi An6.0.1 SM-N920C Specific Probe.pcap
new file mode 100644
index 0000000..aba3f43
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 2.4GHz Google Wifi An6.0.1 SM-N920C Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 2.4GHz OnHub An6.0.1 SM-N920C Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 2.4GHz OnHub An6.0.1 SM-N920C Broadcast Probe.pcap
new file mode 100644
index 0000000..526d695
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 2.4GHz OnHub An6.0.1 SM-N920C Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 2.4GHz OnHub An6.0.1 SM-N920C Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 2.4GHz OnHub An6.0.1 SM-N920C Specific Probe.pcap
new file mode 100644
index 0000000..496e756
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 2.4GHz OnHub An6.0.1 SM-N920C Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 5GHz GFRG210 An6.0.1 SM-N920C Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 5GHz GFRG210 An6.0.1 SM-N920C Broadcast Probe.pcap
new file mode 100644
index 0000000..802436e
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 5GHz GFRG210 An6.0.1 SM-N920C Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 5GHz GFRG210 An6.0.1 SM-N920C Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 5GHz GFRG210 An6.0.1 SM-N920C Specific Probe.pcap
new file mode 100644
index 0000000..e5d4c4e
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 5GHz GFRG210 An6.0.1 SM-N920C Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 5GHz Google Wifi An6.0.1 SM-N920C Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 5GHz Google Wifi An6.0.1 SM-N920C Broadcast Probe.pcap
new file mode 100644
index 0000000..dc2d879
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 5GHz Google Wifi An6.0.1 SM-N920C Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 5GHz Google Wifi An6.0.1 SM-N920C Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 5GHz Google Wifi An6.0.1 SM-N920C Specific Probe.pcap
new file mode 100644
index 0000000..489faf3
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 5GHz Google Wifi An6.0.1 SM-N920C Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 5GHz OnHub An6.0.1 SM-N920C Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 5GHz OnHub An6.0.1 SM-N920C Broadcast Probe.pcap
new file mode 100644
index 0000000..eb55d7f
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 5GHz OnHub An6.0.1 SM-N920C Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 5GHz OnHub An6.0.1 SM-N920C Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 5GHz OnHub An6.0.1 SM-N920C Specific Probe.pcap
new file mode 100644
index 0000000..05756ca
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 5GHz OnHub An6.0.1 SM-N920C Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz GFRG210 An4.0.4 SGH-T879 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz GFRG210 An4.0.4 SGH-T879 Broadcast Probe.pcap
new file mode 100644
index 0000000..d086613
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz GFRG210 An4.0.4 SGH-T879 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz GFRG210 An4.0.4 SGH-T879 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz GFRG210 An4.0.4 SGH-T879 Specific Probe.pcap
new file mode 100644
index 0000000..2142353
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz GFRG210 An4.0.4 SGH-T879 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz Google Wifi An4.0.4 SGH-T879 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz Google Wifi An4.0.4 SGH-T879 Broadcast Probe.pcap
new file mode 100644
index 0000000..64df540
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz Google Wifi An4.0.4 SGH-T879 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz Google Wifi An4.0.4 SGH-T879 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz Google Wifi An4.0.4 SGH-T879 Specific Probe.pcap
new file mode 100644
index 0000000..8c465cb
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz Google Wifi An4.0.4 SGH-T879 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz OnHub An4.0.4 SGH-T879 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz OnHub An4.0.4 SGH-T879 Broadcast Probe.pcap
new file mode 100644
index 0000000..cd08707
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz OnHub An4.0.4 SGH-T879 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz OnHub An4.0.4 SGH-T879 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz OnHub An4.0.4 SGH-T879 Specific Probe.pcap
new file mode 100644
index 0000000..b998c69
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz OnHub An4.0.4 SGH-T879 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz.pcap
index 888b913..c41925a 100644
--- a/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz.pcap
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note II 2.4GHz GFRG210 An4.4.2 SGH-I317 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note II 2.4GHz GFRG210 An4.4.2 SGH-I317 Broadcast Probe.pcap
new file mode 100644
index 0000000..ac88722
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note II 2.4GHz GFRG210 An4.4.2 SGH-I317 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note II 2.4GHz GFRG210 An4.4.2 SGH-I317 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note II 2.4GHz GFRG210 An4.4.2 SGH-I317 Specific Probe.pcap
new file mode 100644
index 0000000..2b6563e
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note II 2.4GHz GFRG210 An4.4.2 SGH-I317 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note II 2.4GHz Google Wifi An4.4.2 SGH-I317 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note II 2.4GHz Google Wifi An4.4.2 SGH-I317 Broadcast Probe.pcap
new file mode 100644
index 0000000..ced551a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note II 2.4GHz Google Wifi An4.4.2 SGH-I317 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note II 2.4GHz Google Wifi An4.4.2 SGH-I317 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note II 2.4GHz Google Wifi An4.4.2 SGH-I317 Specific Probe.pcap
new file mode 100644
index 0000000..0f75751
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note II 2.4GHz Google Wifi An4.4.2 SGH-I317 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note II 2.4GHz OnHub An4.4.2 SGH-I317 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note II 2.4GHz OnHub An4.4.2 SGH-I317 Broadcast Probe.pcap
new file mode 100644
index 0000000..b26f0f3
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note II 2.4GHz OnHub An4.4.2 SGH-I317 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note II 2.4GHz OnHub An4.4.2 SGH-I317 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note II 2.4GHz OnHub An4.4.2 SGH-I317 Specific Probe.pcap
new file mode 100644
index 0000000..38c36fd
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note II 2.4GHz OnHub An4.4.2 SGH-I317 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note II 5GHz GFRG210 An4.4.2 SGH-I317 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note II 5GHz GFRG210 An4.4.2 SGH-I317 Specific Probe.pcap
new file mode 100644
index 0000000..3099ea5
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note II 5GHz GFRG210 An4.4.2 SGH-I317 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note II 5GHz Google Wifi An4.4.2 SGH-I317 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note II 5GHz Google Wifi An4.4.2 SGH-I317 Broadcast Probe.pcap
new file mode 100644
index 0000000..051522a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note II 5GHz Google Wifi An4.4.2 SGH-I317 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note II 5GHz Google Wifi An4.4.2 SGH-I317 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note II 5GHz Google Wifi An4.4.2 SGH-I317 Specific Probe.pcap
new file mode 100644
index 0000000..8ebc97e
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note II 5GHz Google Wifi An4.4.2 SGH-I317 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note II 5GHz OnHub An4.4.2 SGH-I317 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note II 5GHz OnHub An4.4.2 SGH-I317 Broadcast Probe.pcap
new file mode 100644
index 0000000..3e45089
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note II 5GHz OnHub An4.4.2 SGH-I317 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note II 5GHz OnHub An4.4.2 SGH-I317 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note II 5GHz OnHub An4.4.2 SGH-I317 Specific Probe.pcap
new file mode 100644
index 0000000..4facea3
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note II 5GHz OnHub An4.4.2 SGH-I317 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz GFRG210 An5.0.1 GT-I9500 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz GFRG210 An5.0.1 GT-I9500 Broadcast Probe.pcap
new file mode 100644
index 0000000..3be90ad
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz GFRG210 An5.0.1 GT-I9500 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz GFRG210 An5.0.1 GT-I9500 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz GFRG210 An5.0.1 GT-I9500 Specific Probe.pcap
new file mode 100644
index 0000000..75ffff1
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz GFRG210 An5.0.1 GT-I9500 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz Google Wifi An5.0.1 GT-I9500 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz Google Wifi An5.0.1 GT-I9500 Broadcast Probe.pcap
new file mode 100644
index 0000000..100241a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz Google Wifi An5.0.1 GT-I9500 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz Google Wifi An5.0.1 GT-I9500 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz Google Wifi An5.0.1 GT-I9500 Specific Probe.pcap
new file mode 100644
index 0000000..f3e9137
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz Google Wifi An5.0.1 GT-I9500 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz Google Wifi An5.0.1 SPH-L720 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz Google Wifi An5.0.1 SPH-L720 Broadcast Probe.pcap
new file mode 100644
index 0000000..a3d22bf
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz Google Wifi An5.0.1 SPH-L720 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz Google Wifi An5.0.1 SPH-L720 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz Google Wifi An5.0.1 SPH-L720 Specific Probe.pcap
new file mode 100644
index 0000000..497740f
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz Google Wifi An5.0.1 SPH-L720 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz OnHub An5.0.1 GT-I9500 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz OnHub An5.0.1 GT-I9500 Broadcast Probe.pcap
new file mode 100644
index 0000000..51bf98a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz OnHub An5.0.1 GT-I9500 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz OnHub An5.0.1 GT-I9500 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz OnHub An5.0.1 GT-I9500 Specific Probe.pcap
new file mode 100644
index 0000000..e9ceb51
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz OnHub An5.0.1 GT-I9500 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz OnHub An5.0.1 SPH-L720 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz OnHub An5.0.1 SPH-L720 Broadcast Probe.pcap
new file mode 100644
index 0000000..9b192bf
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz OnHub An5.0.1 SPH-L720 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz OnHub An5.0.1 SPH-L720 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz OnHub An5.0.1 SPH-L720 Specific Probe.pcap
new file mode 100644
index 0000000..2af92a5
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz OnHub An5.0.1 SPH-L720 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz GFRG210 An5.0.1 GT-I9500 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz GFRG210 An5.0.1 GT-I9500 Broadcast Probe.pcap
new file mode 100644
index 0000000..6f6dac7
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz GFRG210 An5.0.1 GT-I9500 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz GFRG210 An5.0.1 GT-I9500 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz GFRG210 An5.0.1 GT-I9500 Specific Probe.pcap
new file mode 100644
index 0000000..517e956
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz GFRG210 An5.0.1 GT-I9500 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz Google Wifi An5.0.1 GT-I9500 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz Google Wifi An5.0.1 GT-I9500 Broadcast Probe.pcap
new file mode 100644
index 0000000..1768baa
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz Google Wifi An5.0.1 GT-I9500 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz Google Wifi An5.0.1 GT-I9500 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz Google Wifi An5.0.1 GT-I9500 Specific Probe.pcap
new file mode 100644
index 0000000..f57b9de
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz Google Wifi An5.0.1 GT-I9500 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz Google Wifi An5.0.1 SPH-L720 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz Google Wifi An5.0.1 SPH-L720 Broadcast Probe.pcap
new file mode 100644
index 0000000..49ee8f5
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz Google Wifi An5.0.1 SPH-L720 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz Google Wifi An5.0.1 SPH-L720 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz Google Wifi An5.0.1 SPH-L720 Specific Probe.pcap
new file mode 100644
index 0000000..899a71d
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz Google Wifi An5.0.1 SPH-L720 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz OnHub An5.0.1 GT-I9500 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz OnHub An5.0.1 GT-I9500 Broadcast Probe.pcap
new file mode 100644
index 0000000..1eccfb3
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz OnHub An5.0.1 GT-I9500 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz OnHub An5.0.1 GT-I9500 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz OnHub An5.0.1 GT-I9500 Specific Probe.pcap
new file mode 100644
index 0000000..d95f230
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz OnHub An5.0.1 GT-I9500 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz OnHub An5.0.1 SPH-L720 Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz OnHub An5.0.1 SPH-L720 Broadcast Probe.pcap
new file mode 100644
index 0000000..e130642
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz OnHub An5.0.1 SPH-L720 Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz OnHub An5.0.1 SPH-L720 Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz OnHub An5.0.1 SPH-L720 Specific Probe.pcap
new file mode 100644
index 0000000..3d11fb1
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz OnHub An5.0.1 SPH-L720 Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 2.4GHz GFRG210 An6.0.1 SM-G935F Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 2.4GHz GFRG210 An6.0.1 SM-G935F Broadcast Probe.pcap
new file mode 100644
index 0000000..236f52a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 2.4GHz GFRG210 An6.0.1 SM-G935F Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 2.4GHz GFRG210 An6.0.1 SM-G935F Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 2.4GHz GFRG210 An6.0.1 SM-G935F Specific Probe.pcap
new file mode 100644
index 0000000..45cfb90
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 2.4GHz GFRG210 An6.0.1 SM-G935F Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 2.4GHz Google Wifi An6.0.1 SM-G935F Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 2.4GHz Google Wifi An6.0.1 SM-G935F Broadcast Probe.pcap
new file mode 100644
index 0000000..2aae15a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 2.4GHz Google Wifi An6.0.1 SM-G935F Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 2.4GHz Google Wifi An6.0.1 SM-G935F Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 2.4GHz Google Wifi An6.0.1 SM-G935F Specific Probe.pcap
new file mode 100644
index 0000000..0ff8ffb
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 2.4GHz Google Wifi An6.0.1 SM-G935F Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 2.4GHz OnHub An6.0.1 SM-G935F Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 2.4GHz OnHub An6.0.1 SM-G935F Broadcast Probe.pcap
new file mode 100644
index 0000000..02d3d6c
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 2.4GHz OnHub An6.0.1 SM-G935F Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 2.4GHz OnHub An6.0.1 SM-G935F Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 2.4GHz OnHub An6.0.1 SM-G935F Specific Probe.pcap
new file mode 100644
index 0000000..ed9fdc8
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 2.4GHz OnHub An6.0.1 SM-G935F Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 5GHz GFRG210 An6.0.1 SM-G935F Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 5GHz GFRG210 An6.0.1 SM-G935F Broadcast Probe.pcap
new file mode 100644
index 0000000..e84f427
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 5GHz GFRG210 An6.0.1 SM-G935F Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 5GHz GFRG210 An6.0.1 SM-G935F Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 5GHz GFRG210 An6.0.1 SM-G935F Specific Probe.pcap
new file mode 100644
index 0000000..db62491
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 5GHz GFRG210 An6.0.1 SM-G935F Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 5GHz Google Wifi An6.0.1 SM-G935F Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 5GHz Google Wifi An6.0.1 SM-G935F Broadcast Probe.pcap
new file mode 100644
index 0000000..4f95d1b
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 5GHz Google Wifi An6.0.1 SM-G935F Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 5GHz Google Wifi An6.0.1 SM-G935F Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 5GHz Google Wifi An6.0.1 SM-G935F Specific Probe.pcap
new file mode 100644
index 0000000..200be7b
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 5GHz Google Wifi An6.0.1 SM-G935F Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 5GHz OnHub An6.0.1 SM-G935F Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 5GHz OnHub An6.0.1 SM-G935F Broadcast Probe.pcap
new file mode 100644
index 0000000..198dc6d
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 5GHz OnHub An6.0.1 SM-G935F Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 5GHz OnHub An6.0.1 SM-G935F Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 5GHz OnHub An6.0.1 SM-G935F Specific Probe.pcap
new file mode 100644
index 0000000..d414fa1
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S7 Edge 5GHz OnHub An6.0.1 SM-G935F Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 1st gen 2.4GHz GFRG210 iOS5.1.1 MB292LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad 1st gen 2.4GHz GFRG210 iOS5.1.1 MB292LL Broadcast Probe.pcap
new file mode 100644
index 0000000..6c1812f
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad 1st gen 2.4GHz GFRG210 iOS5.1.1 MB292LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 1st gen 2.4GHz GFRG210 iOS5.1.1 MB292LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad 1st gen 2.4GHz GFRG210 iOS5.1.1 MB292LL Specific Probe.pcap
new file mode 100644
index 0000000..ca5e80a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad 1st gen 2.4GHz GFRG210 iOS5.1.1 MB292LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 1st gen 2.4GHz Google Wifi iOS5.1.1 MB292LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad 1st gen 2.4GHz Google Wifi iOS5.1.1 MB292LL Broadcast Probe.pcap
new file mode 100644
index 0000000..055eb76
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad 1st gen 2.4GHz Google Wifi iOS5.1.1 MB292LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 1st gen 2.4GHz Google Wifi iOS5.1.1 MB292LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad 1st gen 2.4GHz Google Wifi iOS5.1.1 MB292LL Specific Probe.pcap
new file mode 100644
index 0000000..ec7305a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad 1st gen 2.4GHz Google Wifi iOS5.1.1 MB292LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 1st gen 2.4GHz OnHub iOS5.1.1 MB292LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad 1st gen 2.4GHz OnHub iOS5.1.1 MB292LL Broadcast Probe.pcap
new file mode 100644
index 0000000..84b4fe1
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad 1st gen 2.4GHz OnHub iOS5.1.1 MB292LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 1st gen 2.4GHz OnHub iOS5.1.1 MB292LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad 1st gen 2.4GHz OnHub iOS5.1.1 MB292LL Specific Probe.pcap
new file mode 100644
index 0000000..2782f2b
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad 1st gen 2.4GHz OnHub iOS5.1.1 MB292LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 1st gen 2.4GHz.pcap b/taxonomy/testdata/pcaps/iPad 1st gen 2.4GHz.pcap
index abb0c88..6d81277 100644
--- a/taxonomy/testdata/pcaps/iPad 1st gen 2.4GHz.pcap
+++ b/taxonomy/testdata/pcaps/iPad 1st gen 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 1st gen 5GHz GFRG210 iOS5.1.1 MB292LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad 1st gen 5GHz GFRG210 iOS5.1.1 MB292LL Broadcast Probe.pcap
new file mode 100644
index 0000000..178f234
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad 1st gen 5GHz GFRG210 iOS5.1.1 MB292LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 1st gen 5GHz GFRG210 iOS5.1.1 MB292LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad 1st gen 5GHz GFRG210 iOS5.1.1 MB292LL Specific Probe.pcap
new file mode 100644
index 0000000..bb613d0
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad 1st gen 5GHz GFRG210 iOS5.1.1 MB292LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 1st gen 5GHz Google Wifi iOS5.1.1 MB292LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad 1st gen 5GHz Google Wifi iOS5.1.1 MB292LL Broadcast Probe.pcap
new file mode 100644
index 0000000..f0d3aab
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad 1st gen 5GHz Google Wifi iOS5.1.1 MB292LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 1st gen 5GHz OnHub iOS5.1.1 MB292LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad 1st gen 5GHz OnHub iOS5.1.1 MB292LL Broadcast Probe.pcap
new file mode 100644
index 0000000..6556422
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad 1st gen 5GHz OnHub iOS5.1.1 MB292LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 1st gen 5GHz.pcap b/taxonomy/testdata/pcaps/iPad 1st gen 5GHz.pcap
deleted file mode 100644
index c5c8cf3..0000000
--- a/taxonomy/testdata/pcaps/iPad 1st gen 5GHz.pcap
+++ /dev/null
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 2nd gen 2.4GHz Google Wifi iOS9.3.5FC979LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad 2nd gen 2.4GHz Google Wifi iOS9.3.5FC979LL Broadcast Probe.pcap
new file mode 100644
index 0000000..a7c0bfb
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad 2nd gen 2.4GHz Google Wifi iOS9.3.5FC979LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 2nd gen 2.4GHz Google Wifi iOS9.3.5FC979LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad 2nd gen 2.4GHz Google Wifi iOS9.3.5FC979LL Specific Probe.pcap
new file mode 100644
index 0000000..ce915e3
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad 2nd gen 2.4GHz Google Wifi iOS9.3.5FC979LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 2nd gen 2.4GHz OnHub iOS9.3.5FC979LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad 2nd gen 2.4GHz OnHub iOS9.3.5FC979LL Broadcast Probe.pcap
new file mode 100644
index 0000000..acfc7bc
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad 2nd gen 2.4GHz OnHub iOS9.3.5FC979LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 2nd gen 2.4GHz OnHub iOS9.3.5FC979LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad 2nd gen 2.4GHz OnHub iOS9.3.5FC979LL Specific Probe.pcap
new file mode 100644
index 0000000..03d895a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad 2nd gen 2.4GHz OnHub iOS9.3.5FC979LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 2nd gen 2.4GHz.pcap b/taxonomy/testdata/pcaps/iPad 2nd gen 2.4GHz.pcap
index 0c185cb..af3261b 100644
--- a/taxonomy/testdata/pcaps/iPad 2nd gen 2.4GHz.pcap
+++ b/taxonomy/testdata/pcaps/iPad 2nd gen 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz GFRG210 iOS9.3.5 FC979LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz GFRG210 iOS9.3.5 FC979LL Broadcast Probe.pcap
new file mode 100644
index 0000000..d180571
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz GFRG210 iOS9.3.5 FC979LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz GFRG210 iOS9.3.5 FC979LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz GFRG210 iOS9.3.5 FC979LL Specific Probe.pcap
new file mode 100644
index 0000000..938fc66
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz GFRG210 iOS9.3.5 FC979LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz Google Wifi iOS9.3.5 FC979LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz Google Wifi iOS9.3.5 FC979LL Broadcast Probe.pcap
new file mode 100644
index 0000000..b7f755f
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz Google Wifi iOS9.3.5 FC979LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz Google Wifi iOS9.3.5 FC979LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz Google Wifi iOS9.3.5 FC979LL Specific Probe.pcap
new file mode 100644
index 0000000..11a9ef2
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz Google Wifi iOS9.3.5 FC979LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz OnHub iOS9.3.5 FC979LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz OnHub iOS9.3.5 FC979LL Broadcast Probe.pcap
new file mode 100644
index 0000000..23e202c
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz OnHub iOS9.3.5 FC979LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz OnHub iOS9.3.5 FC979LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz OnHub iOS9.3.5 FC979LL Specific Probe.pcap
new file mode 100644
index 0000000..6dfcbed
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz OnHub iOS9.3.5 FC979LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz.pcap b/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz.pcap
deleted file mode 100644
index f92b77e..0000000
--- a/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz.pcap
+++ /dev/null
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz GFRG210 iOS10.2 ME906LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz GFRG210 iOS10.2 ME906LL Broadcast Probe.pcap
new file mode 100644
index 0000000..e4f4d69
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz GFRG210 iOS10.2 ME906LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz GFRG210 iOS10.2 ME906LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz GFRG210 iOS10.2 ME906LL Specific Probe.pcap
new file mode 100644
index 0000000..38f34c2
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz GFRG210 iOS10.2 ME906LL Specific Probe.pcap
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
index a671244..ddeb2e1 100644
--- 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
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
index 72bd72e..84dafcd 100644
--- 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
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz ME906LL iOS 9 Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz ME906LL iOS 9 Specific Probe.pcap
index 21a1acc..795f6ce 100644
--- a/taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz ME906LL iOS 9 Specific Probe.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 1st gen 2.4GHz OnHub iOS10.2 ME906LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz OnHub iOS10.2 ME906LL Broadcast Probe.pcap
new file mode 100644
index 0000000..677fb7b
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz OnHub iOS10.2 ME906LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz OnHub iOS10.2 ME906LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz OnHub iOS10.2 ME906LL Specific Probe.pcap
new file mode 100644
index 0000000..f7f6f4f
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 1st gen 2.4GHz OnHub iOS10.2 ME906LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz GFRG210 iOS10.2 ME906LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz GFRG210 iOS10.2 ME906LL Broadcast Probe.pcap
new file mode 100644
index 0000000..d74dbb4
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz GFRG210 iOS10.2 ME906LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz GFRG210 iOS10.2 ME906LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz GFRG210 iOS10.2 ME906LL Specific Probe.pcap
new file mode 100644
index 0000000..d84733f
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz GFRG210 iOS10.2 ME906LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz Google Wifi iOS10.2 ME906LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz Google Wifi iOS10.2 ME906LL Broadcast Probe.pcap
new file mode 100644
index 0000000..9d0d0bb
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz Google Wifi iOS10.2 ME906LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz Google Wifi iOS10.2 ME906LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz Google Wifi iOS10.2 ME906LL Specific Probe.pcap
new file mode 100644
index 0000000..edb5b8e
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz Google Wifi iOS10.2 ME906LL Specific Probe.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
index 4aea434..1206dfa 100644
--- 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
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
index b73645e..d355d06 100644
--- 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
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz OnHub iOS10.2 ME906LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz OnHub iOS10.2 ME906LL Broadcast Probe.pcap
new file mode 100644
index 0000000..0d7e1a1
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz OnHub iOS10.2 ME906LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz OnHub iOS10.2 ME906LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz OnHub iOS10.2 ME906LL Specific Probe.pcap
new file mode 100644
index 0000000..096887a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 1st gen 5GHz OnHub iOS10.2 ME906LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz GFRG210 iOS10.2 MH1J2LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz GFRG210 iOS10.2 MH1J2LL Broadcast Probe.pcap
new file mode 100644
index 0000000..0a969e7
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz GFRG210 iOS10.2 MH1J2LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz GFRG210 iOS10.2 MH1J2LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz GFRG210 iOS10.2 MH1J2LL Specific Probe.pcap
new file mode 100644
index 0000000..2d49fd2
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz GFRG210 iOS10.2 MH1J2LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz Google Wifi iOS10.2 MH1J2LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz Google Wifi iOS10.2 MH1J2LL Broadcast Probe.pcap
new file mode 100644
index 0000000..1876154
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz Google Wifi iOS10.2 MH1J2LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz Google Wifi iOS10.2 MH1J2LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz Google Wifi iOS10.2 MH1J2LL Specific Probe.pcap
new file mode 100644
index 0000000..f1a49d7
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz Google Wifi iOS10.2 MH1J2LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz OnHub iOS10.2 MH1J2LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz OnHub iOS10.2 MH1J2LL Broadcast Probe.pcap
new file mode 100644
index 0000000..aa316dc
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz OnHub iOS10.2 MH1J2LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz OnHub iOS10.2 MH1J2LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz OnHub iOS10.2 MH1J2LL Specific Probe.pcap
new file mode 100644
index 0000000..978b79c
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 2nd gen 2.4GHz OnHub iOS10.2 MH1J2LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz GFRG210 iOS10.2 MH1J2LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz GFRG210 iOS10.2 MH1J2LL Broadcast Probe.pcap
new file mode 100644
index 0000000..6a4cc5d
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz GFRG210 iOS10.2 MH1J2LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz GFRG210 iOS10.2 MH1J2LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz GFRG210 iOS10.2 MH1J2LL Specific Probe.pcap
new file mode 100644
index 0000000..664a5f0
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz GFRG210 iOS10.2 MH1J2LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz Google Wifi iOS10.2 MH1J2LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz Google Wifi iOS10.2 MH1J2LL Broadcast Probe.pcap
new file mode 100644
index 0000000..010307e
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz Google Wifi iOS10.2 MH1J2LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz Google Wifi iOS10.2 MH1J2LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz Google Wifi iOS10.2 MH1J2LL Specific Probe.pcap
new file mode 100644
index 0000000..b4b312f
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz Google Wifi iOS10.2 MH1J2LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz OnHub iOS10.2 MH1J2LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz OnHub iOS10.2 MH1J2LL Broadcast Probe.pcap
new file mode 100644
index 0000000..26baf2a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz OnHub iOS10.2 MH1J2LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz OnHub iOS10.2 MH1J2LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz OnHub iOS10.2 MH1J2LL Specific Probe.pcap
new file mode 100644
index 0000000..8294cf4
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Air 2nd gen 5GHz OnHub iOS10.2 MH1J2LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz GFRG210 iOS9.3.5 MD528LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz GFRG210 iOS9.3.5 MD528LL Broadcast Probe.pcap
new file mode 100644
index 0000000..87c8ba4
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz GFRG210 iOS9.3.5 MD528LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz GFRG210 iOS9.3.5 MD528LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz GFRG210 iOS9.3.5 MD528LL Specific Probe.pcap
new file mode 100644
index 0000000..4a5e392
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz GFRG210 iOS9.3.5 MD528LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz Google Wifi iOS9.3.5 MD528LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz Google Wifi iOS9.3.5 MD528LL Broadcast Probe.pcap
new file mode 100644
index 0000000..17c29ce
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz Google Wifi iOS9.3.5 MD528LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz Google Wifi iOS9.3.5 MD528LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz Google Wifi iOS9.3.5 MD528LL Specific Probe.pcap
new file mode 100644
index 0000000..a2a8f0a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz Google Wifi iOS9.3.5 MD528LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz MD528LL.pcap b/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz MD528LL.pcap
index 88e101a..8b0e8bd 100644
--- a/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz MD528LL.pcap
+++ b/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz MD528LL.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz OnHub iOS9.3.5 MD528LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz OnHub iOS9.3.5 MD528LL Broadcast Probe.pcap
new file mode 100644
index 0000000..8e16604
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz OnHub iOS9.3.5 MD528LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz OnHub iOS9.3.5 MD528LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz OnHub iOS9.3.5 MD528LL Specific Probe.pcap
new file mode 100644
index 0000000..c268b39
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Mini 1st gen 2.4GHz OnHub iOS9.3.5 MD528LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz GFRG210 iOS9.3.5 MD528LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz GFRG210 iOS9.3.5 MD528LL Broadcast Probe.pcap
new file mode 100644
index 0000000..a7ef8c6
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz GFRG210 iOS9.3.5 MD528LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz GFRG210 iOS9.3.5 MD528LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz GFRG210 iOS9.3.5 MD528LL Specific Probe.pcap
new file mode 100644
index 0000000..6021bc3
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz GFRG210 iOS9.3.5 MD528LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz Google Wifi iOS9.3.5 MD528LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz Google Wifi iOS9.3.5 MD528LL Broadcast Probe.pcap
new file mode 100644
index 0000000..c6532df
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz Google Wifi iOS9.3.5 MD528LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz Google Wifi iOS9.3.5 MD528LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz Google Wifi iOS9.3.5 MD528LL Specific Probe.pcap
new file mode 100644
index 0000000..2931b8b
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz Google Wifi iOS9.3.5 MD528LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz MD528LL.pcap b/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz MD528LL.pcap
index 7d2b6ac..3c2fcd3 100644
--- a/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz MD528LL.pcap
+++ b/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz MD528LL.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz OnHub iOS9.3.5 MD528LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz OnHub iOS9.3.5 MD528LL Broadcast Probe.pcap
new file mode 100644
index 0000000..8cfc225
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz OnHub iOS9.3.5 MD528LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz OnHub iOS9.3.5 MD528LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz OnHub iOS9.3.5 MD528LL Specific Probe.pcap
new file mode 100644
index 0000000..76480c6
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad Mini 1st gen 5GHz OnHub iOS9.3.5 MD528LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 4 2.4GHz GFRG210 iOS7.1.2 MC676LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 4 2.4GHz GFRG210 iOS7.1.2 MC676LL Broadcast Probe.pcap
new file mode 100644
index 0000000..82d2479
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 4 2.4GHz GFRG210 iOS7.1.2 MC676LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 4 2.4GHz GFRG210 iOS7.1.2 MC676LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 4 2.4GHz GFRG210 iOS7.1.2 MC676LL Specific Probe.pcap
new file mode 100644
index 0000000..8a6c563
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 4 2.4GHz GFRG210 iOS7.1.2 MC676LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 4 2.4GHz Google Wifi iOS7.1.2 MC676LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 4 2.4GHz Google Wifi iOS7.1.2 MC676LL Broadcast Probe.pcap
new file mode 100644
index 0000000..dc2033d
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 4 2.4GHz Google Wifi iOS7.1.2 MC676LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 4 2.4GHz Google Wifi iOS7.1.2 MC676LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 4 2.4GHz Google Wifi iOS7.1.2 MC676LL Specific Probe.pcap
new file mode 100644
index 0000000..435dfef
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 4 2.4GHz Google Wifi iOS7.1.2 MC676LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 4 2.4GHz OnHub iOS7.1.2 MC676LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 4 2.4GHz OnHub iOS7.1.2 MC676LL Specific Probe.pcap
new file mode 100644
index 0000000..4c7d30d
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 4 2.4GHz OnHub iOS7.1.2 MC676LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 4 2.4GHz.pcap b/taxonomy/testdata/pcaps/iPhone 4 2.4GHz.pcap
deleted file mode 100644
index c339b79..0000000
--- a/taxonomy/testdata/pcaps/iPhone 4 2.4GHz.pcap
+++ /dev/null
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 4s 2.4GHz GFRG210 iOS9.3.5 MC920LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 4s 2.4GHz GFRG210 iOS9.3.5 MC920LL Broadcast Probe.pcap
new file mode 100644
index 0000000..9390fc4
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 4s 2.4GHz GFRG210 iOS9.3.5 MC920LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 4s 2.4GHz GFRG210 iOS9.3.5 MC920LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 4s 2.4GHz GFRG210 iOS9.3.5 MC920LL Specific Probe.pcap
new file mode 100644
index 0000000..d2b3c94
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 4s 2.4GHz GFRG210 iOS9.3.5 MC920LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 4s 2.4GHz Google Wifi iOS9.3.5 MC920LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 4s 2.4GHz Google Wifi iOS9.3.5 MC920LL Broadcast Probe.pcap
new file mode 100644
index 0000000..7094610
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 4s 2.4GHz Google Wifi iOS9.3.5 MC920LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 4s 2.4GHz Google Wifi iOS9.3.5 MC920LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 4s 2.4GHz Google Wifi iOS9.3.5 MC920LL Specific Probe.pcap
new file mode 100644
index 0000000..4cc0378
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 4s 2.4GHz Google Wifi iOS9.3.5 MC920LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 4s 2.4GHz OnHub iOS9.3.5 MC920LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 4s 2.4GHz OnHub iOS9.3.5 MC920LL Broadcast Probe.pcap
new file mode 100644
index 0000000..f0e8168
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 4s 2.4GHz OnHub iOS9.3.5 MC920LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 4s 2.4GHz OnHub iOS9.3.5 MC920LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 4s 2.4GHz OnHub iOS9.3.5 MC920LL Specific Probe.pcap
new file mode 100644
index 0000000..19b5f0c
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 4s 2.4GHz OnHub iOS9.3.5 MC920LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 2.4GHz GFRG210 iOS10.2 MD654LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz GFRG210 iOS10.2 MD654LL Broadcast Probe.pcap
new file mode 100644
index 0000000..0fc9907
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz GFRG210 iOS10.2 MD654LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 2.4GHz GFRG210 iOS10.2 MD654LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz GFRG210 iOS10.2 MD654LL Specific Probe.pcap
new file mode 100644
index 0000000..97380c6
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz GFRG210 iOS10.2 MD654LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 2.4GHz GFRG210 iOS9.3.5 MD654LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz GFRG210 iOS9.3.5 MD654LL Broadcast Probe.pcap
new file mode 100644
index 0000000..2793824
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz GFRG210 iOS9.3.5 MD654LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 2.4GHz GFRG210 iOS9.3.5 MD654LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz GFRG210 iOS9.3.5 MD654LL Specific Probe.pcap
new file mode 100644
index 0000000..868149b
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz GFRG210 iOS9.3.5 MD654LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 2.4GHz Google Wifi iOS10.2 MD654LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz Google Wifi iOS10.2 MD654LL Broadcast Probe.pcap
new file mode 100644
index 0000000..0b8eace
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz Google Wifi iOS10.2 MD654LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 2.4GHz Google Wifi iOS10.2 MD654LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz Google Wifi iOS10.2 MD654LL Specific Probe.pcap
new file mode 100644
index 0000000..7d36d8e
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz Google Wifi iOS10.2 MD654LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 2.4GHz Google Wifi iOS9.3.5 MD654LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz Google Wifi iOS9.3.5 MD654LL Specific Probe.pcap
new file mode 100644
index 0000000..5d1b5bd
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz Google Wifi iOS9.3.5 MD654LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 2.4GHz OnHub iOS10.2 MD654LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz OnHub iOS10.2 MD654LL Broadcast Probe.pcap
new file mode 100644
index 0000000..7ca999e
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz OnHub iOS10.2 MD654LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 2.4GHz OnHub iOS10.2 MD654LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz OnHub iOS10.2 MD654LL Specific Probe.pcap
new file mode 100644
index 0000000..474d1d6
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz OnHub iOS10.2 MD654LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 2.4GHz OnHub iOS9.3.5 MD654LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz OnHub iOS9.3.5 MD654LL Broadcast Probe.pcap
new file mode 100644
index 0000000..993d748
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz OnHub iOS9.3.5 MD654LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 2.4GHz OnHub iOS9.3.5 MD654LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz OnHub iOS9.3.5 MD654LL Specific Probe.pcap
new file mode 100644
index 0000000..96a47e0
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 2.4GHz OnHub iOS9.3.5 MD654LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 5GHz GFRG210 iOS10.2 MD654LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 5GHz GFRG210 iOS10.2 MD654LL Broadcast Probe.pcap
new file mode 100644
index 0000000..034d54a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 5GHz GFRG210 iOS10.2 MD654LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 5GHz GFRG210 iOS10.2 MD654LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 5GHz GFRG210 iOS10.2 MD654LL Specific Probe.pcap
new file mode 100644
index 0000000..1303f3d
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 5GHz GFRG210 iOS10.2 MD654LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 5GHz GFRG210 iOS9.3.5 MD654LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 5GHz GFRG210 iOS9.3.5 MD654LL Broadcast Probe.pcap
new file mode 100644
index 0000000..e448568
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 5GHz GFRG210 iOS9.3.5 MD654LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 5GHz GFRG210 iOS9.3.5 MD654LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 5GHz GFRG210 iOS9.3.5 MD654LL Specific Probe.pcap
new file mode 100644
index 0000000..c683046
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 5GHz GFRG210 iOS9.3.5 MD654LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 5GHz Google Wifi iOS10.2 MD654LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 5GHz Google Wifi iOS10.2 MD654LL Broadcast Probe.pcap
new file mode 100644
index 0000000..dc26c1e
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 5GHz Google Wifi iOS10.2 MD654LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 5GHz Google Wifi iOS10.2 MD654LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 5GHz Google Wifi iOS10.2 MD654LL Specific Probe.pcap
new file mode 100644
index 0000000..a455e24
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 5GHz Google Wifi iOS10.2 MD654LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 5GHz Google Wifi iOS9.3.5 MD654LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 5GHz Google Wifi iOS9.3.5 MD654LL Broadcast Probe.pcap
new file mode 100644
index 0000000..36b39d4
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 5GHz Google Wifi iOS9.3.5 MD654LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 5GHz Google Wifi iOS9.3.5 MD654LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 5GHz Google Wifi iOS9.3.5 MD654LL Specific Probe.pcap
new file mode 100644
index 0000000..5dd17b4
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 5GHz Google Wifi iOS9.3.5 MD654LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 5GHz OnHub iOS10.2 MD654LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 5GHz OnHub iOS10.2 MD654LL Broadcast Probe.pcap
new file mode 100644
index 0000000..990cb8f
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 5GHz OnHub iOS10.2 MD654LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 5GHz OnHub iOS10.2 MD654LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 5GHz OnHub iOS10.2 MD654LL Specific Probe.pcap
new file mode 100644
index 0000000..dc7217b
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 5GHz OnHub iOS10.2 MD654LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 5GHz OnHub iOS9.3.5 MD654LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 5GHz OnHub iOS9.3.5 MD654LL Broadcast Probe.pcap
new file mode 100644
index 0000000..cb95768
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 5GHz OnHub iOS9.3.5 MD654LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 5GHz OnHub iOS9.3.5 MD654LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5 5GHz OnHub iOS9.3.5 MD654LL Specific Probe.pcap
new file mode 100644
index 0000000..81473cc
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 5GHz OnHub iOS9.3.5 MD654LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz GFRG210 iOS10.2 ME299LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz GFRG210 iOS10.2 ME299LL Broadcast Probe.pcap
new file mode 100644
index 0000000..8b709d1
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz GFRG210 iOS10.2 ME299LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz GFRG210 iOS10.2 ME299LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz GFRG210 iOS10.2 ME299LL Specific Probe.pcap
new file mode 100644
index 0000000..dbf00ad
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz GFRG210 iOS10.2 ME299LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz Google Wifi iOS10.2 ME299LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz Google Wifi iOS10.2 ME299LL Broadcast Probe.pcap
new file mode 100644
index 0000000..9a76509
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz Google Wifi iOS10.2 ME299LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz Google Wifi iOS10.2 ME299LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz Google Wifi iOS10.2 ME299LL Specific Probe.pcap
new file mode 100644
index 0000000..bb73de5
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz Google Wifi iOS10.2 ME299LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz OnHub iOS10.2 ME299LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz OnHub iOS10.2 ME299LL Broadcast Probe.pcap
new file mode 100644
index 0000000..0f5d12c
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz OnHub iOS10.2 ME299LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz OnHub iOS10.2 ME299LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz OnHub iOS10.2 ME299LL Specific Probe.pcap
new file mode 100644
index 0000000..0ac687d
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz OnHub iOS10.2 ME299LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5s 5GHz GFRG210 iOS10.2 ME299LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5s 5GHz GFRG210 iOS10.2 ME299LL Broadcast Probe.pcap
new file mode 100644
index 0000000..9570e53
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5s 5GHz GFRG210 iOS10.2 ME299LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5s 5GHz GFRG210 iOS10.2 ME299LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5s 5GHz GFRG210 iOS10.2 ME299LL Specific Probe.pcap
new file mode 100644
index 0000000..8f61b95
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5s 5GHz GFRG210 iOS10.2 ME299LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5s 5GHz Google Wifi iOS10.2 ME299LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5s 5GHz Google Wifi iOS10.2 ME299LL Broadcast Probe.pcap
new file mode 100644
index 0000000..7f602f6
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5s 5GHz Google Wifi iOS10.2 ME299LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5s 5GHz Google Wifi iOS10.2 ME299LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5s 5GHz Google Wifi iOS10.2 ME299LL Specific Probe.pcap
new file mode 100644
index 0000000..075b73e
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5s 5GHz Google Wifi iOS10.2 ME299LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5s 5GHz OnHub iOS10.2 ME299LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5s 5GHz OnHub iOS10.2 ME299LL Broadcast Probe.pcap
new file mode 100644
index 0000000..f144826
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5s 5GHz OnHub iOS10.2 ME299LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5s 5GHz OnHub iOS10.2 ME299LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 5s 5GHz OnHub iOS10.2 ME299LL Specific Probe.pcap
new file mode 100644
index 0000000..bccb963
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5s 5GHz OnHub iOS10.2 ME299LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6 2.4GHz GFRG210 iOS 9 MG552LL.pcap b/taxonomy/testdata/pcaps/iPhone 6 2.4GHz GFRG210 iOS 9 MG552LL.pcap
new file mode 100644
index 0000000..675486c
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6 2.4GHz GFRG210 iOS 9 MG552LL.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6 2.4GHz GFRG210 iOS10.2 MG552LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6 2.4GHz GFRG210 iOS10.2 MG552LL Broadcast Probe.pcap
new file mode 100644
index 0000000..b0f9b5e
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6 2.4GHz GFRG210 iOS10.2 MG552LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6 2.4GHz GFRG210 iOS10.2 MG552LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6 2.4GHz GFRG210 iOS10.2 MG552LL Specific Probe.pcap
new file mode 100644
index 0000000..063214d
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6 2.4GHz GFRG210 iOS10.2 MG552LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6 2.4GHz Google Wifi iOS10.2 MG552LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6 2.4GHz Google Wifi iOS10.2 MG552LL Broadcast Probe.pcap
new file mode 100644
index 0000000..4ed4697
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6 2.4GHz Google Wifi iOS10.2 MG552LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6 2.4GHz Google Wifi iOS10.2 MG552LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6 2.4GHz Google Wifi iOS10.2 MG552LL Specific Probe.pcap
new file mode 100644
index 0000000..174b804
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6 2.4GHz Google Wifi iOS10.2 MG552LL Specific Probe.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
deleted file mode 100644
index 7ff9271..0000000
--- a/taxonomy/testdata/pcaps/iPhone 6 2.4GHz MG552LL iOS 10.0.2 Broadcast Probe.pcap
+++ /dev/null
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
deleted file mode 100644
index a592849..0000000
--- a/taxonomy/testdata/pcaps/iPhone 6 2.4GHz MG552LL iOS 10.0.2 Specific Probe.pcap
+++ /dev/null
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6 2.4GHz OnHub iOS10.2 MG552LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6 2.4GHz OnHub iOS10.2 MG552LL Broadcast Probe.pcap
new file mode 100644
index 0000000..099dcaa
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6 2.4GHz OnHub iOS10.2 MG552LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6 2.4GHz iOS 9.pcap b/taxonomy/testdata/pcaps/iPhone 6 2.4GHz iOS 9.pcap
deleted file mode 100644
index b35358f..0000000
--- a/taxonomy/testdata/pcaps/iPhone 6 2.4GHz iOS 9.pcap
+++ /dev/null
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6 5GHz GFRG210 iOS 9 MG552LL.pcap b/taxonomy/testdata/pcaps/iPhone 6 5GHz GFRG210 iOS 9 MG552LL.pcap
new file mode 100644
index 0000000..c38b520
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6 5GHz GFRG210 iOS 9 MG552LL.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6 5GHz GFRG210 iOS10.2 MG552LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6 5GHz GFRG210 iOS10.2 MG552LL Broadcast Probe.pcap
new file mode 100644
index 0000000..56fdb14
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6 5GHz GFRG210 iOS10.2 MG552LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6 5GHz Google Wifi iOS10.2 MG552LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6 5GHz Google Wifi iOS10.2 MG552LL Broadcast Probe.pcap
new file mode 100644
index 0000000..1836a37
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6 5GHz Google Wifi iOS10.2 MG552LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6 5GHz OnHub iOS10.2 MG552LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6 5GHz OnHub iOS10.2 MG552LL Broadcast Probe.pcap
new file mode 100644
index 0000000..e1a4025
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6 5GHz OnHub iOS10.2 MG552LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6 5GHz iOS 9.pcap b/taxonomy/testdata/pcaps/iPhone 6 5GHz iOS 9.pcap
deleted file mode 100644
index 33c3839..0000000
--- a/taxonomy/testdata/pcaps/iPhone 6 5GHz iOS 9.pcap
+++ /dev/null
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz GFRG210 iOS10.2 MGC02LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz GFRG210 iOS10.2 MGC02LL Broadcast Probe.pcap
new file mode 100644
index 0000000..cc40854
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz GFRG210 iOS10.2 MGC02LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz GFRG210 iOS10.2 MGC02LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz GFRG210 iOS10.2 MGC02LL Specific Probe.pcap
new file mode 100644
index 0000000..22962d6
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz GFRG210 iOS10.2 MGC02LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz Google Wifi iOS10.2 MGC02LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz Google Wifi iOS10.2 MGC02LL Specific Probe.pcap
new file mode 100644
index 0000000..7dbaf5a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz Google Wifi iOS10.2 MGC02LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz OnHub iOS10.2 MGC02LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz OnHub iOS10.2 MGC02LL Broadcast Probe.pcap
new file mode 100644
index 0000000..3ec4000
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz OnHub iOS10.2 MGC02LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz OnHub iOS10.2 MGC02LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz OnHub iOS10.2 MGC02LL Specific Probe.pcap
new file mode 100644
index 0000000..b4e2d00
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz OnHub iOS10.2 MGC02LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6+ 5GHz GFRG210 iOS10.2 MGC02LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6+ 5GHz GFRG210 iOS10.2 MGC02LL Specific Probe.pcap
new file mode 100644
index 0000000..d2e03dd
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6+ 5GHz GFRG210 iOS10.2 MGC02LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6+ 5GHz Google Wifi iOS10.2 MGC02LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6+ 5GHz Google Wifi iOS10.2 MGC02LL Broadcast Probe.pcap
new file mode 100644
index 0000000..345f19a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6+ 5GHz Google Wifi iOS10.2 MGC02LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6+ 5GHz Google Wifi iOS10.2 MGC02LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6+ 5GHz Google Wifi iOS10.2 MGC02LL Specific Probe.pcap
new file mode 100644
index 0000000..e2a4433
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6+ 5GHz Google Wifi iOS10.2 MGC02LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6+ 5GHz OnHub iOS10.2 MGC02LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6+ 5GHz OnHub iOS10.2 MGC02LL Broadcast Probe.pcap
new file mode 100644
index 0000000..bdf27a3
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6+ 5GHz OnHub iOS10.2 MGC02LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6+ 5GHz OnHub iOS10.2 MGC02LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6+ 5GHz OnHub iOS10.2 MGC02LL Specific Probe.pcap
new file mode 100644
index 0000000..08ab191
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6+ 5GHz OnHub iOS10.2 MGC02LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz GFRG210 iOS10.2 MKRD2LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz GFRG210 iOS10.2 MKRD2LL Broadcast Probe.pcap
new file mode 100644
index 0000000..cda6aa0
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz GFRG210 iOS10.2 MKRD2LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz GFRG210 iOS10.2 MKRD2LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz GFRG210 iOS10.2 MKRD2LL Specific Probe.pcap
new file mode 100644
index 0000000..61508b3
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz GFRG210 iOS10.2 MKRD2LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz Google Wifi iOS10.2 MKRD2LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz Google Wifi iOS10.2 MKRD2LL Broadcast Probe.pcap
new file mode 100644
index 0000000..0100883
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz Google Wifi iOS10.2 MKRD2LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz Google Wifi iOS10.2 MKRD2LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz Google Wifi iOS10.2 MKRD2LL Specific Probe.pcap
new file mode 100644
index 0000000..954e4f9
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz Google Wifi iOS10.2 MKRD2LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz OnHub iOS10.2 MKRD2LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz OnHub iOS10.2 MKRD2LL Broadcast Probe.pcap
new file mode 100644
index 0000000..bc425d6
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz OnHub iOS10.2 MKRD2LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz OnHub iOS10.2 MKRD2LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz OnHub iOS10.2 MKRD2LL Specific Probe.pcap
new file mode 100644
index 0000000..170bf40
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz OnHub iOS10.2 MKRD2LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s 5GHz GFRG210 iOS10.2 MKRD2LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s 5GHz GFRG210 iOS10.2 MKRD2LL Specific Probe.pcap
new file mode 100644
index 0000000..e80ebd0
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s 5GHz GFRG210 iOS10.2 MKRD2LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s 5GHz Google Wifi iOS10.2 MKRD2LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s 5GHz Google Wifi iOS10.2 MKRD2LL Broadcast Probe.pcap
new file mode 100644
index 0000000..0a2afc8
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s 5GHz Google Wifi iOS10.2 MKRD2LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s 5GHz Google Wifi iOS10.2 MKRD2LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s 5GHz Google Wifi iOS10.2 MKRD2LL Specific Probe.pcap
new file mode 100644
index 0000000..f69d77e
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s 5GHz Google Wifi iOS10.2 MKRD2LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s 5GHz OnHub iOS10.2 MKRD2LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s 5GHz OnHub iOS10.2 MKRD2LL Broadcast Probe.pcap
new file mode 100644
index 0000000..9289e65
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s 5GHz OnHub iOS10.2 MKRD2LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s 5GHz OnHub iOS10.2 MKRD2LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s 5GHz OnHub iOS10.2 MKRD2LL Specific Probe.pcap
new file mode 100644
index 0000000..fa6d3e1
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s 5GHz OnHub iOS10.2 MKRD2LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz GFRG210 iOS10.2 MKV22LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz GFRG210 iOS10.2 MKV22LL Broadcast Probe.pcap
new file mode 100644
index 0000000..fec1857
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz GFRG210 iOS10.2 MKV22LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz Google Wifi iOS10.2 MKV22LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz Google Wifi iOS10.2 MKV22LL Broadcast Probe.pcap
new file mode 100644
index 0000000..2b74353
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz Google Wifi iOS10.2 MKV22LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz Google Wifi iOS10.2 MKV22LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz Google Wifi iOS10.2 MKV22LL Specific Probe.pcap
new file mode 100644
index 0000000..d1cd939
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz Google Wifi iOS10.2 MKV22LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz OnHub iOS10.2 MKV22LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz OnHub iOS10.2 MKV22LL Broadcast Probe.pcap
new file mode 100644
index 0000000..83a63f6
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz OnHub iOS10.2 MKV22LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz OnHub iOS10.2 MKV22LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz OnHub iOS10.2 MKV22LL Specific Probe.pcap
new file mode 100644
index 0000000..1c10867
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz OnHub iOS10.2 MKV22LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz GFRG210 iOS10.2 MKV22LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz GFRG210 iOS10.2 MKV22LL Broadcast Probe.pcap
new file mode 100644
index 0000000..fcefee5
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz GFRG210 iOS10.2 MKV22LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz GFRG210 iOS10.2 MKV22LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz GFRG210 iOS10.2 MKV22LL Specific Probe.pcap
new file mode 100644
index 0000000..ff0ca59
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz GFRG210 iOS10.2 MKV22LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz Google Wifi iOS10.2 MKV22LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz Google Wifi iOS10.2 MKV22LL Broadcast Probe.pcap
new file mode 100644
index 0000000..3d8592f
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz Google Wifi iOS10.2 MKV22LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz Google Wifi iOS10.2 MKV22LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz Google Wifi iOS10.2 MKV22LL Specific Probe.pcap
new file mode 100644
index 0000000..287f5d5
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz Google Wifi iOS10.2 MKV22LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz OnHub iOS10.2 MKV22LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz OnHub iOS10.2 MKV22LL Broadcast Probe.pcap
new file mode 100644
index 0000000..28b5b98
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz OnHub iOS10.2 MKV22LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz OnHub iOS10.2 MKV22LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz OnHub iOS10.2 MKV22LL Specific Probe.pcap
new file mode 100644
index 0000000..09c126b
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz OnHub iOS10.2 MKV22LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 7 2.4GHz GFRG210 iOS10.2 MN8H2LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 7 2.4GHz GFRG210 iOS10.2 MN8H2LL Broadcast Probe.pcap
new file mode 100644
index 0000000..7bfde4d
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 7 2.4GHz GFRG210 iOS10.2 MN8H2LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 7 2.4GHz GFRG210 iOS10.2 MN8H2LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 7 2.4GHz GFRG210 iOS10.2 MN8H2LL Specific Probe.pcap
new file mode 100644
index 0000000..cee17f5
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 7 2.4GHz GFRG210 iOS10.2 MN8H2LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 7 2.4GHz Google Wifi iOS10.2 MN8H2LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 7 2.4GHz Google Wifi iOS10.2 MN8H2LL Broadcast Probe.pcap
new file mode 100644
index 0000000..d5f7059
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 7 2.4GHz Google Wifi iOS10.2 MN8H2LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 7 2.4GHz Google Wifi iOS10.2 MN8H2LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 7 2.4GHz Google Wifi iOS10.2 MN8H2LL Specific Probe.pcap
new file mode 100644
index 0000000..a7ae86d
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 7 2.4GHz Google Wifi iOS10.2 MN8H2LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 7 2.4GHz OnHub iOS10.2 MN8H2LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 7 2.4GHz OnHub iOS10.2 MN8H2LL Broadcast Probe.pcap
new file mode 100644
index 0000000..33f7ef4
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 7 2.4GHz OnHub iOS10.2 MN8H2LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 7 2.4GHz OnHub iOS10.2 MN8H2LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 7 2.4GHz OnHub iOS10.2 MN8H2LL Specific Probe.pcap
new file mode 100644
index 0000000..dce5689
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 7 2.4GHz OnHub iOS10.2 MN8H2LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 7 5GHz GFRG210 iOS10.2 MN8H2LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 7 5GHz GFRG210 iOS10.2 MN8H2LL Broadcast Probe.pcap
new file mode 100644
index 0000000..135cf3a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 7 5GHz GFRG210 iOS10.2 MN8H2LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 7 5GHz GFRG210 iOS10.2 MN8H2LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 7 5GHz GFRG210 iOS10.2 MN8H2LL Specific Probe.pcap
new file mode 100644
index 0000000..16b61d4
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 7 5GHz GFRG210 iOS10.2 MN8H2LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 7 5GHz Google Wifi iOS10.2 MN8H2LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 7 5GHz Google Wifi iOS10.2 MN8H2LL Broadcast Probe.pcap
new file mode 100644
index 0000000..24156e3
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 7 5GHz Google Wifi iOS10.2 MN8H2LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 7 5GHz Google Wifi iOS10.2 MN8H2LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 7 5GHz Google Wifi iOS10.2 MN8H2LL Specific Probe.pcap
new file mode 100644
index 0000000..8e4381f
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 7 5GHz Google Wifi iOS10.2 MN8H2LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 7 5GHz OnHub iOS10.2 MN8H2LL Broadcast Probe.pcap b/taxonomy/testdata/pcaps/iPhone 7 5GHz OnHub iOS10.2 MN8H2LL Broadcast Probe.pcap
new file mode 100644
index 0000000..ada81e7
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 7 5GHz OnHub iOS10.2 MN8H2LL Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 7 5GHz OnHub iOS10.2 MN8H2LL Specific Probe.pcap b/taxonomy/testdata/pcaps/iPhone 7 5GHz OnHub iOS10.2 MN8H2LL Specific Probe.pcap
new file mode 100644
index 0000000..6da03d8
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 7 5GHz OnHub iOS10.2 MN8H2LL Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/tests/anonymize_pcap_test.sh b/taxonomy/tests/anonymize_pcap_test.sh
new file mode 100755
index 0000000..d7de444
--- /dev/null
+++ b/taxonomy/tests/anonymize_pcap_test.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+. ./wvtest/wvtest.sh
+
+export LC_ALL=C
+
+ORIGFILE="./testdata/anonymize_pcap/chromebook_unanonymized.pcap"
+ANONFILE="/tmp/anonpcaptest.$$.pcap"
+
+WVSTART "anonymize_pcap test"
+
+rm -f "$ANONFILE"
+cp "$ORIGFILE" "$ANONFILE"
+
+WVPASS ./anonymize_pcap -f "$ANONFILE"
+
+orig=$(./tax_signature -f "$ORIGFILE" | cut -d' ' -f2- )
+anon=$(./tax_signature -f "$ANONFILE" | cut -d' ' -f2- )
+WVPASSEQ "$orig" "$anon"
+
+# Obfuscate SSID
+WVPASSNE "$(strings "$ORIGFILE" | grep GEEKHOLD)" ""
+WVPASSEQ "$(strings "$ANONFILE" | grep GEEKHOLD)" ""
+
+# Obfuscate MAC address
+WVPASS grep -qP "\\x6c\\x29\\x95\\x7c\\x25\\xfe" "$ORIGFILE"
+WVFAIL grep -qP "\\x6c\\x29\\x95\\x7c\\x25\\xfe" "$ANONFILE"
diff --git a/taxonomy/wifi.py b/taxonomy/wifi.py
index b2a0086..4057db6 100644
--- a/taxonomy/wifi.py
+++ b/taxonomy/wifi.py
@@ -331,12 +331,16 @@
('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,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,127,221(001018,2),221(00904c,51),221(0050f2,2),221(0017f2,10),htcap:01fe,htagg:1b,htmcs:0000ffff,txpow:e708,extcap:000008|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'),
+ '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,127,221(001018,2),221(00904c,51),221(0050f2,2),221(0017f2,10),htcap:01bc,htagg:1b,htmcs:0000ffff,txpow:1805,extcap:000008|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.
+ # iPad Air 2nd gen with iOS 9. 5GHz 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':
@@ -356,15 +360,23 @@
'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 with iOS 10. 5GHz signatures identical to iPhone 6s, use name to distinguish them.
+ '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|name:ipad':
('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':
+ '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|name:ipad':
+ ('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,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:0400080000000040|name:ipad':
+ ('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:0400080000000040|name:ipad':
('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,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:0400080000000040|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:0400080000000040|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'),
@@ -448,25 +460,35 @@
'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:1704|os:ios':
('iPhone 5c', '', '2.4GHz'),
+ # iPhone 5s 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:00000804|assoc:0,1,33,36,48,45,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,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:1603|os:ios':
('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'),
+
+ # iPhone 5s 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: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,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,127,221(001018,2),221(00904c,51),221(0050f2,2),221(0017f2,10),htcap:0062,htagg:1a,htmcs:000000ff,txpow:1603,extcap:000008|os:ios':
+ ('iPhone 5s', '', '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: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,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),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,127,221(001018,2),221(00904c,51),221(0050f2,2),221(0017f2,10),htcap:0020,htagg:1a,htmcs:000000ff,txpow:1805,extcap:000008|os:ios':
+ ('iPhone 5s', '', '2.4GHz'),
+ # iPhone 6/6+ with iOS 9 and prior.
'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'),
'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,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':
@@ -495,34 +517,80 @@
('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,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:0400080000000040|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'),
+ '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:0400080000000040|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,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:0400080000000040|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'),
+ '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:0400080000000040|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:0400080000000040|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:1302,extcap:0400080000000040|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:0400080000000040|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: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:0400080000000040|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: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:0400080000000040|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: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':
+ ('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: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':
+ ('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,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:0400080000000040|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:0400080000000040|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: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:1102,extcap:0400080000000040|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: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:1102,extcap:0400080000000040|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'),
+ '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: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: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: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,45,127,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:002d,htagg:17,htmcs:0000ffff,txpow:1202,extcap:0400080000000040|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:0400080000000040|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,45,127,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:002d,htagg:17,htmcs:0000ffff,txpow:1202,extcap:0400080000000040|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:0400080000000040|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: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:1202,extcap:0400080000000040|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: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:1202,extcap:0400080000000040|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':
@@ -564,10 +632,28 @@
'wifi4|probe:0,1,45,127,107,191,221(0017f2,10),221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:000000ff,vhtcap:0f807032,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:00000884|assoc:0,1,33,36,48,70,54,45,127,191,199,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f811032,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:13f9,extcap:000008|os:ios':
('iPhone 7', '', '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:0f811032,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:00000884|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:0f811032,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:13f9,extcap:000008|os:ios':
+ ('iPhone 7', '', '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:0f817032,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:00000884|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:0f811032,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:13f9,extcap:000008|os:ios':
+ ('iPhone 7', '', '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:0f801032,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:00000884|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:0f813032,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:13f9,extcap:000008|os:ios':
+ ('iPhone 7', '', '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:0f807032,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:00000884|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:0f813032,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:13f9,extcap:000008|os:ios':
+ ('iPhone 7', '', '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:0f803032,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:00000884|assoc:0,1,33,36,48,70,45,191,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f811032,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:13f9|os:ios':
+ ('iPhone 7', '', '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:0f807032,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:00000884|assoc:0,1,33,36,48,70,45,191,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f811032,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:13f9|os:ios':
+ ('iPhone 7', '', '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:0f817032,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:00000884|assoc:0,1,33,36,48,45,191,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f817032,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:13f9|os:ios':
('iPhone 7+', '', '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:00000884|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:13f9,extcap:000008|os:ios':
+ ('iPhone 7/7+', '', '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:00000884|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:13f9,extcap:000008|os:ios':
+ ('iPhone 7/7+', '', '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:0000088400000040|assoc:0,1,50,33,36,48,70,45,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:002d,htagg:17,htmcs:0000ffff,txpow:13f9|os:ios':
+ ('iPhone 7/7+', '', '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:00000884|assoc:0,1,50,33,36,48,70,45,221(0017f2,10),221(001018,2),221(0050f2,2),htcap:002d,htagg:17,htmcs:0000ffff,txpow:13f9|os:ios':
- ('iPhone 7+', '', '2.4GHz'),
+ ('iPhone 7/7+', '', '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,45,127,221(001018,2),221(0050f2,2),htcap:0063,htagg:17,htmcs:000000ff,txpow:e002,extcap:000008|os:ios':
('iPhone SE', '', '5GHz'),
@@ -804,6 +890,8 @@
('Nexus 7', '2013 edition', '5GHz'),
'wifi4|probe:0,1,45,221(0050f2,8),htcap:016e,htagg:03,htmcs:000000ff|assoc:0,1,33,36,48,45,221(0050f2,2),127,htcap:016e,htagg:03,htmcs:000000ff,extcap:00000a02|oui:asus':
('Nexus 7', '2013 edition', '5GHz'),
+ 'wifi4|probe:0,1,45,221(0050f2,8),htcap:016e,htagg:03,htmcs:000000ff|assoc:0,1,48,45,221(0050f2,2),127,htcap:016e,htagg:03,htmcs:000000ff,extcap:00000a02|oui:asus':
+ ('Nexus 7', '2013 edition', '5GHz'),
'wifi4|probe:0,1,45,221(0050f2,8),127,221(0050f2,4),221(506f9a,9),htcap:016e,htagg:03,htmcs:000000ff,extcap:00000a02,wps:Nexus_7|assoc:0,1,33,36,48,45,221(0050f2,2),127,htcap:016e,htagg:03,htmcs:000000ff,extcap:00000a02':
('Nexus 7', '2013 edition', '5GHz'),
'wifi4|probe:0,1,45,221(0050f2,8),221(0050f2,4),221(506f9a,10),221(506f9a,9),htcap:016e,htagg:03,htmcs:000000ff,wps:Nexus_7|assoc:0,1,33,36,48,45,221(0050f2,2),127,htcap:016e,htagg:03,htmcs:000000ff,extcap:00000a02':
@@ -907,12 +995,28 @@
'wifi4|probe:0,1,45,221(0050f2,8),191,127,htcap:01ef,htagg:1f,htmcs:0000ffff,vhtcap:339071b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:040000000000004080|assoc:0,1,33,36,48,70,45,221(0050f2,2),191,127,htcap:01ef,htagg:1f,htmcs:0000ffff,vhtcap:339071b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,txpow:1e08,extcap:04000a020100004080|oui:htc':
('Pixel Phone', '', '5GHz'),
+ 'wifi4|probe:0,1,45,191,221(0050f2,8),127,htcap:01ef,htagg:1f,htmcs:0000ffff,vhtcap:338001b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:04000a020100004080|assoc:0,1,33,36,48,70,45,221(0050f2,2),191,127,htcap:01ef,htagg:1f,htmcs:0000ffff,vhtcap:339071b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,txpow:1e08,extcap:04000a020100004080|oui:htc':
+ ('Pixel Phone', '', '5GHz'),
'wifi4|probe:0,1,45,191,221(0050f2,8),127,htcap:01ef,htagg:df,htmcs:0000ffff,vhtcap:338001b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:04000a020100004080|assoc:0,1,48,45,221(0050f2,2),191,127,htcap:01ef,htagg:1f,htmcs:0000ffff,vhtcap:339071b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:04000a020100004080|oui:htc':
('Pixel Phone', '', '5GHz'),
+ 'wifi4|probe:0,1,45,221(0050f2,8),191,127,htcap:01ef,htagg:1f,htmcs:0000ffff,vhtcap:339071b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:040000000000004080|assoc:0,1,48,45,221(0050f2,2),191,127,htcap:01ef,htagg:1f,htmcs:0000ffff,vhtcap:339071b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:04000a020100004080|oui:htc':
+ ('Pixel Phone', '', '5GHz'),
+ 'wifi4|probe:0,1,45,221(0050f2,8),191,127,htcap:01ef,htagg:1f,htmcs:0000ffff,vhtcap:339031b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:040000000000004080|assoc:0,1,48,45,221(0050f2,2),191,127,htcap:01ef,htagg:1f,htmcs:0000ffff,vhtcap:339031b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:04000a020100004080|oui:htc':
+ ('Pixel Phone', '', '5GHz'),
+ 'wifi4|probe:0,1,45,191,221(0050f2,8),127,htcap:01ef,htagg:1f,htmcs:0000ffff,vhtcap:338001b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:04000a020100004080|assoc:0,1,48,45,221(0050f2,2),191,127,htcap:01ef,htagg:1f,htmcs:0000ffff,vhtcap:339031b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:04000a020100004080|oui:htc':
+ ('Pixel Phone', '', '5GHz'),
+ 'wifi4|probe:0,1,45,191,221(0050f2,8),127,htcap:01ef,htagg:1f,htmcs:0000ffff,vhtcap:338001b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:04000a020100004080|assoc:0,1,48,45,221(0050f2,2),191,127,htcap:01ef,htagg:1f,htmcs:0000ffff,vhtcap:339071b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:04000a020100004080|oui:htc':
+ ('Pixel Phone', '', '5GHz'),
'wifi4|probe:0,1,50,3,45,221(0050f2,8),127,htcap:01ad,htagg:1f,htmcs:0000ffff,extcap:040000000000000080|assoc:0,1,50,33,48,70,45,221(0050f2,2),127,htcap:01ad,htagg:1f,htmcs:0000ffff,txpow:1e08,extcap:04000a020100000080|oui:htc':
('Pixel Phone', '', '2.4GHz'),
+ 'wifi4|probe:0,1,50,3,45,221(0050f2,8),127,htcap:01ad,htagg:1f,htmcs:0000ffff,extcap:040000000000000080|assoc:0,1,50,48,45,221(0050f2,2),127,htcap:01ad,htagg:1f,htmcs:0000ffff,extcap:04000a020100000080|oui:htc':
+ ('Pixel Phone', '', '2.4GHz'),
'wifi4|probe:0,1,50,45,191,221(0050f2,8),3,127,htcap:01ef,htagg:df,htmcs:0000ffff,vhtcap:33800192,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:04000a020100004080|assoc:0,1,50,48,45,221(0050f2,2),127,htcap:01ad,htagg:1f,htmcs:0000ffff,extcap:04000a020100000080|oui:htc':
('Pixel Phone', '', '2.4GHz'),
+ 'wifi4|probe:0,1,50,45,191,221(0050f2,8),3,127,htcap:01ef,htagg:1f,htmcs:0000ffff,vhtcap:33800192,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:04000a020100004080|assoc:0,1,50,48,45,221(0050f2,2),127,htcap:01ad,htagg:1f,htmcs:0000ffff,extcap:04000a020100000080|oui:htc':
+ ('Pixel Phone', '', '2.4GHz'),
+ 'wifi4|probe:0,1,50,45,191,221(0050f2,8),3,127,htcap:01ef,htagg:1f,htmcs:0000ffff,vhtcap:33800192,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:04000a020100004080|assoc:0,1,50,33,48,70,45,221(0050f2,2),127,htcap:01ad,htagg:1f,htmcs:0000ffff,txpow:1e08,extcap:04000a020100000080|oui:htc':
+ ('Pixel Phone', '', '2.4GHz'),
'wifi4|probe:0,1|assoc:0,1,221(005043,1)|os:playstation':
('Playstation', '3', '2.4GHz'),
@@ -1017,9 +1121,13 @@
'wifi4|probe:0,1,45,3,221(001018,2),221(00904c,51),htcap:000c,htagg:19,htmcs:000000ff|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:000c,htagg:19,htmcs:000000ff,txpow:0f09|oui:samsung':
('Samsung Galaxy Note or S2+', '', '5GHz'),
+ 'wifi4|probe:0,1,45,221(001018,2),221(00904c,51),htcap:000c,htagg:19,htmcs:000000ff|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:000c,htagg:19,htmcs:000000ff,txpow:0f09|oui:samsung':
+ ('Samsung Galaxy Note or S2+', '', '5GHz'),
'wifi4|probe:0,1,50,45,3,221(001018,2),221(00904c,51),htcap:100c,htagg:19,htmcs:000000ff|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:100c,htagg:19,htmcs:000000ff,txpow:1409|oui:samsung':
('Samsung Galaxy Note', '', '2.4GHz'),
+ 'wifi4|probe:0,1,50,45,221(001018,2),221(00904c,51),htcap:100c,htagg:19,htmcs:000000ff|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:100c,htagg:19,htmcs:000000ff,txpow:1409|oui:samsung':
+ ('Samsung Galaxy Note', '', '2.4GHz'),
'wifi4|probe:0,1,45,221(001018,2),221(00904c,51),htcap:0062,htagg:1a,htmcs:000000ff|assoc:0,1,33,36,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:0062,htagg:1a,htmcs:000000ff,txpow:0e09|oui:samsung':
('Samsung Galaxy Note II', '', '5GHz'),
@@ -1033,15 +1141,27 @@
('Samsung Galaxy Note II', '', '2.4GHz'),
'wifi4|probe:0,1,50,45,3,221(001018,2),221(00904c,51),htcap:1020,htagg:1a,htmcs:000000ff|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:1020,htagg:1a,htmcs:000000ff,txpow:1209|oui:samsung':
('Samsung Galaxy Note II', '', '2.4GHz'),
+ 'wifi4|probe:0,1,50,45,221(001018,2),221(00904c,51),htcap:1020,htagg:1a,htmcs:000000ff|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:1020,htagg:1a,htmcs:000000ff,txpow:1209|oui:samsung':
+ ('Samsung Galaxy Note II', '', '2.4GHz'),
'wifi4|probe:0,1,3,45,127,191,221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:016f,htagg:17,htmcs:000000ff,vhtcap:0f805932,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:0000080000000040|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(00904c,4),221(0050f2,2),htcap:016f,htagg:17,htmcs:000000ff,vhtcap:0f805932,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:e008,extcap:0000000000000040|oui:samsung':
('Samsung Galaxy Note 3', '', '5GHz'),
'wifi4|probe:0,1,45,127,191,221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:016f,htagg:17,htmcs:000000ff,vhtcap:0f805932,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:0000080000000040|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(00904c,4),221(0050f2,2),htcap:016f,htagg:17,htmcs:000000ff,vhtcap:0f805932,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:e008,extcap:0000000000000040|oui:samsung':
('Samsung Galaxy Note 3', '', '5GHz'),
+ 'wifi4|probe:0,1,45,127,191,221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:016f,htagg:17,htmcs:000000ff,vhtcap:0f805932,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:0000088001400040|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(00904c,4),221(0050f2,2),htcap:016f,htagg:17,htmcs:000000ff,vhtcap:0f805932,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:e008,extcap:0000008001400040|oui:samsung':
+ ('Samsung Galaxy Note 3', '', '5GHz'),
+ 'wifi4|probe:0,1,45,127,191,221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:016f,htagg:17,htmcs:000000ff,vhtcap:0f805932,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:0000088001400040|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(00904c,4),221(0050f2,2),htcap:016f,htagg:17,htmcs:000000ff,vhtcap:0f805932,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:e008,extcap:0000088001400040|oui:samsung':
+ ('Samsung Galaxy Note 3', '', '5GHz'),
'wifi4|probe:0,1,50,3,45,127,221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:112d,htagg:17,htmcs:000000ff,extcap:0000080000000040|assoc:0,1,33,36,48,50,45,221(001018,2),221(0050f2,2),htcap:112d,htagg:17,htmcs:000000ff,txpow:1208|oui:samsung':
('Samsung Galaxy Note 3', '', '2.4GHz'),
'wifi4|probe:0,1,50,3,45,127,221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:112d,htagg:17,htmcs:000000ff,extcap:0000080000000040|assoc:0,1,33,36,48,50,45,127,221(001018,2),221(0050f2,2),htcap:112d,htagg:17,htmcs:000000ff,txpow:1208|oui:samsung':
('Samsung Galaxy Note 3', '', '2.4GHz'),
+ 'wifi4|probe:0,1,50,45,127,221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:112d,htagg:17,htmcs:000000ff,extcap:0000088001400040|assoc:0,1,33,36,48,50,45,127,221(001018,2),221(00904c,4),221(0050f2,2),htcap:112d,htagg:17,htmcs:000000ff,txpow:1208,extcap:0000088001400040|oui:samsung':
+ ('Samsung Galaxy Note 3', '', '2.4GHz'),
+ 'wifi4|probe:0,1,50,3,45,127,221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:112d,htagg:17,htmcs:000000ff,extcap:0000088001400040|assoc:0,1,33,36,48,50,45,127,221(001018,2),221(00904c,4),221(0050f2,2),htcap:112d,htagg:17,htmcs:000000ff,txpow:1208,extcap:0000088001400040|oui:samsung':
+ ('Samsung Galaxy Note 3', '', '2.4GHz'),
+ 'wifi4|probe:0,1,50,3,45,127,221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:112d,htagg:17,htmcs:000000ff,extcap:0000088001400040|assoc:0,1,33,36,48,50,45,127,221(001018,2),221(0050f2,2),htcap:112d,htagg:17,htmcs:000000ff,txpow:1208,extcap:000000800140|oui:samsung':
+ ('Samsung Galaxy Note 3', '', '2.4GHz'),
'wifi4|probe:0,1,45,127,107,191,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:0000088001400040|assoc:0,1,33,36,48,45,127,107,191,221(00904c,4),221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e009,extcap:0000088001400040|oui:samsung':
('Samsung Galaxy Note 4', '', '5GHz'),
@@ -1052,14 +1172,31 @@
'wifi4|probe:0,1,50,3,45,127,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,extcap:0000088001400040|assoc:0,1,50,33,36,48,70,45,127,221(001018,2),221(0050f2,2),htcap:002d,htagg:17,htmcs:0000ffff,txpow:1509,extcap:0000088001400040|oui:samsung':
('Samsung Galaxy Note 4', '', '2.4GHz'),
+ 'wifi4|probe:0,1,45,127,107,191,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9178b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:00080f8401400040|assoc:0,1,33,36,48,70,45,127,191,199,221(00904c,4),221(001018,2),221(0050f2,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9118b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1102,extcap:0000000000000040|oui:samsung':
+ ('Samsung Galaxy Note 5 or S7 Edge', '', '5GHz'),
+ 'wifi4|probe:0,1,45,127,107,191,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9118b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:00080f8401400040|assoc:0,1,33,36,48,70,45,127,191,199,221(00904c,4),221(001018,2),221(0050f2,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9118b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1102,extcap:0000000000000040|oui:samsung':
+ ('Samsung Galaxy Note 5 or S7 Edge', '', '5GHz'),
+
'wifi4|probe:0,1,45,127,107,191,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9118b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:00080f8401400040|assoc:0,1,33,36,48,45,127,191,199,221(00904c,4),221(001018,2),221(0050f2,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9118b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1102,extcap:0000000000000040|oui:samsung':
('Samsung Galaxy Note 5', '', '5GHz'),
'wifi4|probe:0,1,45,127,107,191,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9118b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:00080f8401400040|assoc:0,1,33,36,48,70,45,127,191,199,221(00904c,4),221(001018,2),221(0050f2,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9118b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1202,extcap:0000000000000040|oui:samsung':
('Samsung Galaxy Note 5', '', '5GHz'),
'wifi4|probe:0,1,45,127,107,191,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9118b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:00080f840140|assoc:0,1,33,36,48,70,45,191,199,221(00904c,4),221(001018,2),221(0050f2,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9118b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1202|oui:samsung':
('Samsung Galaxy Note 5', '', '5GHz'),
+ 'wifi4|probe:0,1,45,127,107,191,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9178b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:00080f8401400040|assoc:0,1,33,36,48,45,127,191,199,221(00904c,4),221(001018,2),221(0050f2,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9118b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1102,extcap:0000080000000040|oui:samsung':
+ ('Samsung Galaxy Note 5', '', '5GHz'),
+ 'wifi4|probe:0,1,45,127,107,191,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9118b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:00080f8401400040|assoc:0,1,33,36,48,45,127,191,199,221(00904c,4),221(001018,2),221(0050f2,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9138b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1102,extcap:0000080000000040|oui:samsung':
+ ('Samsung Galaxy Note 5', '', '5GHz'),
+ 'wifi4|probe:0,1,45,127,107,191,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9178b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:00080f8401400040|assoc:0,1,33,36,48,45,127,191,199,221(00904c,4),221(001018,2),221(0050f2,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9138b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1102,extcap:0000080000000040|oui:samsung':
+ ('Samsung Galaxy Note 5', '', '5GHz'),
+ 'wifi4|probe:0,1,45,127,107,191,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9118b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:00080f8401400040|assoc:0,1,33,36,48,45,127,191,199,221(00904c,4),221(001018,2),221(0050f2,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9118b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1102,extcap:0000080000000040|oui:samsung':
+ ('Samsung Galaxy Note 5', '', '5GHz'),
'wifi4|probe:0,1,50,3,45,127,107,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:01ad,htagg:17,htmcs:0000ffff,extcap:00080f8401400040|assoc:0,1,50,33,36,48,45,221(001018,2),221(0050f2,2),htcap:01ad,htagg:17,htmcs:0000ffff,txpow:1202|oui:samsung':
('Samsung Galaxy Note 5', '', '2.4GHz'),
+ 'wifi4|probe:0,1,50,3,45,127,107,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:01ad,htagg:17,htmcs:0000ffff,extcap:00080f8401400040|assoc:0,1,50,33,36,48,45,127,199,221(00904c,4),221(001018,2),221(0050f2,2),htcap:01ad,htagg:17,htmcs:0000ffff,txpow:1202,extcap:0000080000000040|oui:samsung':
+ ('Samsung Galaxy Note 5', '', '2.4GHz'),
+ 'wifi4|probe:0,1,50,3,45,127,107,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:01ad,htagg:17,htmcs:0000ffff,extcap:00080f8401400040|assoc:0,1,50,33,36,48,70,45,221(001018,2),221(0050f2,2),htcap:01ad,htagg:17,htmcs:0000ffff,txpow:1202|oui:samsung':
+ ('Samsung Galaxy Note 5', '', '2.4GHz'),
'wifi4|probe:0,1,45,221(001018,2),221(00904c,51),htcap:000c,htagg:19,htmcs:000000ff|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:000c,htagg:19,htmcs:000000ff,txpow:0f0a|oui:samsung':
('Samsung Galaxy S2', '', '5GHz'),
@@ -1098,6 +1235,12 @@
('Samsung Galaxy S4', '', '2.4GHz'),
'wifi4|probe:0,1,50,45,127,107,221(506f9a,16),221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:102d,htagg:17,htmcs:000000ff,extcap:0000088000400040|assoc:0,1,33,36,48,50,45,127,107,221(001018,2),221(0050f2,2),htcap:102d,htagg:17,htmcs:000000ff,txpow:1201,extcap:000000800040|oui:samsung':
('Samsung Galaxy S4', '', '2.4GHz'),
+ 'wifi4|probe:0,1,50,3,45,127,221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:102d,htagg:17,htmcs:000000ff,extcap:0000080000400040|assoc:0,1,33,36,48,50,45,127,221(001018,2),221(00904c,4),221(0050f2,2),htcap:102d,htagg:17,htmcs:000000ff,txpow:1201,extcap:0000000000400040|oui:samsung':
+ ('Samsung Galaxy S4', '', '2.4GHz'),
+ 'wifi4|probe:0,1,50,45,127,221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:102d,htagg:17,htmcs:000000ff,extcap:0000080000400040|assoc:0,1,33,36,48,50,45,127,221(001018,2),221(00904c,4),221(0050f2,2),htcap:102d,htagg:17,htmcs:000000ff,txpow:1201,extcap:0000000000400040|oui:samsung':
+ ('Samsung Galaxy S4', '', '2.4GHz'),
+ 'wifi4|probe:0,1,50,3,45,127,221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:102d,htagg:17,htmcs:000000ff,extcap:0000080000400040|assoc:0,1,33,36,48,50,45,127,221(001018,2),221(0050f2,2),htcap:102d,htagg:17,htmcs:000000ff,txpow:1201,extcap:000000000040|oui:samsung':
+ ('Samsung Galaxy S4', '', '2.4GHz'),
'wifi4|probe:0,1,45,127,107,191,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:0000088001400040|assoc:0,1,33,36,48,45,127,107,191,221(00904c,4),221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e20b,extcap:0000088001400040|oui:samsung':
('Samsung Galaxy S5', '', '5GHz'),
@@ -1138,8 +1281,20 @@
'wifi4|probe:0,1,45,127,107,191,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9178b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:00080f840140|assoc:0,1,33,36,48,70,45,191,199,221(00904c,4),221(001018,2),221(0050f2,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9118b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1102|oui:samsung':
('Samsung Galaxy S7 Edge', '', '5GHz'),
+ 'wifi4|probe:0,1,45,127,107,191,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9118b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:00080f8401400040|assoc:0,1,33,36,48,45,127,191,199,221(00904c,4),221(001018,2),221(0050f2,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9138b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1002,extcap:0000080000000040|oui:samsung':
+ ('Samsung Galaxy S7 Edge', '', '5GHz'),
+ 'wifi4|probe:0,1,45,127,107,191,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9138b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:00080f8401400040|assoc:0,1,33,36,48,45,127,191,199,221(00904c,4),221(001018,2),221(0050f2,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9118b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1002,extcap:0000080000000040|oui:samsung':
+ ('Samsung Galaxy S7 Edge', '', '5GHz'),
+ 'wifi4|probe:0,1,45,127,107,191,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9178b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:00080f8401400040|assoc:0,1,33,36,48,45,127,191,199,221(00904c,4),221(001018,2),221(0050f2,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9118b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1002,extcap:0000080000000040|oui:samsung':
+ ('Samsung Galaxy S7 Edge', '', '5GHz'),
+ 'wifi4|probe:0,1,45,127,107,191,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9178b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:00080f8401400040|assoc:0,1,33,36,48,45,127,191,199,221(00904c,4),221(001018,2),221(0050f2,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9138b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1002,extcap:0000080000000040|oui:samsung':
+ ('Samsung Galaxy S7 Edge', '', '5GHz'),
'wifi4|probe:0,1,50,3,45,127,107,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:1163,htagg:17,htmcs:0000ffff,extcap:00080f8401400040|assoc:0,1,50,33,36,48,70,45,221(001018,2),221(0050f2,2),htcap:01ad,htagg:17,htmcs:0000ffff,txpow:1302|oui:samsung':
('Samsung Galaxy S7 Edge', '', '2.4GHz'),
+ 'wifi4|probe:0,1,50,3,45,127,107,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:01ad,htagg:17,htmcs:0000ffff,extcap:00080f8401400040|assoc:0,1,50,33,36,48,70,45,221(001018,2),221(0050f2,2),htcap:01ad,htagg:17,htmcs:0000ffff,txpow:1302|oui:samsung':
+ ('Samsung Galaxy S7 Edge', '', '2.4GHz'),
+ 'wifi4|probe:0,1,50,3,45,127,107,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:01ad,htagg:17,htmcs:0000ffff,extcap:00080f8401400040|assoc:0,1,50,33,36,48,45,127,199,221(00904c,4),221(001018,2),221(0050f2,2),htcap:01ad,htagg:17,htmcs:0000ffff,txpow:1302,extcap:0000080000000040|oui:samsung':
+ ('Samsung Galaxy S7 Edge', '', '2.4GHz'),
'wifi4|probe:0,1,45,221(001018,2),221(00904c,51),htcap:082c,htagg:1b,htmcs:000000ff|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:082c,htagg:1b,htmcs:000000ff,txpow:0f08|oui:samsung':
('Samsung Galaxy Tab', '', '5GHz'),
diff --git a/taxonomy/wvtest/LICENSE b/taxonomy/wvtest/LICENSE
new file mode 100644
index 0000000..eb685a5
--- /dev/null
+++ b/taxonomy/wvtest/LICENSE
@@ -0,0 +1,481 @@
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+ 675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL. It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it. You can use it for
+your libraries, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library. If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software. To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+ Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs. This
+license, the GNU Library General Public License, applies to certain
+designated libraries. This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+ The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it. Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program. However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+ Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries. We
+concluded that weaker conditions might promote sharing better.
+
+ However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves. This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them. (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.) The hope is that this
+will lead to faster development of free libraries.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+ Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License"). Each licensee is
+addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ c) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ d) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ Appendix: How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free
+ Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/taxonomy/wvtest/__init__.py b/taxonomy/wvtest/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/taxonomy/wvtest/__init__.py
diff --git a/taxonomy/wvtest/wvtest.py b/taxonomy/wvtest/wvtest.py
new file mode 100755
index 0000000..8f2564c
--- /dev/null
+++ b/taxonomy/wvtest/wvtest.py
@@ -0,0 +1,252 @@
+#!/usr/bin/env python
+#
+# WvTest:
+# Copyright (C)2007-2012 Versabanq Innovations Inc. and contributors.
+# Licensed under the GNU Library General Public License, version 2.
+# See the included file named LICENSE for license information.
+# You can get wvtest from: http://github.com/apenwarr/wvtest
+#
+import atexit
+import inspect
+import os
+import re
+import sys
+import traceback
+
+# NOTE
+# Why do we do we need the "!= main" check? Because if you run
+# wvtest.py as a main program and it imports your test files, then
+# those test files will try to import the wvtest module recursively.
+# That actually *works* fine, because we don't run this main program
+# when we're imported as a module. But you end up with two separate
+# wvtest modules, the one that gets imported, and the one that's the
+# main program. Each of them would have duplicated global variables
+# (most importantly, wvtest._registered), and so screwy things could
+# happen. Thus, we make the main program module *totally* different
+# from the imported module. Then we import wvtest (the module) into
+# wvtest (the main program) here and make sure to refer to the right
+# versions of global variables.
+#
+# All this is done just so that wvtest.py can be a single file that's
+# easy to import into your own applications.
+if __name__ != '__main__': # we're imported as a module
+ _registered = []
+ _tests = 0
+ _fails = 0
+
+ def wvtest(func, innerfunc=None):
+ """ Use this decorator (@wvtest) in front of any function you want to
+ run as part of the unit test suite. Then run:
+ python wvtest.py path/to/yourtest.py [other test.py files...]
+ to run all the @wvtest functions in the given file(s).
+ """
+ _registered.append((func, innerfunc or func))
+ return func
+
+
+ def _result(msg, tb, code):
+ global _tests, _fails
+ _tests += 1
+ if code != 'ok':
+ _fails += 1
+ (filename, line, func, text) = tb
+ filename = os.path.basename(filename)
+ msg = re.sub(r'\s+', ' ', str(msg))
+ sys.stderr.flush()
+ print '! %-70s %s' % ('%s:%-4d %s' % (filename, line, msg),
+ code)
+ sys.stdout.flush()
+
+
+ def _check(cond, msg, xdepth):
+ tb = traceback.extract_stack()[-3 - xdepth]
+ if cond:
+ _result(msg, tb, 'ok')
+ else:
+ _result(msg, tb, 'FAILED')
+ return cond
+
+
+ def _code(xdepth):
+ (filename, line, func, text) = traceback.extract_stack()[-3 - xdepth]
+ text = re.sub(r'^[\w\.]+\((.*)\)(\s*#.*)?$', r'\1', str(text));
+ return text
+
+
+ def WVPASS(cond = True, xdepth = 0):
+ ''' Counts a test failure unless cond is true. '''
+ return _check(cond, _code(xdepth), xdepth)
+
+ def WVFAIL(cond = True, xdepth = 0):
+ ''' Counts a test failure unless cond is false. '''
+ return _check(not cond, 'NOT(%s)' % _code(xdepth), xdepth)
+
+ def WVPASSIS(a, b, xdepth = 0):
+ ''' Counts a test failure unless a is b. '''
+ return _check(a is b, '%s is %s' % (repr(a), repr(b)), xdepth)
+
+ def WVPASSISNOT(a, b, xdepth = 0):
+ ''' Counts a test failure unless a is not b. '''
+ return _check(a is not b, '%s is not %s' % (repr(a), repr(b)), xdepth)
+
+ def WVPASSEQ(a, b, xdepth = 0):
+ ''' Counts a test failure unless a == b. '''
+ return _check(a == b, '%s == %s' % (repr(a), repr(b)), xdepth)
+
+ def WVPASSNE(a, b, xdepth = 0):
+ ''' Counts a test failure unless a != b. '''
+ return _check(a != b, '%s != %s' % (repr(a), repr(b)), xdepth)
+
+ def WVPASSLT(a, b, xdepth = 0):
+ ''' Counts a test failure unless a < b. '''
+ return _check(a < b, '%s < %s' % (repr(a), repr(b)), xdepth)
+
+ def WVPASSLE(a, b, xdepth = 0):
+ ''' Counts a test failure unless a <= b. '''
+ return _check(a <= b, '%s <= %s' % (repr(a), repr(b)), xdepth)
+
+ def WVPASSGT(a, b, xdepth = 0):
+ ''' Counts a test failure unless a > b. '''
+ return _check(a > b, '%s > %s' % (repr(a), repr(b)), xdepth)
+
+ def WVPASSGE(a, b, xdepth = 0):
+ ''' Counts a test failure unless a >= b. '''
+ return _check(a >= b, '%s >= %s' % (repr(a), repr(b)), xdepth)
+
+ def WVPASSNEAR(a, b, places = 7, delta = None, xdepth = 0):
+ ''' Counts a test failure unless a ~= b. '''
+ if delta:
+ return _check(abs(a - b) <= abs(delta),
+ '%s ~= %s' % (repr(a), repr(b)), xdepth)
+ else:
+ return _check(round(a, places) == round(b, places),
+ '%s ~= %s' % (repr(a), repr(b)), xdepth)
+
+ def WVPASSFAR(a, b, places = 7, delta = None, xdepth = 0):
+ ''' Counts a test failure unless a ~!= b. '''
+ if delta:
+ return _check(abs(a - b) > abs(delta),
+ '%s ~= %s' % (repr(a), repr(b)), xdepth)
+ else:
+ return _check(round(a, places) != round(b, places),
+ '%s ~= %s' % (repr(a), repr(b)), xdepth)
+
+ def _except_report(cond, code, xdepth):
+ return _check(cond, 'EXCEPT(%s)' % code, xdepth + 1)
+
+ class _ExceptWrapper(object):
+ def __init__(self, etype, xdepth):
+ self.etype = etype
+ self.xdepth = xdepth
+ self.code = None
+
+ def __enter__(self):
+ self.code = _code(self.xdepth)
+
+ def __exit__(self, etype, value, traceback):
+ if etype == self.etype:
+ _except_report(True, self.code, self.xdepth)
+ return 1 # success, got the expected exception
+ elif etype is None:
+ _except_report(False, self.code, self.xdepth)
+ return 0
+ else:
+ _except_report(False, self.code, self.xdepth)
+
+ def _WVEXCEPT(etype, xdepth, func, *args, **kwargs):
+ if func:
+ code = _code(xdepth + 1)
+ try:
+ func(*args, **kwargs)
+ except etype, e:
+ return _except_report(True, code, xdepth + 1)
+ except:
+ _except_report(False, code, xdepth + 1)
+ raise
+ else:
+ return _except_report(False, code, xdepth + 1)
+ else:
+ return _ExceptWrapper(etype, xdepth)
+
+ def WVEXCEPT(etype, func=None, *args, **kwargs):
+ ''' Counts a test failure unless func throws an 'etype' exception.
+ You have to spell out the function name and arguments, rather than
+ calling the function yourself, so that WVEXCEPT can run before
+ your test code throws an exception.
+ '''
+ return _WVEXCEPT(etype, 0, func, *args, **kwargs)
+
+
+ def _check_unfinished():
+ if _registered:
+ for func, innerfunc in _registered:
+ print 'WARNING: not run: %r' % (innerfunc,)
+ WVFAIL('wvtest_main() not called')
+ if _fails:
+ sys.exit(1)
+
+ atexit.register(_check_unfinished)
+
+
+def _run_in_chdir(path, func, *args, **kwargs):
+ oldwd = os.getcwd()
+ oldpath = sys.path
+ try:
+ if path: os.chdir(path)
+ sys.path += [path, os.path.split(path)[0]]
+ return func(*args, **kwargs)
+ finally:
+ os.chdir(oldwd)
+ sys.path = oldpath
+
+
+def _runtest(fname, f, innerfunc):
+ import wvtest as _wvtestmod
+ mod = inspect.getmodule(innerfunc)
+ relpath = os.path.relpath(mod.__file__, os.getcwd()).replace('.pyc', '.py')
+ print
+ print 'Testing "%s" in %s:' % (fname, relpath)
+ sys.stdout.flush()
+ try:
+ _run_in_chdir(os.path.split(mod.__file__)[0], f)
+ except Exception, e:
+ print
+ print traceback.format_exc()
+ tb = sys.exc_info()[2]
+ _wvtestmod._result(repr(e), traceback.extract_tb(tb)[-1], 'EXCEPTION')
+
+
+def _run_registered_tests():
+ import wvtest as _wvtestmod
+ while _wvtestmod._registered:
+ func, innerfunc = _wvtestmod._registered.pop(0)
+ _runtest(innerfunc.func_name, func, innerfunc)
+ print
+
+
+def wvtest_main(extra_testfiles=[]):
+ import wvtest as _wvtestmod
+ _run_registered_tests()
+ for modname in extra_testfiles:
+ if not os.path.exists(modname):
+ print 'Skipping: %s' % modname
+ continue
+ if modname.endswith('.py'):
+ modname = modname[:-3]
+ print 'Importing: %s' % modname
+ path, mod = os.path.split(os.path.abspath(modname))
+ nicename = modname.replace(os.path.sep, '.')
+ while nicename.startswith('.'):
+ nicename = modname[1:]
+ _run_in_chdir(path, __import__, nicename, None, None, [])
+ _run_registered_tests()
+ print
+ print 'WvTest: %d tests, %d failures.' % (_wvtestmod._tests,
+ _wvtestmod._fails)
+
+
+if __name__ == '__main__':
+ import wvtest as _wvtestmod
+ sys.modules['wvtest'] = _wvtestmod
+ sys.modules['wvtest.wvtest'] = _wvtestmod
+ wvtest_main(sys.argv[1:])
diff --git a/taxonomy/wvtest/wvtest.sh b/taxonomy/wvtest/wvtest.sh
new file mode 100644
index 0000000..19e0167
--- /dev/null
+++ b/taxonomy/wvtest/wvtest.sh
@@ -0,0 +1,140 @@
+#
+# WvTest:
+# Copyright (C)2007-2012 Versabanq Innovations Inc. and contributors.
+# Licensed under the GNU Library General Public License, version 2.
+# See the included file named LICENSE for license information.
+# You can get wvtest from: http://github.com/apenwarr/wvtest
+#
+# Include this file in your shell script by using:
+# #!/bin/sh
+# . ./wvtest.sh
+#
+
+# we don't quote $TEXT in case it contains newlines; newlines
+# aren't allowed in test output. However, we set -f so that
+# at least shell glob characters aren't processed.
+_wvtextclean()
+{
+ ( set -f; echo $* )
+}
+
+
+if [ -n "$BASH_VERSION" ]; then
+ _wvfind_caller()
+ {
+ LVL=$1
+ WVCALLER_FILE=${BASH_SOURCE[2]}
+ WVCALLER_LINE=${BASH_LINENO[1]}
+ }
+else
+ _wvfind_caller()
+ {
+ LVL=$1
+ WVCALLER_FILE="unknown"
+ WVCALLER_LINE=0
+ }
+fi
+
+
+_wvcheck()
+{
+ CODE="$1"
+ TEXT=$(_wvtextclean "$2")
+ OK=ok
+ if [ "$CODE" -ne 0 ]; then
+ OK=FAILED
+ fi
+ echo "! $WVCALLER_FILE:$WVCALLER_LINE $TEXT $OK" >&2
+ if [ "$CODE" -ne 0 ]; then
+ exit $CODE
+ else
+ return 0
+ fi
+}
+
+
+WVPASS()
+{
+ TEXT="$*"
+
+ _wvfind_caller
+ if "$@"; then
+ _wvcheck 0 "$TEXT"
+ return 0
+ else
+ _wvcheck 1 "$TEXT"
+ # NOTREACHED
+ return 1
+ fi
+}
+
+
+WVFAIL()
+{
+ TEXT="$*"
+
+ _wvfind_caller
+ if "$@"; then
+ _wvcheck 1 "NOT($TEXT)"
+ # NOTREACHED
+ return 1
+ else
+ _wvcheck 0 "NOT($TEXT)"
+ return 0
+ fi
+}
+
+
+_wvgetrv()
+{
+ ( "$@" >&2 )
+ echo -n $?
+}
+
+
+WVPASSEQ()
+{
+ _wvfind_caller
+ _wvcheck $(_wvgetrv [ "$#" -eq 2 ]) "exactly 2 arguments"
+ echo "Comparing:" >&2
+ echo "$1" | sed -e 's/^/<<< /' >&2
+ echo "--" >&2
+ echo "$2" | sed -e 's/^/>>> /' >&2
+ _wvcheck $(_wvgetrv [ "$1" = "$2" ]) "'$1' = '$2'"
+}
+
+
+WVPASSNE()
+{
+ _wvfind_caller
+ _wvcheck $(_wvgetrv [ "$#" -eq 2 ]) "exactly 2 arguments"
+ echo "Comparing:" >&2
+ echo "$1" | sed -e 's/^/<<< /' >&2
+ echo "--" >&2
+ echo "$2" | sed -e 's/^/>>> /' >&2
+ _wvcheck $(_wvgetrv [ "$1" != "$2" ]) "'$1' != '$2'"
+}
+
+
+WVPASSRC()
+{
+ RC=$?
+ _wvfind_caller
+ _wvcheck $(_wvgetrv [ $RC -eq 0 ]) "return code($RC) == 0"
+}
+
+
+WVFAILRC()
+{
+ RC=$?
+ _wvfind_caller
+ _wvcheck $(_wvgetrv [ $RC -ne 0 ]) "return code($RC) != 0"
+}
+
+
+WVSTART()
+{
+ echo >&2
+ _wvfind_caller
+ echo "Testing \"$*\" in $WVCALLER_FILE:" >&2
+}
diff --git a/taxonomy/wvtest/wvtestrun b/taxonomy/wvtest/wvtestrun
new file mode 100755
index 0000000..897b95f
--- /dev/null
+++ b/taxonomy/wvtest/wvtestrun
@@ -0,0 +1,187 @@
+#!/usr/bin/perl -w
+#
+# WvTest:
+# Copyright (C)2007-2012 Versabanq Innovations Inc. and contributors.
+# Licensed under the GNU Library General Public License, version 2.
+# See the included file named LICENSE for license information.
+# You can get wvtest from: http://github.com/apenwarr/wvtest
+#
+use strict;
+use Time::HiRes qw(time);
+
+# always flush
+$| = 1;
+
+if (@ARGV < 1) {
+ print STDERR "Usage: $0 <command line...>\n";
+ exit 127;
+}
+
+print STDERR "Testing \"all\" in @ARGV:\n";
+
+my $pid = open(my $fh, "-|");
+if (!$pid) {
+ # child
+ setpgrp();
+ open STDERR, '>&STDOUT' or die("Can't dup stdout: $!\n");
+ exec(@ARGV);
+ exit 126; # just in case
+}
+
+my $istty = -t STDOUT && $ENV{'TERM'} ne "dumb";
+my @log = ();
+my ($gpasses, $gfails) = (0,0);
+
+sub bigkill($)
+{
+ my $pid = shift;
+
+ if (@log) {
+ print "\n" . join("\n", @log) . "\n";
+ }
+
+ print STDERR "\n! Killed by signal FAILED\n";
+
+ ($pid > 0) || die("pid is '$pid'?!\n");
+
+ local $SIG{CHLD} = sub { }; # this will wake us from sleep() faster
+ kill 15, $pid;
+ sleep(2);
+
+ if ($pid > 1) {
+ kill 9, -$pid;
+ }
+ kill 9, $pid;
+
+ exit(125);
+}
+
+# parent
+local $SIG{INT} = sub { bigkill($pid); };
+local $SIG{TERM} = sub { bigkill($pid); };
+local $SIG{ALRM} = sub {
+ print STDERR "Alarm timed out! No test results for too long.\n";
+ bigkill($pid);
+};
+
+sub colourize($)
+{
+ my $result = shift;
+ my $pass = ($result eq "ok");
+
+ if ($istty) {
+ my $colour = $pass ? "\e[32;1m" : "\e[31;1m";
+ return "$colour$result\e[0m";
+ } else {
+ return $result;
+ }
+}
+
+sub mstime($$$)
+{
+ my ($floatsec, $warntime, $badtime) = @_;
+ my $ms = int($floatsec * 1000);
+ my $str = sprintf("%d.%03ds", $ms/1000, $ms % 1000);
+
+ if ($istty && $ms > $badtime) {
+ return "\e[31;1m$str\e[0m";
+ } elsif ($istty && $ms > $warntime) {
+ return "\e[33;1m$str\e[0m";
+ } else {
+ return "$str";
+ }
+}
+
+sub resultline($$)
+{
+ my ($name, $result) = @_;
+ return sprintf("! %-65s %s", $name, colourize($result));
+}
+
+my $allstart = time();
+my ($start, $stop);
+
+sub endsect()
+{
+ $stop = time();
+ if ($start) {
+ printf " %s %s\n", mstime($stop - $start, 500, 1000), colourize("ok");
+ }
+}
+
+while (<$fh>)
+{
+ chomp;
+ s/\r//g;
+
+ if (/^\s*Testing "(.*)" in (.*):\s*$/)
+ {
+ alarm(120);
+ my ($sect, $file) = ($1, $2);
+
+ endsect();
+
+ printf("! %s %s: ", $file, $sect);
+ @log = ();
+ $start = $stop;
+ }
+ elsif (/^!\s*(.*?)\s+(\S+)\s*$/)
+ {
+ alarm(120);
+
+ my ($name, $result) = ($1, $2);
+ my $pass = ($result eq "ok");
+
+ if (!$start) {
+ printf("\n! Startup: ");
+ $start = time();
+ }
+
+ push @log, resultline($name, $result);
+
+ if (!$pass) {
+ $gfails++;
+ if (@log) {
+ print "\n" . join("\n", @log) . "\n";
+ @log = ();
+ }
+ } else {
+ $gpasses++;
+ print ".";
+ }
+ }
+ else
+ {
+ push @log, $_;
+ }
+}
+
+endsect();
+
+my $newpid = waitpid($pid, 0);
+if ($newpid != $pid) {
+ die("waitpid returned '$newpid', expected '$pid'\n");
+}
+
+my $code = $?;
+my $ret = ($code >> 8);
+
+# return death-from-signal exits as >128. This is what bash does if you ran
+# the program directly.
+if ($code && !$ret) { $ret = $code | 128; }
+
+if ($ret && @log) {
+ print "\n" . join("\n", @log) . "\n";
+}
+
+if ($code != 0) {
+ print resultline("Program returned non-zero exit code ($ret)", "FAILED");
+}
+
+my $gtotal = $gpasses+$gfails;
+printf("\nWvTest: %d test%s, %d failure%s, total time %s.\n",
+ $gtotal, $gtotal==1 ? "" : "s",
+ $gfails, $gfails==1 ? "" : "s",
+ mstime(time() - $allstart, 2000, 5000));
+print STDERR "\nWvTest result code: $ret\n";
+exit( $ret ? $ret : ($gfails ? 125 : 0) );
diff --git a/wifi/configs.py b/wifi/configs.py
index 240dd63..4dcdaab 100644
--- a/wifi/configs.py
+++ b/wifi/configs.py
@@ -23,6 +23,7 @@
'WifiShortAggTimeout',
'WifiNoAggTimeout',
'WifiNoAliveMonitor',
+ 'MwifiexFirmwareRecovery',
]
for _i in EXPERIMENTS:
experiment.register(_i)
diff --git a/wifi/mwifiex.py b/wifi/mwifiex.py
new file mode 100755
index 0000000..8cad3ac
--- /dev/null
+++ b/wifi/mwifiex.py
@@ -0,0 +1,23 @@
+#!/usr/bin/python -S
+
+"""Special handling for mwifiex driver.
+
+ The mwifiex driver has a mechanism to detect when the firmware is
+ stuck and attempt a reset. It is disabled by default and can be
+ configured with this helper.
+"""
+import glob
+import utils
+
+_MWIFIEX_SYS_RECOVERY = '/sys/kernel/debug/mwifiex/*/firmware_recover'
+
+
+def set_recovery(recovery_flag):
+ # Marvell's firmware can get into a non-recovery state
+ # that hangs forever. The driver can detect this state and perform a
+ # a reset when enabled with a debug flag, which is done here when the
+ # corresponding experiment is active.
+ recovery_flag = int(recovery_flag)
+ for sys_path in glob.glob(_MWIFIEX_SYS_RECOVERY):
+ utils.log('mwifiex.py: set %r to %r.' % (sys_path, recovery_flag))
+ open(sys_path, 'w').write(str(recovery_flag))
diff --git a/wifi/wifi.py b/wifi/wifi.py
index a0aa84b..19e2d13 100755
--- a/wifi/wifi.py
+++ b/wifi/wifi.py
@@ -17,6 +17,7 @@
import configs
import experiment
import iw
+import mwifiex
import options
import persist
import qca9880_cal
@@ -252,6 +253,7 @@
# Check for calibration errors on ath10k.
qca9880_cal.qca8990_calibration()
+ mwifiex.set_recovery(experiment.enabled('MwifiexFirmwareRecovery'))
client_interface = iw.find_interface_from_phy(
phy, iw.INTERFACE_TYPE.client, opt.interface_suffix)
@@ -987,6 +989,8 @@
if band == '5' and quantenna.set_client_wifi(opt):
return True
+ mwifiex.set_recovery(experiment.enabled('MwifiexFirmwareRecovery'))
+
phy = iw.find_phy(band, 'auto')
if phy is None:
utils.log("Couldn't find phy for band %s", band)