典型的數(shù)據(jù)文件通常關(guān)聯(lián)著“元數(shù)據(jù)”,其包含這個(gè)文件的描述信息,表現(xiàn)為一系列屬性-值的集合。元數(shù)據(jù)一般包括創(chuàng)建者名稱、生成文件的工具、文件創(chuàng)建/修改時(shí)期、創(chuàng)建位置和編輯歷史等等。幾種流行的元數(shù)據(jù)標(biāo)準(zhǔn)有 EXIF(圖片)、RDF(web資源)和DOI(數(shù)字文檔)等。
雖然元數(shù)據(jù)在數(shù)據(jù)管理領(lǐng)域有它的優(yōu)點(diǎn),但事實(shí)上它會(huì)危害你的隱私。相機(jī)圖片中的EXIF格式數(shù)據(jù)會(huì)泄露出可識(shí)別的個(gè)人信息,比如相機(jī)型號(hào)、拍攝相關(guān)的GPS坐標(biāo)和用戶偏愛(ài)的照片編輯軟件等。在文檔和電子表格中的元數(shù)據(jù)包含作者/所屬單位信息和相關(guān)的編輯歷史。不一定這么絕對(duì),但諸如metagoofil一類的元數(shù)據(jù)收集工具在信息收集的過(guò)程中常最作為入侵測(cè)試的一部分被利用。
![](/d/20211018/234e9b1465eedc34c2adb29b2c582918.gif)
對(duì)那些想要從共享數(shù)據(jù)中擦除一切個(gè)人元數(shù)據(jù)的用戶來(lái)說(shuō),有一些方法從數(shù)據(jù)文件中移除元數(shù)據(jù)。你可以使用已有的文檔或圖片編輯軟件,通常有自帶的元數(shù)據(jù)編輯功能。在這個(gè)教程里,我會(huì)介紹一種不錯(cuò)的、單獨(dú)的元數(shù)據(jù)清理工具,其目標(biāo)只有一個(gè):匿名一切私有元數(shù)據(jù)。
MAT(元數(shù)據(jù)匿名工具箱)是一款專業(yè)的元數(shù)據(jù)清理器,使用Python編寫。它屬于Tor旗下的項(xiàng)目,而且是Live 版的隱私增強(qiáng)操作系統(tǒng) Trails 的標(biāo)配應(yīng)用。
與諸如exiftool等只能對(duì)有限種類的文件類型進(jìn)行寫入的工具相比,MAT支持從各種各樣的文件中消除元數(shù)據(jù):圖片(png、jpg)、文檔(odt、docx、pptx、xlsx和pdf)、歸檔文件(tar、tar.bz2)和音頻(mp3、ogg、flac)等。
在Linux上安裝MAT
在基于Debian的系統(tǒng)(Ubuntu或Linux Mint)上,已經(jīng)打包好MAT,所以安裝很直接:
$ sudo apt-get install mat
在Fedora上,并沒(méi)有預(yù)先生成的MAT軟件包,所以你需要從源碼生成。這是我在Fedora上生成MAT的步驟(不成功的話,請(qǐng)查看教程底部):
$ sudo yum install python-devel intltool python-pdfrw perl-Image-ExifTool python-mutagen$ sudo pip install hachoir-core hachoir-parser$ wget https://mat.boum.org/files/mat-0.5.tar.xz$ tar xf mat-0.5.tar.xz$ cd mat-0.5$ python setup.py install
使用MAT-GUI匿名元數(shù)據(jù)
一旦安裝好,通過(guò)GUI和命令行都可以使用MAT。輸入這個(gè)命令啟動(dòng)MAT的GUI:
$ mat-gui
嘗試清理一個(gè)包含如下內(nèi)置元數(shù)據(jù)的實(shí)例文檔文件(如private.odt)。
![](/d/20211018/447bd8b0a50a324d3b33a649dd29d290.gif)
點(diǎn)擊“添加”按鈕來(lái)添加需要清理的文件到MAT中。一旦載入文件,點(diǎn)擊“確認(rèn)”按鈕對(duì)所有隱藏的元數(shù)據(jù)信息進(jìn)行掃描。
![](/d/20211018/697588fc65c2f2666740bd67b44be51f.gif)
只要元數(shù)據(jù)被MAT檢測(cè)到,“State”狀態(tài)就會(huì)被標(biāo)記成“Dirty”。雙擊文件可以查看檢測(cè)到的元數(shù)據(jù)。
![](/d/20211018/da8e7503af750b0d79958f79010eff76.gif)
點(diǎn)擊“清理”按鈕來(lái)清除文件中的元數(shù)據(jù)。MAT會(huì)自動(dòng)清空文件中的所有私有元數(shù)據(jù)字段。
![](/d/20211018/821e0d4f1146cae9e0e67ce563874248.gif)
清除后的狀態(tài)中不包含任何私有可辨識(shí)的痕跡:
![](/d/20211018/5838c1059712fef1f96e76a970ca7525.gif)
從命令行匿名元數(shù)據(jù)
$ mat -c .
正如前面提到的,另一種調(diào)用MAT的方式是從命令行,使用mat命令可達(dá)到。
為了檢查任何敏感的元數(shù)據(jù),先前往文件所在的目錄,然后運(yùn)行:
$ mat -c .
這樣會(huì)掃描當(dāng)前目錄和其子目錄下的所有文件,并報(bào)告它們的狀態(tài)(已清理或未清理)。
![](/d/20211018/8fe4290f8ebb450e37d2a50a8da02d2a.gif)
你可以使用“-d”選項(xiàng)來(lái)查看檢測(cè)到的真實(shí)元數(shù)據(jù):
$ mat -d input_file>
![](/d/20211018/d4704474139835c80e9bf21b6b3ec97d.gif)
如果不為mat命令提供任何選項(xiàng),默認(rèn)操作會(huì)移除文件的元數(shù)據(jù)。如果要在清理的過(guò)程中保留原始文件的備份,使用“-b”選項(xiàng)。下面命令會(huì)清除所有文件的元數(shù)據(jù),并將原始文件存儲(chǔ)為“*.bak”文件。
$ mat -b .
![](/d/20211018/99a19a6e5b58f0c0854daddf634fb990.gif)
查看所支持的文件類型,請(qǐng)運(yùn)行:
$ mat -l
![](/d/20211018/b17257e0594fe7a0a1fe8cd2c143fa81.gif)
故障排除
當(dāng)前我在Fedora上使用編譯版本的MAT遇到了下列問(wèn)題。當(dāng)我嘗試在Fedora清除歸檔/文檔文件的元數(shù)據(jù)時(shí)(如.gz、.odt、*.docx),MAT因?yàn)橄铝绣e(cuò)誤失敗。如果你知道如何解決這個(gè)問(wèn)題,請(qǐng)?jiān)谠u(píng)論里回復(fù)我。
File "/usr/lib64/python2.7/zipfile.py", line 305, in __init__ raise ValueError('ZIP does not support timestamps before 1980')ValueError: ZIP does not support timestamps before 1980
總結(jié)
MAT是一款簡(jiǎn)單但非常好用的工具,用來(lái)預(yù)防從元數(shù)據(jù)中無(wú)意泄露私人數(shù)據(jù)。請(qǐng)注意如果有必要,文件內(nèi)容也需要保護(hù)。MAT能做的是消除與文件相關(guān)的元數(shù)據(jù),但并不會(huì)對(duì)文件本身進(jìn)行任何操作。簡(jiǎn)而言之,MAT是一名救生員,因?yàn)樗梢蕴幚泶蠖鄶?shù)常見(jiàn)的元數(shù)據(jù)移除,但不應(yīng)該只指望它來(lái)保證你的隱私。[譯者注:養(yǎng)成良好的隱私保護(hù)意識(shí)和習(xí)慣才是最好的方法,謝謝閱讀,希望能幫到大家,請(qǐng)繼續(xù)關(guān)注腳本之家,我們會(huì)努力分享更多優(yōu)秀的文章。