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)