per nascondere processi che non vogliamo visualizzare. Una volta applicazioni
simili venivano usate per nascondere backdoors o trojan agli amministratori.
Legge i processi da nascondere in un file chiamato "proc" presente nella
directory dell'applicazione.
Passiamo subito al codice:
Codice: Seleziona tutto
/* Nasconde i processi presenti nel file locale "proc".
* Dopo che l'utente lancia il comando "ps" per
* visualizzare i processi attivi, esso legge nel
* file "proc" se ci sono elementi da nascondere
* e li nasconde usando il comando bash "grep -v".
* Versione di prova beta 0.1.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 50
void main(int argc, char **argv[]){
// Variabili
FILE *fp=fopen("proc","r"); // Puntatore al file
char buffer[MAX]; // Buffer di lettura dal file
char lettura_file[MAX]; // Contiene il valore del file
char comando_stringa[MAX]; // Contiene il valore " | grep -e "
char comando_finale[MAX]; // Contiene il comando finale da eseguire
int cont=0;
// Inizializzo la stringa
comando_stringa[0]='\0';
strncat(comando_stringa," | grep ",8);
// Leggo dal file una riga
// di MAX caratteri e la salvo in buffer.
while(fgets(buffer,MAX,fp)!=NULL){
// Ciclo per resettare la stringa altrimenti
// lettura_file attuale conterrà anche i caratteri
// della lettura precedente.
for(cont=0;cont<MAX;cont++)
lettura_file[cont]='\0';
// buffer contiene anche il carattere di fine stringa "\n"
// che a noi non serve quindi copio buffer - 1 in lettura_file
strncpy(lettura_file,buffer,strlen(buffer)-1);
strncat(comando_stringa," -e ",4);
// Procedo con la concatenazione delle stringhe
strncat(comando_stringa,lettura_file,strlen(lettura_file));
}
comando_finale[0]='\0';
if(argc==2){
strncat(comando_finale,"/bin/ps ",8);
strncat(comando_finale,argv[1],strlen(argv[1]));
strncat(comando_finale,comando_stringa,strlen(comando_stringa));
strncat(comando_finale," -e ps -v\n",11);
}else{
strncat(comando_finale,"/bin/ps",7);
strncat(comando_finale,comando_stringa,strlen(comando_stringa));
strncat(comando_finale," -e ps -v\n",11);
}
system(comando_finale);
// printf("Comando: %s",comando_finale);
return;
}
Codice: Seleziona tutto
for(cont=0;cont<MAX;cont++)
lettura_file[cont]='\0';
Codice: Seleziona tutto
cairo
conky
code
Se avete qualche altra idea per sostituire quel for sarei grato di modificarlo.
Piccola applicazione per smanettare un pò con la programmazione C.
Grazie a tutti anticipatamente accetto qualsiasi consiglio