Mittels c++ oder batch Datei überschreiben bzw. sicher löschen

  • #1
H

habeschi

Bekanntes Mitglied
Themenersteller
Dabei seit
16.09.2005
Beiträge
196
Reaktionspunkte
0
Hi Leute!

Also ich habe so'n bisschen meine Erfahrungen mit Batch und c++ gesammelt. Wie man Dateien löscht weiss ich mittlerweile. Wie kann ich jedoch dafür sorgen, dass die Datei auch sicher gelöscht wird.

z.B.:

Mit Batch kann ich alle Dateien in einem Verzeichniss mit einer bestimmten Dateiendung löschen.

Nun will ich, dass die Datei 3 mal mit lauter Nullen oder Einsen überschrieben und dann ins Jenseits geschickt wird

Hoffe, dass ihr mir helfen könnt

Vielen Dank

mfg
Habeschi
 
  • #2
Erste Idee: Datei öffnen, mehrfach mit Zufallswerten überschreiben, schließen und löschen. Natürlich stellt sich dann die Frage, ob die neuen Daten tatsächlich physisch an die Stelle geschrieben, an der sich die alten Daten befinden. Das ist bei modernen Dateisystemen - z.B. ReiserFS, XFS, Ext3 - nicht unbedingt der Fall; ich kann Dir aber nicht mit Sicherheit sagen, wie es bei NTFS (vielleicht auch noch den verschiedenen Versionen) diesbezüglich aussieht. Dazu kommen noch mögliche Probleme mit RAIDs und Systemen, die Dateien komprimieren. Man müsste es also eventuell (*) auf Low-Level-Ebene durchführen, was aber nichts mehr mit den C++-Standardbibliotheken zu tun hat.

(*) Andererseits gibt es ja einige Tools für Windows, mit denen man Dateien sicher überschreiben können soll. Ich denke nicht, dass diese alle auf Low-Level-Ebene arbeiten. Da müsstest Du mal etwas recherchieren (zu diesen Tools und auch NTFS). Wenn es Dir in erster Linie ums Benutzen und nicht ums Programmieren geht, kannst Du auch einen Shredder suchen, der sich über die Kommandozeile mit Parametern aufrufen lässt und diesen dann von Deinem Programm aus starten.
 
  • #3
Vielen Dank für die Antwort!!

Solche Schredder Programme hab ich da. Ich wollte halt so etwas nur selber programmieren. Deinen ersten Vorschlag würde ich gerne mal machen. Dazu werde ich mir eine Partition erstellen, die wenige MB groß ist. Da könnte ich probieren, ob die Datei die gelöscht wurde, wiederherstellbar ist.

Wie würde denn ungefähr die Befehlszeile bzw der Code aussehen??

Vielen Dank

mfg
Habeschi
 
  • #4
habeschi schrieb:
Wie würde denn ungefähr die Befehlszeile bzw der Code aussehen??

Na ja, so in der Art z.B. (ohne Fehlerbehandlung, srand, Dateilänge etc.):

fstream fs(dateiname, ios::in | ios::eek:ut | ios::binary);

...

// Diesen Teil dann gegebenenfalls n x wiederholen (vorher jeweils zum Dateianfang springen)
for(int i = 0; i < dateilänge; i++)
{
fs << (unsigned char)(rand() % 256);
}
fs.flush();
 
Thema:

Mittels c++ oder batch Datei überschreiben bzw. sicher löschen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben