martes, 25 de noviembre de 2008

Usando Trpr (TRace Plot Real-time)

Dias pasados me encontre con la necesidad de hacer un analisis del trafico de la red en mi trabajo. Navegando por google me encontre con una herramienta que es realmente excelente.
La misma es Trpr (TRace Plot Real-time) que es un programa que analiza la salida de el tcpdump y crea una salida que puede ser graficada utilizando gnuplot. Tiene varias funcionalidades, una de las cuales le permite generar graficos en tiempo real, tomando la salida del tcpdump.
el proceso es bastante sencillo:

1) Descargar trpr: se lo puede descargar desde src-trpr-2.0b2.tgz . A continuacion procedemos a descomprimirlo y compilarlo:

sysadmin@sysadmin-desktop:~$ gunzip src-trpr-2.0b2.tgz.gz
sysadmin@sysadmin-desktop:~$ ls *.tgz
src-trpr-2.0b2.tgz
sysadmin@sysadmin-desktop:~$ file src-trpr-2.0b2.tgz
src-trpr-2.0b2.tgz: POSIX tar archive (GNU)
sysadmin@sysadmin-desktop:~$ tar -xvf src-trpr-2.0b2.tgz
TRPR/
TRPR/Hcat.dsp
TRPR/README.TXT
TRPR/Trpr.dsp
TRPR/Trpr.dsw
TRPR/Trpr.opt
TRPR/hcat.cpp
TRPR/trpr.cpp
TRPR/trpr.html
sysadmin@sysadmin-desktop:~$ cd TRPR/

Como nota antes del proceso de compilacion se puede modificar una opcion para que se puedan levantar capturas grandes del tcpdump ( yo lo hice con archivos de > 100 mb)

const int MAX_LINE = 256 a const int MAX_LINE = 2048 del archivo trpr.cpp

(Esta opcion fue resultado de la colaboracion de mi amigo Alexis)

y se continua con el proceso normal

sysadmin@sysadmin-desktop:~/TRPR$ g++ -o trpr trpr.cpp -lm
sysadmin@sysadmin-desktop:~/TRPR$ chmod +x trpr
sysadmin@sysadmin-desktop:~/TRPR$ sudo cp trpr /usr/bin/

2) Iniciamos la captura con el tcpdump

sysadmin@sysadmin-desktop:~$ sudo tcpdump -x -vvv -i eth0 > salida.txt
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes

en cuanto a los parametros del tcpdump uno le puede agregar lo que considere necesario; un tema a tener en cuenta es el archivo de salida generado. En este caso he utilizado la redireccion, no es la mejor opcion ya que utilizando -w archivo-salida se obtiene un archivo mas portable pero hay veces que el trpr no los puede levantar. Aun no encontre el motivo del fallo.

3) Le pasamos el trpr para generar la salida que utilizara el gnuplot como entrada. Dependiendo del tamaño del archivo de captura tomara mas o menos tiempo este paso

sysadmin@sysadmin-desktop:~$ trpr input salida.txt auto X output Grafico_analisis
TRPR Version 2.0b2
trpr: Adding autoMatcher: *,*/*->*/*
trpr: At time 0.000000 - Adding flow: tcp,10.10.8.101/22->10.10.8.81/1574~3085455732
................................................................
................................................................
................................................................
trpr: At time 2676.028576 - Adding flow: 0,22:156a:ffe6:a0a:865:1e:bb2:d82d/0->a0a:851:35:0:0:0:0:128/0~3085848948
trpr: Done.

Termino correctamente y pasamos al siguiente punto

Hay una serie de opciones que se pueden utilizar en el trpr, como filtrar por protocolos por ejemplo; se pueden generar graficos png pero requiere modificar el archivo generado, en este caso Grafico_analisis.

para que se genere un archivo png se le pasan los siguentes parametros:
sysadmin@sysadmin-desktop:~$ trpr input salida.txt png salida.png auto X output Grafico_analisis

Una vez generado el archivo se lo debe editar; en el encabezado tiene la siguiente linea
set term png color
set output 'salida.png'

se la debe cambiar por
set terminal png small size 1024,768
set output 'salida.png'

Donde:
small: es el tamaño de la fuente
size: es el tamaño que queremos que tenga la imagen
en set output se puede cambiar el nombre del archivo si se desea.
4) Generamos el grafico
sysadmin@sysadmin-desktop:~$ gnuplot -persist Grafico_analisis

y obtengo el siguiente grafico



como veran es una herramienta muy util, sencilla y potente. Recomiendo probarla e investigarla.

No hay comentarios: