Como destruir o conteúdo do arquivo sem excluir arquivos

4

Meu objetivo é ter arquivos de tamanho original que não possam ser abertos (ou recuperados) em seus respectivos softwares, como o MS Office Word. Meu objetivo é simular a presença de arquivos enquanto não quero compartilhar nenhum conteúdo do arquivo. Idealmente, o conteúdo do arquivo deve ser totalmente sobrescrito com bytes aleatórios , enquanto o tamanho do arquivo deve permanecer o mesmo do original.

Eu sei que às vezes isso pode ser feito com o editor hexadecimal ou mesmo o bloco de notas, onde um pode alterar apenas alguns bytes e o arquivo torna inutilizável. Mas nem sempre funciona para alguns formatos, como imagens e áudio, que ainda podem ser abertos, mas com artefatos.

Para os usuários mais curiosos que ainda me pedem para responder a pergunta "Por que você precisa disso?" - Eu preciso disso porque não quero compartilhar meus desenvolvimentos com algumas pessoas que forçam me para compartilhar os arquivos. Às vezes você só precisa. Você pode pensar em muitos outros casos de uso - para simular a carga útil para operações de cópia de arquivos ou de backup, ou para testar o software que você desenvolve pode lidar com o lixo facilmente.

Eu testei um número de utilitários de fragmentação seguros que são capazes de sobrescrever arquivos com dados aleatórios, mas depois que esses arquivos são excluídos. Eu não vi uma opção para desativar a etapa de exclusão. Se tal opção existisse, isso seria uma solução.

    
por Mike 15.06.2013 / 13:11

3 respostas

6

Eu escrevi uma abordagem rápida utilizando o Criador de arquivo de dados aleatórios .

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?

Este script de linha de comando do Windows fará o que você deseja:

@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

Requer que rdfc.exe seja colocado no mesmo diretório que o script. O script exigirá 1 parâmetro, o diretório de destino. Cada arquivo no diretório de destino será substituído por um arquivo exatamente do mesmo tamanho, mas preenchido com dados aleatórios.

    
por 19.06.2013 / 14:36
3

PowerShell

Não requer uma ferramenta externa. Como bônus, ele preserva o tempo LastWrite. Outras vezes não são alteradas.

# 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

Antes

Depoisde

Inspiração

por 26.12.2014 / 07:24
0

o bcrypt funcionará bem. Construa-o em cygwin e traga a dll cygwin em um pen drive.

Edit: Ou, de preferência, ofusque-o trivialmente, xorando-os com uma chave de sua escolha. Isso pelo menos preservaria os arquivos. Não há necessidade de alterar mais do que 8 bytes, no máximo um kb, a partir do início dos arquivos, se você tiver muitos documentos e quiser apenas que isso seja feito rapidamente. Houve algum ransomware que fez isso há um tempo atrás. Im obviamente nenhum criptógrafo, mas é muito chato vasculhando arquivos derivando a chave usada para ofuscar eles. Ou use dd (de unxutils.sf.net for windows) assim: $ dd conv = swab if = infile of = outfile em um loop em seus documentos. Aviso: Usar dd assim fará você parecer bobo. O mesmo comando irá reverter o processo.

    
por 26.12.2014 / 05:20