Если вам нужна большая "случайность", вы можете не использовать /dev/urandom
напрямую, а вместо этого использовать обычное устройство dm-crypt со случайным ключом.
Он идеально подходит для перезаписи устройства, но, комбинируя его с файлом фиксированной длины, вы можете получить фиксированную длину случайных данных, не ожидая /dev/urandom
.
(Хотя ваша главная проблема, кажется, ждала последовательных символов со strings
, это все равно может быть полезно и быстрее, решая вашу "проблему предметной строки")
Вот соответствующий раздел из часто задаваемых вопросов cryptsetup:
2.19 Как я могу стереть устройство с криптографической случайностью?
Общепринятая рекомендация, если вы хотите не просто выполнить очистку с нуля, это использовать что-то вроде
cat /dev/urandom > <taget-device>
Это очень медленно и мучительно на скорости 10-20 МБ / с на быстром компьютере. Используя cryptsetup и обычное устройство dm-crypt со случайным ключом, это намного быстрее и обеспечивает тот же уровень безопасности. По умолчанию вполне достаточно.
Для настройки устройства сделайте следующее:
cryptsetup open --type plain -d /dev/urandom /dev/<block-device> to_be_wiped
Это отображает контейнер как обычный в / dev / mapper / to_be_wiped со случайным паролем. Для фактического стирания у вас есть несколько вариантов.
Простое стирание без индикатора прогресса:
cat /dev/zero > /dev/mapper/to_be_wiped
Индикатор прогресса от dd_rescue:
dd_rescue -w / dev / zero / dev / mapper / to_be_wiped
Индикатор прогресса моим потоковым измерителем "wcs" (доступен по адресу http://www.tansi.org/tools/index.html ):
cat /dev/zero | wcs > /dev/mapper/to_be_wiped
Или используйте обычный "dd", который дает вам прогресс при отправке SIGUSR1, см. Справочную страницу dd.
Удалите отображение в конце, и все готово.
Таким образом, создавая файл фиксированной длины, скажем, 10M с именем 10
fallocate -l 10M 10
Настройте обычный dm-crypt на 10 с именем /dev/mapper/crypt10
cryptsetup -v open --type plain -d /dev/urandom 10 crypt10
Теперь "перезаписываем" 10 со случайной степенью криптографии (с помощью dd
) и закрываем отображение
dd if=/dev/zero of=/dev/mapper/crypt10
cryptsetup -v close crypt10
Теперь у вас есть 10M случайных данных в файле 10 для воспроизведения или удаления всех непечатаемых символов, используя ответ Камиля: "перевод" всего файла в файл для печати с именем 10-printable
tr -dc '[:print:]' < 10 > 10-printable
оставляя около 3,8 млн печатаемых данных в 10-печатаемых.