README.md 5.81 KB
Newer Older
jvoisin's avatar
jvoisin committed
1
```
atenart's avatar
atenart committed
2
 _____ _____ _____ ___
georg's avatar
georg committed
3
|     |  _  |_   _|_  |  Keep your data,
jvoisin's avatar
jvoisin committed
4 5
| | | |     | | | |  _|     trash your meta!
|_|_|_|__|__| |_| |___|
atenart's avatar
atenart committed
6

jvoisin's avatar
jvoisin committed
7 8
```

9 10 11
This software is currently in **beta**, please don't use it for anything
critical.

jvoisin's avatar
jvoisin committed
12 13
# Metadata and privacy

atenart's avatar
atenart committed
14 15 16 17
Metadata consist of information that characterizes data.
Metadata are used to provide documentation for data products.
In essence, metadata answer who, what, when, where, why, and how about
every facet of the data that are being documented.
jvoisin's avatar
jvoisin committed
18

atenart's avatar
atenart committed
19 20 21 22
Metadata within a file can tell a lot about you.
Cameras record data about when a picture was taken and what
camera was used. Office documents like PDF or Office automatically adds
author and company information to documents and spreadsheets.
23
Maybe you don't want to disclose those information.
jvoisin's avatar
jvoisin committed
24

georg's avatar
georg committed
25
This is precisely the job of mat2: getting rid, as much as possible, of
jvoisin's avatar
jvoisin committed
26
metadata.
jvoisin's avatar
jvoisin committed
27

28 29 30
mat2 provides a command line tool, and graphical user interfaces via a service
menu for Dolphin, the default file manager of KDE, and an extension for
Nautilus, the default file manager of GNOME.
31

jvoisin's avatar
jvoisin committed
32 33 34 35 36
# Requirements

- `python3-mutagen` for audio support
- `python3-gi-cairo` and `gir1.2-poppler-0.18` for PDF support
- `gir1.2-gdkpixbuf-2.0` for images support
jvoisin's avatar
jvoisin committed
37
- `gir1.2-rsvg-2.0` for svg support
atenart's avatar
atenart committed
38
- `FFmpeg`, optionally, for video support
jvoisin's avatar
jvoisin committed
39
- `libimage-exiftool-perl` for everything else
jvoisin's avatar
jvoisin committed
40
- `bubblewrap`, optionally, for sandboxing
jvoisin's avatar
jvoisin committed
41

georg's avatar
georg committed
42
Please note that mat2 requires at least Python3.5.
jvoisin's avatar
jvoisin committed
43

44 45 46 47 48 49
# Requirements setup on macOS (OS X) using [Homebrew](https://brew.sh/)

```bash
brew install exiftool cairo pygobject3 poppler gdk-pixbuf librsvg ffmpeg
```

50
# Running the test suite
jvoisin's avatar
jvoisin committed
51 52 53 54

```bash
$ python3 -m unittest discover -v
```
jvoisin's avatar
jvoisin committed
55

56 57 58 59 60 61 62
And if you want to see the coverage:

```bash
$ python3-coverage run --branch -m unittest discover -s tests/
$ python3-coverage report --include -m --include /libmat2/*'
```

georg's avatar
georg committed
63
# How to use mat2
jvoisin's avatar
jvoisin committed
64

65 66 67
```
usage: mat2 [-h] [-V] [--unknown-members policy] [--inplace] [--no-sandbox]
            [-v] [-l] [--check-dependencies] [-L | -s]
jvoisin's avatar
jvoisin committed
68
            [files [files ...]]
jvoisin's avatar
jvoisin committed
69 70 71 72

Metadata anonymisation toolkit 2

positional arguments:
jvoisin's avatar
jvoisin committed
73
  files                 the files to process
jvoisin's avatar
jvoisin committed
74 75

optional arguments:
jvoisin's avatar
jvoisin committed
76 77 78 79
  -h, --help            show this help message and exit
  -V, --verbose         show more verbose status information
  --unknown-members policy
                        how to handle unknown members of archive-style files
80 81
                        (policy should be one of: abort, omit, keep) [Default:
                        abort]
82 83 84 85 86 87
  --inplace             clean in place, without backup
  --no-sandbox          Disable bubblewrap's sandboxing.
  -v, --version         show program's version number and exit
  -l, --list            list all supported fileformats
  --check-dependencies  check if mat2 has all the dependencies it needs
  -L, --lightweight     remove SOME metadata
georg's avatar
georg committed
88
  -s, --show            list harmful metadata detectable by mat2 without
jvoisin's avatar
jvoisin committed
89
                        removing them
jvoisin's avatar
jvoisin committed
90 91
```

