No he aclarado lo que quiere decir con "al guardar paquetes en lugar de imprimirlos en la salida estándar y abrirlos en Wireshark".
Sin embargo, creo que está intentando guardar "datos POST" (que se encuentran en el nivel HTTP) mientras que su expresión especifica solo el primer paquete POST (que vive en el nivel TCP).
Si está interceptando, digamos, un paquete POST de 5Kb, lo más probable es que se haya fragmentado en tres o más paquetes más cortos (con 1476, 1476, 1476 y 692 bytes de carga útil: números casi al azar, no tengo ' t comprobado, pero ves mi significado). De estos, solo el primero contiene realmente el comando POST de HTTP, por lo que realmente es interceptado.
Y hay más. El protocolo HTTP1.1 permite mantener la conexión activa y los comandos de "canalización" en una sola conexión TCP para salvar el problema de mantenimiento de handshake y socket. Así que puedes tener tres comandos POST en una sola conversación:
POST data1 ... POST data2 ... POST data3 ...
y, por supuesto, las posibilidades de cualquiera que no sea el primer POST que venga exactamente al comienzo de un paquete y que Wireshark lo arrebate son muy pequeñas.
Para capturar correctamente los datos de la POST, necesita un proxy HTTP con la función de captura conversación (o Firefox's Firebug, que es mejor para algunas aplicaciones), y tiene el completo La secuencia HTTP analizó y las solicitudes POST capturadas. De lo contrario, necesitaría una expresión regular PCAP lo suficientemente compleja como para comprender HTTP, lo cual, aunque sea factible (lo cual no estoy muy seguro), sería sumamente poco práctico.