taxonomy: no more v1/v2 signatures.
Resolve all remaining v1/v2 signatures:
+ Update to v4 signature: Epson Printer, Vizio Smart TV, HP Printer,
Xbox.
+ Remove remaining v2 signatures which don't work. We'll re-gather
these signatures by obtaining the devices.
Chromebook 14" HP (Tegra), Amazon Kindle Fire 7" (2014 edition)
+ Remove the support for decimating a v4 signature back to v2 and v1.
Also:
+ Add alternate DHCP signature for an HP Printer.
+ Add alternate OUIs for Amazon, LG, Microsoft, Samsung.
+ Remove Nintendo OUIs, we're not using them.
+ Remove a duplicate Nexus 5X signature. The same signature was in the
database twice.
+ Add alternate signatures: HP Printer, iPad 4th gen,
Panasonic TV, Roku Streaming Stick, Samsung Galaxy Note 5,
Samsung Galaxy S5, Nexus 7 (2013), iPhone 6s.
+ Add LG Pad 400, Canon Printer (with OS signature).
Change-Id: I10f15fe9b7e756b43da710d97773ec82a742570a
diff --git a/taxonomy/dhcp.py b/taxonomy/dhcp.py
index faa9a39..e75a337 100644
--- a/taxonomy/dhcp.py
+++ b/taxonomy/dhcp.py
@@ -36,15 +36,18 @@
'6,3,1,15,66,67,13,44,2,42,12': ['brotherprinter'],
+ '1,3,6,15,44,47': ['canonprinter'],
+
'1,121,33,3,6,12,15,26,28,51,54,58,59,119,252': ['chromeos'],
'1,121,33,3,6,12,15,26,28,51,54,58,59,119': ['chromeos'],
- '1,3,6': ['dashbutton'],
+ '1,3,6': ['dashbutton', 'canonprinter'],
'1,3,6,28': ['ecobee'],
'1,3,6,12,15,17,28,40,41,42': ['epsonprinter'],
+ '6,3,1,15,66,67,13,44': ['hpprinter'],
'6,3,1,15,66,67,13,44,12': ['hpprinter'],
'6,3,1,15,66,67,13,44,12,81': ['hpprinter'],
'6,3,1,15,66,67,13,44,119,12,81,252': ['hpprinter'],
diff --git a/taxonomy/ethernet.py b/taxonomy/ethernet.py
index ca10bee..ea6ab77 100644
--- a/taxonomy/ethernet.py
+++ b/taxonomy/ethernet.py
@@ -27,6 +27,7 @@
'0c:47:c9': ['amazon'],
'10:ae:60': ['amazon'],
'28:ef:01': ['amazon'],
+ '44:65:0d': ['amazon'],
'74:75:48': ['amazon'],
'74:c2:46': ['amazon'],
'84:d6:d0': ['amazon'],
@@ -82,6 +83,7 @@
'd8:b3:77': ['htc'],
'e8:99:c4': ['htc'],
+ '00:34:da': ['lg'],
'0c:48:85': ['lg'],
'10:68:3f': ['lg'],
'2c:54:cf': ['lg'],
@@ -105,14 +107,23 @@
'f8:95:c7': ['lg'],
'f8:a9:d0': ['lg'],
+ '00:0d:3a': ['microsoft'],
+ '00:12:5a': ['microsoft'],
+ '00:17:fa': ['microsoft'],
'00:1d:d8': ['microsoft'],
+ '00:22:48': ['microsoft'],
+ '00:25:ae': ['microsoft'],
+ '00:50:f2': ['microsoft'],
'28:18:78': ['microsoft'],
+ '30:59:b7': ['microsoft'],
+ '4c:0b:be': ['microsoft'],
'50:1a:c5': ['microsoft'],
'58:82:a8': ['microsoft'],
'60:45:bd': ['microsoft'],
'7c:1e:52': ['microsoft'],
'7c:ed:8d': ['microsoft'],
'b4:ae:2b': ['microsoft'],
+ 'c0:33:5e': ['microsoft'],
'14:1a:a3': ['motorola'],
'14:30:c6': ['motorola'],
@@ -156,9 +167,6 @@
'18:b4:30': ['nest'],
- '00:27:09': ['nintendo'],
- '34:af:2c': ['nintendo'],
-
'c0:ee:fb': ['oneplus'],
'00:15:99': ['samsung'],
@@ -166,6 +174,8 @@
'08:d4:2b': ['samsung'],
'08:ec:a9': ['samsung'],
'14:32:d1': ['samsung'],
+ '18:22:7e': ['samsung'],
+ '20:6e:9c': ['samsung'],
'24:4b:81': ['samsung'],
'28:ba:b5': ['samsung'],
'2c:ae:2b': ['samsung'],
@@ -175,8 +185,10 @@
'38:aa:3c': ['samsung'],
'38:d4:0b': ['samsung'],
'3c:8b:fe': ['samsung'],
+ '3c:a1:0d': ['samsung'],
'40:0e:85': ['samsung'],
'48:5a:3f': ['samsung', 'wisol'],
+ '4c:bc:a5': ['samsung'],
'50:cc:f8': ['samsung'],
'54:88:0e': ['samsung'],
'5c:0a:5b': ['samsung'],
diff --git a/taxonomy/tests/wifi_test.py b/taxonomy/tests/wifi_test.py
index 5ccb745..13eb234 100755
--- a/taxonomy/tests/wifi_test.py
+++ b/taxonomy/tests/wifi_test.py
@@ -30,7 +30,7 @@
dhcp.DHCP_SIGNATURE_FILE = 'testdata/dhcp.signatures'
def testLookup(self):
- signature = ('wifi|probe:0,1,50,45,htcap:186e|assoc:0,1,50,48,'
+ signature = ('wifi4|probe:0,1,50,45,htcap:186e|assoc:0,1,50,48,'
'221(0050f2,2),45,127,htcap:086c,htmcs:000000ff')
taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
self.assertEqual(3, len(taxonomy))
@@ -114,76 +114,76 @@
self.assertIn('Unknown', taxonomy[1])
def testUnknown(self):
- signature = 'wifi|probe:0,1,2,vhtcap:0033|assoc:3,4,vhtcap:0033'
+ signature = 'wifi4|probe:0,1,2,vhtcap:0033|assoc:3,4,vhtcap:0033'
taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
self.assertIn('802.11ac', taxonomy[2])
self.assertNotIn('802.11n', taxonomy[2])
self.assertNotIn('802.11a/b/g', taxonomy[2])
- signature = 'wifi|probe:0,1,2,htcap:0033|assoc:3,4,htcap:0033'
+ signature = 'wifi4|probe:0,1,2,htcap:0033|assoc:3,4,htcap:0033'
taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
self.assertNotIn('802.11ac', taxonomy[2])
self.assertIn('802.11n', taxonomy[2])
self.assertNotIn('802.11a/b/g', taxonomy[2])
- signature = 'wifi|probe:0,1,2|assoc:3,4'
+ signature = 'wifi4|probe:0,1,2|assoc:3,4'
taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
self.assertNotIn('802.11ac', taxonomy[2])
self.assertNotIn('802.11n', taxonomy[2])
self.assertIn('802.11a/b/g', taxonomy[2])
def test802_11n_NssWidth(self):
- signature = 'wifi|probe:0|assoc:1,htcap:012c,htagg:03,htmcs:000000ff'
+ signature = 'wifi4|probe:0|assoc:1,htcap:012c,htagg:03,htmcs:000000ff'
taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
self.assertEqual('802.11n n:1,w:20', taxonomy[2])
- signature = 'wifi|probe:0|assoc:1,htcap:0102,htagg:03,htmcs:0000ffff'
+ signature = 'wifi4|probe:0|assoc:1,htcap:0102,htagg:03,htmcs:0000ffff'
taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
self.assertEqual('802.11n n:2,w:40', taxonomy[2])
- signature = 'wifi|probe:0|assoc:1,htcap:0200,htagg:03,htmcs:00ffffff'
+ signature = 'wifi4|probe:0|assoc:1,htcap:0200,htagg:03,htmcs:00ffffff'
taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
self.assertEqual('802.11n n:3,w:20', taxonomy[2])
- signature = 'wifi|probe:0|assoc:1,htcap:0302,htagg:03,htmcs:ffffffff'
+ signature = 'wifi4|probe:0|assoc:1,htcap:0302,htagg:03,htmcs:ffffffff'
taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
self.assertEqual('802.11n n:4,w:40', taxonomy[2])
- signature = 'wifi|probe:0|assoc:1'
+ signature = 'wifi4|probe:0|assoc:1'
taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
self.assertEqual('802.11a/b/g n:1,w:20', taxonomy[2])
def test802_11ac_Width(self):
- signature = ('wifi|probe:0|assoc:1,htcap:0302,htmcs:000000ff,'
+ signature = ('wifi4|probe:0|assoc:1,htcap:0302,htmcs:000000ff,'
'vhtcap:00000000,vhtrxmcs:0000ffaa,vhttxmcs:0000ffaa')
taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
self.assertEqual('802.11ac n:4,w:80', taxonomy[2])
- signature = ('wifi|probe:0|assoc:1,htcap:0200,htmcs:000000ff,'
+ signature = ('wifi4|probe:0|assoc:1,htcap:0200,htmcs:000000ff,'
'vhtcap:00000004,vhtrxmcs:0000ffea,vhttxmcs:0000ffea')
taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
self.assertEqual('802.11ac n:3,w:160', taxonomy[2])
- signature = ('wifi|probe:0|assoc:1,htcap:0200,htmcs:000000ff,'
+ signature = ('wifi4|probe:0|assoc:1,htcap:0200,htmcs:000000ff,'
'vhtcap:00000004,vhtrxmcs:0000fffa,vhttxmcs:0000fffa')
taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
self.assertEqual('802.11ac n:2,w:160', taxonomy[2])
- signature = ('wifi|probe:0|assoc:1,htcap:0200,htmcs:000000ff,'
+ signature = ('wifi4|probe:0|assoc:1,htcap:0200,htmcs:000000ff,'
'vhtcap:00000004,vhtrxmcs:0000fffe,vhttxmcs:0000fffe')
taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
self.assertEqual('802.11ac n:1,w:160', taxonomy[2])
- signature = 'wifi|probe:0|assoc:1,vhtcap:00000008'
+ signature = 'wifi4|probe:0|assoc:1,vhtcap:00000008'
taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
self.assertEqual('802.11ac n:?,w:80+80', taxonomy[2])
- signature = 'wifi|probe:0|assoc:1,vhtcap:0000000c'
+ signature = 'wifi4|probe:0|assoc:1,vhtcap:0000000c'
taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
self.assertEqual('802.11ac n:?,w:??', taxonomy[2])
def testPerformanceInfoBroken(self):
- signature = ('wifi|probe:0,htmcs:000000ff|assoc:0,htmcs:000000ff')
+ signature = ('wifi4|probe:0,htmcs:000000ff|assoc:0,htmcs:000000ff')
taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
self.assertEqual('802.11a/b/g n:1,w:20', taxonomy[2])
- signature = ('wifi|probe:0,htcap:wrong,htmcs:ffffffff|'
+ signature = ('wifi4|probe:0,htcap:wrong,htmcs:ffffffff|'
'assoc:0,htcap:wrong,htmcs:ffffffff')
taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
self.assertEqual('802.11n n:4,w:??', taxonomy[2])
- signature = ('wifi|probe:0,htcap:012c,htmcs:wrong|'
+ signature = ('wifi4|probe:0,htcap:012c,htmcs:wrong|'
'assoc:0,htcap:012c,htmcs:wrong')
taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
self.assertEqual('802.11n n:?,w:20', taxonomy[2])
- signature = ('wifi|probe:0,htcap:wrong,htmcs:wrong|'
+ signature = ('wifi4|probe:0,htcap:wrong,htmcs:wrong|'
'assoc:0,htcap:wrong,htmcs:wrong')
taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
self.assertEqual('802.11n n:?,w:??', taxonomy[2])
@@ -191,13 +191,13 @@
def testRealClientsPerformance(self):
"""Test the performance information for a few real clients."""
# Nest Thermostat
- sig = ('wifi|probe:0,1,50,45,htcap:0130,htagg:18,htmcs:000000ff|assoc:'
+ sig = ('wifi4|probe:0,1,50,45,htcap:0130,htagg:18,htmcs:000000ff|assoc:'
'0,1,50,48,45,221(0050f2,2),htcap:013c,htagg:18,htmcs:000000ff')
taxonomy = wifi.identify_wifi_device(sig, '18:b4:30:00:00:01')
self.assertEqual('802.11n n:1,w:20', taxonomy[2])
# Samsung Galaxy S4
sig = (
- 'wifi|probe:0,1,45,127,191,221(001018,2),221(00904c,51),221(00904c,'
+ 'wifi4|probe:0,1,45,127,191,221(001018,2),221(00904c,51),221(00904c,'
'4),221(0050f2,8),htcap:006f,htagg:17,htmcs:000000ff,vhtcap:0f805832,'
'vhtrxmcs:0000fffe,vhttxmcs:0000fffe|assoc:0,1,33,36,48,45,127,191,'
'221(001018,2),221(00904c,4),221(0050f2,2),htcap:006f,htagg:17,htmcs:'
@@ -206,7 +206,7 @@
self.assertEqual('802.11ac n:1,w:80', taxonomy[2])
# MacBook Pro 802.11ac
sig = (
- 'wifi|probe:0,1,45,127,191,221(00904c,51),htcap:09ef,htagg:17,'
+ 'wifi4|probe:0,1,45,127,191,221(00904c,51),htcap:09ef,htagg:17,'
'htmcs:0000ffff,vhtcap:0f8259b2,vhtrxmcs:0000ffea,vhttxmcs:0000ffea|'
'assoc:0,1,33,36,48,45,127,191,221(00904c,51),221(0050f2,2),htcap:09ef,'
'htagg:17,htmcs:0000ffff,vhtcap:0f8259b2,vhtrxmcs:0000ffea,'
@@ -225,7 +225,7 @@
look at the Association for determining client
performance characteristics.
"""
- signature = ('wifi|probe:0,1,50,45,221(0050f2,8),191,221(0050f2,4),'
+ signature = ('wifi4|probe:0,1,50,45,221(0050f2,8),191,221(0050f2,4),'
'221(506f9a,9),htcap:012c,htagg:03,htmcs:000000ff,'
'vhtcap:31811120,vhtrxmcs:01b2fffc,vhttxmcs:01b2fffc,'
'wps:Nexus_4|assoc:0,1,50,48,45,221(0050f2,2),'
@@ -234,76 +234,13 @@
self.assertEqual('802.11n n:1,w:20', taxonomy[2])
def testCorruptFiles(self):
- signature = 'wifi|probe:0|assoc:1,htcap:this_is_not_a_number'
+ signature = 'wifi4|probe:0|assoc:1,htcap:this_is_not_a_number'
taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
self.assertIn('802.11n', taxonomy[2])
- signature = 'wifi|probe:0|assoc:1,vhtcap:this_is_not_a_number'
+ signature = 'wifi4|probe:0|assoc:1,vhtcap:this_is_not_a_number'
taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
self.assertIn('802.11ac', taxonomy[2])
- def testV1Signature(self):
- sig = ('wifi|probe:0,1,50,45,221(0050f2,8),221(0050f2,4),221(506f9a,9),'
- 'htcap:012c,htagg:03,htmcs:000000ff,wps:Nexus_4|assoc:0,1,50,48,45,'
- '221(0050f2,2),htcap:012c,htagg:03,htmcs:000000ff')
- expected = (
- 'wifi|probe:0,1,50,45,221(0050f2,8),221(0050f2,4),221(506f9a,9),'
- 'htcap:012c,wps:Nexus_4|assoc:0,1,50,48,45,221(0050f2,2),htcap:012c')
- v1 = wifi.make_v1_signature(sig)
- self.assertEqual(v1, expected)
- sig = ('wifi|probe:0,1,45,127,191,221(001018,2),221(00904c,51),'
- '221(00904c,4),221(0050f2,8),htcap:006f,htagg:17,htmcs:000000ff,'
- 'vhtcap:0f805832,vhtrxmcs:0000fffe,vhttxmcs:0000fffe|assoc:0,1,33,'
- '36,48,45,127,191,221(001018,2),221(00904c,4),221(0050f2,2),'
- 'htcap:006f,htagg:17,htmcs:000000ff,vhtcap:0f805832,'
- 'vhtrxmcs:0000fffe,vhttxmcs:0000fffe')
- expected = ('wifi|probe:0,1,45,127,191,221(001018,2),221(00904c,51),'
- '221(00904c,4),221(0050f2,8),htcap:006f,vhtcap:0f805832|assoc:'
- '0,1,33,36,48,45,127,191,221(001018,2),221(00904c,4),'
- '221(0050f2,2),htcap:006f,vhtcap:0f805832')
- v1 = wifi.make_v1_signature(sig)
- self.assertEqual(v1, expected)
-
- def testV2Signature(self):
- sig = 'wifi4|probe:0,1,50|assoc:0,1,50,htcap:012c,txpow:3210'
- exp = 'wifi|probe:0,1,50|assoc:0,1,50,htcap:012c'
- v2 = wifi.make_v2_signature(sig)
- self.assertEqual(v2, exp)
- sig = 'wifi4|probe:0,1,50|assoc:0,1,50,extcap:0123456789abcdef'
- exp = 'wifi|probe:0,1,50|assoc:0,1,50,extcap:67452301'
- v2 = wifi.make_v2_signature(sig)
- self.assertEqual(v2, exp)
- # iPhone 6s signature
- sig = ('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,45,127,221(001018,2),'
- '221(0050f2,2),htcap:002d,htagg:17,htmcs:0000ffff,'
- 'txpow:1202,extcap:0000000000000040|os:ios')
- exp = ('wifi|probe:0,1,50,3,45,127,107,221(0050f2,8),221(001018,2),'
- 'htcap:002d,htagg:17,htmcs:0000ffff,'
- 'extcap:84080004|assoc:0,1,50,33,36,48,45,127,221(001018,2),'
- '221(0050f2,2),htcap:002d,htagg:17,htmcs:0000ffff,'
- 'extcap:00000000|os:ios')
- v2 = wifi.make_v2_signature(sig)
- self.assertEqual(v2, exp)
-
- def testV2SignatureSmallExtcap(self):
- sig = 'wifi4|probe:0,1,50|assoc:0,1,50,extcap:01234567'
- exp = 'wifi|probe:0,1,50|assoc:0,1,50,extcap:67452301'
- v2 = wifi.make_v2_signature(sig)
- self.assertEqual(v2, exp)
- sig = 'wifi4|probe:0,1,50|assoc:0,1,50,extcap:012345'
- exp = 'wifi|probe:0,1,50|assoc:0,1,50,extcap:452301'
- v2 = wifi.make_v2_signature(sig)
- self.assertEqual(v2, exp)
- sig = 'wifi4|probe:0,1,50|assoc:0,1,50,extcap:0123'
- exp = 'wifi|probe:0,1,50|assoc:0,1,50,extcap:2301'
- v2 = wifi.make_v2_signature(sig)
- self.assertEqual(v2, exp)
- sig = 'wifi4|probe:0,1,50|assoc:0,1,50,extcap:01'
- exp = 'wifi|probe:0,1,50|assoc:0,1,50,extcap:01'
- v2 = wifi.make_v2_signature(sig)
- self.assertEqual(v2, exp)
-
if __name__ == '__main__':
unittest.main()
diff --git a/taxonomy/wifi.py b/taxonomy/wifi.py
index 109095c..69aab98 100644
--- a/taxonomy/wifi.py
+++ b/taxonomy/wifi.py
@@ -42,8 +42,6 @@
'wifi4|probe:0,1,50,3,45,221(0050f2,8),htcap:1130,htagg:18,htmcs:000000ff|assoc:0,1,50,48,45,221(0050f2,2),htcap:1130,htagg:18,htmcs:000000ff|oui:amazon':
('TI_WL1271', 'Amazon Kindle Fire 7" (2011 edition)', '2.4GHz'),
- 'wifi|probe:0,1,50,221(0050f2,4),221(506f9a,9),wps:KFASWI|assoc:0,1,50,45,127,221(0050f2,2),48,htcap:1172,htagg:03,htmcs:000000ff':
- ('', 'Amazon Kindle Fire 7" (2014 edition)', '2.4GHz'),
'wifi4|probe:0,1,50,221(0050f2,4),221(506f9a,9),wps:KFFOWI|assoc:0,1,50,45,48,127,221(0050f2,2),htcap:1172,htagg:03,htmcs:000000ff,extcap:01':
('', 'Amazon Kindle Fire 7" (2015 edition)', '2.4GHz'),
@@ -96,6 +94,9 @@
'wifi4|probe:0,1,50,45,3,221(001018,2),221(00904c,51),htcap:112c,htagg:19,htmcs:000000ff|assoc:0,1,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:112c,htagg:19,htmcs:000000ff|os:brotherprinter':
('', 'Brother Printer', '2.4GHz'),
+ 'wifi4|probe:0,1,3,45,50,htcap:007e,htagg:00,htmcs:000000ff|assoc:0,1,45,48,50,221(0050f2,2),htcap:000c,htagg:1b,htmcs:000000ff|os:canonprinter':
+ ('', 'Canon Printer', '2.4GHz'),
+
'wifi4|probe:0,1,45,191,htcap:11e2,htagg:17,htmcs:0000ffff,vhtcap:038071a0,vhtrxmcs:0000fffa,vhttxmcs:0000fffa|assoc:0,1,48,45,127,191,221(0050f2,2),htcap:11e6,htagg:17,htmcs:0000ffff,vhtcap:038001a0,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:0000000000000040|os:chromeos':
('Intel_7260', 'Chromebook Pixel 2', '5GHz'),
'wifi4|probe:0,1,45,191,htcap:11e2,htagg:17,htmcs:0000ffff,vhtcap:038071a0,vhtrxmcs:0000fffa,vhttxmcs:0000fffa|assoc:0,1,48,45,127,191,221(0050f2,2),htcap:11ee,htagg:17,htmcs:0000ffff,vhtcap:038001a0,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:0000000000000040|os:chromeos':
@@ -112,9 +113,6 @@
'wifi4|probe:0,1,50,3,45,htcap:11ef,htagg:1b,htmcs:0000ffff|assoc:0,1,50,48,45,221(0050f2,2),htcap:11ef,htagg:1b,htmcs:0000ffff|os:chromeos':
('AR5822', 'Chromebook 14" HP', '2.4GHz'),
- 'wifi|probe:0,1,3,45,50,htcap:01ff|assoc:0,1,50,127,221(0050f2,1),221(0050f2,2),45,htcap:01ff|os:chromeos':
- ('Marvell_88W8897', 'Chromebook 14" HP (Tegra)', '2.4GHz'),
-
'wifi4|probe:0,1,45,50,htcap:016e,htagg:03,htmcs:0000ffff|assoc:0,1,48,127,221(0050f2,2),45,htcap:016e,htagg:03,htmcs:0000ffff,extcap:00':
('AR9382', 'Chromebook 11" Samsung', '5GHz'),
'wifi4|probe:0,1,3,45,50,htcap:016e,htagg:03,htmcs:0000ffff|assoc:0,1,48,50,127,221(0050f2,2),45,htcap:016e,htagg:03,htmcs:0000ffff,extcap:00':
@@ -139,14 +137,14 @@
'wifi4|probe:0,1,50,45,htcap:002c,htagg:01,htmcs:000000ff|assoc:0,1,50,45,48,221(0050f2,2),htcap:002c,htagg:01,htmcs:000000ff|oui:ecobee':
('', 'ecobee thermostat', '2.4GHz'),
- 'wifi|probe:0,1,3,45,50,htcap:0162,htagg:00,htmcs:000000ff|assoc:0,1,45,48,127,50,221(0050f2,2),htcap:016e,htagg:1b,htmcs:000000ff|os:epsonprinter':
+ 'wifi4|probe:0,1,3,45,50,htcap:0162,htagg:00,htmcs:000000ff|assoc:0,1,45,48,127,50,221(0050f2,2),htcap:016e,htagg:1b,htmcs:000000ff,extcap:00|os:epsonprinter':
('', 'Epson Printer', '2.4GHz'),
'wifi4|probe:0,1,50,45,221(001018,2),221(00904c,51),htcap:182c,htagg:1b,htmcs:000000ff|assoc:0,1,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:182c,htagg:1b,htmcs:000000ff|os:epsonprinter':
('', 'Epson Printer', '2.4GHz'),
'wifi4|probe:0,1,50,221(001018,2)|assoc:0,1,48,50,221(001018,2)|os:epsonprinter':
('', 'Epson Printer', '2.4GHz'),
- 'wifi|probe:0,1,50,45,3,221(001018,2),221(00904c,51),htcap:100c,htagg:19,htmcs:000000ff|assoc:0,1,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:100c,htagg:19,htmcs:000000ff|os:hpprinter':
+ 'wifi4|probe:0,1,50,45,3,221(001018,2),221(00904c,51),htcap:100c,htagg:19,htmcs:000000ff|assoc:0,1,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:100c,htagg:19,htmcs:000000ff|os:hpprinter':
('', 'HP Printer', '2.4GHz'),
'wifi4|probe:0,1,50,45,221(001018,2),221(00904c,51),htcap:102c,htagg:1b,htmcs:000000ff|assoc:0,1,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:102c,htagg:1b,htmcs:000000ff|os:hpprinter':
('', 'HP Printer', '2.4GHz'),
@@ -156,10 +154,12 @@
('', 'HP Printer', '2.4GHz'),
'wifi4|probe:0,1,50,3,45,221(001018,2),221(00904c,51),htcap:0020,htagg:1a,htmcs:000000ff|assoc:0,1,48,50,45,221(001018,2),221(0050f2,2),221(506f9a,9),htcap:0020,htagg:1a,htmcs:000000ff|os:hpprinter':
('', 'HP Printer', '2.4GHz'),
- 'wifi|probe:0,1,3,45,50,htcap:0060,htagg:03,htmcs:000000ff|assoc:0,1,48,50,127,221(0050f2,2),45,htcap:006c,htagg:03,htmcs:000000ff|os:hpprinter':
+ 'wifi4|probe:0,1,3,45,50,htcap:0060,htagg:03,htmcs:000000ff|assoc:0,1,48,50,127,221(0050f2,2),45,htcap:006c,htagg:03,htmcs:000000ff,extcap:00|os:hpprinter':
('', 'HP Printer', '2.4GHz'),
'wifi4|probe:0,1,3,45,50,127,htcap:010c,htagg:1b,htmcs:0000ffff,extcap:00|assoc:0,1,45,48,127,50,221(0050f2,2),htcap:016c,htagg:1b,htmcs:000000ff,extcap:00|os:hpprinter':
('', 'HP Printer', '2.4GHz'),
+ 'wifi4|probe:0,1,50,221(001018,2)|assoc:0,1,48,50,221(001018,2)|os:hpprinter':
+ ('', 'HP Printer', '2.4GHz'),
'wifi4|probe:0,1,45,127,191,221(001018,2),221(00904c,51),htcap:006f,htagg:17,htmcs:000000ff,vhtcap:03800032,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:0000000000000040|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:000000ff,vhtcap:03800032,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:e008,extcap:0000000000000040|oui:htc':
('BCM4335', 'HTC One', '5GHz'),
@@ -223,6 +223,8 @@
('BCM4334', 'iPad (4th gen or Air)', '5GHz'),
'wifi4|probe:0,1,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:01fe,htagg:1b,htmcs:0000ffff,extcap:00000804|assoc:0,1,33,36,48,45,70,221(001018,2),221(00904c,51),221(0050f2,2),htcap:01fe,htagg:1b,htmcs:0000ffff,txpow:e708|os:ios':
('BCM4334', 'iPad (4th gen or Air)', '5GHz'),
+ 'wifi4|probe:0,1,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:01fe,htagg:1b,htmcs:0000ffff,extcap:00000004|assoc:0,1,33,36,48,45,70,221(001018,2),221(00904c,51),221(0050f2,2),htcap:01fe,htagg:1b,htmcs:0000ffff,txpow:e708|os:ios':
+ ('BCM4334', 'iPad (4th gen or Air)', '5GHz'),
'wifi4|probe:0,1,50,3,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:01bc,htagg:1b,htmcs:0000ffff,extcap:00000804|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:01bc,htagg:1b,htmcs:0000ffff,txpow:1805|os:ios':
('BCM4334', 'iPad (4th gen or Air)', '2.4GHz'),
'wifi4|probe:0,1,50,3,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:01bc,htagg:1b,htmcs:0000ffff,extcap:00000804|assoc:0,1,33,36,48,50,45,70,221(001018,2),221(00904c,51),221(0050f2,2),htcap:01bc,htagg:1b,htmcs:0000ffff,txpow:1805|os:ios':
@@ -352,6 +354,8 @@
('BCM4350', 'iPhone 6s/6s+', '2.4GHz'),
'wifi4|probe:0,1,50,3,45,127,107,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(001018,2),221(0050f2,2),htcap:002d,htagg:17,htmcs:000000ff,txpow:1202,extcap:0000000000000040|os:ios':
('BCM4350', 'iPhone 6s/6s+', '2.4GHz'),
+ 'wifi4|probe:0,1,50,3,45,127,107,221(00904c,51),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:1202,extcap:0000000000000040|os:ios':
+ ('BCM4350', 'iPhone 6s/6s+', '2.4GHz'),
'wifi4|probe:0,1,3,50|assoc:0,1,48,50|os:ipodtouch1':
('Marvell_W8686B22', 'iPod Touch 1st/2nd gen', '2.4GHz'),
@@ -398,6 +402,9 @@
'wifi4|probe:0,1,50,3,45,221(0050f2,8),221(0050f2,4),221(506f9a,9),htcap:012c,htagg:03,htmcs:000000ff,wps:LGMS323|assoc:0,1,50,48,45,221(0050f2,2),221(004096,3),htcap:012c,htagg:03,htmcs:000000ff':
('QCA_WCN3360', 'LG Optimus L70', '2.4GHz'),
+ 'wifi4|probe:0,1,3,45,221(0050f2,8),221(0050f2,4),221(506f9a,9),htcap:016e,htagg:03,htmcs:000000ff,wps:LG_V400|assoc:0,1,33,36,48,70,45,221(0050f2,2),127,htcap:016e,htagg:03,htmcs:000000ff,txpow:170d,extcap:00000a0200000000':
+ ('', 'LG Pad v400', '5GHz'),
+
'wifi4|probe:0,1,50,3,45,127,221(001018,2),221(00904c,51),htcap:11ac,htagg:16,htmcs:0000ffff,extcap:0000000000000040|assoc:0,1,33,36,48,50,45,127,221(001018,2),221(0050f2,2),htcap:11ac,htagg:16,htmcs:0000ffff,txpow:140a,extcap:0000000000000040|os:lgtv':
('', 'LG Smart TV', '2.4GHz'),
@@ -535,8 +542,6 @@
('QCA6174', 'Nexus 5X', '2.4GHz'),
'wifi4|probe:0,1,50,127,45,191,htcap:01ef,htagg:03,htmcs:0000ffff,vhtcap:338061b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:00000a020100004080|assoc:0,1,50,48,45,221(0050f2,2),127,htcap:01ad,htagg:03,htmcs:0000ffff,extcap:000000000000000080|oui:lg':
('QCA6174', 'Nexus 5X', '2.4GHz'),
- 'wifi4|probe:0,1,127,45,191,htcap:01ef,htagg:03,htmcs:0000ffff,vhtcap:338061b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:00000a020100004080|assoc:0,1,33,36,48,70,45,221(0050f2,2),191,127,htcap:01ef,htagg:03,htmcs:0000ffff,vhtcap:339071b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,txpow:1e08,extcap:000000000000004080|oui:lg':
- ('QCA6174', 'Nexus 5X', '2.4GHz'),
'wifi4|probe:0,1,50,127,45,191,htcap:01ef,htagg:03,htmcs:0000ffff,vhtcap:338061b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:00000a020100004080|assoc:0,1,50,33,48,70,45,221(0050f2,2),127,htcap:01ad,htagg:03,htmcs:0000ffff,txpow:1e08,extcap:000000000000000080|oui:lg':
('QCA6174', 'Nexus 5X', '2.4GHz'),
'wifi4|probe:0,1,50,127,extcap:00000a020100004080|assoc:0,1,50,33,48,70,45,221(0050f2,2),127,htcap:01ad,htagg:03,htmcs:0000ffff,txpow:1e08,extcap:000000000000000080|oui:lg':
@@ -605,6 +610,8 @@
('QCA_WCN3660', 'Nexus 7 (2013)', '2.4GHz'),
'wifi4|probe:0,1,50,45,htcap:016e,htagg:03,htmcs:000000ff|assoc:0,1,50,48,45,221(0050f2,2),127,htcap:012c,htagg:03,htmcs:000000ff,extcap:00000a02|oui:asus':
('QCA_WCN3660', 'Nexus 7 (2013)', '2.4GHz'),
+ 'wifi4|probe:0,1,50,45,221(0050f2,8),221(0050f2,4),221(506f9a,9),htcap:012c,htagg:03,htmcs:000000ff,wps:Nexus_7|assoc:0,1,50,48,45,221(0050f2,2),htcap:012c,htagg:03,htmcs:000000ff':
+ ('QCA_WCN3660', 'Nexus 7 (2013)', '2.4GHz'),
'wifi4|probe:0,1,45,127,191,221(0050f2,4),221(506f9a,9),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:000008800140,wps:Nexus_9|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e009,extcap:000008800140':
('BCM4354', 'Nexus 9', '5GHz'),
@@ -642,6 +649,8 @@
'wifi4|probe:0,1,50,48|assoc:0,1,33,36,50,221(0050f2,2),45,221(00037f,1),221(00037f,4),48,htcap:1004,htagg:1b,htmcs:0000ffff,txpow:0f0f|os:panasonictv':
('', 'Panasonic TV', '2.4GHz'),
+ 'wifi4|probe:0,1,50,45,221(0050f2,4),htcap:01ad,htagg:02,htmcs:0000ffff,wps:WPS_SUPPLICANT_STATION|assoc:0,1,50,45,48,221(0050f2,2),htcap:01ad,htagg:02,htmcs:0000ffff|os:panasonictv':
+ ('', 'Panasonic TV', '2.4GHz'),
'wifi4|probe:0,1,50|assoc:0,1,50,48,221(005043,1)|os:playstation':
('', 'Playstation 3 or 4', '2.4GHz'),
@@ -685,10 +694,12 @@
('BCM4336', 'Roku 2', '2.4GHz'),
# Roku 3 model 4230, 4200, 4200X and Roku 2 model 4210 and Roku Streaming Stick model 3500
+ 'wifi4|probe:0,1,45,127,221(001018,2),221(00904c,51),htcap:09bc,htagg:16,htmcs:0000ffff,extcap:0000000000000040|assoc:0,1,33,36,48,45,127,221(001018,2),221(0050f2,2),htcap:09bc,htagg:16,htmcs:0000ffff,txpow:100a,extcap:0000000000000040|os:roku':
+ ('BCM43236', 'Roku 3/SS', '5GHz'),
'wifi4|probe:0,1,50,3,45,127,221(001018,2),221(00904c,51),htcap:19bc,htagg:16,htmcs:0000ffff,extcap:0000000000000040|assoc:0,1,33,36,48,50,45,127,221(001018,2),221(0050f2,2),htcap:19bc,htagg:16,htmcs:0000ffff,txpow:140a,extcap:0000000000000040|os:roku':
- ('BCM43236', 'Roku 3', '2.4GHz'),
+ ('BCM43236', 'Roku 3/SS', '2.4GHz'),
'wifi4|probe:0,1,50,3,45,127,221(001018,2),221(00904c,51),htcap:193c,htagg:16,htmcs:0000ffff,extcap:0000000000000040|assoc:0,1,33,36,48,50,45,127,221(001018,2),221(0050f2,2),htcap:193c,htagg:16,htmcs:0000ffff,txpow:140a,extcap:0000000000000040|os:roku':
- ('BCM43236', 'Roku 3', '2.4GHz'),
+ ('BCM43236', 'Roku 3/SS', '2.4GHz'),
# Roku 4 model 4400
'wifi4|probe:0,1,45,127,191,221(001018,2),htcap:01ad,htagg:17,htmcs:0000ffff,vhtcap:0f8159b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:0000000000000040|assoc:0,1,33,36,48,45,127,191,199,221(001018,2),221(0050f2,2),htcap:01ad,htagg:17,htmcs:0000ffff,vhtcap:0f8159b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1109,extcap:0000000000000040|os:roku':
@@ -757,6 +768,8 @@
('BCM4359', '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':
('BCM4359', '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':
+ ('BCM4359', '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':
('BCM4359', 'Samsung Galaxy Note 5', '2.4GHz'),
@@ -810,6 +823,8 @@
('BCM4354', 'Samsung Galaxy S5', '2.4GHz'),
'wifi4|probe:0,1,50,3,45,127,107,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,45,127,107,221(001018,2),221(0050f2,2),htcap:002d,htagg:17,htmcs:0000ffff,txpow:1209,extcap:000008800140|oui:samsung':
('BCM4354', 'Samsung Galaxy S5', '2.4GHz'),
+ 'wifi4|probe:0,1,50,3,45,127,107,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,extcap:000008800140|assoc:0,1,50,33,36,48,70,45,127,107,221(001018,2),221(0050f2,2),htcap:002d,htagg:17,htmcs:0000ffff,txpow:1209,extcap:000008800140|oui:samsung':
+ ('BCM4354', 'Samsung Galaxy S5', '2.4GHz'),
'wifi4|probe:0,1,45,127,191,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,191,221(00904c,4),221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0000088001400040|oui:samsung':
('BCM4358', 'Samsung Galaxy S6', '5GHz'),
@@ -900,7 +915,7 @@
('', 'Vizio Smart TV', '2.4GHz'),
'wifi4|probe:0,1,50,45,127,221(0050f2,4),htcap:106e,htagg:12,htmcs:000000ff,extcap:00,wps:Ralink_Wireless_Linux_Client|assoc:0,1,50,45,127,221(000c43,6),221(0050f2,2),48,htcap:000c,htagg:12,htmcs:000000ff,extcap:01000000|os:visiotv':
('', 'Vizio Smart TV', '2.4GHz'),
- 'wifi|probe:0,1,50,48|assoc:0,1,50,221(0050f2,2),45,51,127,48,htcap:012c,htagg:1b,htmcs:000000ff|os:visiotv':
+ 'wifi4|probe:0,1,50,48|assoc:0,1,50,221(0050f2,2),45,51,127,48,htcap:012c,htagg:1b,htmcs:000000ff,extcap:01|os:visiotv':
('', 'Vizio Smart TV', '2.4GHz'),
'wifi4|probe:0,1,50,221(001018,2)|assoc:0,1,48,50,221(001018,2)|os:wii':
@@ -919,7 +934,7 @@
('', 'Xbox', '5GHz'),
'wifi4|probe:0,1,3|assoc:0,1,48,33,36,221(0050f2,2),txpow:1405|oui:microsoft':
('', 'Xbox', '5GHz'),
- 'wifi|probe:0,1,3,45,50,htcap:016e,htagg:03,htmcs:0000ffff|assoc:0,1,33,48,50,127,221(0050f2,2),45,htcap:012c,htagg:03,htmcs:0000ffff,extcap:00000000|oui:microsoft':
+ 'wifi4|probe:0,1,3,45,50,htcap:016e,htagg:03,htmcs:0000ffff|assoc:0,1,33,48,50,127,221(0050f2,2),45,htcap:012c,htagg:03,htmcs:0000ffff,txpow:1208,extcap:0000000000000140|oui:microsoft':
('', 'Xbox', '5GHz'),
'wifi4|probe:0,1,50|assoc:0,1,3,33,36,50,221(0050f2,2),45,221(00037f,1),221(00037f,4),48,htcap:104c,htagg:00,htmcs:000000ff,txpow:0f0f|oui:microsoft':
('', 'Xbox', '2.4GHz'),
@@ -927,6 +942,8 @@
('', 'Xbox', '2.4GHz'),
'wifi4|probe:0,1,45,50,htcap:058f,htagg:03,htmcs:0000ffff|assoc:0,1,33,36,48,221(0050f2,2),45,htcap:058f,htagg:03,htmcs:0000ffff,txpow:1208|oui:microsoft':
('', 'Xbox', '2.4GHz'),
+ 'wifi4|probe:0,1,3,50|assoc:0,1,33,48,50,127,127,221(0050f2,2),45,htcap:012c,htagg:03,htmcs:0000ffff,txpow:1208,extcap:0000000000000140|oui:microsoft':
+ ('', 'Xbox', '2.4GHz'),
'wifi4|probe:0,1,3,45,50,htcap:058f,htagg:03,htmcs:0000ffff|assoc:0,1,48,50,221(0050f2,2),45,htcap:058d,htagg:03,htmcs:0000ffff|oui:microsoft':
('Marvell_88W8897', 'Xbox One', '2.4GHz'),
@@ -942,82 +959,6 @@
}
-def make_v2_signature(sig):
- """Degrade a v3 / v4 signature to match the equivalent v2 signature.
-
- v3/v4 signatures include additional information from the Wifi MLME
- frames, based on experience of working with v1 and v2. Return a string
- which matches what the v2 signature would have been, by removing
- the additional information.
-
- This allows us to retain the base of v2 signatures.
-
- Args:
- sig: the text signature.
-
- Returns:
- a v2 signature.
- """
- new_sig = []
- for s in sig.split('|'):
- fields = s.split(',')
- new_fields = []
- for x in fields:
- if x.startswith('extcap:'):
- val = x[7:]
- # v2 sig includes only the first 4 bytes, swapped.
- swapped = ''
- if len(val) >= 8:
- swapped = swapped + val[6:8]
- if len(val) >= 6:
- swapped = swapped + val[4:6]
- if len(val) >= 4:
- swapped = swapped + val[2:4]
- if len(val) >= 2:
- swapped = swapped + val[0:2]
- x = 'extcap:' + swapped
- if x.startswith('cap') or x.startswith('txpow'):
- # new fields in v3, omit from v2 sig
- continue
- new_fields.append(x)
- new_sig.append(','.join(new_fields))
- new_sig[0] = 'wifi'
- return '|'.join(new_sig)
-
-
-def v2only(field):
- """Return true if field only occurs in a v2 signature."""
- labels = set(['htagg', 'htmcs', 'vhtrxmcs', 'vhttxmcs', 'intwrk', 'extcap'])
- for l in labels:
- if l in field:
- return True
- return False
-
-
-def make_v1_signature(sig):
- """Degrade a v2 signature to match the equivalent v1 signature.
-
- v2 signatures include additional information from the Wifi MLME
- frames, based on experience of working with v1. Return a string
- which matches what the v1 signature would have been, by removing
- the additional information.
-
- This allows us to retain the base of v1 signatures.
-
- Args:
- sig: the text signature.
-
- Returns:
- a v1 signature.
- """
- new_sig = []
- for s in sig.split('|'):
- fields = s.split(',')
- new_fields = [x for x in fields if not v2only(x)]
- new_sig.append(','.join(new_fields))
- return '|'.join(new_sig)
-
-
def performance_characteristics(signature):
"""Parse 802.11n/ac capabilities bitmasks from sig.
@@ -1133,10 +1074,8 @@
return (SHA256, 'Unknown', PerformanceInfo)
"""
- v4_sig = signature.strip()
- v2_sig = make_v2_signature(v4_sig)
- v1_sig = make_v1_signature(v2_sig)
- perf = performance_info(*performance_characteristics(v4_sig))
+ sig = signature.strip()
+ perf = performance_info(*performance_characteristics(sig))
name = dhcp.LookupHostname(mac)
opersys = dhcp.LookupOperatingSystem(mac)
oui = ethernet.LookupOUI(mac)
@@ -1148,11 +1087,10 @@
for o in oui:
suffixes.append('|oui:' + o)
suffixes.append('')
- for sig in [v4_sig, v2_sig, v1_sig]:
- for suffix in suffixes:
- result = database.get(sig + suffix, None)
- if result is not None:
- return (result[0], result[1], perf)
+ for suffix in suffixes:
+ result = database.get(sig + suffix, None)
+ if result is not None:
+ return (result[0], result[1], perf)
# We have no idea what the client is.
slug = 'SHA:' + hashlib.sha256(signature).hexdigest()
@@ -1165,13 +1103,5 @@
# Remove os, oui, etc qualifiers if present.
a = k.split('|')
if len(a) > 3:
- v4_sig = '|'.join(a[0:3])
- print 'SHA:' + hashlib.sha256(v4_sig).hexdigest() + ' ' + v[1] + ' (unqualified)'
-
- v2_sig = make_v2_signature(v4_sig)
- if v2_sig != v4_sig:
- print 'SHA:' + hashlib.sha256(v2_sig).hexdigest() + ' ' + v[1] + ' (unqualified, v2)'
-
- v1_sig = make_v1_signature(v2_sig)
- if v1_sig != v2_sig:
- print 'SHA:' + hashlib.sha256(v1_sig).hexdigest() + ' ' + v[1] + ' (unqualified, v1)'
+ sig = '|'.join(a[0:3])
+ print 'SHA:' + hashlib.sha256(sig).hexdigest() + ' ' + v[1] + ' (unqualified)'