github.com/n00py/Slackor@v0.0.0-20200610224921-d007fcea1740/impacket/tests/ImpactPacket/test_IP6_Address.py (about) 1 #!/usr/bin/env python 2 3 #Impact test version 4 try: 5 from impacket import IP6_Address 6 except: 7 pass 8 9 #Standalone test version 10 try: 11 import sys 12 sys.path.insert(0,"../..") 13 import IP6_Address 14 except: 15 pass 16 17 import unittest 18 19 class TestIP6_Address(unittest.TestCase): 20 21 def runTest(self): 22 pass 23 24 def test_construction(self): 25 '''Test IP6 Address construction''' 26 normal_text_address = "FE80:1234:5678:ABCD:EF01:2345:6789:ABCD" 27 normal_binary_address = [0xFE, 0x80, 0x12, 0x34, 28 0x56, 0x78, 0xAB, 0xCD, 29 0xEF, 0x01, 0x23, 0x45, 30 0x67, 0x89, 0xAB, 0xCD] 31 32 oversized_text_address = "FE80:1234:5678:ABCD:EF01:2345:6789:ABCD:1234" 33 oversized_binary_address = [0xFE, 0x80, 0x12, 0x34, 34 0x56, 0x78, 0xAB, 0xCD, 35 0xEF, 0x01, 0x23, 0x45, 36 0x67, 0x89, 0xAB, 0xCD, 0x00] 37 38 subsized_text_address = "FE80:1234:5678:ABCD:EF01:2345:6789" 39 subsized_binary_address = [0xFE, 0x80, 0x12, 0x34, 40 0x56, 0x78, 0xAB, 0xCD, 41 0xEF, 0x01, 0x23, 0x45, 42 0x67, 0x89, 0xAB] 43 44 malformed_text_address_1 = "FE80:123456788:ABCD:EF01:2345:6789:ABCD" 45 malformed_text_address_2 = "ZXYW:1234:5678:ABCD:EF01:2345:6789:ABCD" 46 malformed_text_address_3 = "FFFFFF:1234:5678:ABCD:EF01:2345:67:ABCD" 47 empty_text_address = "" 48 empty_binary_address = [] 49 50 self.assert_(IP6_Address.IP6_Address(normal_text_address), "IP6 address construction with normal text address failed") 51 self.assert_(IP6_Address.IP6_Address(normal_binary_address), "IP6 address construction with normal binary address failed") 52 53 self.assertRaises(Exception, IP6_Address.IP6_Address, oversized_text_address)#, "IP6 address construction with oversized text address incorrectly succeeded") 54 self.assertRaises(Exception, IP6_Address.IP6_Address, oversized_binary_address)#, "IP6 address construction with oversized binary address incorrectly succeeded") 55 self.assertRaises(Exception, IP6_Address.IP6_Address, subsized_text_address)#, "IP6 address construction with subsized text address incorrectly succeeded") 56 self.assertRaises(Exception, IP6_Address.IP6_Address, subsized_binary_address)#, "IP6 address construction with subsized binary address incorrectly succeeded") 57 self.assertRaises(Exception, IP6_Address.IP6_Address, malformed_text_address_1)#, "IP6 address construction with malformed text address (#1) incorrectly succeeded") 58 self.assertRaises(Exception, IP6_Address.IP6_Address, malformed_text_address_2)#, "IP6 address construction with malformed text address (#2) incorrectly succeeded") 59 self.assertRaises(Exception, IP6_Address.IP6_Address, malformed_text_address_3)#, "IP6 address construction with malformed text address (#3) incorrectly succeeded") 60 self.assertRaises(Exception, IP6_Address.IP6_Address, empty_text_address)#, "IP6 address construction with empty text address incorrectly succeeded") 61 self.assertRaises(Exception, IP6_Address.IP6_Address, empty_binary_address)#, "IP6 address construction with empty binary address incorrectly succeeded") 62 63 def test_unicode_representation(self): 64 '''Test IP6 Unicode text representations''' 65 unicode_normal_text_address = u'FE80:1234:5678:ABCD:EF01:2345:6789:ABCD' 66 67 self.assert_(IP6_Address.IP6_Address(unicode_normal_text_address), "IP6 address construction with UNICODE normal text address failed") 68 69 70 def test_conversions(self): 71 '''Test IP6 Address conversions.''' 72 text_address = "FE80:1234:5678:ABCD:EF01:2345:6789:ABCD" 73 binary_address = [0xFE, 0x80, 0x12, 0x34, 74 0x56, 0x78, 0xAB, 0xCD, 75 0xEF, 0x01, 0x23, 0x45, 76 0x67, 0x89, 0xAB, 0xCD] 77 self.assert_(IP6_Address.IP6_Address(text_address).as_string() == text_address, "IP6 address conversion text -> text failed") 78 self.assert_(IP6_Address.IP6_Address(binary_address).as_bytes() == binary_address, "IP6 address conversion binary -> binary failed") 79 self.assert_(IP6_Address.IP6_Address(binary_address).as_string() == text_address, "IP6 address conversion binary -> text failed") 80 self.assert_(IP6_Address.IP6_Address(text_address).as_bytes().tolist() == binary_address, "IP6 address conversion text -> binary failed") 81 82 def test_compressions(self): 83 '''Test IP6 Address compressions.''' 84 compressed_addresses = [ "::", 85 "1::", 86 "::1", 87 "1::2", 88 "1::1:2:3", 89 "FE80:234:567:4::1" 90 ] 91 full_addresses = ["0000:0000:0000:0000:0000:0000:0000:0000", 92 "0001:0000:0000:0000:0000:0000:0000:0000", 93 "0000:0000:0000:0000:0000:0000:0000:0001", 94 "0001:0000:0000:0000:0000:0000:0000:0002", 95 "0001:0000:0000:0000:0000:0001:0002:0003", 96 "FE80:0234:0567:0004:0000:0000:0000:0001" 97 ] 98 99 for f, c in zip(full_addresses, compressed_addresses): 100 self.assert_(IP6_Address.IP6_Address(f).as_string() == c, "IP6 address compression failed with full address: " + f) 101 self.assert_(IP6_Address.IP6_Address(c).as_string(False) == f, "IP6 address compression failed with compressed address:" + c) 102 103 104 def test_scoped_addresses(self): 105 '''Test scoped addresses.''' 106 numeric_scoped_address = "FE80::1234:1%12" 107 self.assert_(IP6_Address.IP6_Address(numeric_scoped_address).as_string() == numeric_scoped_address, "Numeric scoped address conversion failed on address: " + numeric_scoped_address) 108 self.assert_(IP6_Address.IP6_Address(numeric_scoped_address).get_scope_id() == "12", "Numeric scope ID fetch failed on address: " + numeric_scoped_address) 109 self.assert_(IP6_Address.IP6_Address(numeric_scoped_address).get_unscoped_address() == "FE80::1234:1", "Get unscoped address failed on address: " + numeric_scoped_address) 110 111 unscoped_address = "1::4:1" 112 self.assert_(IP6_Address.IP6_Address(unscoped_address).as_string() == unscoped_address, "Unscoped address conversion failed on address: " + unscoped_address) 113 self.assert_(IP6_Address.IP6_Address(unscoped_address).get_scope_id() == "", "Unscoped address scope ID fetch failed on address: " + unscoped_address) 114 self.assert_(IP6_Address.IP6_Address(unscoped_address).get_unscoped_address() == unscoped_address, "Get unscoped address failed on address: " + unscoped_address) 115 116 text_scoped_address = "FE80::1234:1%BLAH" 117 self.assert_(IP6_Address.IP6_Address(text_scoped_address).as_string() == text_scoped_address, "Text scoped address conversion failed on address: " + text_scoped_address) 118 self.assert_(IP6_Address.IP6_Address(text_scoped_address).get_scope_id() == "BLAH", "Text scope ID fetch failed on address: " + text_scoped_address) 119 self.assert_(IP6_Address.IP6_Address(text_scoped_address).get_unscoped_address() == "FE80::1234:1", "Get unscoped address failed on address: " + text_scoped_address) 120 121 empty_scoped_address = "FE80::1234:1%" 122 self.assertRaises(Exception, IP6_Address.IP6_Address, empty_scoped_address) 123 124 125 suite = unittest.TestLoader().loadTestsFromTestCase(TestIP6_Address) 126 unittest.TextTestRunner(verbosity=1).run(suite)