URL: https://linuxfr.org/news/mat2-0-4-0 Title: mat2 0.4.0 Authors: jvoisin Nils Ratusznik, palm123, Davy Defaud, ZeroHeure et bubarđŠ„ Date: 2018ćčŽ10æ10æ„T17:45:11+02:00 License: CC By-SA Tags: format, libreoffice, openoffice, mĂ©tadonnĂ©es, python, python3 et vie_privĂ©e Score: 72 mat2 est la nouvelle itĂ©ration du dĂ©funt MAT, une suite logicielle pour nettoyer les mĂ©tadonnĂ©es dâune multitude de formats de fichiers. La rĂ©cente sortie de la version 0.4.0 (3 octobre 2018) est lâoccasion de faire dĂ©couvrir ce projet, en deuxiĂšme partie de dĂ©pĂȘche.  ---- [Site officiel](https://0xacab.org/jvoisin/mat2) [Billet de blog annonçant la 0.4.0](https://dustri.org/b/mat2-040.html) ---- # Une bonne histoire... Un bon article commence souvent par une bonne histoire. [Notre histoire](https://www.theregister.co.uk/2012/04/13/fbi_track_anon_from_iphone_photo/ ) parle dâun petit malin et de sa bande, *CabinCr3w*, qui ont cru bon dâaller pirater des sites Internet de forces de lâordre aux ĂtatsâUnis. Le tout, afin de laisser fuiter des informations personnelles (identitĂ©, adresses et numĂ©ros de tĂ©lĂ©phones) de policiers, mais Ă©galement de dĂ©figurer le site afin de signer leurs forfaits, avec une image dâune femme ne montrant que le haut de son bikini, sous lequel on peut lire « _PwNd by w0rmer & CabinCr3w <3 u BiTchâs!_ ». Le souci pour nos larrons, câest que la police a regardĂ© les mĂ©tadonnĂ©es contenues dans la photo, prise avec un iPhone, et y a trouvĂ© des coordonnĂ©es GPS, lui permettant dâaller rendre visite au domicile de la femme et dâattraper le malandrin, qui est maintenant en prison. # Historique La plupart des fichiers contiennent des mĂ©tadonnĂ©es : images, vidĂ©os, documents bureautiques, torrents, audio, etc., et parfois, on aimerait bien que ça ne soit pas le cas. Câest pourquoi le projet [Tails](https://tails.boum.org) a proposĂ© Ă un Ă©tudiant, dans le cadre du [Google Summer of Code]( https://summerofcode.withgoogle.com/) 2011, dâĂ©crire un outil permettant de « nettoyer » les fichiers de leurs mĂ©tadonnĂ©es. Le GSoC a Ă©tĂ© une rĂ©ussite, donnant naissance au logiciel *MAT*, pour *Metadata Anonymisation Toolkit*, empaquetĂ© dans Debian, prĂ©sent dans Tails, maintenu et utilisĂ©... jusquâen octobre 2016, oĂč il [a Ă©tĂ© annoncĂ©](https://dustri.org/b/mat-is-currently-on-hold.html) la fin de sa maintenance. Mais en juin 2018 est [apparu]( https://dustri.org/b/mat-is-dead-long-live-mat2.html ) mat2, le sujet de cet article ! # mat2 ? Ăcrit en Python 3, utilisant des outils dâanalyse statique comme [mypy](http://mypy-lang.org/) et [pylint](https://www.pylint.org/), et avec une couverture de tests unitaires de 100 %, mat2 est rĂ©solument mieux codĂ© et plus robuste que son ancĂȘtre. Tout comme lui, il est disponible sous licence LGPL v3, prend en charge un grand nombre de formats de fichiers (audio, vidĂ©o, bureautique, images, torrent...) et sâĂ©chine Ă en ĂŽter un maximum de mĂ©tadonnĂ©es. ## Le format PDF Par exemple, prenons le [format PDF](https://fr.wikipedia.org/wiki/Portable_Document_Format). Avec ses [spĂ©cifications Ă rallonge](https://www.adobe.com/devnet/pdf/pdf_reference.html), câest une horreur Ă gĂ©rer : il est possible dây embarquer du JavaScript, des images, des vidĂ©os, des rendus 3D, de compresser les donnĂ©es, dâen chiffrer dâautres... Câest pour ça que mat2 utilise [Cairo](https://www.cairographics.org/) et [Poppler](https://poppler.freedesktop.org/), afin dâeffectuer un rendu, page par page, du fichier PDF, sur une surface PNG, pour ensuite rassembler le tout, dans un nouveau fichier. Ainsi, plus aucune mĂ©tadonnĂ©e ne sera prĂ©sente dans le fichier de sortie. Le cĂŽtĂ© nĂ©gatif, câest quâil nâest plus possible de sĂ©lectionner du texte, le PDF Ă©tant maintenant composĂ© dâimages. Mais mat2 fournit un mode de nettoyage plus lĂ©ger, pouvant laisser des mĂ©tadonnĂ©es, mais permettant de sĂ©lectionner du texte. ## Le format OOXML Un autre exemple serait le format [Office Open XML](https:/fr.wikipedia.org/wiki/Office_Open_XML) de Microsoft, qui est Ă©galement un enfer Ă part entiĂšre : bien quâil y ait le terme *Open* dedans, personne (pas mĂȘme Microsoft, dans sa suite Office) ne lâimplĂ©mente dans sa version stricte. Il sâagit dâun gros tas de fichiers XML, entassĂ©s dans une archive ZIP, avec plein de balises, dâattributs, de paramĂštres, de fichiers, et dâoptions dans tous les sens, pouvant embarquer une quantitĂ© invraisemblable de formats de fichier diffĂ©rents : images, audio, vidĂ©o, polices... Dans ce casâci, mat2 ne peut pas tricher en demandant Ă une bibliothĂšque de faire le rendu pour lui, donc, tout est gĂ©rĂ© Ă la main : - certains fichiers sont supprimĂ©s de maniĂšre systĂ©matique, comme par exemple `word/people.xml` ; - certains attributs et balises, comme les [rsid]( https://blogs.msdn.microsoft.com/brian_jones/2006/12/11/whats-up-with-all-those-rsids/ ), sont supprimĂ©s ; - les attributs XML sont ordonnĂ©s lexicographiquement, car les diffĂ©rents outils permettant de consulter des OOXML (MS Office, Abiword, LibreOffice, OpenOffice...) ont tendance Ă les Ă©crire dans un ordre bien spĂ©cifique ; - les fichiers sont eux aussi ordonnĂ©s lexicographiquement dans lâarchive ZIP, pour la mĂȘme raison que ciâdessus ; - certains fichiers sont conservĂ©s ou supprimĂ©s suivant leur type [[MIME]] interne, comme dĂ©fini dans un des fichiers de lâarchive faisant office de dictionnaire ; - les rĂ©visions sont supprimĂ©es ; - les mĂ©tadonnĂ©es propres au format ZIP sont Ă©galement supprimĂ©es ; - certains fichiers ne peuvent pas ĂȘtre supprimĂ©s, et doivent contenir du XML valide, pour Ă©viter que la suite Office de Microsoft nâaffiche un avertissement lors de lâouverture du document, ils sont donc réécrits pour ne contenir que le strict minimum. ## Le reste Les fichiers torrents utilisent le format [Bencode](https://fr.wikipedia.org/wiki/Bencode), pour lequel il est plus facile dâĂ©crire son propre analyseur XML plutĂŽt que dâen utiliser un dĂ©jĂ disponible en Python 3. Les fichiers audio sont gĂ©rĂ©s par la ĂŽ combien formidable bibliothĂšque [mutagen](https://mutagen.readthedocs.io/en/latest/), et les images via [GDK-PixBuf](https://developer.gnome.org/gdk-pixbuf/). # Interface utilisateur Pour les personnes habituĂ©es Ă la ligne de commande, mat2 propose... une interface en ligne de commande. Mais mat2 est avant tout Ă©crit pour les « gens normaux ». AprĂšs le succĂšs mitigĂ© des multiples réécritures dâinterfaces graphiques pour la premiĂšre itĂ©ration de mat (les seules personnes en ayant dit du bien Ă©taient des personnes malvoyantes), mat2 propose une extension Ă _[Fichiers](https://wiki.gnome.org/Apps/Files)_ (anciennement Nautilus), le gestionnaire de fichiers du projet GNOME : il suffit maintenant dâun simple clic droit, puis _nettoyer_, pour supprimer les mĂ©tadonnĂ©es des fichiers sĂ©lectionnĂ©s !  # La suite ? Pour la suite, il est probable que dâautres gestionnaires de fichiers bĂ©nĂ©ficient dâune extension, et que dâautres formats de fichiers soient ajoutĂ©s, comme les vidĂ©os ou encore les archives. Les formats de fichiers sont Ă©galement rĂ©guliĂšrement passĂ©s au crible, afin de voir sâil subsiste des mĂ©tadonnĂ©es.