Как предотвратить восстановление удалённых данных?

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Re: Как предотвратить восстановление удалённых данных?

Сообщение Лекс Айрин » 16.05.2016 18:09:59

Cheb писал(а):Не знаю, честно, как эта кухня устроена, но навевает.


Вообще-то программа полного уничтожения сначала определяет местонахождение всех секторов файла, а потом посекторно затирает используя прямой доступ к файловой системе.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Как предотвратить восстановление удалённых данных?

Сообщение Osmiy » 16.05.2016 18:15:33

По сабжу. Винда вроде сама умеет делать затирание удаленных файлов. Если я не ошибся, то там надо просто какую-то опцию использовать при создании/удалении файла.
Osmiy
новенький
 
Сообщения: 36
Зарегистрирован: 07.05.2016 21:18:39

Re: Как предотвратить восстановление удалённых данных?

Сообщение Лекс Айрин » 16.05.2016 18:22:13

Osmiy, скорее всего, путаете с удалением минуя корзину... впрочем, это можно легко проверить.

Код: Выделить всё
C:\Documents and Settings\Admin>del /?
Удаление одного или нескольких файлов.

DEL [/P] [/F] [/S] [/Q] [/A[[:]атрибуты]] имена
ERASE [/P] [/F] [/S] [/Q] [/A[[:]атрибуты]] имена

  имена              Имена одного или нескольких файлов. Для удаления сразу
               нескольких файлов используются подстановочные знаки.
              Если указан каталог, из него будут удалены все файлы.

  /P          Запрос на подтверждение перед удалением каждого файла.
  /F          Принудительное удаление файлов, доступных только для чтения.
  /S          Удаление указанных файлов из всех подкаталогов.
  /Q          Отключение запроса на подтверждение при удалении файлов.
  /A          Отбор файлов для удаления по атрибутам.
  атрибуты    S  Системные файлы       R  Доступные только для чтения
              H  Скрытые файлы         A  Файлы для архивирования
              Префикс "-" имеет значение НЕ

Изменение команд DEL и ERASE при включении расширенной обработки команд:

Результаты вывода для ключа /S принимают обратный характер, то есть выводятся
только имена удаленных файлов, а не файлов, которые не удалось найти.

Как видите, никаких опций подобного вида нет.
скорее всего, вы путаете в линуксом, в котором функционал подобного рода есть.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Как предотвратить восстановление удалённых данных?

Сообщение debi12345 » 16.05.2016 18:44:10

Оптимизнёт что-нить - бац - и старый файл остался в свободных секторах.

Ну тогда каждо-дневный бэкап + фулл дисквайп + рестор из бэкапа :)
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Как предотвратить восстановление удалённых данных?

Сообщение Osmiy » 16.05.2016 18:59:50

Лекс Айрин писал(а):Osmiy, скорее всего, путаете с удалением минуя корзину... впрочем, это можно легко проверить.

Нет, я точно не про корзину. Я имею ввиду функцию встроенную в файловую систему, которая занимается затиранием удаленного файла. Просто это очевидная функция необходимая для политики безопасности. Подобная функция по умолчанию работает с оперативной памятью. Она затирает память после закрытия программы, чтобы уже никто не смог прочитать данные, с которыми оперировала данная программа. Тоже самое должно быть и в ФС по идеи.

Добавлено спустя 6 минут 28 секунд:
Вот что нашел
http://vynesimozg.com/poleznye-komandy-windows/
Изображение
Osmiy
новенький
 
Сообщения: 36
Зарегистрирован: 07.05.2016 21:18:39

Re: Как предотвратить восстановление удалённых данных?

Сообщение Лекс Айрин » 17.05.2016 11:47:32

Osmiy писал(а): Я имею ввиду функцию встроенную в файловую систему, которая занимается затиранием удаленного файла.


Самое интересное, что эта утилита не для стирания файла. Полное удаление каталога лишь побочный эффект. И да... затереть один файл не удастся.

Osmiy писал(а): Подобная функция по умолчанию работает с оперативной памятью.


Стирание содержимого ОЗУ это функционал не связанный с безопасностью -- это требуется для работы диспечера памяти. И он встроен в сам процессор.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Как предотвратить восстановление удалённых данных?

Сообщение shyub » 17.05.2016 12:10:48

Запустил вот так:
Код: Выделить всё
ShellExecute(Handle,'open', 'C:\Windows\System32\cipher.exe','/w:G:\Tmp', nil, SW_SHOWNORMAL);

G: - 4-х гиговая флэшка (меньше не нашёл), затираемая папка G:\Tmp - 48 КБ. Вот уже минут 15 она стирает мне эту папку, но пока папка на месте. Вероятнее всего она затирает весь диск и, возможно, к вечеру сотрёт и заданную папку. Вариант может и стоящий, но для использовании в составе программы не пригодный.
Попробовал вот так:
Код: Выделить всё
// Затерание файла на диске (без удаления).
procedure TForm1.EraseFileDisk(Path: String);
var
  bf: File of Byte;
  n: Longint;
  z: Integer;
  M: array[1..256] of Byte;
