Para monitorear el tráfico HTTP entre un servidor y un servidor web, actualmente estoy usando tcpdump
. Esto funciona bien, pero me gustaría deshacerme de algunos datos superfluos en la salida (lo sé tcpflow
y wireshark
no están disponibles en mi entorno).
Desde la tcpdump
página del manual:
Para imprimir todos los paquetes HTTP IPv4 hacia y desde el puerto 80, es decir, imprimir solo los paquetes que contienen datos, no, por ejemplo, los paquetes SYN y FIN y los paquetes solo ACK.
tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
Este comando
sudo tcpdump -A 'src example.com y tcp puerto 80 y (((ip [2: 2] - ((ip [0] & 0xf) << 2)) - ((tcp [12] & 0xf0) >> 2) )! = 0) '
proporciona el siguiente resultado:
19: 44: 03.529413 IP 192.0.32.10.http> 10.0.1.6.52369: Banderas [P.], seq 918827135: 918827862, ack 351213824, win 4316, opciones [nop, nop, TS val 4093273405 ecr 869959372], longitud 727
E ..... @ ....... .... P..6.0 ......... D ...... __ .. e = 3 ...__ HTTP / 1.1 200 OK Servidor: Apache / 2.2.3 (Red Hat) Tipo de contenido: texto / html; charset = UTF-8 Fecha: sábado, 14 de noviembre de 2009 18:35:22 GMT Edad: 7149
Duración del contenido: 438<HTML> <HEAD> <TITLE> Ejemplo de página web </TITLE> </HEAD> <body>
<p> Ha llegado a esta página web ... </p> </BODY> </HTML>
Esto es casi perfecto, excepto por la parte resaltada. ¿Qué es esto, final, más importante, cómo me deshago de él? ¿Tal vez es solo un pequeño ajuste a la expresión al final del comando?