06.01.2015 Views

universidad autónoma metropolitana unidad azcapotzalco una ...

universidad autónoma metropolitana unidad azcapotzalco una ...

universidad autónoma metropolitana unidad azcapotzalco una ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

APÉNDICE A. CODIGO FUENTE DE LA HERRAMIENTA DE GESTION DE REDES VIRTUALES<br />

Se permite el acceso a los datos dentro de los paquetes para realizar comparaciones más<br />

detalladas. Para acceder a los datos del paquete se sigue la siguiente sintaxis:<br />

Protocolo [expresión : tamaño]<br />

Protocolo puede ser el nombre de cualquier protocolo reconocido: ether,fddi, ip, arp, rarp, tcp,<br />

udp, icmp. De esta manera se indica la capa donde se realiza la operación. Una vez indicada la<br />

capa, se consulta la expresión, la cual da el offset dentro de la capa seleccionada donde se<br />

quiera posicionar. El campo tamaño indica el número de bytes que son de interés a partir del<br />

offset seleccionado. El tamaño es opcional, de indicarse puede tomar un valor de 1,2 ó 4, y por<br />

defecto toma el valor 1.<br />

Por ejemplo, la siguiente expresión:<br />

IP[8] < 7<br />

Selecciona únicamente aquellos paquetes en donde el octavo byte de la cabecera IP tuviese un<br />

valor menor que 7. Si se comprueba el formato de la cabecera IP se puede ver que el octavo byte<br />

corresponde con el TTL del datagrama, por tanto únicamente se seleccionan aquellos<br />

datagramas con un TTL menor que 7.<br />

tcp[13] & 0x20 != 0<br />

Esta expresión selecciona aquellos paquetes con el bit URG activado. Por último indicar que las<br />

primitivas pueden agruparse usando paréntesis.<br />

A.2.2.- PROGRAMA DE MONITOREO.<br />

#include <br />

#include <br />

#include <br />

#include <br />

#include <br />

El descriptor del dispositivo de captura se declara como <strong>una</strong> variable global para que pueda ser<br />

usado desde la rutina que trata la señal SIGINT.<br />

pcap_t *pc;<br />

Se establece <strong>una</strong> rutina que se ejecuta cuando el usuario interrumpa el programa con CTRL+C.<br />

En esta rutina se muestran las estadísticas almacenadas sobre los paquetes capturados. Estas<br />

estadísticas se obtienen mediante la función pcap _stats(). Por último se pasa a cerrar<br />

correctamente el dispositivo de captura con la funciónpcap_close().<br />

void fin (int s) {<br />

struct pcap_stat ps;<br />

}<br />

pcap_stats(pc, &ps);<br />

fprintf(stdout, “paquetes recibidos: %i \n”, ps.ps_recv);<br />

fprintf(stdout, “paquetes descartados: %i \n”, ps.ps_drop);<br />

pcap_close(pc);<br />

131

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!