2 points par GN⁺ 2025-04-03 | 1 commentaires | Partager sur WhatsApp
  • DEDA est une boîte à outils permettant de lire, décoder et anonymiser les points de suivi couleur des documents, c’est-à-dire les points jaunes, présents dans les sorties d’imprimantes laser couleur
  • Les points de suivi couleur des documents sont de petits motifs de points systématiques qui encodent des informations sur l’imprimante et l’impression, et sont intégrés à presque toutes les imprimantes laser couleur commerciales
  • Il permet de lire ou comparer les données de suivi dans des images scannées, d’extraire des motifs inconnus et d’ajouter sa propre matrice de points de suivi à des PDF
  • La fonction d’anonymisation fonctionne soit en supprimant la plupart des données de suivi des images scannées, soit en créant un masque d’anonymisation propre à une imprimante et en l’appliquant à des documents PDF
  • Pour de bons résultats, il est recommandé d’utiliser des scans d’entrée avec compression sans perte, en 300 dpi et à contraste neutre ; les pages noir et blanc ou les impressions jet d’encre peuvent ne pas contenir de points de suivi

Le problème traité par DEDA

  • Les Document Colour Tracking Dots, ou points jaunes, sont de petits points systématiques qui encodent des informations sur l’imprimante et sur l’impression elle-même
  • Ce procédé est intégré à presque toutes les imprimantes laser couleur commerciales
  • Presque toutes les impressions contiennent des informations codées sur l’appareil source, pouvant par exemple inclure le numéro de série
  • DEDA fournit à la fois des fonctions de lecture et de décodage de cette caractéristique forensique, ainsi que des fonctions d’anonymisation pour empêcher un suivi arbitraire
  • En cas d’utilisation du logiciel, il est demandé de citer l’article suivant
    • Timo Richter, Stephan Escher, Dagmar Schönfeld, Thorsten Strufe. 2018. Forensic Analysis and Anonymisation of Printed Documents. IH&MMSec '18, 127-138. DOI : https://doi.org/10.1145/3206004.3206019

Installation et lancement de l’interface graphique

  • Python 3 doit être installé
  • Installation possible depuis PyPI
    • pip3 install --user deda
  • Installation également possible depuis le répertoire courant
    • pip3 install --user .
  • Comme dépendance optionnelle de deda_anonmask_apply, Wand peut être installé sous Unix et GNU/Linux
    • pip3 install --user wand
    • Sans Wand, les pages comportant des zones blanches dans l’image ne peuvent pas être anonymisées
  • L’interface graphique se lance avec la commande suivante
    • deda_gui

Ce que permettent les outils en terminal

  • Lire les données de suivi

    • Il est possible de lire, et dans certains cas de décoder, les données de suivi d’une image scannée
    • Pour de bons résultats, l’entrée doit utiliser une compression sans perte comme png, une résolution de 300 dpi et un contraste neutre
    • Commande à exécuter :
      • deda_parse_print INPUTFILE
  • Trouver une autre imprimante dans un ensemble de documents scannés

    • Il est possible de repérer, parmi plusieurs documents scannés, ceux qui ont été imprimés avec une autre imprimante
    • Commande à exécuter :
      • deda_compare_prints INPUT1 INPUT2 [INPUT3] ...
  • Analyser des motifs de suivi inconnus

    • Un nouveau motif peut ne pas être reconnu par parse_print
    • Pour une analyse plus poussée, il est possible d’extraire les points jaunes
    • Commande à exécuter :
      • deda_extract_yd INPUTFILE
  • Créer ses propres points de suivi

    • Il est possible de créer sa propre matrice de points de suivi et de l’ajouter à un document PDF
    • Le contenu est transmis sous forme de paramètres selon deda_create_dots -h
    • Commande à exécuter :
      • deda_create_dots PDFINPUT
    • Une page de calibration créée avec deda_anonmask_create -w peut être utilisée en entrée

