Página principal | Lista de componentes | Lista de archivos | Miembros de las clases | Archivos de los miembros

Referencia del Archivo funciones.h

#include "general_var.h"
#include "estructuras.h"
#include "stdio.h"
#include "string.h"
#include <pcap.h>

Definiciones

#define _rellenadatos_(IP, PORIGEN, PDESTINO, TRAMA)
#define RESERVAMEM(TIPO, VAR, TAM)
#define REALOJAMEM(TIPO, VAR, TAM)
#define FUNCIONHASH(datos_origen, n_bytes, destino)   RIPEMD160(datos_origen, n_bytes,destino)
#define str2upper(cadena)

Funciones

int dns_auth (const char *filtro, const char *_key, Datos_cliente *_datos_cliente, const char *clave)
int knock_auth (char *_filtro[], int _tipo_auth, const char *_dispositivo, const char *_key, Datos_cliente *_datos_cliente)
int gestion_dns_auth ()
int knock_gestion (int tipo)
int inicioParseXml (char *docname)
void finParseXml ()
char * getVariable (const char *variable)
int getComandos (lista_comandos **_listado)
int getPorts (int **_lista_puertos)
int datalink_size (const char *dispositivo, char *errbuff)
int snif_for (const char *dispositivo, char *errbuff, char *filtro, pcap_handler f_manejadora, int _time_out, u_char *otros_parametros)

Descripción detallada

Declaraciones de varias funciones y macros que se usan en diferentes archivos

Documentación de las definiciones

#define _rellenadatos_ IP,
PORIGEN,
PDESTINO,
TRAMA   ) 
 

Valor:

IP=(((struct my_ip *)(TRAMA+sizeofmaclayer))->ip_src); \
        PORIGEN=(((struct udphdr *)(TRAMA+sizeofmaclayer+sizeof(struct my_ip)))->source); \
        PDESTINO=(((struct udphdr *)(TRAMA+sizeofmaclayer+sizeof(struct my_ip)))->dest);
Obtiene Ip de origen, de destino de una trama capturada
Parámetros:
IP: variable de tipo in_addr donde se guarda el remitente del paquete.
PORIGEN: Variable de tipo int donde se guarda el puerto de origen del paquete.
PDESTINO: Variable del tipo int donde se guarda el puerto de destino del paquete.
TRAMA: Puntero a la trama capturada por libpcap.

#define FUNCIONHASH datos_origen,
n_bytes,
destino   )     RIPEMD160(datos_origen, n_bytes,destino)
 

Define el tipo de función HASH que va a usarse. En lugar de RIPEMD160 puede utilizarse, con los mismos parámetros, SHA1.

#define REALOJAMEM TIPO,
VAR,
TAM   ) 
 

Valor:

if(( VAR = (TIPO *) realloc((void *)VAR, TAM * sizeof (TIPO)))==NULL)    \
            { fprintf(ERR,"Error al reservar memoria\n");                \
              exit(0); }
Modifica el tamaño de una reserva de memoria usando realloc.
Parámetros:
TIPO Tipo de variable
VAR puntero de tipo TIPO que apuntará a la zona de memoria reservada
TAM cantidad de a reservar

#define RESERVAMEM TIPO,
VAR,
TAM   ) 
 

Valor:

if(( VAR = (TIPO *) malloc( TAM * sizeof (TIPO)))==NULL)    \
            { fprintf(ERR,"Error al reservar memoria\n");                \
              exit(0); }\
        memset((void *)VAR, 0, TAM);
Reserva con malloc la cantidad indicada de memoria y la inicializa a 0.
Parámetros:
TIPO Tipo de variable
VAr puntero de tipo TIPO que apuntará a la zona de memoria reservada
TAM cantidad de a reservar

#define str2upper cadena   ) 
 

Valor:

int i=0;\
        while(i<strlen(cadena))\
        {\
                cadena[i]=toupper(cadena[i]); i++;\
        }
Convierte una cadena de texto a letras mayúsculas.
Parámetros:
cadena cadena de texto


Documentación de las funciones

int datalink_size const char *  dispositivo,
char *  errbuff
 

Sirve para obtener el tamaño de la cabecera de la capa de enlace del protocolo que se está usando. Sólo contempla tres, ethernet, 802.11 y linuxcooked capture (any)

Parámetros:
dispositivo Interfaz de red de la que se desea saber el tamño.
errbuf Buffer usado por las librerías pcap para almacenar mensajes de error. Debe de estar el buffer ya reservado y con un tamaño mínimo PCAP_ERRBUF_SIZE.
Devuelve:
: tamaño de la capa de enlace (en bytes) o -1 en caso de error o protocolo desconocido.

int dns_auth const char *  filtro,
const char *  _key,
Datos_cliente _datos_cliente,
const char *  _dispositivo_captura
 

Función encargada de implementar el sistema de autenticación dns_auth. Para ello busca mensajes dirigidos a un puerto determinado y los analiza buscando una contraseña.

