Ettercap te permite crear tus propios filtros con un lenguaje interpretado muy pobre pero que te puede venir bien para pequeños trabajos, aunque recuerdo haber tenido algún que otro problema a la hora de ampliar la longitud del campo de datos del paquete TCP/IP, supongo que por no calcular un nuevo checksum TCP.
Si tienes alguna idea de C/C++ y datagramas, no dudes en usar Netfilter que permite encolar el tráfico para manipularlo a nivel de usuario ( libipq, libnetfilter_queue ).
scapy
¿Se pude modificar el tráfico con Scapy antes de que sea enrutado?