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

2576
Mike

Моя цель - иметь файлы оригинального размера, которые нельзя открыть (или восстановить) в соответствующих программах, таких как MS Office Word. Моя цель - симулировать наличие файлов, пока я не хочу делиться содержимым файлов. В идеале содержимое файла должно быть полностью перезаписано случайными байтами, а размер файла должен оставаться таким же, как и в оригинале.

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

Для самых любознательных пользователей по-прежнему требуются ответы на вопрос «Зачем вам это нужно?» - Мне это нужно, потому что я не хочу делиться своими разработками с людьми, которые заставляют меня делиться файлами. Иногда тебе просто нужно. Можно подумать о многих других случаях использования - для имитации полезной нагрузки для операций копирования или резервного копирования файлов или для тестирования разработанного вами программного обеспечения, которое может изящно обрабатывать нежелательные файлы.

Я протестировал несколько утилит безопасного уничтожения, которые могут перезаписывать файлы случайными данными, но после этого эти файлы удаляются. Я не видел возможности отключить шаг удаления. Если бы такой вариант существовал, это было бы решением.

4
@Ramhound: это смешно. Программное обеспечение для этого, возможно, еще не было написано, но писать его почти тривиально (хотя в большинстве языков программирования это чуть больше одной строчки). Конечно, есть способ запросить размер файла и записать в него ровно столько нулевых (или случайных) байтов! Celada 11 лет назад 4
Технически интересный вопрос, но зачем вам это? Звучит злопамятно: «Если кто-то копирует мои файлы, я хочу, чтобы его программное обеспечение или система зависали»? Не стоит хлопот ИМО Jan Doggen 11 лет назад 0
Почему эти «уничтоженные» файлы должны быть того же размера, что и исходные? Они непригодны. Почему это имеет значение, какого они размера? Der Hochstapler 11 лет назад 2
@OliverSalzburg Мне нужно сохранить исходный размер, чтобы список файлов выглядел очень похожим на подробности в проводнике. Mike 11 лет назад 0

3 ответа на вопрос

6
Der Hochstapler

I've wrote a quick approach utilizing the Random Data File Creator.

Mike noted that RDFC doesn't correctly fill the file with random data. I've emailed the author and reported this issue. For the time being, I've implemented a drop-in replacement for rdfc.exe. If you want to compile and use it, please see How do you compile a project from source?

This Windows command line script will do what you want:

@ECHO OFF SETLOCAL IF "%1"=="" GOTO missingParam GOTO :begin :missingParam ECHO Missing target. Use %~nx0 [DRIVE:\]DIRECTORY GOTO :eof :begin SET RDFC=%CD%\rdfc.exe PUSHD %1 CALL :treeProcess POPD ENDLOCAL GOTO :eof :treeProcess FOR %%f IN (*.*) DO ( ECHO | SET /P=Shredding %%f... %RDFC% %%f %%~zf B overwrite > NUL ECHO %%~zf random bytes written. ) FOR /D %%d IN (*) DO ( CD %%d CALL :treeProcess CD .. ) EXIT /B 

It requires that rdfc.exe is placed in the same directory as the script. The script will require 1 parameter, the target directory. Every single file in the target directory will be replaced with a file of exactly the same size, but filled with random data.

enter image description here

