Datei mehrfach überschreiben + entgültig löschen
-
Hallo
Ich möchte einen Editor schreiben, der eine Datei erst mehrfach mit Zufallswerten überschreibt und diese schließlich entgültig löscht. Es soll auch angegeben werden könne, wie oft man die Datei überschreiben will.
Zur Zeit sieht das noch so aus:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>int main(void)
{
char pfad[100];
printf("Welche Datei wollen Sie löschen?\n");
printf("Bitte geben Sie den Pfad an.\n");
printf("Eingabe :> ");
scanf("%99s",pfad);
if((remove(pfad)) < 0)
{
fprintf(stderr, "Fehler beim Löschen von %s", pfad);
return EXIT_FAILURE;
}
getch();
return EXIT_SUCCESS;
}Hat jemand eine Idee, wie ich das verwirklichen könnte?
MfG
Eddi
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Wozu mehrfach überschreiben?
-
cheopz schrieb:
Wozu mehrfach überschreiben?
um es computerforensikern so schwer wie möglich zu machen...
-
probier mal r+b als mode.
dank r kannst du lesen, und wegen dem + auch schreiben (ohne dass die datei auf 0 gekuerzt wird).
-
ten schrieb:
cheopz schrieb:
Wozu mehrfach überschreiben?
um es computerforensikern so schwer wie möglich zu machen...
und deshalb auch mehrfach mit zufallswerten und nicht einfach nur nullen.
-
-
hier mal ein paar denkanstösse:
verwende:
fseek(FILE *f,0,SEEK_END);
um ans ende der datei zu fahrn (bezieht sich jetzt alles nur auf txt files).
dann mit:
int anzahl=ftell(FILE *f)
bestimmen wie viele zeichen das file enthält (zählt alle ohne EOF).
hier mal n code der dir die ASCII-Werte zwischen 30 und 130 ausgibt:
#include <stdio.h> #include <stdlib.h> int main() { for (int i=30;i<130;i++) printf("*** %d: %c ***\t",i,i); system("pause"); };
der vollständigkeit halber:
mitrand()%100+31
kannst du zufallszahlen zwischen 30 und 130 erzeugen, eben soviele wie die datei enthält.
kannst dich ja nochmal melden wenns nich klappt aber das sollt mal reichen fürs erste
-
Danke für die Tipps. Werds morgen mal ausprobieren.
Ach und ich wollts wissen, da ich mich sehr für C/C++ interessiere und vieleicht brauch ichs später ja mal...
-
Das ist aber alles mehr als dürftig. Es steht dem Dateisystemtreiber frei, die Datei vor dem Überschreiben ganz anders wo abzulegen. Bei sorfgältiger Betrachtung sollte man das Bedenken.
-
Ok geht aber wie kann ich das jetzt machen, dass das so oft überschrieben wird, wie der Benutzer eingibt? Da gab es doch mal irgendeinen Befehl um wieder an den Anfang der Schleife zu kommen (Endloschleife?), nachdem Sie durchlaufen wurde.
Und wie kann ich Sie dann nach der eingegeben Anzahl beenden? Muss ich den Befehl mit if und break (innerhalb der Endlosschleife) beenden?
-
Nimm dir doch eine einfache for()-Schleife, da kannst du selber mitzählen, wie oft du die Datei schon überschrieben hast:
for(i=0;i<anzahl;++i) { printf("%d. Durchlauf\n",i+1);//nur eine Kontrollausgabe rewrite(f);//Datei mit Mülldaten überschreiben }
-
Danke hast Recht