你的照片安全么?
照片元信息
我們平時拍攝的圖片,不僅包含了可見的像素信息,還包含了我們看不到的隱藏信息(元信息),而這些元信息,往往會不經意間泄露我們的隱私.
我們先來看看平時我們拍攝的照片里面,到底藏了哪些信息;
(1) iPhone6s照片元信息的提取:
iPhone6s 運行腳本手機拍攝的照片,元信息非常豐富,包含了光圈/快門等拍攝參數,也包含了拍攝時間,拍攝地點等個人隱私信息,所以不要輕易將未經處理的原圖發送給他人,尤其不要隨意上傳原圖!
(2) 佳能70D拍攝照片元信息的提取:
佳能70D 運行腳本相機拍攝的圖片與手機類似,同樣包含了地理信息,拍攝時間信息;
相機拍攝的圖片,攝影師一般會使用軟件進行后期處理,為了保護隱私,圖片在導出時記得勾選消除元信息的選項(下圖為Adobe Lightroom的導出示例)
Lightroom消除元信息不只是我們平常拍的照片,網站圖片的也可能存在安全隱患;
黑客通過爬蟲批量下載網站圖片,然后分析網站圖片的元數據,從中獲取有價值的信息,有的網站對于用戶上傳的圖片處理的很好,有的網站做的就不夠理想...
(3) 高校網站:
高校的官網大多年久失修,底層框架陳舊,網站安全性不是很好,高校網站的圖片,一般沒有進行過專業的后期處理,幾乎是拍完即用,有很多安全隱患,以我從學校官網下載的新聞圖片為例:
僅從圖片的命名就可以確定拍攝的時間;
通過讀取圖片的元信息可以了解到,相機型號: 佳能750D;
拍攝時間:2017年6月23日下午4點15分16秒;
最應該消除的GPS信息被保留了下來...
不講了...高校的網站安全建設有待提高...
學校 運行腳本(4) 政府官網圖片元信息:
下面這張圖片是從政府官網找到的,與高校官網的圖片相比,圖片命名看不到有價值的信息,通過讀取元信息,能了解到:
相機型號:Canon EOS-1D X Mark II,
拍攝時間:2017年9月13日下午3點48分13秒拍攝...
與高校相比,政府官網的圖片信息相對安全
官網 運行腳本(5)簡書網站的圖片
簡書 運行腳本簡書網站的圖片找不到任何圖片元信息的,大家可以放心上傳!不只是簡書,微博,微信,qq等主流的社交平臺,為了減少服務器存儲圖片的開銷,會主動幫用戶主動消除元信息,只要你不往平臺上傳原圖,就基本可以保證信息的安全!
我想消除圖片隱藏的信息,怎么辦?
這里提供一個python腳本,將腳本和圖片放到一起,然后運行腳本即可:
python腳本GIF演示中, 009是為了前后對比,驗證清除的效果,其實只需運行010即可!
批量消除圖片元信息的腳本(010刪除Exif.py)
import piexif import sys import os import redef remove_all_exif(image_names):for image_name in image_names:try:piexif.remove(image_name)print(image_name,"exif信息清除完畢")except Exception:passdef get_images():all_file_names = os.listdir()image_names = list()for file_name in all_file_names:if re.match(r".*\.(jpg|JPG|png)",file_name):image_names.append(file_name)print("已經將",file_name,"添加到列表!")else:passreturn image_namesdef main():image_names = get_images()remove_all_exif(image_names)passif __name__ == "__main__":main()批量獲取圖片元信息的腳本(009提取Exif.py)
import os import sys import re import PILfrom PIL import Image from PIL.ExifTags import TAGSdef get_Exif(image_names):for image_name in image_names:print("開始讀取",image_name)exifData = dict()imgFile = Image.open(image_name)try:info = imgFile._getexif()if info:print(image_name,"的信息為:")for (key, value) in info.items():nice=TAGS.get(key, key)print("%s(%s) = %s"%(nice, key, value))if nice == "GPSInfo":print("---%s(%s) = %s---"%(nice,key,value))elif re.match(r"^Date.*", nice):print("%s(%s) = %s"%(nice, key, value))else:passelse:print("沒有任何元信息!")except Exception as e:print(e)def get_images():all_file_names = os.listdir()image_names = list()for file_name in all_file_names:if re.match(r".*\.(jpg|JPG|png|jpeg)",file_name):image_names.append(file_name)else:passreturn image_namesdef main():image_names = get_images()get_Exif(image_names)passif __name__ == "__main__":main()如果您喜歡python,喜歡故事,請點贊或關注我!您的支持是對作者最大的鼓勵!
總結
- 上一篇: OKR 和 KPI 的适用场景
- 下一篇: android 打包出现错误Error: