Question Comment détruire le contenu du fichier sans supprimer les fichiers


Mon objectif est d'avoir des fichiers de taille d'origine qui ne peuvent pas être ouverts (ou récupérés) dans leurs logiciels respectifs, tels que MS Office Word. Mon but est de simuler la présence de fichiers alors que je ne souhaite partager aucun contenu de fichiers. Idéalement le contenu du fichier doit être complètement remplacé par des octets aléatoires alors que la taille du fichier doit rester identique à l'original.

Je sais que cela peut parfois être fait avec un éditeur hexadécimal ou même un bloc-notes où l’on peut changer seulement quelques octets et le fichier devient inutilisable. Mais cela peut ne pas toujours fonctionner pour certains formats comme les images et le son qui pourraient encore être ouverts, mais avec des artefacts.

Pour les utilisateurs les plus curieux qui me demandent toujours de répondre à la question "Pourquoi as-tu besoin de ça?" - J'en ai besoin parce que je ne veux pas partager mes développements avec certaines personnes qui me forcent à partager les fichiers. Parfois, vous avez juste besoin de Vous pouvez penser à de nombreux autres cas d'utilisation - pour simuler la charge utile pour les opérations de copie ou de sauvegarde de fichiers, ou pour tester le logiciel que vous développez et gérer correctement les fichiers indésirables.

J'ai testé un certain nombre d'utilitaires de destruction sécurisés qui peuvent écraser des fichiers avec des données aléatoires, mais après cela, ces fichiers sont supprimés. Je n'ai pas vu d'option pour désactiver l'étape de suppression. Si une telle option existait, ce serait une solution.


4
2018-06-15 11:11


origine


@ Ramhound: c'est ridicule. Le logiciel pour ce faire n’était peut-être pas déjà écrit, mais il est presque trivial d’écrire (bien qu’il soit un peu plus qu’un seul vers dans la plupart des langages de programmation). Bien sûr, il existe un moyen d'interroger la taille d'un fichier et d'y écrire exactement autant de octets (ou aléatoires)! - Celada
Techniquement, une question intéressante, mais pourquoi voudriez-vous? Cela semble vindicatif: "Si quelqu'un copie mes fichiers, je veux que son logiciel / système plante"? Ne vaut pas la peine IMO - Jan Doggen
Pourquoi ces fichiers "détruits" doivent-ils avoir la même taille que l'original? Ils sont inutilisables. Pourquoi serait-il important quelle taille ils sont? - Der Hochstapler
@OliverSalzburg J'ai besoin de conserver la taille d'origine pour que la liste des fichiers ressemble à celle de l'explorateur. - Mike


Réponses:


J'ai écrit une approche rapide en utilisant le Créateur de fichiers de données aléatoires.

Mike a noté que RDFC ne remplit pas correctement le fichier avec des données aléatoires. J'ai envoyé un email à l'auteur et signalé ce problème. Pour le moment, j'ai mis en place un remplacement sans rendez-vous pour rdfc.exe. Si vous voulez le compiler et l'utiliser, voyez s'il vous plaît Comment compilez-vous un projet à partir de la source?

Ce script de ligne de commande Windows fera ce que vous voulez:

@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

Il faut que rdfc.exe est placé dans le même répertoire que le script. Le script nécessitera 1 paramètre, le répertoire cible. Chaque fichier du répertoire cible sera remplacé par un fichier de même taille, mais rempli de données aléatoires.

enter image description here


6
2018-06-19 12:36



J'aime la récursion dans le script - Mike
@ Mike: Je n'ai jamais vraiment vérifié la sortie, je me suis juste dit qu'il fournit ce qu'il annonce: P Il y avait d'autres suggestions à stackoverflow.com/questions/533636/... bien que. C'était juste le plus élégant qu'il paraisse. Et, oui, je crée évidemment toutes mes réponses à partir d'autres réponses SO; - Der Hochstapler
@Mike: "J'en ai besoin parce que je ne veux pas partager mes développements avec certaines personnes qui me forcent à partager les fichiers." - Franchement, je ne vois pas comment ils vont ne rien soupçonner si aucun des fichiers que vous partagez avec eux s’ouvrent, à moins qu’ils ne soient en état de mort. Et si on les trompe si facilement, est-il vraiment important de savoir quelle sorte de données (aléatoires) sont présentes dans les fichiers? Comment le contenu totalement (pseudo) aléatoire affectera-t-il quelque chose par rapport à une séquence répétée de "2 octets aléatoires suivis de 2 octets zéro"? - Karan
@Mike Et vous êtes sûr qu'ils ne vous demanderont pas simplement d'apporter un autre exemplaire? - Der Hochstapler
@Mike si un disque optique / clé USB échoue alors ils ne pourraient rien lire, encore moins voir les fichiers. Même si quelques secteurs seulement étaient corrompus, la majorité des fichiers resteraient lisibles (ou, au minimum, une bonne partie de leur contenu). Et si vous traitez des fichiers sur un lecteur réseau / d'entreprise, il est probable qu'ils effectuent également des sauvegardes périodiques, ce qui rend cette technique encore moins efficace. - Breakthrough


PowerShell

Ne nécessite pas d'outil externe. En bonus, il préserve le temps LastWrite. Les autres temps ne sont pas modifiés.

# 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

Avant

enter image description here

Après

enter image description here

Inspiration


3
2017-12-26 06:24





bcrypt fonctionnera très bien. Construisez-le en cygwin et apportez le dll cygwin sur une clé USB.

Edit: Ou plutôt le masquer de manière triviale en les corrigeant avec une clé de votre choix. Cela préserverait au moins la taille des fichiers. Il n'est pas nécessaire de modifier plus de 8 octets, au maximum un ko, à partir du début des fichiers si vous avez beaucoup de documents et que vous souhaitez que cela se fasse rapidement. Il y a eu un ransomware qui l'a fait il y a quelque temps. Je ne suis évidemment pas cryptographe, mais c'est assez ennuyeux de passer au crible des fichiers dérivant de la clé utilisée pour les masquer. Ou utilisez dd (à partir de unxutils.sf.net pour Windows) ainsi: $ dd conv = swab if = infile de = outfile en boucle sur vos documents. Attention: utiliser dd comme ça vous fera paraître stupide. La même commande inversera le processus.


0
2017-12-26 04:20



Cela semble trop compliqué pour une opération aussi simple, et le cryptage du fichier modifierait légèrement sa taille.