Ostatnio zacząłem się interesować usuwaniem danych z komputera. Napisałłem swój bardzo prosty programik, który nadpisuje pliki.
#include <stdio.h>
#include <stdlib.h> /* dla funkcji rand() oraz srand() */
#include <time.h> /* dla funkcji time() */
#include <string.h>
void help() {
printf("Dane version 0.0.1 (beta)\n");
printf("Usage: dane [-p] [PASSES] [-f] [FILE]\n");
printf("Example: dane -p 5 -f plik.txt\n");
printf("http://www.2you.yoyo.pl/\n");
}
void nadpisywanie(char *nazwapliku, int passes) {
char znak;
int i = 0,k;
printf("\nProgram rozpoczyna operacje nadpisywania.\n");
/* ustawiamy wskaźnik na koniec pliku */
FILE *f = fopen(nazwapliku, "rb");
fpos_t dlugosc;
fseek (f, 0, SEEK_END);
fgetpos(f, &dlugosc);
fclose(f);
FILE *g = fopen(nazwapliku, "wb");
srand(time(0));
printf("W trakcie pracy...\n");
for(k = 0;k < passes;k++) {
do {
znak = rand();
fwrite(&znak,sizeof(znak),1,g);
i++;
} while(i != dlugosc);
i = 0;
fseek(g,0,SEEK_SET); //ustawia na poczatek pliku
}
printf("Zakonczyno nadpisywanie pliku.\n");
fclose(g);
}
int main(int argc,char *argv[]) {
if ((argc < 4) || (strcmp (argv[1], "--help") == 0)) {
help();
}
if((strcmp(argv[1],"-p")==0 ) && (strcmp(argv[3],"-f")==0 ))
nadpisywanie(argv[4], atoi(argv[2]));
else
help();
return 0;
}
Chciałbym się dowiedzieć, który algorytm nadpisywania jest najlepszy:
- DoD 5220.22-M
- NAVSO P-5239-26
- VSITR
- GOST P50739-95
- Algorytm Schneinera
- Algorytm Gutmanna
Mam jeszcze jedno pytanie?? Czy ktoś wie jak "zamazać" metadane o pliku w systemie plików FAT?!!