web-dev-qa-db-ja.com

ファイルを削除せずにファイルの内容を破棄する方法

私の目標は、MS Office Wordなどのそれぞれのソフトウェアで開く(または復元する)ことができない元のサイズのファイルを作成することです。私の目的は、ファイルの内容を共有したくないときにファイルの存在をシミュレートすることです。理想的にはファイルの内容はランダムなバイトで完全に上書きされる必要がありますファイルサイズは元のサイズと同じままである必要があります。

これは、16進エディターやメモ帳を使用して実行できる場合があり、数バイトしか変更できず、ファイルが使用できなくなることがあります。ただし、画像や音声など、まだ開くことができるがアーティファクトがある形式では、常に機能するとは限りません。

まだ質問に答えるように私に要求している最も好奇心旺盛なユーザーのために「なぜこれが必要なのですか?」-私はしたくないのでこれが必要です私の開発を、ファイルの共有を強制する何人かの人々と共有してください。時々あなたはただ必要です。他の多くのユースケースを考えることができます-ファイルのコピーまたはバックアップ操作のペイロードをシミュレートするため、または開発したソフトウェアをテストするために、ジャンクを適切に処理できます。

ファイルをランダムデータで上書きできる安全なシュレッドユーティリティをいくつかテストしましたが、その後、それらのファイルは削除されます。削除手順をオフにするオプションを見たことがありません。そのようなオプションが存在する場合、それは解決策になります。

4
Mike

Random Data File Creator を利用した簡単なアプローチを作成しました。

Mikeは、RDFCがファイルにランダムデータを正しく入力しないと述べました。著者にメールを送り、この問題を報告しました。とりあえず、 rdfc.exeのドロップイン置換 を実装しました。コンパイルして使用したい場合は、 ソースからプロジェクトをどのようにコンパイルしますか? を参照してください。

このWindowsコマンドラインスクリプトは、必要な処理を実行します。

@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

rdfc.exeをスクリプトと同じディレクトリに配置する必要があります。スクリプトには、ターゲットディレクトリという1つのパラメータが必要です。ターゲットディレクトリ内のすべてのファイルは、まったく同じサイズのファイルに置き換えられますが、ランダムなデータで埋められます。

enter image description here

6
Der Hochstapler

パワーシェル

外部ツールは必要ありません。ボーナスとして、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

インスピレーション

3
nixda

bcryptは問題なく動作します。それをcygwinでビルドし、cygwindllをUSBペンドライブに入れます。

編集:または、選択したキーでそれらを排他的論理和することによって、それを簡単に難読化します。それは少なくともファイルサイズを保存します。ドキュメントがたくさんあり、すばやく実行したい場合は、ファイルの先頭から最大8バイトを超えるバイトを変更する必要はありません。しばらく前にこれを行ったランサムウェアがいくつかありました。私は明らかに暗号学者ではありませんが、ファイルを難読化するために使用されるキーを取得するファイルをふるいにかけるのはかなり退屈なものです。または、dd(unxutils.sf.net for windows)を次のように使用します。$ dd conv = swab if = infile of = outfileドキュメント全体のループで。警告:そのようにddを使用すると、ばかげているように見えます。同じコマンドでプロセスが逆になります。

0
user400344