github.com/n00py/Slackor@v0.0.0-20200610224921-d007fcea1740/impacket/tests/ImpactPacket/test_TCP_bug_issue7.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.ImpactPacket import TCP, ImpactPacketException
     7  import unittest
     8  from threading import Thread
     9  
    10  class TestTCP(unittest.TestCase):
    11  
    12      def setUp(self):
    13          # Dummy TCP header with "Maximum Segment Size" Option and zero length
    14          self.frame = '\x12\x34\x00\x50\x00\x00\x00\x01\x00\x00\x00\x00\x60\x00\x00\x00\x8d\x5c\x00\x00\x02\x00\x00\x00'
    15          
    16      def test_01(self):
    17          'Test TCP options parsing hangs'
    18          class it_hangs(Thread):
    19              def __init__(self):
    20                  Thread.__init__(self)
    21              def run(self):
    22                  try:
    23                      frame = '\x12\x34\x00\x50\x00\x00\x00\x01\x00\x00\x00\x00' \
    24                          '\x60\x00\x00\x00\x8d\x5c\x00\x00\x02\x00\x00\x00'
    25                      tcp = TCP(frame)
    26                  except ImpactPacketException as e:
    27                      if str(e) != "'TCP Option length is too low'":
    28                          raise e
    29                  except:
    30                      pass
    31  
    32          thread_hangs = it_hangs()
    33          thread_hangs.setDaemon(True)
    34          thread_hangs.start()
    35  
    36          thread_hangs.join(1.0) # 1 seconds timeout
    37          self.assertEqual(thread_hangs.isAlive(), False)
    38          #if thread_hang.isAlive():
    39  
    40  
    41  suite = unittest.TestLoader().loadTestsFromTestCase(TestTCP)
    42  unittest.TextTestRunner(verbosity=1).run(suite)