Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
28:02:2008, 07:05
|
|
Новенький ![]() Группа: Программист Сообщений: 47 Регистрация: 8:06:2006 Из: Амбер Пользователь №: 4 695 Специализация: Программист Репутация: 1
|
Всем здравствуйте! Собственно такая проблема. Есть на винте инфа, которую нужно как можно скорее снести нафиг, причём она удалена, но такими программами, как EasyRecovery, даже Uneraser и Acol все равно восстанавливается. Для этого написал собственную программу, создающую один здоровый файл на все свободное место, и потом его стирающую. Не помогло. Тогда я не стал его стирать, а перезагрузился с ним и обнаружил, что еще немного места осталось (16 кило). То есть часть места видро занимает себе. Я отключил восстановление системы, залез в SystemVolumeInformation и потер там все (мало ли что!), затем стер большой файл, дефрагментировал, накопировал 50-метровых файлов до кучи, перенес их пару раз из папки в папку, дефрагментировал, стер, снова дефрагментировал. Но все равно восстанавливается!
То есть мне нужно напрямую обратиться к винту, и забить все свободное место нулями раз на двадцать. Хочется сделать это на низком уровне, потому что такие знания не помешают. Можете что-нибудь подсказать? Я так понимаю, придется писать драйвер на асме? |
|
Сообщение
#1
|
|
![]() |
|
|
28:02:2008, 07:16
|
|
============== ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 740 Регистрация: 11:01:2007 Пользователь №: 8 750 Специализация: specialist Репутация: 27
|
format c: d: e: ...
|
|
Сообщение
#2
|
|
|
|
28:02:2008, 07:42
|
|
Новенький ![]() Группа: Программист Сообщений: 99 Регистрация: 30:07:2007 Из: Витебск Пользователь №: 12 080 Специализация: программист Репутация: 6
|
Файловая система, наверное, NTFS?
Тогда, учитывая все опробованные тобой способы, стертый файлик, видимо был небольшого размера, и, хранился непосредственно в таблице MFT. В таком случае перезапись свободного места большими файлами действительно не поможет. И, кстати, про 7 или 10 раз это бред, ты ведь файлики когда копируешь они с первого раза записываются Как вариант используй продвинутый дефрагментатор, умеющий дефраментировать MFT. Попробуй создать достаточно большое количество файлов небольшого размера (такого, каким был исходный файл). Поищи в конце концов утилиты для гарантированного удаления файла - не может быть чтобы с такой ситуацией столкнулся только ты. Ну и на будущее стирай подобные файлы утилитами, которые перед удалением самого файла записывают в него всякий бред. Ну или сам заполни такой файл всякой ерундой и только затем удаляй. Если и это ничем не поможет, то format тебе в помощь. |
|
Сообщение
#3
|
|
|
|
28:02:2008, 09:39
|
|
Божественный ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 816 Регистрация: 4:09:2006 Из: Минск Пользователь №: 6 316 Специализация: C++ Репутация: 31
|
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
|
|
|
|
28:02:2008, 10:24
|
|
Новенький ![]() Группа: Программист Сообщений: 40 Регистрация: 15:07:2007 Из: Минск Пользователь №: 11 846 Специализация: VC++ .NET DX9 MFC ATL STL Репутация: 0
|
Не морочь себе голову. Сомнительно, что эта информация стоит БЕШЕНЫХ БАБОК. Используй "быстрый способ" из поста выше.
|
|
Сообщение
#5
|
|
|
|
29:02:2008, 07:00
|
|
Новенький ![]() Группа: Программист Сообщений: 47 Регистрация: 8:06:2006 Из: Амбер Пользователь №: 4 695 Специализация: Программист Репутация: 1
|
Если бы мне нужно было снести все данные, я бы не форматировал, а выкинул бы винт в окно
|
|
Сообщение
#6
|
|
|
|
29:02:2008, 08:21
|
|
Новенький ![]() Группа: Программист Сообщений: 99 Регистрация: 30:07:2007 Из: Витебск Пользователь №: 12 080 Специализация: программист Репутация: 6
|
Не советую напрямую к винту обращаться, запороть раздел можно, как 2 байта переслать.
Если уж форматировать нельзя/неможешь/нехочешь, то просто преобразуй файловую систему FAT32->NTFS или NTFS->FAT32, в зависимости от того, какая у тебя сейчас. Потом дефрагментацию прогони и назад переконверти в исходную. После такого изврата ни одна прога для восстановления инфы уже ничего сделать не сможет. |
|
Сообщение
#7
|
|
|
|
29:02:2008, 09:15
|
|
Божественный ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 816 Регистрация: 4:09:2006 Из: Минск Пользователь №: 6 316 Специализация: C++ Репутация: 31
|
Но, собственно, я хотел спросить, как напрямую обратиться к винту. Код CreateFile("\\\\.\\PhysicalDrive<x>", ... ) И еще: Редактор диска своими руками P.S. Курите гугл, господа |
|
Сообщение
#8
|
|
|
|
1:03:2008, 19:16
|
|
Новенький ![]() Группа: Программист Сообщений: 47 Регистрация: 8:06:2006 Из: Амбер Пользователь №: 4 695 Специализация: Программист Репутация: 1
|
Silver Wind, спасибо за совет. К сожалению, я скачал программу OnTrack DataEraser. Слегка выпив, начал разбираться в ней. Пролистал "вполглаза" руководство, создал загрузочную дискету, грузанулся и радостно стал ждать, пока сработает американский метод в три прохода. Ждал минут сорок, потом не вытерпел и отменил (легально, клавишей Esc), сойдет и так. Запустил винду и обнаружил, что винчестер квакнулся.
Оказывается, DataEraser стирала ВСЕ данные с винта. Новый вопрос - как восстановить данные после американского метода? European, то есть просто создаём файл, ассоциированный с диском? А дальше? Извините, ссылка битая Мне заливали, что придется писать собственный драйвер. Это правда? Сообщение отредактировал Coldfate - 1:03:2008, 19:19 |
|
Сообщение
#9
|
|
|
|
3:03:2008, 09:08
|
|
Божественный ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 816 Регистрация: 4:09:2006 Из: Минск Пользователь №: 6 316 Специализация: C++ Репутация: 31
|
European, то есть просто создаём файл, ассоциированный с диском? А дальше? Извините, ссылка битая Введите в Гугле "Редактор диска своими руками" - будет найдена куча зеркал. На всякий случай вот еще - http://www.citforum.ru/programming/delphi/disk_editor/ Почитаете, там все нормально расписано Мне заливали, что придется писать собственный драйвер. Это правда? Для чего? Т.е. для выполнения каких действий? Пролистал "вполглаза" руководство, ... Запустил винду и обнаружил, что винчестер квакнулся. Оказывается, DataEraser стирала ВСЕ данные с винта. Ну что тут скажешь |
|
Сообщение
#10
|
|
|
|
4:03:2008, 01:27
|
|
Новенький ![]() Группа: Программист Сообщений: 47 Регистрация: 8:06:2006 Из: Амбер Пользователь №: 4 695 Специализация: Программист Репутация: 1
|
Спасибо! Действительно подробно расписано. А как можно узнать, свободен сектор или нет? Повторять DataEraser очень не хочется
получается, алгоритм стирания свободного места прост как грабли: ищем свободные сектора и затираем их по десять раз. Это будет работать даже если файл в MFT. Наверное |
|
Сообщение
#11
|
|
|
|
4:03:2008, 09:40
|
|
Божественный ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 816 Регистрация: 4:09:2006 Из: Минск Пользователь №: 6 316 Специализация: C++ Репутация: 31
|
ищем свободные сектора и затираем их по десять раз Не обязательно затирать их по 10 раз, достаточно одного. Здесь не будем рассматривать мифическую остаточную намагниченность. Если посмотришь, то российский стандарт на этом и основан. Ведь при штатном удалении файла самого физического удаления не происходит и файл только помечается как удаленный. Благодаря этому и возможно восстановление. А как можно узнать, свободен сектор или нет? Вот тут, ИМХО, все сложнее... На мой взгляд нужно считывать таблицу размещения файлов, потом для каждого файла получать список занятых секторов, формировать единый список занятых адресов, а потом проверять находится ли анализируемый сектор в этом списке... Короче очень туманно |
|
Сообщение
#12
|
|
|
|
6:03:2008, 07:31
|
|
Новенький ![]() Группа: Программист Сообщений: 47 Регистрация: 8:06:2006 Из: Амбер Пользователь №: 4 695 Специализация: Программист Репутация: 1
|
Все равно спасибо.
|
|
Сообщение
#13
|
|
![]() |
|
Текстовая версия | Сейчас: 17:05:2008 - 10:48 |