#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) |
|
|
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);
|
|
|
Define el tipo de función HASH que va a usarse. En lugar de RIPEMD160 puede utilizarse, con los mismos parámetros, SHA1. |
|
|
Valor: if(( VAR = (TIPO *) realloc((void *)VAR, TAM * sizeof (TIPO)))==NULL) \ { fprintf(ERR,"Error al reservar memoria\n"); \ exit(0); }
|
|
|
Valor: if(( VAR = (TIPO *) malloc( TAM * sizeof (TIPO)))==NULL) \ { fprintf(ERR,"Error al reservar memoria\n"); \ exit(0); }\ memset((void *)VAR, 0, TAM);
|
|
|
Valor: int i=0;\ while(i<strlen(cadena))\ {\ cadena[i]=toupper(cadena[i]); i++;\ }
|
|
||||||||||||
|
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)
|
|
||||||||||||||||||||
|
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.
|
|
|
Cierra todos los descriptores de ficheros usados para el análisis del archivo xml. |
|
|
Crea el filtro adecuado y llama a la funcion dns_auth con los parámetros requeridos. Tras un intento correcto ejecuta el comando correspondiente. |
|
|
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;
|
|
|
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:
|
|
|
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
|
|
|
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.
|
|
||||||||||||||||||||||||
|
Funcion que incorpora los tipos de autenticacion KNOCKMAL KNOCKUDP KNOCKIFRADO
|
|
|
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.
|
|
||||||||||||||||||||||||||||
|
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.
|
1.3.9.1