| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Безвозвратное удаление |
| Автор: shapka1ushanka 21.5.2010, 01:22 |
| Привет Подскажите пожалуйста, как можно удалить файл безвозвратно? |
| Автор: shapka1ushanka 21.5.2010, 11:48 |
| То есть достаточно открыть файл и записать туда нули? А как, зная размер файла, определить сколько именно нулей писать? |
| Автор: Riply 21.5.2010, 11:51 | ||
Если надежно (т.е. враг 100% не сможет прочитать данные), то практически нереально (неимоверно сложно). Слишком много следов (таких, как логирование) остается, по которым существует шанс восстановить даные. Простейший пример: По какой-то причине (например дефрагментатор поработал или еще кто) кластеры файла были "перемещены". Т.е. его данные существуют уже как минимум в стольки местах, сколько раз данная операция производилась. Найти их все и почистить это утопия У Rouse_ на сайте есть книга Брайан Кэрриэ "Криминалистический анализ файловых систем". Можно ее почитать, дабы оставить всякую надежду IMHO, единственный надежный способ - не создавать файл вообще, ну или создавать на собственном диске, как это делает TrueCrypt. . |
| Автор: ~FoX~ 21.5.2010, 11:54 |
Нет.... физически занимаемое файлом место... прям в файловой системе... |
| Автор: shapka1ushanka 21.5.2010, 12:09 |
| Riply, да мне супернадежно не надо. Достаточно, чтобы простые програмки-восстановлялки не могли вернуть файл. ~FoX~, а как это место определить? |
| Автор: kami 21.5.2010, 23:43 | ||
Доп.вопрос, почти в тему...
То есть (к примеру) - "шреддинг" файла какой-нибудь специализированной под это программой (например, BCWipe) и потом затирание свободного места на диске (ф-я Wipe free space той же программы) - это бессмысленная трата времени? (спрашиваю не из праздного любопытства - очень актуальный для меня вопрос). |
| Автор: Riply 22.5.2010, 00:44 | ||
К сожалению, я не обладаю достаточным уровнем знаний, чтобы однозначно ответить на этот вопрос :( NTFS логирование - страшная штука и всего механизма его работы я не знаю. Но можно попробовать пофантазировать и мысленно построить парочку примеров, когда не спасет даже данная последовательность действий. (данные или их часть можно будет прочесть) Первый вариант: маленький файл вообще не имеет своих кластеров на диске. Все его данные содержатся в MFT. Как и куда они переносятся при логировании, я не знаю. Но я очень сильно сомневаюсь, что "программы чистильщики" не только затирают данные в самой MFT, но еще и анализируют лог, чтобы найти в нем все их следы. Сомневаюсь потому, что запись в MFT очень сложна, надо не только следить за контрольными битами в секторах, но и корректно провести всю цепочку изменений в MFT, которую повлечет за собой запись. Второй вариант: после уничтожения нашего файла, но перед затиранием свободного места, создается довольно большой файл, но записывается в него только несколько байт в начало. В принципе, он может "захватить" кластеры с нашими данными. Система, при такой операции, реально не затирает его нулями, хотя API и возвращают нули при его чтении. Прямое же чтение вернет реальное содержимое кластеров. http://forum.sources.ru/index.php?showtopic=301351&st=0&#entry2577852 можно посмотреть как проверялось данное утверждение. Вряд-ли при Wipe free space будут затираться и кластеры, "записанные" за этим файлом. А значит их можно прочесть. P.S. Это просто парочка примеров "с потолка", никак не претендующая на истину в последней инстанции |
| Автор: Alca 22.5.2010, 07:56 |
| http://www.xakep.ru/magazine/xa/101/034/1.asp |