1. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

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

Тема в разделе "Hardware", создана пользователем Coldfate, 28 фев 2008.

  1. Coldfate

    Coldfate Гость

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

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

    Silver Wind Гость

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

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

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

    Репутация:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    2.566
    Симпатии:
    2
    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) во все очищаемые сектора.
     
  4. tdr

    tdr Гость

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

    Coldfate Гость

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

    Silver Wind Гость

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

    Репутация:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    2.566
    Симпатии:
    2
    Код:
    CreateFile("\\\\.\\PhysicalDrive<x>", ... )
    И еще: Редактор диска своими руками
    P.S. Курите гугл, господа :unsure:
     
  8. Coldfate

    Coldfate Гость

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

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

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

    Репутация:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    2.566
    Симпатии:
    2
    Введите в Гугле "Редактор диска своими руками" - будет найдена куча зеркал.
    На всякий случай вот еще - http://www.citforum.ru/programming/delphi/disk_editor/
    Почитаете, там все нормально расписано
    Для чего? Т.е. для выполнения каких действий?


    ...
    Ну что тут скажешь ^_^ К таким софтинам руководство нужно читать обязательно
     
  10. Coldfate

    Coldfate Гость

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

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

    Репутация:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    2.566
    Симпатии:
    2
    Не обязательно затирать их по 10 раз, достаточно одного. Здесь не будем рассматривать мифическую остаточную намагниченность. Если посмотришь, то российский стандарт на этом и основан. Ведь при штатном удалении файла самого физического удаления не происходит и файл только помечается как удаленный. Благодаря этому и возможно восстановление.

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

    Coldfate Гость

    Репутация:
    0
    Все равно спасибо.
     
Загрузка...
Похожие Темы - Прямое обращение винчестеру
  1. Shandrik
    Ответов:
    1
    Просмотров:
    207
  2. Dock1100
    Ответов:
    7
    Просмотров:
    3.643
  3. Bafomet
    Ответов:
    20
    Просмотров:
    1.258
  4. Shouldercannon
    Ответов:
    1
    Просмотров:
    606
  5. proteam
    Ответов:
    7
    Просмотров:
    970

Поделиться этой страницей