Workflow d’anonymisation

  • Anonymiser une image scannée

    • Supprime la plupart des données de suivi d’une image scannée
    • Commande à exécuter :
      • deda_clean_document INPUTFILE OUTPUTFILE
  • Anonymiser un document destiné à l’impression

    • Enregistrer le document au format PDF et le placer sous le nom DOCUMENT.PDF
    • Imprimer sans marges le fichier testpage.pdf créé avec la commande suivante
      • deda_anonmask_create -w
    • Scanner ce document en 300 dpi et transmettre le fichier sans perte à la commande suivante
      • deda_anonmask_create -r INPUTFILE
    • Ce processus génère mask.json, le masque d’anonymisation propre à l’imprimante
    • Appliquer le masque généré au PDF
      • deda_anonmask_apply mask.json DOCUMENT.PDF
    • Le résultat produit est un masked.pdf anonymisé, imprimable avec des marges de page réglées à 0
    • Il faut vérifier au microscope que le masque couvre les points de suivi de l’imprimante
    • Le rayon des points du masque, le décalage x et le décalage y peuvent être ajustés via les paramètres de deda_anonmask_apply
    • Si DOCUMENT.PDF contient des zones graphiques blanches ou claires, ces zones ne peuvent être masquées que si Wand est installé

Dépannage

  • Si deda_parse_print: command not found apparaît, vérifier l’installation de DEDA ou ajouter au PATH le chemin du répertoire bin utilisateur de Python
    • export PATH="$PATH:$(python -c 'import site,os; print(os.path.join(site.USER_BASE, "bin"))')"
  • Si DEDA ne reconnaît pas les points de suivi, configurer le programme de scan pour qu’il ne supprime pas la structure du papier ni les points de suivi par seuillage
    • Les pages noir et blanc et les impressions jet d’encre peuvent ne pas contenir de points de suivi
  • Si l’imprimante n’imprime pas de points de suivi, il est possible de créer ses propres points de suivi ou d’imprimer la page de calibration avec une autre imprimante pour l’utiliser comme masque pour sa propre imprimante
    • Création de points de suivi personnalisés possible avec deda_create_dots
    • Création d’une page de calibration possible avec deda_anonmask_create -w
    • Il est possible d’utiliser une version anonymisée des points de suivi ou de la copier avec deda_anonmask_create --copy
  • Les erreurs d’installation liées à x86_64-linux-gnu-gcc peuvent être dues à la dépendance eel nécessaire à l’interface graphique
    • Commande proposée :
      • sudo apt-get install build-essential autoconf libtool pkg-config python3.6-dev gcc && pip3 install --user eel
  • Si wand.exceptions.PolicyError bloque les opérations PDF en raison d’une politique de sécurité, la configuration d’ImageMagick en est la cause
    • Supprimer Wand ou ajouter la politique suivante dans /etc/ImageMagick-*/policy.xml, juste avant </policymap>
      • <policy domain="coder" rights="read | write" pattern="PDF" />
    • Lien de référence associé : ImageMagick security policy PDF blocking conversion

