Прямое обращение к винчестеру

  • Автор темы Coldfate
  • Дата начала
C

Coldfate

Всем здравствуйте! Собственно такая проблема. Есть на винте инфа, которую нужно как можно скорее снести нафиг, причём она удалена, но такими программами, как EasyRecovery, даже Uneraser и Acol все равно восстанавливается. Для этого написал собственную программу, создающую один здоровый файл на все свободное место, и потом его стирающую. Не помогло. Тогда я не стал его стирать, а перезагрузился с ним и обнаружил, что еще немного места осталось (16 кило). То есть часть места видро занимает себе. Я отключил восстановление системы, залез в SystemVolumeInformation и потер там все (мало ли что!), затем стер большой файл, дефрагментировал, накопировал 50-метровых файлов до кучи, перенес их пару раз из папки в папку, дефрагментировал, стер, снова дефрагментировал. Но все равно восстанавливается! :angry: :angry: :angry: Где-то на задворках инета нашел программку Clean Unused Disk Space, которая, цитирую, "вспахивает и зачищает свободное место на винте". Ничего подобного, она делала то же самое, что и я (в смысле большой файл на весь винт). Лично я пользовал TFileStream и обычное системное удаление. Потом узнал, что только 7-разовая перезапись того места, где хранилась инфа, дает какой-то шанс, что она не будет восстановлена. Тогда я раз 10 переписал все место. Что-то удалилось, что-то нет.

То есть мне нужно напрямую обратиться к винту, и забить все свободное место нулями раз на двадцать. Хочется сделать это на низком уровне, потому что такие знания не помешают. Можете что-нибудь подсказать? Я так понимаю, придется писать драйвер на асме?
 
S

Silver Wind

Файловая система, наверное, NTFS?
Тогда, учитывая все опробованные тобой способы, стертый файлик, видимо был небольшого размера, и, хранился непосредственно в таблице MFT. В таком случае перезапись свободного места большими файлами действительно не поможет. И, кстати, про 7 или 10 раз это бред, ты ведь файлики когда копируешь они с первого раза записываются :angry:
Как вариант используй продвинутый дефрагментатор, умеющий дефраментировать MFT. Попробуй создать достаточно большое количество файлов небольшого размера (такого, каким был исходный файл). Поищи в конце концов утилиты для гарантированного удаления файла - не может быть чтобы с такой ситуацией столкнулся только ты.

Ну и на будущее стирай подобные файлы утилитами, которые перед удалением самого файла записывают в него всякий бред. Ну или сам заполни такой файл всякой ерундой и только затем удаляй.

Если и это ничем не поможет, то format тебе в помощь.
 
E

European

Coldfate,
Алгоритмы гарантированного удаления данных:

Американский: DoD 5220.22–M
Число проходов – 4
1–й проход — случайно выбранные символы в каждый байт каждого сектора, 2 – дополнительные к записанным на 1–м проходе; 3 – снова случайно выбранные символы; 4 – проверка записей.

Американский NAVSO P–5239–26 (RLL)
Число проходов – 4
1–й проход – 0xFF во все сектора, 2 – 0x27FFFFFF, 3 – случайные последовательности символов, 4 – проверка.

Американский NAVSO P–5239–26 (MFM)
Число проходов – 4
1–й проход – 0xFF во все сектора, 2 – 0x7FFFFFFF, 3 – случайные последовательности символов, 4 – проверка.

Немецкий: VSITR
Число проходов – 7
1–й – 6–й – запись чередующихся последовательностей вида: 0x00 и 0xFF; 7–й – 0xAA; то есть 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xAA.

Российский: ГОСТ P50739–95
Число проходов – 1
Запись логических нулей (чисел вида 0x00) в каждый байт каждого сектора для систем с 6–го по 4–й класс защиты. Запись случайно выбранных чисел в каждый байт каждого сектора для систем с 3–го по 1–й класс защиты.

Метод П. Гутмана
Число проходов – 35
Метод Питера Гутмана является очень сложным и основывается на разработанной им теории уничтожения информации на жестких дисках

