Я скопировал много фотографий на внешний жесткий диск со старого компьютера, который использовался пожилым человеком и, вероятно, был заражен вредоносным ПО. Я поместил фотографии на другой жесткий диск. Теперь мой внешний жесткий диск полностью пуст, но я параноик и хотел бы быть уверенным, что на диске не осталось вредоносного ПО или вредоносного кода.
Поэтому я хотел бы заполнить его нулями, но не разрушая файловую систему или таблицу разделов. В некотором смысле, я хотел бы получить свой диск обратно, как будто я его только что купил.
Возможно ли это сделать и есть ли команда Linux для этого?
Мой жесткий диск отформатирован в NTFS с таблицей разделов msdos(mbr).
решение1
Простой ответ:
mount /dev/your/disk /some/free/mountpoint
dd if=/dev/zero of=/some/free/mountpoint/zero bs=512
sync # See edit below
rm /some/free/mountpoint/zero
umount /some/free/mountpoint
Это сделает именно то, что вы просили: перезапишет все пространство, доступное файлам в файловой системе, нулями.
Более сложный ответ:
- Без уничтожения MBR вы не можете быть уверены, что у вас нет вируса MBR
- пустая файловая система не имеет ценности
Поэтому я рекомендую вам просто уничтожить устройство (т.е. обнулить устройство, включая MBR и файловую систему), а затем просто пересоздать таблицу разделов иmkfs.ntfs -f -L LABEL -I
РЕДАКТИРОВАТЬ
Как отметил @Nyos в комментариях, если драйвер NTFS не монтирует синхронизацию (я не знаю значений по умолчанию), хорошей идеей будет вставить дополнительный sync
перед rm
. Текущая версия (начиная с Ubuntu 18.04, полностью пропатченной до 2020-05-02) не выделяет отложенных блоков, поэтому sync
не является строго необходимым, так как все выделенные блоки будут записаны в umount
, но мы не знаем будущего, и я не читал полный исходный код.
В том же ключе: если драйвер NTFS однажды получит поддержку разреженных файлов, нам, возможно, придется использовать /dev/urandom
вместо /dev/zero
, чтобы избежать (почти) бесконечной записи.
решение2
Хотя это вообще не отвечает на ваш вопрос... тем не менее:
Во-первых, это действительно очень плохая идея — обнулять диск. Это справедливо для «традиционных» дисков, и тем более для твердотельных дисков. Обнуление диска — тривиальная задача (просто создайте файл и заполните его, Ойген Рик дает точный рецепт), но это занимает много времени и изнашивает диск. Циклы записи не бесконечны, на любом жестком диске. Также
обратите внимание, что у вас даже нет гарантии, что перезапись действительно работает так, как задумано. Для ваших целей разница не будет заметна, но для других целей (например, безопасное стирание конфиденциальных данных) этот подход совершенно ненадежен. Это потому, что у вас нет абсолютно никакой возможности узнать, что происходит, когда вы что-то перезаписываете, благодаря выравниванию износа и перераспределению. Диски делают много вещей, о которых никто (включая операционную систему!) не знает или даже не имеет возможности сообщить, не говоря уже об изменении. Если, например, сектор был перераспределен, потому что контроллер не был доволен количеством повторных попыток, или CRC, или чем-то еще, вы можете делать все, что хотите, в дальнейшем, вы просто больше не получите доступ к этому сектору. Никогда больше. Тем не менее, данные или то, что от них осталось (и вы не можете знать) остаются там, и потенциальный вор может их прочитать.
Во-вторых, при работе в режиме полной паранойи, очень, очень плохая идея сохранять файловую систему (и MBR), особенно когда диск "пустой". Кроме UUID файловой системы, вы ничего не потеряете, просто создав новую файловую систему (что, возможно,возможно(немного досадно в некоторых ситуациях, но это тоже легко исправить). Однако вы получаете уверенность, что ничего не осталось в местах, где вы этого не ожидаете (например, MBR).
В-третьих, плохая идея — обнулить и повторно использовать «пустую» файловую систему, которая на самом деле вовсе не пустая. Это плохо с точки зрения производительности, когда вместо этого можно просто создать новую FS (без устаревших записей журнала изменений, невидимых элементов, забытых потоков, атрибутов, фрагментированных MFT...) с нуля. Пересоздание всего с нуля не только намного безопаснее, но и намного быстрее, и, скорее всего, приведет к улучшению общей производительности в будущем.
вкратце
Большинство устройств имеют специальную функцию безопасного стирания или «сброса к заводским настройкам» (что одно и то же), которая поддерживается сопутствующим инструментом управления или каким-либо другим инструментом через стандартную команду ATA. Диск будет использовать наиболее эффективный, наименее разрушительный метод (некоторые диски действительно перезаписывают весь диск, не поддерживая эту функцию, но большинство просто сбрасывают ключ шифрования или битового скремблирования, что срабатывает практически мгновенно, независимо от размера диска).
hdparm
который доступен практически в каждом дистрибутиве Linux и имеет опцию --security-erase
именно для этой цели.
Это даст вам диск"как будто только что купил"за исключением того, что он использовался некоторое время. Он сделает это самым быстрым (в пределах технически возможного) и наименее губительным для диска способом. После этого разбейте его на разделы и создайте файловую систему, готово.