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)