1 commentaires

 
GN⁺ 2025-04-03
Commentaires sur Hacker News
  • Notre équipe avait utilisé ces points de suivi jaunes il y a une dizaine d’années, lors du DARPA Shredder Challenge, pour reconstituer des documents déchiquetés.
    On voit le programme mettre les points en évidence pendant l’assemblage des fragments : https://www.youtube.com/watch?v=uzZDhyrjdVo
    Cela nous a permis de gagner avec une large avance.

    • Je me souviens avoir entendu parler de ce défi dans Daily Planet quand j’étais à l’école primaire.
      Lire la suite de l’histoire a fait remonter ce souvenir oublié, c’est assez étonnant.
    • Je pensais que le broyeur/scanner de bibliothèque dans Rainbows End de Vinge était juste un élément de SF inspiré assez librement du séquençage génétique ; c’est amusant d’en voir une implémentation presque réelle.
    • Je me demande à quoi ressemblait le processus de numérisation des fragments pour les faire entrer dans le programme.
      Cela mériterait presque un article à part autant que l’algorithme de résolution, et il faut sans doute un certain tempérament pour gérer un tel bazar.
  • Récemment, pour des raisons difficiles à expliquer ici, j’ai dû me pencher un peu sur les points de suivi.
    Essayez d’éclairer une impression couleur avec une lampe torche à LED bleue. C’est sidérant : il y a une quantité énorme de points sur toute la page, comme si on y avait saupoudré du sable.

    • Je suis surpris que les fabricants d’imprimantes n’aient pas encore fait l’objet d’un recours collectif pour tout le toner jaune supplémentaire utilisé au fil des années.
    • Et ce n’est plus seulement une histoire d’imprimantes : https://datadotusa.com/technology.htm
    • Je me demande de quel type d’imprimante il est question : laser, laser couleur ou jet d’encre.
  • Si mon imprimante n’imprime pas de points de suivi, l’idée que je puisse contrefaire les points de suivi d’une autre imprimante est assez intéressante du point de vue du déni plausible.
    Cela dit, même dans ce cas, il faudrait sans doute avoir accès à l’imprimante d’origine pour imprimer le masque anonyme.

    • D’après Wikipedia, la disposition des points encode le numéro de série et la date/heure d’impression de l’appareil ; donc, pour imiter l’imprimante de quelqu’un d’autre, il suffit en pratique d’avoir son numéro de série.
      De nos jours, il est même possible d’y accéder à distance via les paramètres de l’imprimante.
    • Si une analyse forensic en arrive à examiner les points de suivi, la plupart des tentatives de contrefaçon paraîtront assez évidentes, et risquent même de servir d’indice pour resserrer la liste des suspects à ceux qui connaissent ce genre de technique.
      On pourrait tromper quelqu’un qui fait une analyse superficielle, mais un enquêteur expérimenté risque de se dire quelque chose comme : « les points de suivi correspondent clairement à la marque X, mais le raster utilisé pour les niveaux de gris vient manifestement de Y ».
  • Si vous avez manqué un article intéressant sur le sujet, il est ici : https://news.ycombinator.com/item?id=42880704

    • Il raconte comment des cartes Pokémon de playtest anciennes récemment « découvertes » se sont révélées fausses, ou au moins très suspectes, sur la base de la présence et du décodage de ces points ; cela vaut la peine d’être lu.
      Le plus intéressant, c’est que la personne qui a publié la découverte et l’analyse avait déjà dépensé plusieurs milliers de dollars dans ces fausses cartes, et risquait donc d’y perdre personnellement, mais a tout de même rendu les résultats publics.
  • Je me demande ce qui se passe si l’on imprime la même page avec plusieurs imprimantes.
    Si la première imprimante imprime le contenu réel et que les autres n’ajoutent que de minuscules marques dans les zones encore blanches, est-ce qu’une imprimante dégrade les points de suivi de l’autre ?

    • Probablement. L’imprimante n’a aucun moyen de savoir qu’elle ne devrait pas le faire.
      Cela dit, selon les conditions exactes, il pourrait rester possible d’en lire une partie, voire la totalité.
  • Je commence à me demander si les MIB ne vont pas débarquer chez les geeks qui lanceront un projet façon OpenWRT pour imprimantes.
    On ne peut pas autoriser des moyens d’expression intraçables, et il faut pouvoir frapper chirurgicalement à la source des mèmes gênants. C’est pourquoi j’utilise une imprimante laser noir et blanc trouvée sur craigslist, placée sur un VLAN séparé, avec un serveur CUPS comme intermédiaire.
    Personne n’a jamais donné un consentement suffisamment informé à ce que Niantic fait depuis plus de dix ans, et personne n’a consenti non plus à ce que tout document imprimé devienne traçable. Nulle part, ni dans le produit ni dans le processus, on ne prévient que « l’absence d’identifiant visible ne signifie pas qu’il n’y a pas d’identifiant ; il peut exister un identifiant stéganographique ».
    Il en va de même pour les machines génériques intégrées aux produits que nous achetons, verrouillées au point que nous, leurs propriétaires, ne puissions pas les réutiliser comme nous le souhaitons. Nous avons fini par accepter les insultes lancées par les organisations commerciales et les agences d’État sous la forme : « mange ce sandwich à la merde, ou prends des coups sans sandwich », et la Consumer Action Taskforce (CAT) de Louis Rossmann est en train de devenir une bonne anthologie de ce genre de cas.
    Il est temps de riposter. Il faut hacker des imprimantes correctes, remplacer leur firmware par quelque chose de pratique, et se débarrasser de ces conneries. Ces points de suivi et autres formes de traçage stéganographique existent pour suivre et faire taire des gens comme moi, ceux qui dénoncent les mécanismes de contrôle cachés et diffusent des mèmes que le gigantesque calmar d’obsidienne a étiquetés comme risque informationnel ou désinformation.

    • Si j’avais voulu faire une contrefaçon, au lieu d’imprimer sur du papier avec des moyens domestiques/de bureau ordinaires, je me serais probablement procuré quelque chose comme une CNC d’horloger à tolérances fines pour fabriquer un tampon d’impression en aluminium ou équivalent.
      Imprimer sur du papier me semble idiot, puisque même une personne habituée à manipuler des billets le remarquerait facilement.
  • Cela risque de devenir assez important dans les prochaines années.
    Si vous prévoyez d’imprimer des tracts ou des pamphlets pour une manifestation, mieux vaut passer par une imprimerie professionnelle si vous avez quelqu’un de confiance, ou au minimum acheter une imprimante en liquide, ne jamais la connecter à Internet, et la brancher uniquement en USB à un ordinateur Linux.
    macOS et Windows peuvent installer automatiquement des pilotes d’imprimante, et ces pilotes pourraient contacter le siège pour associer l’ID de l’imprimante à une forme d’identifiant.

    • Pour voir comment on faisait ce genre de choses dans les États totalitaires du bloc de l’Est, regardez le samizdat : https://en.m.wikipedia.org/wiki/Samizdat
    • Si vous vous donnez autant de mal, autant acheter un kit de sérigraphie.
      Vous pourrez aussi imprimer des t-shirts.
    • Ne serait-il pas beaucoup plus facile de suivre les personnes qui distribuent les tracts ?
    • Ou alors il suffit d’imprimer en masse, avec une imprimante achetée en liquide, des points de suivi valides mais randomisés sur l’ensemble du document.
  • Je me demande vraiment quelle proportion d’imprimantes peut être déchiffrée avec des outils publics.
    Existe-t-il des statistiques sur les codes de quels fabricants ont été cassés ?

    • Sur GitHub, il est fait référence à l’article de 2018 de Timo Richter, Stephan Escher, Dagmar Schönfeld et Thorsten Strufe, Forensic Analysis and Anonymisation of Printed Documents.
      Une copie se trouve ici : https://ericbalawejder.com/assets/hexview/Forensic-Analysis-...
      Le tableau 1 récapitule les fabricants, le nombre d’imprimantes analysées et la présence ou non de points : Brother 1 modèle, non ; Canon 10 modèles, oui ; Dell 4 modèles, oui ; Epson 8 modèles, certains modèles ; Hewlett-Packard 43 modèles, certains modèles ; IBM 1 modèle, oui ; KonicaMinolta 21 modèles, certains modèles ; Kyocera 4 modèles, oui ; Lanier 1 modèle, oui ; Lexmark 6 modèles, certains modèles ; NRG 1 modèle, oui ; Okidata 9 modèles, certains modèles ; Ricoh 6 modèles, oui ; Samsung 5 modèles, non ; Savin 1 modèle, oui ; Tektronix 4 modèles, non ; Unknown 1 modèle, oui ; Xerox 15 modèles, certains modèles.
      Hormis quelques indices décrits dans l’article, lorsqu’un motif de points est détecté, il semble généralement compris.
  • Les imprimantes laser noir et blanc produisent-elles aussi des points de traçage ?
    Et quel est le sens de ce type de traçage ? Par principe, chaque recoin de notre vie doit-il forcément être traçable ?

    • Je ne sais rien de certain sur les identifiants stéganographiques des imprimantes noir et blanc, mais je serais plutôt surpris si elles n’intégraient pas d’informations de traçage.
      Parsemer partout des informations de provenance a trop de valeur pour la sécurité nationale. On invoque toujours la sûreté ou la sécurité, puis vient aussitôt le « mais où est le mal, vous ne faites rien que vous ne devriez pas faire… n’est-ce pas ? »
    • D’après ce que j’ai compris, le Secret Service a demandé, ou exigé, des fabricants qu’ils ajoutent ces points après que la qualité des imprimantes est devenue suffisamment bonne pour reproduire facilement des billets de banque.
      Si l’usage principal est de traquer les faux-monnayeurs, les imprimantes noir et blanc n’en ont pas besoin, et c’est pourquoi elles n’en seraient pas équipées.
    • https://www.eff.org/pages/list-printers-which-do-or-do-not-d...
      Cette liste n’a pas été mise à jour depuis 2017, et il est très probable qu’elle soit le résultat de déductions faites par une seule personne à partir de demandes FOIA. Il faudra sans doute attendre la prochaine fois qu’une université chinoise publiera des secrets du gouvernement américain.
    • L’idée est sans doute que personne ne se laissera berner par un billet de 20 dollars en noir et blanc, donc qu’il n’est pas nécessaire d’y ajouter des points.
    • Les imprimantes monochromes n’ont pas de points jaunes.
      Il y a des décennies, j’ai travaillé sur un logiciel qui cachait des informations en ajustant le crénage des caractères ; à ma connaissance, ce projet n’a pas vraiment abouti.
  • Ceci peut aussi vous intéresser : https://en.wikipedia.org/wiki/EURion_constellation