begin
  for z:=1 to 256 do M[z]:=0;
  try
    n:=FileSize(UTF8ToWinCP(Path));
    AssignFile(bf,Path);
    Reset(bf);
    while n>1 do begin
      if n>255 then z:=256
      else z:=n;
      BlockWrite(bf,M[1],z);
      n:=n-z;
    end;
  finally
    CloseFile(bf);
//   Sleep(300);
  end;
end;

Но почему-то:
1. Если после этой ф-ции идёт удаление файла:
Код: Выделить всё
EraseFileDisk(Sf);
DeleteFile(PChar(UTF8ToWinCP(Sf)));

То все данные на диске остаются. Ставил задержку 0.3 сек - не спасла.
2. Если затираю блоком, равным размеру файла, то остаётся много "хвостов". При размере блока в 256 байт результат лучше, но некоторые "куски" файла, которые разбросаны по диску, остаются.
shyub
постоялец
 
Сообщения: 112
Зарегистрирован: 25.11.2014 23:15:19

Re: Как предотвратить восстановление удалённых данных?

Сообщение Лекс Айрин » 17.05.2016 12:24:27

shyub писал(а):Вероятнее всего она затирает весь диск и, возможно, к вечеру сотрёт и заданную папку.


заодно, видимо, затирается и пустое место.
Стирание 4 гиговой флешки под ноль (с удалением всего раздела) у меня заняло час-полтора (тестировал на работоспособность).
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Как предотвратить восстановление удалённых данных?

Сообщение debi12345 » 17.05.2016 12:30:35

"Винда" ведь как-то помечает нужные ей файлы как неперемещаемые-фиксированные-по месту - если их затирать по всему их размеру, по идее ничего не должно оставаться.
А проще, как уже рекомендовали, хранить файл в зашифрованном виде - тогда выпадение из него любого фрагмента сделает его нечитаемым.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Как предотвратить восстановление удалённых данных?

Сообщение MysticCoder » 17.05.2016 21:07:18

shyub писал(а):Запустил вот так:
Код: Выделить всё
ShellExecute(Handle,'open', 'C:\Windows\System32\cipher.exe','/w:G:\Tmp', nil, SW_SHOWNORMAL);

G: - 4-х гиговая флэшка (меньше не нашёл), затираемая папка G:\Tmp - 48 КБ. Вот уже минут 15 она стирает мне эту папку, но пока папка на месте. Вероятнее всего она затирает весь диск и, возможно, к вечеру сотрёт и заданную папку. Вариант может и стоящий, но для использовании в составе программы не пригодный.
Попробовал вот так:
Код: Выделить всё
// Затерание файла на диске (без удаления).
procedure TForm1.EraseFileDisk(Path: String);
var
  bf: File of Byte;
  n: Longint;
  z: Integer;
  M: array[1..256] of Byte;
begin
  for z:=1 to 256 do M[z]:=0;
  try
    n:=FileSize(UTF8ToWinCP(Path));
    AssignFile(bf,Path);
    Reset(bf);
    while n>1 do begin
      if n>255 then z:=256
      else z:=n;
      BlockWrite(bf,M[1],z);
      n:=n-z;
    end;
  finally
    CloseFile(bf);
//   Sleep(300);
  end;
end;

Но почему-то:
1. Если после этой ф-ции идёт удаление файла:
Код: Выделить всё
EraseFileDisk(Sf);
DeleteFile(PChar(UTF8ToWinCP(Sf)));

То все данные на диске остаются. Ставил задержку 0.3 сек - не спасла.
2. Если затираю блоком, равным размеру файла, то остаётся много "хвостов". При размере блока в 256 байт результат лучше, но некоторые "куски" файла, которые разбросаны по диску, остаются.


Скорее всего надо как то принудить файловую систему сбросить кэш, гугл подсказывает юзать FlushFileBuffers, но это для случая когда изменяешь файл через CreateFile\OpenFile
MysticCoder
постоялец
 
Сообщения: 154
Зарегистрирован: 14.09.2013 00:20:28

Re: Как предотвратить восстановление удалённых данных?

Сообщение debi12345 » 17.05.2016 22:16:28

Что мешает использовать шифрование файла ? Что злоумышленник-рев
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Как предотвратить восстановление удалённых данных?

Сообщение shyub » 19.05.2016 13:18:10

Тему можно закрывать.
Решение проблемы: viewtopic.php?f=13&t=11123
shyub
постоялец
 
Сообщения: 112
Зарегистрирован: 25.11.2014 23:15:19

Пред.

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

Рейтинг@Mail.ru