georg's avatar
georg committed
92
Note that mat2 **will not** clean files in-place, but will produce, for
93 94 95
example, with a file named "myfile.png" a cleaned version named
"myfile.cleaned.png".

96 97
# Notes about detecting metadata

georg's avatar
georg committed
98 99
While mat2 is doing its very best to display metadata when the `--show` flag is
passed, it doesn't mean that a file is clean from any metadata if mat2 doesn't
100 101 102 103 104 105
show any. There is no reliable way to detect every single possible metadata for
complex file formats.

This is why you shouldn't rely on metadata's presence to decide if your file must
be cleaned or not.

106 107 108 109 110 111 112 113 114
# Notes about the lightweight mode

By default, mat2 might alter a bit the data of your files, in order to remove
as much metadata as possible. For example, texts in PDF might not be selectable anymore,
compressed images might get compressed again, …
Since some users might be willing to trade some metadata's presence in exchange
of the guarantee that mat2 won't modify the data of their files, there is the
`-L` flag that precisely does that.

115
# Related software
jvoisin's avatar
jvoisin committed
116

117
- The first iteration of [MAT](https://mat.boum.org)
jvoisin's avatar
jvoisin committed
118 119
- [Exiftool](https://sno.phy.queensu.ca/~phil/exiftool/mat)
- [pdf-redact-tools](https://github.com/firstlookmedia/pdf-redact-tools), that
120
	tries to deal with *printer dots* too.
jvoisin's avatar
jvoisin committed
121 122
- [pdfparanoia](https://github.com/kanzure/pdfparanoia), that removes
	watermarks from PDF.
123 124
- [Scrambled Exif](https://f-droid.org/packages/com.jarsilio.android.scrambledeggsif/),
	an open-source Android application to remove metadata from pictures.
jvoisin's avatar
jvoisin committed
125

jvoisin's avatar
jvoisin committed
126 127
# Contact

jvoisin's avatar
jvoisin committed
128 129 130
If possible, use the [issues system](https://0xacab.org/jvoisin/mat2/issues)
or the [mailing list](https://mailman.boum.org/listinfo/mat-dev)
Should a more private contact be needed (eg. for reporting security issues),
131
you can email Julien (jvoisin) Voisin at `julien.voisin+mat2@dustri.org`,
jvoisin's avatar
jvoisin committed
132 133
using the gpg key `9FCDEE9E1A381F311EA62A7404D041E8171901CC`.

jvoisin's avatar
jvoisin committed
134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
# License

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

149
Copyright 2018 Julien (jvoisin) Voisin <julien.voisin+mat2@dustri.org>  
georg's avatar
georg committed
150
Copyright 2016 Marie-Rose for mat2's logo
jvoisin's avatar
jvoisin committed
151

jvoisin's avatar
jvoisin committed
152 153 154
The `tests/data/dirty_with_nsid.docx` file is licensed under GPLv3,
and was borrowed from the Calibre project: https://calibre-ebook.com/downloads/demos/demo.docx

jvoisin's avatar
jvoisin committed
155 156
# Thanks

georg's avatar
georg committed
157
mat2 wouldn't exist without:
jvoisin's avatar
jvoisin committed
158

jvoisin's avatar
jvoisin committed
159 160
- the [Google Summer of Code](https://summerofcode.withgoogle.com/);
- the fine people from [Tails]( https://tails.boum.org);
jvoisin's avatar
jvoisin committed
161 162 163 164
- friends

Many thanks to them!