#include <stdio.h>#include <string.h>#include <stdlib.h>#include <dirent.h>#include <unistd.h>void findAliasInsecures(char *name_file);void getAlias(char *linea, int indice);int isAlias(char *linea);int existLog(void);FILE *file_log;int main(){ DIR *dir; struct dirent *info; int log = existLog(); if ( getuid() != 0 ){ printf("#########################################################\n"); printf("# ,,, #\n"); printf("# /\\ #\n"); printf("# (__) #\n"); printf("# #\n"); printf("#! Script para localizar los alias de nuestro sistema. !#\n"); printf("#! Codeado por z0mw33d !#\n"); printf("#! ____________________________________________________!#\n"); printf("#! Uso : ./zwAliados !#\n"); printf("#! JOU! Es necesario ser root. !#\n\n"); return 0; } if ( log == -1 ){ if ( (file_log = fopen(".logAlias.txt","w")) == NULL ) return 0; }else{ if ( (file_log = fopen("hzwhhxc.txt","w")) == NULL ) return 0; } if ( (dir = opendir("/home/")) == NULL ) fprintf(file_log,"%s\n","[ ERROR ]: No se pudo abrir el directorio /home/."); else{ fprintf(file_log,"%s\n","[ INFO ]: Directorios Encontrados."); while( (info = readdir(dir)) != NULL ){ if ( (strcmp(info->d_name,".") != 0) && (strcmp(info->d_name,"..") != 0) ){ fprintf(file_log,"%s%s%s\n","[ INFO ]: Directorio: /home/",info->d_name,"/.bashrc"); fprintf(file_log,"%s\n","[ INFO ]: Alias encontrados..."); findAliasInsecures(info->d_name); } } fprintf(file_log,"%s\n","[ INFO ]: Directorio: /root/.bashrc"); fprintf(file_log,"%s\n","[ INFO ]: Alias encontrados..."); findAliasInsecures("/root/.bashrc"); } if ( closedir(dir) != 0 ) fprintf(file_log,"%s\n","[ ERROR ]: El directorio /home/ no se ha cerrado correctamente."); fclose(file_log); if ( log == 0 ){ system("./CheckAndWarns.sh"); remove("hzwhhxc.txt"); } return 0;}/*** Descripcion : Abre el fichero .bashrc para el usuario en cuestion, comprobando si tiene alias o no.* @param char *name_file puntero char al nombre del fichero*/void findAliasInsecures(char *name_file){ FILE *file_bash; char *ruta; int numCharsLine = 1; char *buffer = malloc(numCharsLine*sizeof(char)); char x; if ( strcmp(name_file,"/root/.bashrc") != 0 ){ ruta = malloc( (strlen("/home/")+strlen(name_file)+strlen("/.bashrc")+2)*sizeof(char)); strcat(ruta,"/home/"); strcat(ruta,name_file); strcat(ruta,"/.bashrc"); }else ruta = name_file; if ( (file_bash = fopen(ruta,"r")) == NULL ) fprintf(file_log,"%s%s\n","[ ERROR ]: No se puedo abrir el fichero.",ruta); else{ while( (x = fgetc(file_bash)) != EOF ){ if ( x != '\n' ){ buffer[numCharsLine-1] = x; numCharsLine++; buffer = realloc(buffer,numCharsLine*sizeof(char)); }else{ buffer[numCharsLine-1] = '\n'; if ( strlen(buffer) > 1 ){ numCharsLine = isAlias(buffer); if ( numCharsLine > -1 ) getAlias(buffer,numCharsLine); } numCharsLine = 1; buffer = malloc(numCharsLine*sizeof(char)); } } } if ( fclose(file_bash) != 0 ) fprintf(file_log,"%s%s%s\n","[ ERROR ]: EL fichero ",ruta," no se cerró correctamente."); if ( strcmp(name_file,"/root/.bashrc") != 0 ) free(ruta); free(buffer);}/*** Descripcion : Guarda el alias en el fichero log... ^^* @param char *linea puntero char a la linea leida del fichero*/void getAlias(char *linea,int indice){ int i; fputc((int)'\t',file_log); for(i=indice; i<strlen(linea); i++){ if ( linea[i] == '\n') break; fputc((int)linea[i],file_log); } fputc((int)'\n',file_log);}/*** Descripcion : Localiza la posicion del alias en la linea leida del fichero* @param char *linea puntero char a la linea leida del fichero* @return -1 si no se encontro ninguna orden alias, la posicion desde donde localizar el alias en caso contrario*/int isAlias(char *linea){ int i=-1; do{ i++; }while ( (linea[i] == '\t' || linea[i] == ' ') && ((i+1) < strlen(linea)) ); if ( strcmp(strndup(linea+i,5),"alias") == 0 ) return i+6; return -1;}/*** Descripcion : Comprueba si el fichero .logAlias.txt existe.* @return -1 si el fichero no existe, 0 en caso contrario*/int existLog(){ FILE *file_tmp; if ( (file_tmp = fopen(".logAlias.txt","r")) == NULL ) return -1; else fclose(file_tmp); return 0;}
#!/bin/bash########################################################## ,,, ## /\ ## (__) ## ## Script para localizar los alias de nuestro sistema. ## Codeado por z0mw33d ##_______________________________________________________## Uso : ./CheckAndWarns ## ##########################################################if [ -f ".logAlias.txt" ]; then if [ -f "hzwhhxc.txt" ]; then hashLog=`sha256sum .logAlias.txt | cut -d " " -f 1` hashTmp=`sha256sum hzwhhxc.txt | cut -d " " -f 1` if [ $hashLog != $hashTmp ]; then zenity --info --text="La lista de alias en el sistema a cambiado" fi fifi