github.com/n00py/Slackor@v0.0.0-20200610224921-d007fcea1740/impacket/tests/dot11/test_WPA2.py (about) 1 #!/usr/bin/env python 2 # sorry, this is very ugly, but I'm in python 2.5 3 import sys 4 sys.path.insert(0,"../..") 5 6 from impacket.dot11 import Dot11,Dot11Types,Dot11DataFrame,Dot11WPA2,Dot11WPA2Data 7 import unittest 8 9 class TestDot11WPA2Data(unittest.TestCase): 10 11 def setUp(self): 12 # 802.11 Data Frame 13 # 14 self.frame_orig=b'\x08\x49\x24\x00\x00\x21\x29\x68\x33\x5d\x00\x15\xaf\xe4\xf1\x0f\x00\x21\x29\x68\x33\x5b\xe0\x31\x1b\x13\x00\x20\x00\x00\x00\x00\x84\x7d\x6a\x30\x8c\x60\x7e\x3b\x22\xdc\x16\xc1\x4b\x28\xd3\x26\x76\x9d\x2e\x59\x96\x31\x3e\x01\x6f\x61\xa2\x59\xc8\xdc\xd3\xc4\xad\x7c\xcc\x32\xa8\x9f\xf6\x03\x02\xe1\xac\x1d\x1e\x02\x8a\xcd\x5b\x94\x20\x2d\xfc\x6e\x37\x40\x2e\x46\x17\x19\x0c\xc0\x34\x07\xae\xe7\x77\xaf\xf9\x9f\x41\x53' 15 d = Dot11(self.frame_orig) 16 17 self.assertEqual(d.get_type(),Dot11Types.DOT11_TYPE_DATA) 18 self.assertEqual(d.get_subtype(),Dot11Types.DOT11_SUBTYPE_DATA) 19 self.assertEqual(d.get_type_n_subtype(),Dot11Types.DOT11_TYPE_DATA_SUBTYPE_DATA) 20 21 data = Dot11DataFrame(d.get_body_as_string()) 22 d.contains(data) 23 24 self.wpa2_header = Dot11WPA2(data.body_string) 25 data.contains(self.wpa2_header) 26 27 self.wpa2_data = Dot11WPA2Data(self.wpa2_header.body_string) 28 self.wpa2_header.contains(self.wpa2_data) 29 30 def test_01_is_WPA2(self): 31 'Test WPA2Header is_WPA2 method' 32 self.assertEqual(self.wpa2_header.is_WPA2(), True) 33 34 def test_03_extIV(self): 35 'Test WPA2Header extIV getter and setter methods' 36 self.assertEqual(self.wpa2_header.get_extIV(), 0x01) 37 38 self.wpa2_header.set_extIV(0x00) # Es de 1 bit 39 self.assertEqual(self.wpa2_header.get_extIV(), 0x00) 40 41 def test_04_keyid(self): 42 'Test WPA2Header keyID getter and setter methods' 43 self.assertEqual(self.wpa2_header.get_keyid(), 0x00) 44 45 self.wpa2_header.set_keyid(0x03) # Es de 2 bits 46 self.assertEqual(self.wpa2_header.get_keyid(), 0x03) 47 48 #TODO: Test get_decrypted_data 49 #def test_05_get_decrypted_data(self): 50 51 def test_06_PNs(self): 52 'Test WPA2Data PN0 to PN5 getter and setter methods' 53 # PN0 54 self.assertEqual(self.wpa2_header.get_PN0(), 0x1b) 55 self.wpa2_header.set_PN0(0xAB) 56 self.assertEqual(self.wpa2_header.get_PN0(), 0xAB) 57 58 # PN1 59 self.assertEqual(self.wpa2_header.get_PN1(), 0x13) 60 self.wpa2_header.set_PN1(0xAB) 61 self.assertEqual(self.wpa2_header.get_PN1(), 0xAB) 62 63 # PN2 64 self.assertEqual(self.wpa2_header.get_PN2(), 0x00) 65 self.wpa2_header.set_PN2(0xAB) 66 self.assertEqual(self.wpa2_header.get_PN2(), 0xAB) 67 68 # PN3 69 self.assertEqual(self.wpa2_header.get_PN3(), 0x00) 70 self.wpa2_header.set_PN3(0xAB) 71 self.assertEqual(self.wpa2_header.get_PN3(), 0xAB) 72 73 # PN4 74 self.assertEqual(self.wpa2_header.get_PN4(), 0x00) 75 self.wpa2_header.set_PN4(0xAB) 76 self.assertEqual(self.wpa2_header.get_PN4(), 0xAB) 77 78 # PN5 79 self.assertEqual(self.wpa2_header.get_PN5(), 0x00) 80 self.wpa2_header.set_PN5(0xAB) 81 self.assertEqual(self.wpa2_header.get_PN5(), 0xAB) 82 83 def test_07_data(self): 84 'Test WPA2Data body' 85 data=b'\x84\x7d\x6a\x30\x8c\x60\x7e\x3b\x22\xdc\x16\xc1\x4b\x28\xd3\x26\x76\x9d\x2e\x59\x96\x31\x3e\x01\x6f\x61\xa2\x59\xc8\xdc\xd3\xc4\xad\x7c\xcc\x32\xa8\x9f\xf6\x03\x02\xe1\xac\x1d\x1e\x02\x8a\xcd\x5b\x94\x20\x2d\xfc\x6e\x37\x40\x2e\x46\x17\x19' 86 self.assertEqual(self.wpa2_data.body_string, data) 87 88 def test_08_mic(self): 89 'Test WPA2Data MIC field' 90 mic=b'\x0c\xc0\x34\x07\xae\xe7\x77\xaf' 91 self.assertEqual(self.wpa2_data.get_MIC(), mic) 92 93 mic=b'\x01\x02\x03\x04\xff\xfe\xfd\xfc' 94 self.wpa2_data.set_MIC(mic) 95 self.assertEqual(self.wpa2_data.get_MIC(), mic) 96 97 suite = unittest.TestLoader().loadTestsFromTestCase(TestDot11WPA2Data) 98 unittest.TextTestRunner(verbosity=1).run(suite)