Created
January 29, 2025 22:41
-
-
Save J-Gras/3a5f2c41fd93ebd2df0e2aa013172104 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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