diff --git a/Test_Cases/Test_Case2/Second_Test_Case.png b/Test_Cases/Test_Case2/Second_Test_Case.png new file mode 100644 index 0000000..6675be8 Binary files /dev/null and b/Test_Cases/Test_Case2/Second_Test_Case.png differ diff --git a/Test_Cases/Test_Case2/TestCase2_ACK.py b/Test_Cases/Test_Case2/TestCase2_ACK.py new file mode 100644 index 0000000..a21aa02 --- /dev/null +++ b/Test_Cases/Test_Case2/TestCase2_ACK.py @@ -0,0 +1,32 @@ +import socket + +# Sending a ACK packet + +def init_socket(): + s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP) + s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1) + return s + +def send_raw_packet(): + ip_header = b'\x45\x00\x00\x28' # Version, IHL, Type of Service | Total Length + ip_header += b'\x00\x00\x00\x00' # Identification | Flags, Fragment Offset + ip_header += b'\x28\x06\xa6\xec' # TTL = 40s, Protocol = 6 for TCP | Header Checksum + ip_header += b'\xc0\xa8\x0a\x14' # Source Address: 192.168.10.20 + ip_header += b'\xc0\xa8\x0a\x0a' # Destination Address: 192.168.10.10 + + tcp_header = b'\x09\x25\x04\xB0' # Source Port | Destination Port + tcp_header += b'\x00\x00\x00\x00' # Sequence Number + tcp_header += b'\x00\x00\x00\x00' # Acknowledgement Number + tcp_header += b'\x50\x10\x00\x00' # Data Offset, Reserved, Flags | Window Size + tcp_header += b'\xe6\x32\x00\x00' # Checksum | Urgent Pointer + + packet = ip_header + tcp_header + return packet + +if __name__=="__main__": + dst_IP = '192.168.10.10' + + s = init_socket() + + packet = send_raw_packet() + s.sendto(packet, (dst_IP, 0)) diff --git a/Test_Cases/Test_Case2/TestCase2_FIN.py b/Test_Cases/Test_Case2/TestCase2_FIN.py new file mode 100644 index 0000000..e06c7f4 --- /dev/null +++ b/Test_Cases/Test_Case2/TestCase2_FIN.py @@ -0,0 +1,32 @@ +import socket + +# Sending a FIN packet + +def init_socket(): + s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP) + s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1) + return s + +def send_raw_packet(): + ip_header = b'\x45\x00\x00\x28' # Version, IHL, Type of Service | Total Length + ip_header += b'\x00\x00\x00\x00' # Identification | Flags, Fragment Offset + ip_header += b'\x28\x06\xa6\xec' # TTL = 40s, Protocol = 6 for TCP | Header Checksum + ip_header += b'\xc0\xa8\x0a\x14' # Source Address: 192.168.10.20 + ip_header += b'\xc0\xa8\x0a\x0a' # Destination Address: 192.168.10.10 + + tcp_header = b'\x09\x25\x04\xB0' # Source Port | Destination Port + tcp_header += b'\x00\x00\x00\x00' # Sequence Number + tcp_header += b'\x00\x00\x00\x00' # Acknowledgement Number + tcp_header += b'\x50\x01\x00\x00' # Data Offset, Reserved, Flags | Window Size + tcp_header += b'\xe6\x32\x00\x00' # Checksum | Urgent Pointer + + packet = ip_header + tcp_header + return packet + +if __name__=="__main__": + dst_IP = '192.168.10.10' + + s = init_socket() + + packet = send_raw_packet() + s.sendto(packet, (dst_IP, 0)) diff --git a/Test_Cases/Test_Case2/TestCase2_FINACK.py b/Test_Cases/Test_Case2/TestCase2_FINACK.py new file mode 100644 index 0000000..2629873 --- /dev/null +++ b/Test_Cases/Test_Case2/TestCase2_FINACK.py @@ -0,0 +1,32 @@ +import socket + +# Sending a FIN+ACK packet + +def init_socket(): + s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP) + s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1) + return s + +def send_raw_packet(): + ip_header = b'\x45\x00\x00\x28' # Version, IHL, Type of Service | Total Length + ip_header += b'\x00\x00\x00\x00' # Identification | Flags, Fragment Offset + ip_header += b'\x28\x06\xa6\xec' # TTL = 40s, Protocol = 6 for TCP | Header Checksum + ip_header += b'\xc0\xa8\x0a\x0a' # Source Address: 192.168.10.10 + ip_header += b'\xc0\xa8\x0a\x14' # Destination Address: 192.168.10.20 + + tcp_header = b'\x09\x25\x04\xB0' # Source Port | Destination Port + tcp_header += b'\x00\x00\x00\x00' # Sequence Number + tcp_header += b'\x00\x00\x00\x00' # Acknowledgement Number + tcp_header += b'\x50\x11\x00\x00' # Data Offset, Reserved, Flags | Window Size + tcp_header += b'\xe6\x32\x00\x00' # Checksum | Urgent Pointer + + packet = ip_header + tcp_header + return packet + +if __name__=="__main__": + dst_IP = '192.168.10.20' + + s = init_socket() + + packet = send_raw_packet() + s.sendto(packet, (dst_IP, 0)) diff --git a/Test_Cases/Test_Case2/TestCase2_SYN.py b/Test_Cases/Test_Case2/TestCase2_SYN.py new file mode 100644 index 0000000..be67584 --- /dev/null +++ b/Test_Cases/Test_Case2/TestCase2_SYN.py @@ -0,0 +1,32 @@ +import socket + +# Sending a SYN packet + +def init_socket(): + s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP) + s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1) + return s + +def send_raw_packet(): + ip_header = b'\x45\x00\x00\x28' # Version, IHL, Type of Service | Total Length + ip_header += b'\x00\x00\x00\x00' # Identification | Flags, Fragment Offset + ip_header += b'\x28\x06\xa6\xec' # TTL = 40s, Protocol = 6 for TCP | Header Checksum + ip_header += b'\xc0\xa8\x0a\x14' # Source Address: 192.168.10.20 + ip_header += b'\xc0\xa8\x0a\x0a' # Destination Address: 192.168.10.10 + + tcp_header = b'\x09\x25\x04\xB0' # Source Port | Destination Port + tcp_header += b'\x00\x00\x00\x00' # Sequence Number + tcp_header += b'\x00\x00\x00\x00' # Acknowledgement Number + tcp_header += b'\x50\x02\x00\x00' # Data Offset, Reserved, Flags | Window Size + tcp_header += b'\xe6\x32\x00\x00' # Checksum | Urgent Pointer + + packet = ip_header + tcp_header + return packet + +if __name__=="__main__": + dst_IP = '192.168.10.10' + + s = init_socket() + + packet = send_raw_packet() + s.sendto(packet, (dst_IP, 0)) diff --git a/Test_Cases/Test_Case2/TestCase2_SYNACK.py b/Test_Cases/Test_Case2/TestCase2_SYNACK.py new file mode 100644 index 0000000..cb6951e --- /dev/null +++ b/Test_Cases/Test_Case2/TestCase2_SYNACK.py @@ -0,0 +1,32 @@ +import socket + +# Sending a SYN+ACK packet + +def init_socket(): + s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP) + s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1) + return s + +def send_raw_packet(): + ip_header = b'\x45\x00\x00\x28' # Version, IHL, Type of Service | Total Length + ip_header += b'\x00\x00\x00\x00' # Identification | Flags, Fragment Offset + ip_header += b'\x28\x06\xa6\xec' # TTL = 40s, Protocol = 6 for TCP | Header Checksum + ip_header += b'\xc0\xa8\x0a\x0a' # Source Address: 192.168.10.10 + ip_header += b'\xc0\xa8\x0a\x14' # Destination Address: 192.168.10.20 + + tcp_header = b'\x09\x25\x04\xB0' # Source Port | Destination Port + tcp_header += b'\x00\x00\x00\x00' # Sequence Number + tcp_header += b'\x00\x00\x00\x00' # Acknowledgement Number + tcp_header += b'\x50\x12\x00\x00' # Data Offset, Reserved, Flags | Window Size + tcp_header += b'\xe6\x32\x00\x00' # Checksum | Urgent Pointer + + packet = ip_header + tcp_header + return packet + +if __name__=="__main__": + dst_IP = '192.168.10.20' + + s = init_socket() + + packet = send_raw_packet() + s.sendto(packet, (dst_IP, 0))