lo que hay que identificar es que el paquete sea un mensaje con estas cabeceras:
MSG
Para cojer la dirección que nos escribe, y saber si es un mensaje con esta:
X-MMS-IM-Format:
Y leer desde la siguiente linea hasta el final del paquete. Así capturaríamos el mensaje.
El programa puedes usar cualquier sniffer, yo bajé uno de pscode.com y lo puse snifando todo lo que fuera al puerto remoto 1368 que es al que se conecta el messenger. Hay que decir, que los datos que recibimos no viajan por el mismo socket que por el que enviamos nuestros mensajes, lo hacen por puertos distintos, así que para cojer toda la conversación habría que capturar por dos puertos, o usar un keylogger.