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)