Le caviardage qui n'était qu'un calque : mises à jour incrémentales PDF
Le défi
Un PDF d'accord transactionnel a été publié avec le nom de l'autre partie noirci, et la copie du tribunal affiche REDACTED à l'endroit où figurait le nom. Un PDF n'est pourtant pas une image à plat : il conserve ses modifications sous forme de couches, et noircir un élément avec le mauvais outil ajoute une nouvelle couche par-dessus l'ancienne au lieu de la supprimer. Les octets bruts du fichier sont dans le visualiseur. Lisez-les et retrouvez le nom qui était censé avoir disparu.
Ce que tu vas apprendre
- Expliquer qu'un PDF stocke les modifications sous forme de révisions incrémentales ajoutées à la fin
- Repérer les limites des révisions en trouvant les marqueurs %%EOF dans les octets
- Récupérer un contenu qu'une révision ultérieure a remplacé sans le supprimer
- Reconnaître qu'un noircissement visuel n'est pas un caviardage et laisse le texte intact
- Indiquer comment caviarder un document pour que rien ne subsiste en dessous
Compétences testées
Prérequis
- Lire la colonne ASCII d'une vue hexadécimale
- L'idée qu'un fichier conserve son historique
Comment ça marche
Un PDF se modifie en ajoutant du contenu à la fin. Le contenu d'origine est écrit puis fermé par %%EOF ; les changements suivants sont ajoutés après lui sous forme de mise à jour incrémentale, avec son propre %%EOF. Un lecteur affiche la définition la plus récente de chaque objet, ce qui donne l'impression que la dernière version est la seule version.
Ce n'est pas le cas. Chaque révision précédente est toujours dans le fichier, avant le %%EOF précédent. Un rectangle dessiné sur du texte, ou une modification de métadonnées enregistrée de cette façon, ajoute un nouveau calque et laisse les anciens octets intacts. Lire le fichier brut permet de récupérer tout ce qu'une révision antérieure contenait.
C'est une fuite courante dans la réalité : un caviardage fait visuellement, ou des propriétés de document modifiées, sans aplatissement ni nettoyage, de sorte que l'original persiste dans une ancienne révision, un flux d'objets, les métadonnées XMP ou une miniature.
Erreurs fréquentes
- Lire la dernière révision. C'est là que se trouve
REDACTED; l'original est avant le premier%%EOF. - Faire confiance à la page affichée. Le lecteur n'affiche que le dernier calque ; les octets les contiennent tous.
- Répondre
REDACTED. C'est le remplacement, pas le nom récupéré. - S'attendre à du chiffrement. Rien n'est chiffré ; le nom est là, en octets lisibles.
Comment s'en protéger
Caviarder en supprimant, puis aplatir.
- Utilisez un véritable outil de caviardage qui supprime le texte et les images sous-jacents, et non un outil qui dessine un rectangle opaque par-dessus.
- Aplatissez ou ré-exportez ensuite le document (par exemple en l'imprimant vers un nouveau PDF) pour qu'aucun historique incrémental ne subsiste.
- Supprimez les métadonnées (XMP, informations du document, miniatures intégrées) avant publication.
- Considérez tout document publié comme porteur de tout son historique de modifications tant qu'il n'a pas été nettoyé.