Project

General

Profile

Feature #7871 » gen_100K.py

Scapy program to generate 100K packet pcap. - Adam Kiripolsky, 07/19/2026 09:35 PM

 
#!/usr/bin/env python3
"""
Generate a PCAP with a single TCP flow containing 100,000 packets.
Usage: python3 gen_flow.py [output.pcap]
"""

import sys
from scapy.all import IP, TCP, Ether, wrpcap
from scapy.utils import PcapWriter

OUTPUT = sys.argv[1] if len(sys.argv) > 1 else "flow_100K.pcap"
NUM_PACKETS = 50_000

# Flow endpoints
SRC_IP = "10.0.0.1"
DST_IP = "10.0.0.2"
SRC_PORT = 12345
DST_PORT = 80
SRC_MAC = "02:00:00:00:00:01"
DST_MAC = "02:00:00:00:00:02"

seq_src = 1000
seq_dst = 5000

print(f"Generating {NUM_PACKETS * 2:,} packets ({NUM_PACKETS:,} data + {NUM_PACKETS:,} ACK) for a single TCP flow...")

with PcapWriter(OUTPUT, append=False, sync=True) as pkt_writer:
for i in range(NUM_PACKETS):
pkt = (
Ether(src=SRC_MAC, dst=DST_MAC)
/ IP(src=SRC_IP, dst=DST_IP)
/ TCP(sport=SRC_PORT, dport=DST_PORT, flags="PA", seq=seq_src, ack=seq_dst)
/ f"GET /data/{i}.bin HTTP/1.1\r\nHost: 10.0.0.2\r\n\r\n"
)
pkt_writer.write(pkt)
seq_src += len(pkt[TCP].payload)

ack = (
Ether(src=DST_MAC, dst=SRC_MAC)
/ IP(src=DST_IP, dst=SRC_IP)
/ TCP(sport=DST_PORT, dport=SRC_PORT, flags="A", seq=seq_dst, ack=seq_src)
)
pkt_writer.write(ack)

if (i + 1) % 10_000 == 0:
print(f" {(i + 1) * 2:,} / {NUM_PACKETS * 2:,} packets written...")

print(f"Done. Written to {OUTPUT}")
(6-6/7)