Skip to content

Instantly share code, notes, and snippets.

@J-Gras
Created January 29, 2025 22:41
Show Gist options
  • Save J-Gras/3a5f2c41fd93ebd2df0e2aa013172104 to your computer and use it in GitHub Desktop.
Save J-Gras/3a5f2c41fd93ebd2df0e2aa013172104 to your computer and use it in GitHub Desktop.
from scapy.all import IP, TCP, Raw, wrpcap
# Define source and destination IPs and ports
src_ip = '192.168.1.100'
dst_ip = '192.168.1.101'
src_port = 12345
dst_port = 80
# Initial sequence numbers for the handshake
client_seq = 1000
server_seq = 2000
# Create TCP SYN packet (client to server)
syn_packet = (IP(src=src_ip, dst=dst_ip) /
TCP(sport=src_port, dport=dst_port, flags='S',
seq=client_seq))
# Create TCP SYN-ACK packet (server to client)
syn_ack_packet = (IP(src=dst_ip, dst=src_ip) /
TCP(sport=dst_port, dport=src_port, flags='SA',
seq=server_seq, ack=client_seq + 1))
# Create TCP ACK packet (client to server) to complete the handshake
ack_packet = (IP(src=src_ip, dst=dst_ip) /
TCP(sport=src_port, dport=dst_port, flags='A',
seq=client_seq + 1, ack=server_seq + 1))
# Create HTTP GET request packet (client to server)
http_get_request = (b"POST / HTTP/1.1\r\nHost: example.com\r\n"
b"Content-Type: application/octet-stream\r\nContent-Length: 4"
b"Data\r\n\r\n")
request_packet = (IP(src=src_ip, dst=dst_ip) /
TCP(sport=src_port, dport=dst_port, flags='PA',
seq=client_seq + 1, ack=server_seq + 1) /
Raw(load=http_get_request))
# Create HTTP response packet (server to client)
http_response =
response_packet =
# List of packets to write
packets = [syn_packet, syn_ack_packet, ack_packet,
request_packet, response_packet]
# Write packets to a PCAP file
wrpcap('http_conversation_with_handshake.pcap', packets)
print("Packets have been written to http_conversation_with_handshake.pcap")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment