A
Asset030303
Есть код, он удаляет файлы безвозвратно, с несколько проходами, но есть проблема, при удаления файла, он не меняет название файла в рандомные символы , а меняет рандомно только внутри файла, а мне нужно что бы он и название файла менял. Так же как сделать так, что бы при удаления файла он даже сам размер файла убирал в ноль бит?
Например метод удаления DOD USA с 3 проходами, при удаления он сам файл безвозвратно удаляет путем занулирования , что сам размер файла становиться 0 бит ! (Я это смотрел с помощью восстановления программы R-studio, там все удаленные файлы с помощью стирания были с размером 0 бит)
Ну более в сложных проходов например 6 или 7 проходов, там удаляется уже со случайными числами.
Можно сделать копию метода Немецкий стандарт VSITR
Работает вот так
Цикл 1: зануление (0x00 в каждый байт);
Цикл 2: запись единиц (0xFF в каждый байт);
Цикл 3: см. цикл 1
Цикл 4: см. цикл 2
Цикл 5: см. цикл 3
Цикл 6: см. цикл 4
Цикл 7: запись (0xAA) в каждый байт;
Помогите доработать код!
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, ComCtrls, ExtCtrls;
type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
Open: TButton;
Path: TStaticText;
Delete: TButton;
StaticText1: TStaticText;
Splitter1: TSplitter;
Num: TTrackBar;
Level: TStaticText;
procedure OpenClick(Sender: TObject);
procedure DeleteClick(Sender: TObject);
procedure NumChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.OpenClick(Sender: TObject);
var
FileName: string;
begin
OpenDialog1.Execute;
FileName:=OpenDialog1.FileName;
Path.Caption:= FileName;
end;
procedure TForm1.DeleteClick(Sender: TObject);
var
buffer: array [0..4095] of Byte;
max, n: LongInt;
i,j,k: Integer;
fs: TFileStream;
FileName: String;
begin
case Num.Position of
0: k:=1;
1: k:=3;
2: k:=5;
3: k:=10;
4: k:=15;
end;
FileName:= Path.Caption;
fs := TFilestream.Create(FileName, fmOpenReadWrite or fmShareExclusive);
try
for i := 1 to k do
begin
for j := Low(buffer) to High(buffer) do
buffer[j] := Random(256);
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);
ShowMessage('Готова!');
end;
procedure TForm1.NumChange(Sender: TObject);
begin
case Num.Position of
0: Level.Caption:='обычный';
1: Level.Caption:='Нормальный';
2: Level.Caption:='Повышенный';
3: Level.Caption:='Очень высокий';
4: Level.Caption:='Гарантированно';
end;
case Num.Position of
0: Level.Font.Color:=clBlue;
1: Level.Font.Color:=clNavy;
2: Level.Font.Color:=clGreen;
3: Level.Font.Color:=clYellow;
4: Level.Font.Color:=clRed;
end;
end;
end.
Например метод удаления DOD USA с 3 проходами, при удаления он сам файл безвозвратно удаляет путем занулирования , что сам размер файла становиться 0 бит ! (Я это смотрел с помощью восстановления программы R-studio, там все удаленные файлы с помощью стирания были с размером 0 бит)
Ну более в сложных проходов например 6 или 7 проходов, там удаляется уже со случайными числами.
Можно сделать копию метода Немецкий стандарт VSITR
Работает вот так
Цикл 1: зануление (0x00 в каждый байт);
Цикл 2: запись единиц (0xFF в каждый байт);
Цикл 3: см. цикл 1
Цикл 4: см. цикл 2
Цикл 5: см. цикл 3
Цикл 6: см. цикл 4
Цикл 7: запись (0xAA) в каждый байт;
Помогите доработать код!
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, ComCtrls, ExtCtrls;
type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
Open: TButton;
Path: TStaticText;
Delete: TButton;
StaticText1: TStaticText;
Splitter1: TSplitter;
Num: TTrackBar;
Level: TStaticText;
procedure OpenClick(Sender: TObject);
procedure DeleteClick(Sender: TObject);
procedure NumChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.OpenClick(Sender: TObject);
var
FileName: string;
begin
OpenDialog1.Execute;
FileName:=OpenDialog1.FileName;
Path.Caption:= FileName;
end;
procedure TForm1.DeleteClick(Sender: TObject);
var
buffer: array [0..4095] of Byte;
max, n: LongInt;
i,j,k: Integer;
fs: TFileStream;
FileName: String;
begin
case Num.Position of
0: k:=1;
1: k:=3;
2: k:=5;
3: k:=10;
4: k:=15;
end;
FileName:= Path.Caption;
fs := TFilestream.Create(FileName, fmOpenReadWrite or fmShareExclusive);
try
for i := 1 to k do
begin
for j := Low(buffer) to High(buffer) do
buffer[j] := Random(256);
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);
ShowMessage('Готова!');
end;
procedure TForm1.NumChange(Sender: TObject);
begin
case Num.Position of
0: Level.Caption:='обычный';
1: Level.Caption:='Нормальный';
2: Level.Caption:='Повышенный';
3: Level.Caption:='Очень высокий';
4: Level.Caption:='Гарантированно';
end;
case Num.Position of
0: Level.Font.Color:=clBlue;
1: Level.Font.Color:=clNavy;
2: Level.Font.Color:=clGreen;
3: Level.Font.Color:=clYellow;
4: Level.Font.Color:=clRed;
end;
end;
end.