github.com/n00py/Slackor@v0.0.0-20200610224921-d007fcea1740/impacket/tests/dot11/test_WEPEncoder.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 import impacket.dot11 7 import impacket.ImpactPacket 8 from impacket.Dot11KeyManager import KeyManager 9 from binascii import unhexlify 10 import unittest 11 12 class TestDot11WEPData(unittest.TestCase): 13 14 def setUp(self): 15 self.dot11 = impacket.dot11.Dot11(FCS_at_end = False) 16 17 # dot11.fc 18 self.dot11.set_version(0) 19 self.dot11.set_type_n_subtype(impacket.dot11.Dot11Types.DOT11_TYPE_DATA_SUBTYPE_DATA) 20 21 # dot11.fc.flags 22 self.dot11.set_fromDS(0) 23 self.dot11.set_toDS(1) 24 self.dot11.set_moreFrag(0) 25 self.dot11.set_retry(0) 26 self.dot11.set_powerManagement(0) 27 self.dot11.set_moreData(0) 28 self.dot11.set_protectedFrame(1) 29 self.dot11.set_order(0) 30 31 # dot11.Data 32 self.dot11data = impacket.dot11.Dot11DataFrame() 33 self.dot11data.set_duration(44) 34 self.dot11data.set_address1([0x00,0x21,0x29,0x68,0x33,0x5d]) # Bssid 35 self.dot11data.set_address2([0x00,0x18,0xde,0x7c,0x37,0x9f]) # Source 36 self.dot11data.set_address3([0x00,0x21,0x29,0x68,0x33,0x5d]) # Destination 37 self.dot11data.set_fragment_number(0) 38 self.dot11data.set_sequence_number(3439) 39 40 # WEP 41 self.wep = impacket.dot11.Dot11WEP() 42 self.wep.set_iv(0x0c3165) 43 self.wep.set_keyid(0) 44 45 # WEPData 46 self.wepdata = impacket.dot11.Dot11WEPData() 47 48 # LLC 49 self.llc = impacket.dot11.LLC() 50 self.llc.set_DSAP(0xaa) 51 self.llc.set_SSAP(0xaa) 52 self.llc.set_control(0x03) 53 54 # SNAP 55 self.snap = impacket.dot11.SNAP() 56 self.snap.set_OUI(0x000000) 57 self.snap.set_protoID(0x0800) 58 59 # IP 60 self.ip = impacket.ImpactPacket.IP() 61 self.ip.set_ip_v(0x04) 62 self.ip.set_ip_tos(0x00) 63 self.ip.set_ip_id(0xa607) 64 # IP.flags 65 self.ip.set_ip_rf(0) 66 self.ip.set_ip_df(0) 67 self.ip.set_ip_mf(0) 68 # 69 self.ip.set_ip_off(0) 70 self.ip.set_ip_ttl(128) 71 self.ip.set_ip_p(0x01) # ICMP 72 self.ip.set_ip_src('192.168.1.102') 73 self.ip.set_ip_dst('64.233.163.103') 74 75 # ICMP 76 self.icmp = impacket.ImpactPacket.ICMP() 77 self.icmp.set_icmp_type(self.icmp.ICMP_ECHO) 78 self.icmp.set_icmp_code(0x00) 79 self.icmp.set_icmp_id(0x0400) 80 self.icmp.set_icmp_seq(0x8405) 81 82 # Data 83 datastring = b'abcdefghijklmnopqrstuvwabcdefghi' 84 self.data = impacket.ImpactPacket.Data( datastring ) 85 86 # Build the protocol stack 87 self.dot11.contains(self.dot11data) 88 self.dot11data.contains(self.wep) 89 self.wep.contains(self.wepdata) 90 self.wepdata.contains(self.llc) 91 self.llc.contains(self.snap) 92 self.snap.contains(self.ip) 93 self.ip.contains(self.icmp) 94 self.icmp.contains(self.data) 95 96 # Instantiated the Key Manager 97 self.km=KeyManager() 98 self.km.add_key([0x00,0x21,0x29,0x68,0x33,0x5b],unhexlify('999cbb701ca2ef030e302dcc35')) 99 100 def test_02(self): 101 'Test ICV methods' 102 self.assertEqual(self.wepdata.get_icv(),0x00000000) 103 self.assertEqual(self.wepdata.get_computed_icv(),0xA1F93985) 104 self.wepdata.set_icv(0xA1F93985) 105 self.assertEqual(self.wepdata.get_icv(), self.wepdata.get_computed_icv()) 106 self.wepdata.set_icv(0x01020304) 107 self.assertEqual(self.wepdata.get_icv(),0x01020304) 108 109 def test_03(self): 110 'Test WEPData creation from scratch with encryption' 111 112 #print "\nWEP Data Decrypted [%s]"%hexlify(self.wepdata.get_packet()) 113 self.wepdata.set_icv(0xA1F93985) 114 wep_enc=self.wep.get_encrypted_data(unhexlify('999cbb701ca2ef030e302dcc35')) 115 #print "\nWEP Data Encrypted [%s]"%hexlify(wep_enc) 116 self.assertEqual(wep_enc,unhexlify('8d2381e9251cb5aa83d2c716ba6ee18e7d3a2c71c00f6ab82fbc54c4b014ab03115edeccab2b18ebeb250f75eb6bf57fd65cb9e1b26e50ba4bb48b9f3471da9ecf12cb8f361b0253')) 117 118 #print "\nDot11 decrypted [%s]"%hexlify(self.dot11.get_packet()) 119 self.wep.encrypt_frame(unhexlify('999cbb701ca2ef030e302dcc35')) 120 #print "\nDot11 encrypted [%s]"%hexlify(self.dot11.get_packet()) 121 122 suite = unittest.TestLoader().loadTestsFromTestCase(TestDot11WEPData) 123 unittest.TextTestRunner(verbosity=1).run(suite)