![]() |
Daten Shredder Sourcecode
Hallo liebe Delphi Community, ich komme mal wieder hobbymäßig zum Programmieren...
Folgenden Sourcecode habe ich gefunden auf delphitricks.com: Category: Files Title: Shred and Delete files without any trace Date added: 15.03.2006 Hits: 12211
Delphi-Quellcode:
procedure ShredderFile(FileName: string);
const Buffer = 1024; Counttowrite = 34; FillBuffer: array[0..5] of Integer = ($00, $FF, $00, $F0, $0F, $00); var arr: array[1..Buffer] of Byte; f: file; i, j, n: Integer; begin AssignFile(f, FileName); Reset(f, 1); n := FileSize(f); for j := 0 to Counttowrite do begin for i := 1 to n div Buffer do begin BlockWrite(f, FillBuffer[j], Buffer); end; end; CloseFile(f); RenameFile(FileName, ExtractFilepath(FileName) + '$000000.tmp'); DeleteFile(ExtractFilepath(FileName) + '$temp.tmp'); end; procedure ShredderAndDeleteFile(const FileName: string); var newname: string; begin newname := ExtractFilepath(FileName) + '$temp.tmp'; if not RenameFile(FileName, newname) then raise Exception.CreateFmt('Can''t rename %s', [FileName]); ShredderFile(newname); DeleteFile(newname); end; Beim nachvollziehen fiel mir auf: die Variable arr wird definiert aber nicht benutzt. Also lasse ich diese weg!? CounttoWrite ist bei 34, FillBuffer[j] hat aber nur 6 Elemente zum Ansteuern... Was passiert also in 29 Schleifendurchgängen- nichts? Bei DeleteFile im ersten Block soll eine sog. $temp.tmp Datei gelöscht werden. Gibt es die überhaupt? Ist es normal dass in veröffentlichtem Code so viele eigenartige Fehler stecken? Oder sehe ich etwas falsch? Vielen Dank für Antworten. |
AW: Daten Shredder Sourcecode
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
Insgesamt nicht unbedingt ein mustergültiges Beispiel.
if not RenameFile(FileName, newname)
|
AW: Daten Shredder Sourcecode
Zitat:
Zitat:
denn FillBuffer ist ja nur als Array[0..5] definiert Zitat:
wenn schon dann :
Code:
if not RenameFile(FileName, newname)
then raise Exception ... else ShredderFile ... |
AW: Daten Shredder Sourcecode
Zitat:
das ShredderFile(newname) wird aber immer aufgerufen, auch nach raise Exception . . . - oder liege ich da falsch ? |
AW: Daten Shredder Sourcecode
Zitat:
Grundsätzlich fehlt mir hier ein
Code:
Block und da der zusammengehörige Code mehr als eine Zeile umfassr ein
if...
then.. else..
Code:
begin...end
|
AW: Daten Shredder Sourcecode
Erstmal schreibst du in den WindowsFileCache und später dann auch noch in den Cache der Schnittstelle und des Datenträgers,
also auf dem Datenträger kommt nur ein Bruchteil dessen an, was du da schreibst. (unter der Annahme deine Schleife würde funktionieren und der Schreibcache wäre deaktiviert und würde sich schell genug leeren) Außerdem ist deine Schleife falsch, denn du schreibst alle "Durchläufe" hintereinander und nicht "übereinander". Und wenn es um Datenträger ala SSD, USB-Stick und SD-Karte geht, dann kannst du sowas sowieso vergessen, weil du niemals die eigentlischen physischen Speicherbereiche erwischst, wo die Daten drin standen und Mehrfachschreiben ist da auch sinnlos. [edit] Du = der gefundene Code [add] Noch besser, Buffer ist 1024 Byte lang, aber FileBuffer nur 6*SizeOf(Integer), also zusätzlich zu dem Offset, gibt es hier immer einen Bufferoverflow. FileFuffer ist Integer, aber wird nur mit Bytes befüllt, also würde nur jedes vierte Byte wie gewünnscht überschrieben und der Resst immer wieder mit 0. |
AW: Daten Shredder Sourcecode
Wenn du Deine Daten nicht mehr auf Disketten (oder Festplatten die inzwischen ca. 20Jahre alt sind) speicherst, ist der praktische Nutzen dieses Programms gleich null. Wenn du sichere Löschung willst, dann greif zu einem 500 Hammer.
Ansonsten ist das Beispiel ein schönes für "so sollte man es nicht machen". Neben der etwas seltsamen Handhabung verschiedener Typen, hat das Programm ein wichtiges Manko, es verläßt sich darauf, das die Datei xyz.xxx immer an der gleichen Stelle auf dem Datenträger ist. Wer hierfür nicht die FAT und andere Organisationsstrukturen auf dem Datenträger bemüht, glaubt auch, daß Zitronenfalter Zitronen falten. Gruß K-H |
AW: Daten Shredder Sourcecode
Danke für die vielen Antworten.
Jetzt mal abgesehen vom Hammer... es gibt doch einige kleine Tools, die sicheres Löschen versprechen. Wo/ in welche Themen muss ich mich einarbeiten, um so etwas programmieren zu können? |
AW: Daten Shredder Sourcecode
Nochmals Danke für die Korrekturen am vorgestellten Code.
Himitsu und p80286 haben grundlegende Kritik geäußert. Es gibt da ein Programm namens "Sicher Löschen", eine Version vom Oktober 2016. Man kann es downloaden bei Chip.de, 166,3 kB (!) Chip.de sagt: "CHIP Fazit zu Sicher Löschen Sensible Daten können Sie mit der Sicher Löschen Freeware endgültig löschen. Das kleine, kostenlose Tool ist portabel, muss also nicht installiert werden. Unser Download-Paket beinhaltet sowohl die 32-, als auch die 64Bit-Version. Christian Schwalb | CHIP Software-Redaktion" Es kann doch nicht so schwer sein, die richtigen Datenblöcke zu erwischen und zu überschreiben. Es viel das Wort FAT, welche Stichworte sind noch relevant? Wie komme ich weiter, wo muss ich was nachlesen? Gibt es irgendwo Tutorials/ gute Bücher zum Thema? Ist Delphi überhaupt geeignet oder wäre eine andere Programmiersprache ratsam? |
AW: Daten Shredder Sourcecode
Zitat:
Ein Stichwort bzgl. SSD, SD, USB etc. wäre ![]() Auch bei HDDs gibt es jede Menge erschwerende Techniken, z.B. ![]() "Sicheres Löschen" klappt sehr oberflächlich natürlich trotzdem. Aber um was vor Tante Erna zu verstecken ist schon ein Leeren des Papierkorbes ausreichend, sobald man aber anfängt, gute Entlösch-Tools blockieren zu wollen, wird's exorbitant speziell und schwer. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz