Как забить диск нулями
Перейти к содержимому

Как забить диск нулями

  • автор:

BIOS. Форматирование жёсткого диска\заполнить нулями весь жёсткий диск. Прерывание 0x13

Всем привет
Нужна помощь по прерыванию 0x13 — BIOS
Не получается отформатировать жёсткий диск\заполнить нулями.
Вот код, но он не очищает весь диск, если у него большой размер (пробовал через директиву times добавлять размер, и на размере 5100000 байтов он не зачищает до конца (заполнял диск единицами, и смотрел, сколько он зачищает нулями)
Желательно, конечно, помочь с уже существующим кодом по прерыванию 0x13 / 0x3. Я знаю, что существует подфункция, специально предназначенная для форматирования диска, но я считаю её неудобной, поэтому до сих пор не разобрался с ней, и предпочитаю подфункцию для записи в диск буффера нулей
Собственно, главный код:

mov ah, 0x08 mov dx, 0x0080 ; Получаем информацию о диске (максимальный номер головки, сектора и т.д) int 0x13 mov dl, 0x80 ; Восстанавливаем номер жёсткого диска dec dh ; Корректируем номер головки @@: call .format_drive ; Начиная с конца головки, заполняем все секторы нулями dec dh cmp dh, 0xFF jne @b ; Заполняем секторы в головках с конца, пока она не будет равна 0 (загрузочный сектор тоже сотрётся, я знаю, мне это нужно) 

Дополнительная функция format_drive. Функция заполняет все секторы в головке нулями:

.format_drive: pusha xor cx, cx @@: mov ax, 0x0301 inc cx xor bx, bx mov es, bx mov bx, buffer ; buffer db 512 dup(0) int 0x13 jnc @b ; Пишем нули, пока разрешают! popa ret 

Заранее благодарен, кто подскажет более выгодный алгоритм по затиранию диска, потому что в Google я роюсь второй день, и ничего дельного не нашёл — хотя, попадалась программка на TASM с форума, которая форматирует диск на DOS, переписал её на BIOS и FASM, но всё равно ничего хорошего она сделать не смогла.

Как перезаписать диск нулями с помощью утилиты Bootice

Полное форматирование является простым и надёжным способом удалить с носителя все данные без возможности восстановления. При этом все сектора накопителя перезаписываются — заполняются нулями. Полностью очистить диск или флешку можно средствами одной Windows, используя команду clean all консольной утилиты Diskpart, также для этих целей можно воспользоваться сторонними инструментами, например, утилитой Bootice .

Предназначается эта программка для создания загрузочных и установочных флешек, а также восстановления MBR и PBR , но с таким же успехом её можно использовать для посекторного форматирования разных носителей и исправления имеющихся на них бэд-блоков. Рассмотрим эту функцию Bootice на примере «обнуления» накопителя объёмом 4 Гб, на котором записаны некие данные.

Управление дисками

Запускаем утилиту, выбираем на вкладке «Physical disk» накопитель, который нужно отформатировать и жмём кнопку «Sector Edit».

Bootice

Как видно из скриншота, выбранный диск заполнен данными.

Physical disk

Удалим их, заполнив все сектора нулями. Закрываем окно с кодом, переключаемся в главном окне утилиты на вкладку «Utilites», жмём кнопку «Sеlеct device» и ещё раз выбираем очищаемый диск.

Utilites

Далее нужно убедиться, что чекбокс «Physical disk» включён. В поле «Start LBA» оставляем 0, в поле «Sectors» стираем 1 и оставляем появившиеся там цифры — число имеющихся на диске секторов. Готово, жмём кнопку «Start Filling».

Start Filling

Будет запущена процедура перезаписи секторов. Работает утилита быстро, но на обработку носителя всё же понадобится некоторое время. По завершении очистки Bootice выведет уведомление. Если вы теперь откроете встроенный редактор, то увидите, что все сектора носителя сплошь заполнены нулями.

Встроенный редактор

А теперь внимание. Перезаписанный с помощью программы диск нужно будет проинициализировать повторно, иначе он будет недоступен в Проводнике.

Диск

Можно ли с помощью Bootice очистить диск с установленной системой? Из-под работающей Windows, разумеется, нет, более того, при этом вы рискуете получить ошибку, вследствие которой компьютер будет перезагружен в аварийном режиме. Зато вы можете загрузиться с носителя Live CD AOMEI PE Builder , в состав которого Bootice входит, и произвести очистку оттуда. Так как загрузится утилита только в память, доступ к базовому диску ничем ограничен не будет и вы легко сможете перезаписать все его сектора.

BootDev

Представим ситуацию, что вам необходимо избавиться от данных на диске без возможности их последующего восстановления. Например, вы решили продать жесткий диск, либо целиком компьютер, и вы не хотите чтобы после ваши данные мог кто-либо восстановить. Единственный верный способ, в данном случае, это полностью затереть каждый сектор диска нулями, или же случайными значениями. Есть множество инструментов для выполнения подобного рода процедур, и BOOTICE является одной из них.

Почему BOOTICE

Преимущество BOOTICE, в том, что при размере исполняемого файла ~500 KB, вы получаете в свое распоряжение инструмент обладающий просто огромными возможностями по созданию загрузочных устройств, и не только. В это «и не только», как раз входит возможность затирания диска.

Весь процесс осуществляется в удобном графическом интерфейсе, что намного удобнее использования к примеру программы dd для этих целей.

Скачать последнюю версию данной программы можно по ссылкам с этой страницы.

Обнуление Диска

Так почему же все таки обнуление диска? Процедура заполнения диска нулями, или любимы другими случайными значениями, позволяет полностью, избавится от имеющихся данных. Простое удаление разделов, или выполнение операции очистки таблицы разделов, на подобии diskpart clean , не избавляют носитель от имеющейся информации на нем. Примеры восстановления разделов на носителе с удаленной таблицей разделов рассматривались тут.

Перейдем собственно процессу обнуления диска. В качестве тестового диска я буду использовать обычную USB флешку объёмом в 16 GB. Перед началом всех действий взглянем на содержимое флешки с помощью HEX-редактора HxD.

Сектор 0. Запись MBR, после которой 2047 нулевых секторов, или отступ до первого раздела.

Сектор 2048. Первый раздел.

Сектор 99920. Содержимое текстового файла.

Запускаем BOOTICE и переходим на вкладку Utilites.

В секции Disk Sectors Filling нажимаем на кнопку Select a device. Откроется окно Fill Disk Sectors.

Взглянем на него более детально. Секция Filling object позволяет нам выбрать объект записи. Им может быть как физический диск.

Так и логический диск.

Такое разграничение весьма удобно, если вы точно уверенны в том, что необходимые для удаления данные хранятся именно на конкретном разделе. При этом начальный и конечный сектора заполнения будут равны внутренним границам указанного раздела.

Независимо от выбора типа объекта заполнения, будут доступны параметры указания диапазона заполнения. Находятся они в секции Sectors scope.

Параметр Start LBA позволяет указать начальный сектор заполнения. По умолчанию там указана цифра 0, что означат первый сектор от начала диска/раздела.

Параметр Sectors позволяет указать количество секторов которые будут записаны от начального сектора. По умолчанию значение данного параметра выставлено в 1 сектор. Если вы ходите указать весь диапазон секторов диска/раздела, то в качестве значения необходимо вписать 0. При этом необходимое значение подставится автоматически.

Параметр End LBA отображает номер конечного сектора. Так как отсчет идет от нуля, введенное значение параметра Sectors будет всегда на единицу меньше.

Параметр Tot. Secs отображает количество секторов текущего диска/раздела.

И последняя секция, Filling character. В данной секции вы можете указать шестнадцатеричное значение байта которым будут записаны сектора диска. По умолчание это 00, параметр Fill with 00.

Из доступных опций, вы можете выбрать заполнение значением FF (второй пункт Fill with FF), либо указать свое значение для заполнения (пункт Custom hex value).

После выставления необходимых параметров, можно выполнить запуск процесса заполнения диска. В моем случае это будет значение BD, в качестве символики имени сайта. Нажимаем кнопку Start Filling для начала операции.

Программа запросит подтверждение на выполнение процедуры затирания диска. На этом этапе у вас есть возможность отменить данную процедуру, если же все верно, то нажимаем OK. Начнется процесс записи.

Прогресс выполнения операции будет отображен соответствующим прогресс баром внизу окна. Числовое отображение прогресса при этом будет отображаться в заголовке окна.

Внимание! Если при старте операции у вас возникает ошибка «Отказано в доступе», убедитесь что вы закрыли все программы использующие целевой диск.

Процесс может занять продолжительное время, все зависит от скоростных характеристик целевого накопителя.

По окончании процесса, программа оповестит вас соответствующим сообщением. Нажимаем OK.

Теперь осталось просмотреть содержимое диска. Запускаем HxD и открываем USB флешку.

Сектор 2048.

Сектор 99920.

Последний сектор.

Диск полностью перезаписан значением BD.

Итог

В статье было рассмотрено: Как затереть диск с помощью программы BOOTICE? Как выполнить запись диска нулями с помощью программы BOOTICE? Как выполнить низкоуровневое форматирование с помощью программы BOOTICE?

Прописать диск нулями

Учись пользоваться поиском. Не это ищешь: dd if=/dev/zero of=/dev/sdX ?

mopsene ★★★
( 29.08.11 12:07:59 MSK )

dd if=/dev/zero of=/dev/
советую указывать bs для dd от этого зависит скорость.
про mhdd не в курсе.
Вообще смотря какие проблемы, если с логической структурой то наверно было бы достаточно только первые 512Байт затереть: dd if=/dev/zero of=/dev/ bs=512 count=1

Это как я понимаю суть твоего вопроса. Пусть меня поправят если что не так 🙂

The_Ketchup ★★
( 29.08.11 12:11:23 MSK )

А можно еще узнать какие у тебя «проблемы с винтом», может ты что-то не так понял?

mopsene ★★★
( 29.08.11 12:13:56 MSK )

Фигню посоветовали. Какие проблемы с винтом?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *