← retour aux outils back to tools

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