Метод Б. Шнайера
Число проходов – 7
В своей книге «Прикладная криптография» Брюс Шнайер предложил метод, состоящий из 7 проходов по диску: 1–й проход – запись логических единиц (0xFF), 2–й – нулей (0x00), 3–7 – случайно выбранных чисел.

Быстрый
Число проходов – 1
Запись логических нулей (чисел вида 0x00) во все очищаемые сектора.
 
T

tdr

Не морочь себе голову. Сомнительно, что эта информация стоит БЕШЕНЫХ БАБОК. Используй "быстрый способ" из поста выше.
 
C

Coldfate

Если бы мне нужно было снести все данные, я бы не форматировал, а выкинул бы винт в окно :D . Самое простое, по-моему, забить все случайными значениями. Но, собственно, я хотел спросить, как напрямую обратиться к винту. Я так понимаю, дальше придётся циклом по всем секторам и так далее проверять, помечен ли он как свободный, и если да, то мучить его аж семь раз.
 
S

Silver Wind

Не советую напрямую к винту обращаться, запороть раздел можно, как 2 байта переслать.
Если уж форматировать нельзя/неможешь/нехочешь, то просто преобразуй файловую систему FAT32->NTFS или NTFS->FAT32, в зависимости от того, какая у тебя сейчас. Потом дефрагментацию прогони и назад переконверти в исходную.
После такого изврата ни одна прога для восстановления инфы уже ничего сделать не сможет.
 
C

Coldfate

Silver Wind, спасибо за совет. К сожалению, я скачал программу OnTrack DataEraser. Слегка выпив, начал разбираться в ней. Пролистал "вполглаза" руководство, создал загрузочную дискету, грузанулся и радостно стал ждать, пока сработает американский метод в три прохода. Ждал минут сорок, потом не вытерпел и отменил (легально, клавишей Esc), сойдет и так. Запустил винду и обнаружил, что винчестер квакнулся.
Оказывается, DataEraser стирала ВСЕ данные с винта.

Новый вопрос - как восстановить данные после американского метода? :)

European, то есть просто создаём файл, ассоциированный с диском? А дальше? Извините, ссылка битая :)
Мне заливали, что придется писать собственный драйвер. Это правда?
 
E

European

European, то есть просто создаём файл, ассоциированный с диском? А дальше? Извините, ссылка битая
Введите в Гугле "Редактор диска своими руками" - будет найдена куча зеркал.
На всякий случай вот еще -
Почитаете, там все нормально расписано
Мне заливали, что придется писать собственный драйвер. Это правда?
Для чего? Т.е. для выполнения каких действий?


Пролистал "вполглаза" руководство,
...
Запустил винду и обнаружил, что винчестер квакнулся.
Оказывается, DataEraser стирала ВСЕ данные с винта.
Ну что тут скажешь ^_^ К таким софтинам руководство нужно читать обязательно
 
C

Coldfate

Спасибо! Действительно подробно расписано. А как можно узнать, свободен сектор или нет? Повторять DataEraser очень не хочется :(

получается, алгоритм стирания свободного места прост как грабли: ищем свободные сектора и затираем их по десять раз. Это будет работать даже если файл в MFT. Наверное :)
 
E

European

ищем свободные сектора и затираем их по десять раз
Не обязательно затирать их по 10 раз, достаточно одного. Здесь не будем рассматривать . Если посмотришь, то российский стандарт на этом и основан. Ведь при штатном удалении файла самого физического удаления не происходит и файл только помечается как удаленный. Благодаря этому и возможно восстановление.

А как можно узнать, свободен сектор или нет?
Вот тут, ИМХО, все сложнее... На мой взгляд нужно считывать таблицу размещения файлов, потом для каждого файла получать список занятых секторов, формировать единый список занятых адресов, а потом проверять находится ли анализируемый сектор в этом списке... Короче очень туманно :) Но как-то же ОС (или контроллер винчестера) это делает? Мои знания тут очень туманны. Если что-нибудь сделаешь - поделись, будет очень интересно
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!