|
|
@ -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\x01\x00\x00' # Identification | Flags, Fragment Offset |
|
|
|
ip_header += b'\x28\x06\x95\x45' # TTL = 40s, Protocol = 6 for TCP | Header Checksum |
|
|
|
ip_header += b'\xc8\xcc\x0a\x0e' # Source Address: 200.204.10.14 |
|
|
|
ip_header += b'\xc8\xcc\x0a\x0c' # Destination Address: 200.204.10.12 |
|
|
|
|
|
|
|
tcp_header = b'\x11\x5c\x04\xD2' # 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'\xa5\x41\x00\x00' # Checksum | Urgent Pointer |
|
|
|
|
|
|
|
packet = ip_header + tcp_header |
|
|
|
return packet |
|
|
|
|
|
|
|
if __name__=="__main__": |
|
|
|
dst_IP = '200.204.10.12' |
|
|
|
|
|
|
|
s = init_socket() |
|
|
|
|
|
|
|
packet = send_raw_packet() |
|
|
|
s.sendto(packet, (dst_IP, 0)) |