github.com/n00py/Slackor@v0.0.0-20200610224921-d007fcea1740/impacket/tests/dot11/test_FrameManagementAssociationRequest.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 Dot11Types
     7  from impacket.ImpactDecoder import RadioTapDecoder
     8  from six import PY2
     9  import unittest
    10  
    11  class TestDot11ManagementAssociationRequestFrames(unittest.TestCase):
    12  
    13      def setUp(self):
    14          # 802.11 Management Frame 
    15          #
    16          self.rawframe = b"\x00\x00\x1c\x00\xef\x18\x00\x00jH\xfa\x00<\x00\x00\x00\x10\x02\x85\t\xa0\x00\xb9\x9e_\x00\x00" \
    17                          b"\x1b\x00\x00:\x01\x00\x18\xf8lvBp\x1a\x04T\xe3\x86\x00\x18\xf8lvBP\x8e1\x04\n\x00\x00\x05ddwrt" \
    18                          b"\x01\x08\x82\x84\x8b\x96$0Hl!\x02\n\x11$\x02\x01\x0e0\x14\x01\x00\x00\x0f\xac\x04\x01\x00\x00" \
    19                          b"\x0f\xac\x04\x01\x00\x00\x0f\xac\x02\x08\x002\x04\x0c\x12\x18`\xdd\t\x00\x10\x18\x02\x00\x10" \
    20                          b"\x00\x00\x00\xbf]o\xce"
    21          self.radiotap_decoder = RadioTapDecoder()
    22          radiotap=self.radiotap_decoder.decode(self.rawframe)
    23  
    24          if PY2:
    25              self.assertEqual(str(radiotap.__class__), "impacket.dot11.RadioTap")
    26          else:
    27              self.assertEqual(str(radiotap.__class__), "<class 'impacket.dot11.RadioTap'>")
    28  
    29          self.dot11=radiotap.child()
    30          if PY2:
    31              self.assertEqual(str(self.dot11.__class__), "impacket.dot11.Dot11")
    32          else:
    33              self.assertEqual(str(self.dot11.__class__), "<class 'impacket.dot11.Dot11'>")
    34  
    35  
    36          type = self.dot11.get_type()
    37          self.assertEqual(type,Dot11Types.DOT11_TYPE_MANAGEMENT)
    38          
    39          subtype = self.dot11.get_subtype()
    40          self.assertEqual(subtype,Dot11Types.DOT11_SUBTYPE_MANAGEMENT_ASSOCIATION_REQUEST)
    41          
    42          typesubtype = self.dot11.get_type_n_subtype()
    43          self.assertEqual(typesubtype,Dot11Types.DOT11_TYPE_MANAGEMENT_SUBTYPE_ASSOCIATION_REQUEST)
    44          
    45          self.management_base=self.dot11.child()
    46          if PY2:
    47              self.assertEqual(str(self.management_base.__class__), "impacket.dot11.Dot11ManagementFrame")
    48          else:
    49              self.assertEqual(str(self.management_base.__class__), "<class 'impacket.dot11.Dot11ManagementFrame'>")
    50          
    51          self.management_association_request=self.management_base.child()
    52          if PY2:
    53              self.assertEqual(str(self.management_association_request.__class__), "impacket.dot11.Dot11ManagementAssociationRequest")
    54          else:
    55              self.assertEqual(str(self.management_association_request.__class__), "<class 'impacket.dot11.Dot11ManagementAssociationRequest'>")
    56              
    57          
    58      def test_01(self):
    59          'Test Header and Tail Size field'
    60          self.assertEqual(self.management_base.get_header_size(), 22)
    61          self.assertEqual(self.management_base.get_tail_size(), 0)
    62          self.assertEqual(self.management_association_request.get_header_size(), 68)
    63          self.assertEqual(self.management_association_request.get_tail_size(), 0)
    64          
    65      def test_02(self):
    66          'Test Duration field'
    67          
    68          self.assertEqual(self.management_base.get_duration(), 0x013a)
    69          self.management_base.set_duration(0x1234)
    70          self.assertEqual(self.management_base.get_duration(), 0x1234)
    71      
    72      def test_03(self):
    73          'Test Destination Address field'
    74          
    75          addr=self.management_base.get_destination_address()
    76          
    77          self.assertEqual(addr.tolist(), [0x00,0x18,0xF8,0x6C,0x76,0x42])
    78          addr[0]=0x12
    79          addr[5]=0x34
    80          self.management_base.set_destination_address(addr)
    81          self.assertEqual(self.management_base.get_destination_address().tolist(), [0x12,0x18,0xF8,0x6C,0x76,0x34])
    82  
    83      def test_04(self):
    84          'Test Source Address field'
    85          
    86          addr=self.management_base.get_source_address()
    87          
    88          self.assertEqual(addr.tolist(), [0x70,0x1A,0x04,0x54,0xE3,0x86])
    89          addr[0]=0x12
    90          addr[5]=0x34
    91          self.management_base.set_source_address(addr)
    92          self.assertEqual(self.management_base.get_source_address().tolist(), [0x12,0x1A,0x04,0x54,0xE3,0x34])
    93  
    94      def test_05(self):
    95          'Test BSSID Address field'
    96          
    97          addr=self.management_base.get_bssid()
    98          
    99          self.assertEqual(addr.tolist(), [0x00,0x18,0xF8,0x6C,0x76,0x42])
   100          addr[0]=0x12
   101          addr[5]=0x34
   102          self.management_base.set_bssid(addr)
   103          self.assertEqual(self.management_base.get_bssid().tolist(), [0x12,0x18,0xF8,0x6C,0x76,0x34])
   104  
   105      def test_06(self):
   106          'Test Sequence control field'
   107          self.assertEqual(self.management_base.get_sequence_control(), 0x8e50)
   108          self.management_base.set_sequence_control(0x1234)
   109          self.assertEqual(self.management_base.get_sequence_control(), 0x1234)
   110  
   111      def test_07(self):
   112          'Test Fragment number field'
   113          self.assertEqual(self.management_base.get_fragment_number(), 0x00)
   114          self.management_base.set_fragment_number(0xF1) # Es de 4 bit
   115          self.assertEqual(self.management_base.get_fragment_number(), 0x01)
   116  
   117      def test_08(self):
   118          'Test Sequence number field'
   119          self.assertEqual(self.management_base.get_sequence_number(), 2277)
   120          self.management_base.set_sequence_number(0xF234) # Es de 12 bit
   121          self.assertEqual(self.management_base.get_sequence_number(), 0x0234)
   122          
   123      def test_09(self):
   124          'Test Management Frame Data field'
   125          frame_body=b"1\x04\n\x00\x00\x05ddwrt\x01\x08\x82\x84\x8b\x96$0Hl!\x02\n\x11$\x02\x01\x0e0\x14\x01\x00\x00\x0f\xac\x04\x01\x00\x00\x0f\xac\x04\x01\x00\x00\x0f\xac\x02\x08\x002\x04\x0c\x12\x18`\xdd\t\x00\x10\x18\x02\x00\x10\x00\x00\x00"
   126          self.assertEqual(self.management_base.get_frame_body(), frame_body)
   127  
   128      def test_10(self):
   129          'Test Management Association Request Capabilities field' 
   130          self.assertEqual(self.management_association_request.get_capabilities(), 0x0431)
   131          self.management_association_request.set_capabilities(0x4321) 
   132          self.assertEqual(self.management_association_request.get_capabilities(), 0x4321)
   133  
   134      def test_11(self):
   135          'Test Management Association Request Listen Interval field' 
   136          self.assertEqual(self.management_association_request.get_listen_interval(), 0x000a)
   137          self.management_association_request.set_listen_interval(0x4321) 
   138          self.assertEqual(self.management_association_request.get_listen_interval(), 0x4321)
   139  
   140      def test_12(self):
   141          'Test Management Association Request Ssid getter/setter methods'
   142          act_ssid=b"ddwrt"
   143          new_ssid=b"holala"
   144          self.assertEqual(self.management_association_request.get_ssid(), act_ssid)
   145          self.management_association_request.set_ssid(new_ssid)
   146          self.assertEqual(self.management_association_request.get_ssid(), new_ssid)
   147          self.assertEqual(self.management_association_request.get_header_size(), 68+1)
   148  
   149      def test_13(self):
   150          'Test Management Association Request Supported_rates getter/setter methods'
   151          self.assertEqual(self.management_association_request.get_supported_rates(), (0x82, 0x84, 0x8b, 0x96, 0x24, 0x30, 0x48, 0x6c))
   152          self.assertEqual(self.management_association_request.get_supported_rates(human_readable=True), (1.0, 2.0, 5.5, 11.0, 18.0, 24.0, 36.0, 54.0))
   153          
   154          self.management_association_request.set_supported_rates((0x12, 0x98, 0x24, 0xb0, 0x48, 0x60))
   155  
   156          self.assertEqual(self.management_association_request.get_supported_rates(), (0x12, 0x98, 0x24, 0xb0, 0x48, 0x60))
   157          self.assertEqual(self.management_association_request.get_supported_rates(human_readable=True), (9.0, 12.0, 18.0, 24.0, 36.0, 48.0))
   158          self.assertEqual(self.management_association_request.get_header_size(), 68-2)
   159  
   160      def test_14(self):
   161          'Test Management Association Request RSN getter/setter methods'
   162          self.assertEqual(self.management_association_request.get_rsn(), b"\x01\x00\x00\x0f\xac\x04\x01\x00\x00\x0f\xac\x04\x01\x00\x00\x0f\xac\x02\x08\x00")
   163          self.management_association_request.set_rsn(b"\xff\x00\x00\x0f\xac\x04\x01\x00\x00\x0f\xac\x04\x01\x00\x00\x0f\xac\x02\x08\xff")
   164  
   165          self.assertEqual(self.management_association_request.get_rsn(), b"\xff\x00\x00\x0f\xac\x04\x01\x00\x00\x0f\xac\x04\x01\x00\x00\x0f\xac\x02\x08\xff")
   166          self.assertEqual(self.management_association_request.get_header_size(), 68)
   167  
   168      def test_15(self):
   169          'Test Management Vendor Specific getter/setter methods'
   170          self.assertEqual(self.management_association_request.get_vendor_specific(), [(b"\x00\x10\x18",b"\x02\x00\x10\x00\x00\x00")])
   171  
   172          self.management_association_request.add_vendor_specific(b"\x00\x00\x40", b"\x04\x04\x04\x04\x04\x04")
   173  
   174          self.assertEqual(self.management_association_request.get_vendor_specific(), 
   175              [(b"\x00\x10\x18", b"\x02\x00\x10\x00\x00\x00"),
   176               (b"\x00\x00\x40", b"\x04\x04\x04\x04\x04\x04"),
   177              ])
   178          self.assertEqual(self.management_association_request.get_header_size(), 68+11)
   179          
   180  suite = unittest.TestLoader().loadTestsFromTestCase(TestDot11ManagementAssociationRequestFrames)
   181  unittest.TextTestRunner(verbosity=1).run(suite)