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)