tcpdump filtro de expresión POST paquetes

1

Estoy tratando de guardar solo paquetes POST usando expresiones de filtro tcpdump. Comencé con 'tcp port 80' y encontré en la web una expresión específica para lograrlo.

tcpdump -i wlan0 -s 0 -A -vv 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354'

Donde 0x504f5354 significa POST.

Eso funciona, pero al guardar solo paquetes en lugar de imprimirlos en la salida estándar y abrirlos en Wireshark, solo obtengo unos pocos paquetes aleatorios. Aquí está mi orden,

tcpdump -i wlan0 -s 0 -A -w test.pcap 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354'
    
pregunta autorun 12.08.2014 - 05:17
fuente

1 respuesta

2

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.

    
respondido por el LSerni 13.08.2014 - 15:11
fuente

Lea otras preguntas en las etiquetas