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/tcpflow

Overview

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')