viernes, 11 de marzo de 2011

Modificar capturas pcap con tcprewrite y un poco de zenity.

La cuestion es la siguiente, tenemos un .pcap entre una maquina X comunicandose con un servidor X. Por razones que no vienen al caso, tenemos que modificarlo para que la ip de la maquina se cambie dentro de la traza. Este seria el script para hacerlo incluso bonito:

#!/bin/bash
FILE=`zenity --file-selection --title="SELECCIONA LA CAPTURA ORIGINAL"`
wireshark "$FILE" & sleep 5
ORIG=`zenity --entry --title="IP ORIGINAL" --text="Introduce la IP original" --entry-text "10.0.0.0"`
NEW=`zenity --entry --title="IP NUEVA" --text="Introduce la IP nueva" --entry-text "10.10.10.100"`
MOD=$(zenity --file-selection --save --title="SELECCIONA DONDE GUARDARLA" --confirm-overwrite)
tcprewrite --pnat=$ORIG/32:$NEW/32 --infile="$FILE" --outfile="$MOD" --skipbroadcast
killall wireshark
exit


El flujo seria: Nos pide la traza original, nos la abre con el wireshark, nos pide la ip original, nos pide la ip nueva, nos pide donde guardar la nueva traza, modifica el pcap, cierra el wireshark, y chapa.

La cuestión es utilizar la opción de nat que ofrece tcprewrite poniéndole una mascara 32. De esta manera solo cambiara la ip que le digamos.

Sencillo, rápido, bonito, en 527 bytes y 9 lineas de bash. ¿Alguien da mas?

P.d: De momento solo le he encontrado un bug (seguro que tiene otros mil), al sobreescribir la captura elimina paquetes ¿?