Non ho chiaro cosa intendi per "quando si salvano i pacchetti invece di stamparli sullo standard output e di aprirli su Wireshark".
Credo, tuttavia, che stai cercando di salvare i "dati POST" (che vivono al livello HTTP) mentre l'espressione specifica solo il primo pacchetto POST (che vive al livello TCP).
Se stai intercettando, diciamo, un pacchetto POST da 5Kb, è probabile che sia stato frammentato in tre o più pacchetti più brevi (con il payload di 1476, 1476, 1476 e 692 byte - numeri quasi a caso, non ho t controllato, ma tu vedi il mio significato). Di questi, solo il primo contiene effettivamente il comando POST HTTP, in modo che venga effettivamente intercettato.
E c'è di più. Il protocollo HTTP 1.1 consente di mantenere in vita la connessione e di eseguire il "pipelining" dei comandi in una singola connessione TCP in modo da salvare i problemi di handshake e di manutenzione dei socket. Quindi puoi avere tre comandi POST in una singola conversazione:
Dati POST1 ... Dati POST2 ... Dati POST3 ...
e ovviamente le probabilità che il primo POST venga pubblicato esattamente all'inizio di un pacchetto e che vengano catturate da Wireshark sono molto piccole.
Per acquisire correttamente i dati POST è necessario un proxy HTTP con funzionalità di acquisizione conversazione (o Firebug di Firefox, che è migliore per alcune applicazioni), e avere intero Stream HTTP analizzato e richieste POST catturate. Altrimenti avresti bisogno di una regexp complessa per PCAP tale da capire HTTP, il che, anche se fattibile (cosa che non sono troppo sicuro), sarebbe estremamente poco pratico.