Используйте DD для рекурсивной записи определенного файла

У меня есть жесткий диск, который я хочу перезаписать, но не с нулевыми байтами, а с сообщением.

48 69 64 64 65 6e 20 = "Скрытый"

Вот моя команда до сих пор:

echo "Hidden " > /myfile
dd if=/myfile of=/dev/sdb bs=1M

Примечание: я также попробовал ряд параметров, таких как количество и убедить, но безрезультатно

Теперь это хорошо. Когда я бегу:

dd if=/dev/sdb | hexdump -C | less

Я вижу первые несколько байтов, записанных поверх, однако остальное не изменяется. Я хотел бы рекурсивно написать "Скрытый" на диск.

3 ответа

Решение

У меня нет запасного диска, чтобы попробовать это, но вы можете использовать yes Команда непрерывно толкать вашу строку в трубу:

yes "Hidden" | dd of=/dev/sdb

Я предполагаю, что после того, как dd записал весь диск, он закроет канал, и эта команда завершится.

Выше будет новая строка-разделитель "скрытой" строки. Если вы хотите разделить пробелами, как в вопросе вы можете сделать:

yes "Hidden" | paste -d' ' -s - | dd of=/dev/sdb

Или, если вы хотите, чтобы он был разделен нулями:

yes "Hidden" | tr '\n' '\0' | dd of=/dev/sdb

Если вы не укажете if параметр, вход считывается из стандартного ввода. Это позволяет вам сделать что-то вроде этого:

dd of=/dev/sdb < for((i=0;i<100000;i++)); do echo 'Hidden '; done;

Значение 100000 очевидно должно быть как минимум diskSizeInBytes / strlen('Hidden '),

Учитывая последствия, я не проверял это для вас, но это должно сработать;)

У dcfldd, ветки dd, есть некоторые дополнительные функции, которые вы можете найти полезными. Например, ваша проблема будет решена путем:

dcfldd textpattern="Hidden " of=/dev/sdb bs=1M
Другие вопросы по тегам