Всем здравствуйте! В общем, проблема в том, что мне нужно гарантированно стереть удаленные файлы прочь с винчестера. Опыт использования спецпрограмм для этой цели у меня достаточно плачевный, да и хочется сделать все своими руками. План такой: найти все свободные сектора и затереть их. Писать буду под WinXP. Значит, придется юзать функцию CreateFile. А вопрос такой: как узнать, свободен сектор или нет?
"Не с той стороны на кобылу заходишь". (с) Была такая прога, называлась baloon. Просто создавала и писала гигантский файл, заполненный нулями, до тех пор, пока не получалась ошибка записи (т.е. диск переполнен). После этого стирала файл и усе.
вообще говоря задача не так проста как может показаться.. есть достаточно много проблем с затиранием битов (например в силу того что мгн. головка не всегда чётко идёт по дорожке -> эффект краёв дорожек)... Люди по этой теме научные работы защищают. Так что если интересует именно 100% качество затирания, читай алгоритмы DoD 5220.22-M (США), ГОСТ Р50739-95г (Россия), а также Алгоритм Брюса Шнейера и Питера Гутмана. Есть куча утилит начиная с WipeInfo из Norton Utilities (которая кстати хуже других всё это делает), и включая такие программы как (далее по возрастанию надёжности реализации удаления) Kremlin, BestCrypt Wipe, Clean Disk Security, Evidence Elliminator и что-то от Acronis.. Многие из этих программ предоставляют известные алгоритмы и проверены временем (сейчас возможно есть программки и получше).
извиняйте... надо учитывать особенности конкретной файловой системы для раздела, узнать свободен ли сектор на уровне оперирования с жд практически невозможно, забадаешься возиться.. На примере NTFS - есть MFT в которой есть битовая карта всех кластеров. Кажется это в $Bitmap - такой служебный файл фс. Ну и так далее для каждой файловой системы.. Читай Кэрриэ "Криминалистический" анализ файловых систем, там конкретно расписаны структуры наиболее популярных файловых систем.
Программу, забивающую диск нулями, я уже писал. Не помогло, EasyRecovery восстановила. Запустил раз пять - все равно не помогло. Алгоритмы - это хорошо, но сначала мне нужно разобраться с записью на диск. Винда же как-то это делает! Программами мне не очень хочется пользоваться, свое написать надо. За Кэрриэ спасибо, сейчас пойду качать. Система действительно NTFS, с ней и работать буду.
а какие собственно могут быть проблемы с записью? попробуй создать тестовый раздел метров на 500, запиши данные... сотри... тестируй свою программу и смотри winhex-ом что получается кстати не знабудь такую вещь в ntfs как неиспользуемые файловые записи в MFT.. возможно EasyRecovery восстановила их, но сами данные в области данных реально затёрлись
Cneg, green5, а поподробнее? Cneg, нет, как ни странно, восстановились сами данные (встречу программистов OnTrack - убью!!!). Программку для создания гигантского файла уже писал, не помогло. А как можно считать MFT и найти в нем $Bitmap? Извиняюсь, раньше с винтом не работал
вот - http://dump.ru/files/o/o9303217327/ Это книжка Неббета по NativeAPI, мотай на страничку 475 - там пример который при определённых входных параметрах (надеюсь с англ. проблем не будет) позволяет копировать неименованные атрибуты данных метафайлов ntfs (собственно других данных например у $Bitmap нет). насколько мне не изменяет память файл $Bitmap имеет индекс 7 в MFT (смотри Кэрриэ чтоб не ошибиться).. Думаю проблем не должно возникнуть, хотя чтоб самому вкурить что в примере происходит надо достаточно чётко понимать устройство NTFS... кластерные цепочки и прочую хренотню.
Ansadian Если это не из корзины, то тогда есть еще область восстановления( по умолчанию 10% от диска) - могло оттуда восстановить. Чудес не бывает, если нулями затрешь, то не может восстановить данные.
Как вариант можно затерать файлы перед удалением а потом удалять, тоесть файл восстановится но содержимое будет уже нули и еденицы, я например такой подход использую
2FED а разница если наоборот.. valterg если можно поподробней (ссылку на источник), даж самому стало интересно. ничего про такую область не слышал, можт имеется ввиду журналирование и откат изменений ntfs
Cneg Свойства системы->Восстановление Выбираешь логический диск и "Параметры". Если отключишь фуекцию - все файлы удалятся. На диске естественно в секторах все останется. После этого нулишь свободное место - уверен что не восстановится. Просто я всегда слежу за свободным местом и после установки ХП уж очень много места пропало... Я не сразу нашел, но искал. Cneg Разница в том, что тогда любая система сохранения удаленного накроется медным тазом и не придется смотреть чего нового изобрели.
Cneg Начал копать в сторону ГОСТ'а. Алгоритма как такового нет. Просто сказанно что данные надо затереть, а как и каким образом не уточняется. Зато нашел статейку. http://www.ci.ru/inform03_07/bezop.htm По-мойму хорошая.
valterg так это ж и есть ни что иное как журналирование событий ntfs, там НЕ (!) конкретно данные хранятся а то как они изменялись. вся эта байда для того чтобы в случае ошибок можно было сделать откат на конкретный момент времени (типа последнее рабочее состояние). То есть если как у Ansadian данные всё-таки восстанавливаются, надо чистить последние записи журналов.. В своё время я с таким не сталкивался, сразу получилось безвозвратно затирать Pavia статья короткая, но изложено всё основное. где-то у меня была работа с текстовкой по данному вопросу.. что значила фраза ?
Cneg Про журнал я знаю - он маленький и данные(все) не может хранить. В папке "System Volume Information" ХП создает папки восстановления и там хранятся именно файлы. Нечто похожее было в Win ME, только там папку было видно и ее содержимое при попытке уничтожения опять "восстанавливалось".