github.com/n00py/Slackor@v0.0.0-20200610224921-d007fcea1740/impacket/tests/ImpactPacket/test_TCP.py (about)

     1  #!/usr/bin/env python
     2  #Impact test version
     3  try:
     4      from impacket.ImpactDecoder import EthDecoder
     5      from impacket.ImpactPacket import TCP
     6  except:
     7      raise
     8      pass
     9  
    10  #Standalone test version
    11  try:
    12      import sys
    13      sys.path.insert(0,"../..")
    14      from ImpactDecoder import EthDecoder
    15      from ImpactPacket import TCP
    16  except:
    17      pass
    18  
    19  import unittest
    20  
    21  class TestTCP(unittest.TestCase):
    22  
    23      def setUp(self):
    24          # TCP - sport: 60655, dport: 80, sec: 0, HLen: 40, Flags: 0x02, win_size: 5840
    25          #  cksum: 0x64cb, Options: 0x20
    26          self.frame = b'\xec\xef\x00\x50\xa8\xbd\xea\x4c\x00\x00\x00\x00\xa0\x02\x16\xd0' \
    27                       b'\x64\xcb\x00\x00\x02\x04\x05\xb4\x04\x02\x08\x0a\x00\xdc\xd6\x12' \
    28                       b'\x00\x00\x00\x00\x01\x03\x03\x06'
    29  
    30          self.tcp = TCP(self.frame)
    31          
    32      def test_01(self):
    33          'Test TCP get_packet'
    34          self.assertEqual(self.tcp.get_packet(), self.frame)
    35  
    36      def test_02(self):
    37          'Test TCP getters'
    38          self.assertEqual(self.tcp.get_th_sport(), 60655)
    39          self.assertEqual(self.tcp.get_th_dport(), 80)
    40          self.assertEqual(self.tcp.get_th_off()*4, 40) # *4 because are words
    41          self.assertEqual(self.tcp.get_th_flags(), 0x02)
    42          self.assertEqual(self.tcp.get_th_win(), 5840)
    43          self.assertEqual(self.tcp.get_th_sum(), 0x64cb)
    44          self.assertEqual(self.tcp.get_SYN(), 1)
    45          self.assertEqual(self.tcp.get_RST(), 0)
    46  
    47      def test_03(self):
    48          'Test TCP port setters'
    49          self.tcp.set_th_sport(54321)
    50          self.assertEqual(self.tcp.get_th_sport(), 54321)
    51  
    52          self.tcp.set_th_dport(81)
    53          self.assertEqual(self.tcp.get_th_dport(), 81)
    54  
    55      def test_04(self):
    56          'Test TCP offset setters'
    57          # test that set_th_off doesn't affect to flags
    58          flags = int('10101010',2)
    59          self.tcp.set_th_flags( flags )
    60          self.assertEqual(self.tcp.get_th_flags(), flags) 
    61  
    62          self.tcp.set_th_off(4)
    63          self.assertEqual(self.tcp.get_th_off(), 4)
    64          self.assertEqual(self.tcp.get_th_flags(), flags) 
    65  
    66      def test_05(self):
    67          'Test TCP win setters'
    68  
    69          self.tcp.set_th_win(12345)
    70          self.assertEqual(self.tcp.get_th_win(), 12345)
    71  
    72      def test_06(self):
    73          'Test TCP checksum setters'
    74          self.tcp.set_th_sum(0xFEFE)
    75          self.assertEqual(self.tcp.get_th_sum(), 0xFEFE)
    76  
    77  
    78      def test_07(self):
    79          'Test TCP flags setters'
    80          self.tcp.set_th_flags(0x03) # SYN+FIN
    81          self.assertEqual(self.tcp.get_th_flags(), 0x03) 
    82   
    83          self.tcp.set_ACK()
    84          self.assertEqual(self.tcp.get_ACK(), 1)
    85          self.assertEqual(self.tcp.get_SYN(), 1)
    86          self.assertEqual(self.tcp.get_FIN(), 1)
    87          self.assertEqual(self.tcp.get_RST(), 0)
    88          self.assertEqual(self.tcp.get_th_flags(), 19)
    89  
    90      def test_08(self):
    91          'Test TCP reset_flags'
    92          # Test 1
    93          self.tcp.set_th_flags(19) # ACK+SYN+FIN
    94          self.assertEqual(self.tcp.get_th_flags(), 19) 
    95          self.assertEqual(self.tcp.get_ACK(), 1)
    96          self.assertEqual(self.tcp.get_SYN(), 1)
    97          self.assertEqual(self.tcp.get_FIN(), 1)
    98          self.assertEqual(self.tcp.get_RST(), 0)
    99  
   100          self.tcp.reset_flags(0x02)
   101  
   102          self.assertEqual(self.tcp.get_th_flags(), 17) 
   103  
   104          # Test 2
   105          flags = int('10011', 2) # 19 = ACK+SYN+FIN
   106          self.tcp.set_th_flags(flags) 
   107          self.assertEqual(self.tcp.get_th_flags(), 19) 
   108  
   109          # 010011
   110          # 000010
   111          # ------
   112          # 010001 = 17
   113          self.tcp.reset_flags(int('000010',2))
   114  
   115          self.assertEqual(self.tcp.get_th_flags(), 17) 
   116  
   117          # Test 3
   118          flags = int('10011', 2) # 19 = ACK+SYN+FIN
   119          self.tcp.set_th_flags(flags) 
   120          self.assertEqual(self.tcp.get_th_flags(), 19) 
   121  
   122          # 010011
   123          # 010001
   124          # ------
   125          # 000010 = 2
   126          self.tcp.reset_flags(int('010001',2))
   127  
   128          self.assertEqual(self.tcp.get_th_flags(), 2) 
   129   
   130      def test_09(self):
   131          'Test TCP set_flags'
   132          flags = int('10101010',2) # 0xAA
   133          self.tcp.set_flags(flags) 
   134          self.assertEqual(self.tcp.get_FIN(), 0)
   135          self.assertEqual(self.tcp.get_SYN(), 1)
   136          self.assertEqual(self.tcp.get_RST(), 0)
   137          self.assertEqual(self.tcp.get_PSH(), 1)
   138          self.assertEqual(self.tcp.get_ACK(), 0)
   139          self.assertEqual(self.tcp.get_URG(), 1)
   140          self.assertEqual(self.tcp.get_ECE(), 0)
   141          self.assertEqual(self.tcp.get_CWR(), 1)
   142          self.assertEqual(self.tcp.get_th_flags(), 0xAA )
   143  
   144  suite = unittest.TestLoader().loadTestsFromTestCase(TestTCP)
   145  unittest.TextTestRunner(verbosity=1).run(suite)