Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Удалить файл навсегда

Delphi , Файловая система , Файлы

Удалить файл навсегда

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  If you want to get rid of a file normally you just delete it. 
  But someone else can undelete it if the file hasn't been wiped correctly. 
  For security purposes, to insure that certain files are permanently 
  gone, the WipeFile procedure writes over the data in the file with 
  random characters and then erases it. 

  Wenn man eine Datei nicht mehr braucht, loscht man sie einfach. 
  Aber jemand anders kann die Datei wieder herstellen, wenn sie 
  nicht "richtig" geloscht wurde. 
  Aus Sicherheitsgrunden, um sicherzustellen, dass eine Datei permanent 
  geloscht wird, uberschreibt die WipeFile Prozedur eine Datei mit 
  Zufalls-Zeichen und loscht sie anschliessend. 
}

 procedure WipeFile(FileName: string);
 var
   buffer: array [0..4095] of Byte;
   max, n: LongInt;
   i: Integer;
   fs: TFileStream;

   procedure RandomizeBuffer;
   var
     i: Integer;
   begin
     for i := Low(buffer) to High(buffer) do
       buffer[i] := Random(256);
   end;
 begin
   fs := TFilestream.Create(FileName, fmOpenReadWrite or fmShareExclusive);
   try
     for i := 1 to 3 do
     begin
       RandomizeBuffer;
       max := fs.Size;
       fs.Position := 0;
       while max > 0 do
       begin
         if max > SizeOf(buffer) then
           n := SizeOf(buffer)
         else
           n := max;
         fs.Write(Buffer, n);
         max := max - n;
       end;
       FlushFileBuffers(fs.Handle);
     end;
   finally
     fs.Free;
   end;
   Deletefile(FileName);
 end;

Программный код на Delphi, который реализует процедуру WipeFile, которая permanently удаляет файл, перезаписывая его содержимое случайными данными и затем удаляя его.

Вот подробное описание кода:

  1. Процедура WipeFile принимает параметр FileName, который является именем файла для удаления.
  2. Она создает объект TFileStream (fs) с помощью метода Create, указывая FileName, fmOpenReadWrite (разрешение на чтение и запись) и fmShareExclusive (предотвращение доступа других процессов к файлу).
  3. Затем процедура входит в блок try-finally для обеспечения правильного закрытия файла и удаления.
  4. Внутри блока try:
    • Она вызывает процедуру RandomizeBuffer три раза, каждый раз заполняя массив buffer случайными байтами с помощью функции Random.
    • Она устанавливает позицию файла (fs.Position) в начало файла (0).
    • Затем она enters a loop, который пишет массив buffer в файл по частям размером SizeOf(buffer) байт каждый. Переменная max отслеживает оставшийся размер файла, и цикл продолжается до тех пор, пока не будет написано все содержимое файла.
    • После каждого блока она вызывает функцию FlushFileBuffers(fs.Handle) для обеспечения записи данных на диск.
  5. Наконец, процедура удаляет файл с помощью функции DeleteFile.

Процедура RandomizeBuffer просто заполняет массив случайными байтами с помощью функции Random. Это делается три раза для увеличения шансов полного перезаписывания содержимого файла.

Обратите внимание, что это код не гарантирует полной безопасности против восстановления данных, поскольку есть методы (например, forensic analysis) для восстановления удаленных файлов. Кроме того, эффективность этой процедуры может зависеть от различных факторов, таких как форматирование диска и возможности операционной системы.

(Перевод на русский язык)

В статье описывается процедура WipeFile, которая обеспечивает безопасное удаление файлов, зашифровывая их содержимое случайными символами и затем удаляя.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Файлы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-26 17:54:54/0.003695011138916/0