Parámetros:
filtro Filtro pcap con la característica propia de los paquetes a recibir. normalmente será "dst port #puerto" donde puerto es una dirección de puerto.
key Clave que se buscará dentro del mensaje dns.
_datos_cliente Puntero a estructura en la que almacenarán los datos relativos al cliente autorizado. El espacio debe de estar ya reservado en memoria. Interfaz de red utilizada para la captura del tráfico.

void finParseXml  ) 
 

Cierra todos los descriptores de ficheros usados para el análisis del archivo xml.

int gestion_dns_auth  ) 
 

Crea el filtro adecuado y llama a la funcion dns_auth con los parámetros requeridos. Tras un intento correcto ejecuta el comando correspondiente.

int getComandos lista_comandos **  _listado  ) 
 

Obtiene de archivo xml ajustado a la hoja configuracion.dtd, varios elementos que almacena en un array de estructuras del tipo "lista_comandos": Del elemento comando: Atributo orden. _listado->orden; Elemento hijo palabra: _listado->alias; Elemento hijo knock: _listado->alias_numerico;

Parámetros:
_listado Puntero en el que se almacenará la dirección de elemento 0 del array de estructruas lista_comandos. El espacio es reservado por la propia función, por lo que debe de eliminarse.
Devuelve:
: Numero de elementos del array. Si es 0 el archivo xml no es correcto.

int getPorts int **  _lista_puertos  ) 
 

Analiza un fichero xml ajustado a la hoja "configuracion.dtd" y extrae el contenido de cada elemento <puerto> (hijo de <lista_puertos>) almacenando su contenido en un array de enteros. Parámetros:

Parámetros:
_lista_puertos. Se devuelve conteniendo la dirección del primer elemento del array de enteros.
Devuelve:
Longitud del array de enteros.

char* getVariable const char *  variable  ) 
 

Descripción: De un archivo xml ajustado a la hoja "configuracion.dtd" obtiene el contenido de un elemento <variable> cuyo atributo nombre coincida con el parámetro "variable" pasado a la funcion

Parámetros:
variable nombre del elemento <variable> del que se quiere obtener el valor;
Devuelve:
: Valor del elemento

int inicioParseXml char *  docname  ) 
 

Función utilizada para iniciar el procesado de un archivo de configuración adecuado a la hoja "configuracion.dtd". Crea un descriptor que utilizarán el resto de funciones y al que tendrán acceso durante el proceso de análisis.

Parámetros:
docname ruta hacia el archivo de configuracion
Devuelve:
-1 en caso de error. 0 normalmente

int knock_auth char *  _filtro[],
int  _tipo_auth,
const char *  _dispositivo,
const char *  _key,
Datos_cliente _datos_cliente
 

Funcion que incorpora los tipos de autenticacion KNOCKMAL KNOCKUDP KNOCKIFRADO

Parámetros:
_filtro[] array que contiene los filtros que controlaran la seleccion de paquetes entrantes
_tipo_auth tipo de autenticacion a elegir KNOCKMAL KNOCKUDP KNOCKIFRADO
_dispositivo Interfaz de red en la que capturar
_datos_cliente Estructura donde se guardan los datos del usuario autorizado
Devuelve:
VERDADERO o -1 en caso de error

int knock_gestion int  tipo  ) 
 

knock_gestion construye los filtros necesarios y llama a la función de autenticación adecuada. Tras un intento correcto, busca el comando que se ha de ejecutar y llama a otra función que lo ejecuta.

Parámetros:
tipo Puede tomar los valores KNOCKMAL KNOCKUDP o KNOCKIFRADO.

int snif_for const char *  dispositivo,
char *  errbuff,
char *  filtro,
pcap_handler  f_manejadora,
int  _time_out,
u_char *  otros_parametros
 

La función snif_for se encarga de capturar paquetes por la interfaz "dispositivo", que se ajusten a un filtro del tipo tcpdump que se le pasa como parámetro. Tras la captura llama a la función f_manejadora, que será la que se encargue de procesar el paquete, y que también recibirá el parámetro "otros_parametros". En caso de error se almacenará en errbuff.

Parámetros:
dispositivo: debe de contener una cadena del tipo eth0, eth1, ethx que indique el dispositivo a escuchar
errbuff: buffer donde almacenaremos un posible mensaje de error tiene que contener espacio suficiente.
fitro Cadena que contendrá un un filtro en el formato libpcap. mas informacion en "man tcpdump".
f_manejadora: Función que recibe cada paquete capturado para su tratamiento. NULL si no queremos hacer nada.
_time_out: tiempo mínimo de bloqueo en espera de la llegada de un Paquete. Si es menor que 0 espera indefinidamente
otros_parametros cualquier cosa que necesitemos. Se le pasan tal cual a la función manejadora.
Devuelve:
-1 si ha habido un error. 0 si se ha capturado el paquete de forma correcta. -2 si se ha interrumpido el loop debido a que ha finalizado el tiempo máximo de espera.


Generado el Mon Sep 19 00:05:19 2005 para PuerTock por  doxygen 1.3.9.1