Мне нравится, как вы делаете рекурсию в сценарии Mike 11 лет назад 0
Есть небольшая ошибка с `rdfc`. На выходе я получаю 2 случайных байта, за которыми следуют 2 нулевых байта и так далее. Mike 11 лет назад 0
@Mike: я на самом деле скопировал это с http://stackoverflow.com/questions/8397674/windows-batch-file-looping-through-directories-to-process-files Der Hochstapler 11 лет назад 0
@Mike: я никогда не проверял вывод, я просто подумал, что он предоставляет то, что рекламирует: P Хотя были и другие предложения по адресу http://stackoverflow.com/questions/533636/generating-random-files-in-windows. Это было просто самое элегантное, как кажется. И, да, я, очевидно, создаю все свои ответы из других ответов SO; D Der Hochstapler 11 лет назад 1
@Mike: «Мне это нужно, потому что я не хочу делиться своими разработками с людьми, которые заставляют меня делиться файлами». - Честно говоря, я не вижу, как они ничего не заподозрят, если * ни один из файлов, которыми вы поделитесь с ними, не откроется, если только они не умрут. И если их действительно так легко одурачить, действительно ли имеет значение, какие (случайные) данные присутствуют в файлах? Как полностью (псевдо) случайное содержимое повлияет на что-либо по сравнению с повторяющейся последовательностью «2 случайных байта, за которыми следуют 2 нулевых байта»? Karan 11 лет назад 1
@ Каран Да, достаточно справедливо. Но почему бы не стремиться к совершенству? 2 + 2 байта не похожи на шум, и если бы это был шум, я бы сказал, что вышел из строя оптический диск или флешка. Я знаю, что это звучит глупо, но для не супер пользователей это может работать. Mike 11 лет назад 0
@ Майк И ты уверен, что они не просто попросят тебя принести еще одну копию? Der Hochstapler 11 лет назад 1
@ Майк, если оптический диск / USB-флешка * выходит из строя *, они не смогут ничего прочитать, не говоря уже о просмотре файлов. Даже если было повреждено всего несколько секторов, большинство файлов все равно было бы доступно для чтения (или, по крайней мере, значительная часть их содержимого). И если вы имеете дело с файлами на сетевом / корпоративном диске, вероятно, они также периодически создают резервные копии, делая эту технику еще менее эффективной. Breakthrough 11 лет назад 1
@ Майк Я написал автору RDFC письмо и сообщил о проблеме. Я также написал небольшой инструмент для замены RDFC, который вы можете найти на GitHub. Ссылка в ответе выше. Der Hochstapler 11 лет назад 0
@ Прорыв Пожалуйста, не пойми меня неправильно, я это знаю. Но легче обмануть людей, показывающих шум, чем объяснять столбцы с нулевым шумом. Mike 11 лет назад 0
@OliverSalzburg Отлично! Спасибо! Mike 11 лет назад 0
3
nixda

PowerShell

Не требует внешнего инструмента. В качестве бонуса он сохраняет время LastWrite. Другие времена не изменены.

# Get file as item to access content and file dates $file = Get-Item "C:\Users\Nixda\Desktop\input.txt"   # Save write time to temp variable for later use $oldWriteTime = $file.LastWriteTime   # Create an empty array of the same size as your file size in bytes $content = New-Object Byte[] $file.length   # Fill the array using a System.Random object. Here is the magic (New-Object Random).NextBytes($content)  # Write the array to the same file with System.IO.File [IO.File]::WriteAllBytes($file,$content)  # Set back old write time $file.LastWriteTime = $oldWriteTime 

До

enter image description here

После

enter image description here

вдохновение

0
user400344

bcrypt будет работать нормально. Постройте его в Cygwin и возьмите с собой Cygwin DLL на USB-Pendrive.

Редактировать: Или, скорее, тривиально запутать его, хоринг их с ключом по вашему выбору. Это, по крайней мере, сохранит размеры файлов. Нет необходимости изменять более 8 байт, самое большее килобайт, с начала файлов, если у вас много документов и вы просто хотите сделать это быстро. Был некоторый вымогатель, который сделал это некоторое время назад. Я, очевидно, не криптограф, но довольно скучный материал, просеивающий файлы, получая ключ, используемый для их запутывания. Или используйте dd (из unxutils.sf.net для Windows) таким образом: $ dd conv = swab if = infile of = outfile в цикле между вашими документами. Предупреждение: использование dd, как это сделает вас выглядеть глупо. Эта же команда перевернет процесс.

Это кажется слишком сложным для такой простой операции, и шифрование файла немного изменит его размер. 9 лет назад 0