tcpflow
Outil de reconstruction de flux TCP. Capture les connexions TCP et stocke chaque flux dans un fichier séparé : réassemble les sessions HTTP, transferts FTP et autres flux de protocoles depuis des fichiers pcap ou du trafic en direct. TCP stream reconstruction tool. Captures TCP connections and stores each flow as a separate file — reassembles HTTP sessions, FTP transfers, and other protocol streams from pcap files or live traffic.
↗ https://github.com/simsong/tcpflowOverview
tcpflow captures TCP connections and stores each flow in a separate file for analysis. Unlike tcpdump which captures packets, tcpflow reassembles the data stream — making it easy to recover HTTP content, FTP files, credentials, and other session data from captured traffic.
Basic Usage
Capture live traffic and separate flows
tcpflow -i eth0
Capture with console output
tcpflow -c -i eth0
Read from pcap file
tcpflow -r capture.pcap
Save flows to directory
tcpflow -o /tmp/flows/ -i eth0
Capturing Traffic
Capture on specific interface
tcpflow -i eth0 -c
Filter by host
tcpflow -i eth0 'host 192.168.1.100'
Filter by port (HTTP only)
tcpflow -i eth0 'port 80'
Capture to output directory
tcpflow -i eth0 -o /tmp/captured_flows/
Reading pcap Files
Process existing capture file
tcpflow -r capture.pcap
Extract to specific directory
tcpflow -r capture.pcap -o ./flows/
With console (stdout) output
tcpflow -c -r capture.pcap
Verbose mode
tcpflow -v -r capture.pcap
Analyzing Output Files
# Flow files are named: src_ip.src_port-dst_ip.dst_port
# Example: 192.168.1.100.50123-93.184.216.34.00080
ls /tmp/flows/
→ → 192.168.001.100.50123-093.184.216.034.00080 (client→server) → 093.184.216.034.00080-192.168.001.100.50123 (server→client)
Read HTTP request
cat /tmp/flows/192.168.001.100.50123-093.184.216.034.00080
Search for credentials
grep -r "password\|passwd\|Authorization\|Cookie" /tmp/flows/
Find POST data
grep -r "POST\|login\|email" /tmp/flows/
HTTP Analysis
Extract all HTTP flows
tcpflow -r capture.pcap 'port 80' -o ./http_flows/
Find form submissions (POST)
grep -rl "POST" ./http_flows/ | head -10
Extract credentials from forms
grep -r "username=\|password=\|user=\|pass=" ./http_flows/
View HTTP headers
head -30 ./http_flows/FLOW_FILE
PCAP Reports
tcpflow can generate HTML reports (-a flag)
tcpflow -r capture.pcap -o ./flows/ -a
# Creates report.pdf or report.html summarizing sessions
Tips
- Use wireshark for interactive analysis; tcpflow for scripted extraction
- Combine with grep to quickly find credentials in cleartext protocols (FTP, HTTP, Telnet)
- Flow separation makes it easy to reconstruct complete file transfers from FTP captures
- Large captures can generate thousands of flow files — use filtering (
port 80) to narrow scope - For encrypted traffic (HTTPS), you need the TLS key or use sslstrip/mitmproxy instead
Help / Man page
tcpflow [options] [filter expression]
-i IFACE Network interface
-r FILE Read pcap file
-o DIR Output directory (default: current dir)
-c Console output (print flows to stdout)
-a Enable all analysis features
-v Verbose
-p Don't use promiscuous mode
-b N Max bytes per flow
filter BPF filter expression (e.g., 'port 80 and host X')
Vue d’ensemble
tcpflow capture les connexions TCP et stocke chaque flux dans un fichier séparé pour analyse. Contrairement à tcpdump qui capture des paquets, tcpflow réassemble le flux de données, ce qui facilite la récupération de contenu HTTP, de fichiers FTP, de credentials et d’autres données de session depuis le trafic capturé.
Utilisation de base
# Capturer le trafic en direct et séparer les flux
tcpflow -i eth0
# Capturer avec sortie console
tcpflow -c -i eth0
# Lire depuis un fichier pcap
tcpflow -r capture.pcap
# Sauvegarder les flux dans un répertoire
tcpflow -o /tmp/flows/ -i eth0
Capture du trafic
# Capturer sur une interface spécifique
tcpflow -i eth0 -c
# Filtrer par hôte
tcpflow -i eth0 'host 192.168.1.100'
# Filtrer par port (HTTP uniquement)
tcpflow -i eth0 'port 80'
# Capturer vers un répertoire de sortie
tcpflow -i eth0 -o /tmp/captured_flows/
Lecture de fichiers pcap
# Traiter un fichier de capture existant
tcpflow -r capture.pcap
# Extraire vers un répertoire spécifique
tcpflow -r capture.pcap -o ./flows/
# Avec sortie console (stdout)
tcpflow -c -r capture.pcap
# Mode verbeux
tcpflow -v -r capture.pcap
Analyse des fichiers de sortie
# Les fichiers de flux sont nommés : src_ip.src_port-dst_ip.dst_port
# Exemple : 192.168.1.100.50123-93.184.216.34.00080
ls /tmp/flows/
Résultat : 192.168.001.100.50123-093.184.216.034.00080 (client vers serveur) et 093.184.216.034.00080-192.168.001.100.50123 (serveur vers client)
# Lire une requête HTTP
cat /tmp/flows/192.168.001.100.50123-093.184.216.034.00080
# Rechercher des credentials
grep -r "password\|passwd\|Authorization\|Cookie" /tmp/flows/
# Trouver des données POST
grep -r "POST\|login\|email" /tmp/flows/
Analyse HTTP
# Extraire tous les flux HTTP
tcpflow -r capture.pcap 'port 80' -o ./http_flows/
# Trouver les soumissions de formulaire (POST)
grep -rl "POST" ./http_flows/ | head -10
# Extraire des credentials depuis des formulaires
grep -r "username=\|password=\|user=\|pass=" ./http_flows/
# Voir les en-têtes HTTP
head -30 ./http_flows/FLOW_FILE
Rapports PCAP
tcpflow peut générer des rapports HTML (option -a)
tcpflow -r capture.pcap -o ./flows/ -a
# Crée report.pdf ou report.html résumant les sessions
Conseils
- Utiliser Wireshark pour une analyse interactive ; tcpflow pour une extraction scriptée
- Combiner avec grep pour trouver rapidement des credentials dans des protocoles en clair (FTP, HTTP, Telnet)
- La séparation des flux facilite la reconstruction complète de transferts de fichiers depuis des captures FTP
- Les grosses captures peuvent générer des milliers de fichiers de flux : utiliser le filtrage (
port 80) pour réduire le périmètre - Pour le trafic chiffré (HTTPS), il faut la clé TLS ou utiliser sslstrip/mitmproxy à la place
Aide / Page de manuel
tcpflow [options] [filter expression]
-i IFACE Network interface
-r FILE Read pcap file
-o DIR Output directory (default: current dir)
-c Console output (print flows to stdout)
-a Enable all analysis features
-v Verbose
-p Don't use promiscuous mode
-b N Max bytes per flow
filter BPF filter expression (e.g., 'port 80 and host X')