{"id":18799765,"url":"https://github.com/jvoisin/mat2","last_synced_at":"2025-10-24T05:38:05.311Z","repository":{"id":48455590,"uuid":"183755864","full_name":"jvoisin/mat2","owner":"jvoisin","description":"Read-only mirror of https://0xacab.org/jvoisin/mat2","archived":false,"fork":false,"pushed_at":"2025-03-18T21:20:25.000Z","size":12011,"stargazers_count":80,"open_issues_count":0,"forks_count":12,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-30T02:09:39.842Z","etag":null,"topics":["anonymity","camera","mat2","metadata","pdf","pictures"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jvoisin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-04-27T09:53:41.000Z","updated_at":"2025-03-28T00:23:38.000Z","dependencies_parsed_at":"2024-09-14T00:07:06.260Z","dependency_job_id":"c92a90eb-7224-4934-a630-9582823030a6","html_url":"https://github.com/jvoisin/mat2","commit_stats":null,"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jvoisin%2Fmat2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jvoisin%2Fmat2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jvoisin%2Fmat2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jvoisin%2Fmat2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jvoisin","download_url":"https://codeload.github.com/jvoisin/mat2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247427012,"owners_count":20937214,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anonymity","camera","mat2","metadata","pdf","pictures"],"created_at":"2024-11-07T22:16:21.723Z","updated_at":"2025-10-24T05:38:05.305Z","avatar_url":"https://github.com/jvoisin.png","language":"Python","funding_links":[],"categories":["Tools"],"sub_categories":["Metadata Forensics"],"readme":"```\n _____ _____ _____ ___\n|     |  _  |_   _|_  |  Keep your data,\n| | | | |_| | | | |  _|     trash your meta!\n|_|_|_|_| |_| |_| |___|\n\n```\n\n# Metadata and privacy\n\nMetadata consist of information that characterizes data.\nMetadata are used to provide documentation for data products.\nIn essence, metadata answer who, what, when, where, why, and how about\nevery facet of the data that are being documented.\n\nMetadata within a file can tell a lot about you.\nCameras record data about when a picture was taken and what\ncamera was used. Office documents like PDF or Office automatically adds\nauthor and company information to documents and spreadsheets.\nMaybe you don't want to disclose those information.\n\nThis is precisely the job of mat2: getting rid, as much as possible, of\nmetadata.\n\nmat2 provides:\n- a library called `libmat2`;\n- a command line tool called `mat2`,\n- a service menu for Dolphin, KDE's default file manager\n\nIf you prefer a regular graphical user interface, you might be interested in\n[Metadata Cleaner](https://metadatacleaner.romainvigier.fr/), which is using\n`mat2` under the hood.\n\n# Requirements\n\n- `python3-mutagen` for audio support\n- `python3-gi-cairo` and `gir1.2-poppler-0.18` for PDF support\n- `gir1.2-gdkpixbuf-2.0` for images support\n- `gir1.2-rsvg-2.0` for svg support\n- `FFmpeg`, optionally, for video support\n- `libimage-exiftool-perl` for everything else\n\nPlease note that mat2 requires at least Python3.5.\n\n# Requirements setup on macOS (OS X) using [Homebrew](https://brew.sh/)\n\n```bash\nbrew install exiftool cairo pygobject3 poppler gdk-pixbuf librsvg ffmpeg\n```\n\n# Running the test suite\n\n```bash\n$ python3 -m unittest discover -v\n```\n\nAnd if you want to see the coverage:\n\n```bash\n$ python3-coverage run --branch -m unittest discover -s tests/\n$ python3-coverage report --include -m --include /libmat2/*'\n```\n\n# How to use mat2\n\n```\nusage: mat2 [-h] [-V] [--unknown-members policy] [--inplace]\n            [-v] [-l] [--check-dependencies] [-L | -s]\n            [files [files ...]]\n\nMetadata anonymisation toolkit 2\n\npositional arguments:\n  files                 the files to process\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -V, --verbose         show more verbose status information\n  --unknown-members policy\n                        how to handle unknown members of archive-style files\n                        (policy should be one of: abort, omit, keep) [Default:\n                        abort]\n  --inplace             clean in place, without backup\n  -v, --version         show program's version number and exit\n  -l, --list            list all supported fileformats\n  --check-dependencies  check if mat2 has all the dependencies it needs\n  -L, --lightweight     remove SOME metadata\n  -s, --show            list harmful metadata detectable by mat2 without\n                        removing them\n```\n\nNote that mat2 **will not** clean files in-place, but will produce, for\nexample, with a file named \"myfile.png\" a cleaned version named\n\"myfile.cleaned.png\".\n\n## Web interface\n\nIt's possible to run mat2 as a web service, via\n[mat2-web](https://0xacab.org/jvoisin/mat2-web).\n\nIf you're using WordPress, you might be interested in [wp-mat](https://git.autistici.org/noblogs/wp-mat)\nand [wp-mat-server](https://git.autistici.org/noblogs/wp-mat-server).\n\n## Desktop GUI\n\nFor GNU/Linux desktops, it's possible to use the\n[Metadata Cleaner](https://gitlab.com/rmnvgr/metadata-cleaner) GTK application.\n\n# Supported formats\n\nThe following formats are supported: avi, bmp, css, epub/ncx, flac, gif, jpeg,\nm4a/mp2/mp3/…, mp4, odc/odf/odg/odi/odp/ods/odt/…, off/opus/oga/spx/…, pdf,\npng, ppm, pptx/xlsx/docx/…, svg/svgz/…, tar/tar.gz/tar.bz2/tar.xz/…, tiff,\ntorrent, wav, wmv, zip, …\n  \n# Notes about detecting metadata\n\nWhile mat2 is doing its very best to display metadata when the `--show` flag is\npassed, it doesn't mean that a file is clean from any metadata if mat2 doesn't\nshow any. There is no reliable way to detect every single possible metadata for\ncomplex file formats.\n\nThis is why you shouldn't rely on metadata's presence to decide if your file must\nbe cleaned or not.\n\n# Notes about the lightweight mode\n\nBy default, mat2 might alter a bit the data of your files, in order to remove\nas much metadata as possible. For example, texts in PDF might not be selectable anymore,\ncompressed images might get compressed again, …\nSince some users might be willing to trade some metadata's presence in exchange\nof the guarantee that mat2 won't modify the data of their files, there is the\n`-L` flag that precisely does that.\n\n# Related software\n\n- The first iteration of [MAT](https://mat.boum.org)\n- [Exiftool](https://sno.phy.queensu.ca/~phil/exiftool/mat)\n- [pdf-redact-tools](https://github.com/firstlookmedia/pdf-redact-tools), that\n\ttries to deal with *printer dots* too.\n- [pdfparanoia](https://github.com/kanzure/pdfparanoia), that removes\n\twatermarks from PDF.\n- [Scrambled Exif](https://f-droid.org/packages/com.jarsilio.android.scrambledeggsif/),\n\tan open-source Android application to remove metadata from pictures.\n- [Dangerzone](https://dangerzone.rocks/), designed to sanitize harmful documents\n  into harmless ones.\n\n# Contact\n\nIf possible, use the [issues system](https://github.com/jvoisin/mat2/issues)\nor the [mailing list](https://www.autistici.org/mailman/listinfo/mat-dev)\nShould a more private contact be needed (eg. for reporting security issues),\nyou can email Julien (jvoisin) Voisin at `julien.voisin+mat2@dustri.org`,\nusing the gpg key `9FCDEE9E1A381F311EA62A7404D041E8171901CC`.\n\n# Donations\n\nIf you want to donate some money, please give it to [Tails]( https://tails.boum.org/donate/?r=contribute ).\n\n# License\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Lesser General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU Lesser General Public License\nalong with this program.  If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n\nCopyright 2018 Julien (jvoisin) Voisin \u003cjulien.voisin+mat2@dustri.org\u003e  \nCopyright 2016 Marie-Rose for mat2's logo\n\nThe `tests/data/dirty_with_nsid.docx` file is licensed under GPLv3,\nand was borrowed from the Calibre project: https://calibre-ebook.com/downloads/demos/demo.docx\n\nThe `narrated_powerpoint_presentation.pptx` file is in the public domain.\n\n# Thanks\n\nmat2 wouldn't exist without:\n\n- the [Google Summer of Code](https://summerofcode.withgoogle.com/);\n- the fine people from [Tails]( https://tails.boum.org);\n- friends\n\nMany thanks to them!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjvoisin%2Fmat2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjvoisin%2Fmat2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjvoisin%2Fmat2/lists"}