Usuwanie danych

0

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:

  1. DoD 5220.22-M
  2. NAVSO P-5239-26
  3. VSITR
  4. GOST P50739-95
  5. Algorytm Schneinera
  6. Algorytm Gutmanna

Mam jeszcze jedno pytanie?? Czy ktoś wie jak "zamazać" metadane o pliku w systemie plików FAT?!!

0

Za najlepsze uznawane są (są jednocześnie najwolniejsze) - w tej kolejności:
GOST P50739-95
Algorytm Gutmanna
DoD 5220.22-M

'Najlepszość' określam na podstawie szacunkowych możliwości odzyskania danych przez sprzęt profesjonalny.

Budowa partycji FAT/FAT32 jest bardzo prosta. Możesz sobie o niej poczytać i od razu wiedziesz wiedział. Z NTFS będziesz miał więcej zabawy. A przecież nie wolno Ci próbować zamazać partycji NTFS w FAT'owy sposób.

PS. Czy ktoś jeszcze, o ile nie siedzi na starych Windows'ach, używa FAT?

0

Tak, jeżeli potrzebują partycji do wymiany danych pomiędzy systemami (i boją się CaptiveNTFS pod Linuksem), ewentualnie używają dyskietek/kart pamięci ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1