Para la realización de un sniffer de correo electrónico es necesario tener una idea de Scapy, comencemos construyendo un esqueleto sniffer que simplemente diseccione y deseche los paquetes. La función sniff bien nombrada se parece a la siguiente:
sniff (filter = "", iface = "any", prn = function, count = N)
El parámetro de filtro nos permite especificar un filtro BPF (estilo Wireshark) a los paquetes que Scapy olfatea, que pueden dejarse en blanco para olfatear todos los paquetes.
Por ejemplo, para rastrear todos los paquetes HTTP, usaría un filtro BPF del puerto tcp 80. El parámetro iface le dice al rastreador en qué interfaz de red rastrear; si se deja en blanco, Scapy detectará todas las interfaces. El parámetro prn especifica una función de devolución de llamada que se llamará para cada paquete que coincida con el filtro, y la función de devolución de llamada recibe el objeto de paquete como su único parámetro. El parámetro count especifica cuántos paquetes que se desea monitorear; si se deja en blanco, Scapy verá los paquetes indefinidamente.
Comencemos creando un sniffer simple que pueda visualiar un paquete y descargue su contenido. Luego lo expandiremos para detectar solo comandos relacionados con el correo electrónico:
Obteniendo como salida de ejecución la siguiente:
Como podemos ver la información del remitente y destinatario es claramente visible, inclusive su información de comunicación