照片元資訊
我們平時拍攝的圖檔,不僅包含了可見的像素資訊,還包含了我們看不到的隐藏資訊(元資訊),而這些元資訊,往往會不經意間洩露我們的隐私.
我們先來看看平時我們拍攝的照片裡面,到底藏了哪些資訊;
(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 re
def remove_all_exif(image_names):
for image_name in image_names:
try:
piexif.remove(image_name)
print(image_name,"exif資訊清除完畢")
except Exception:
pass
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)",file_name):
image_names.append(file_name)
print("已經将",file_name,"添加到清單!")
else:
pass
return image_names
def main():
image_names = get_images()
remove_all_exif(image_names)
pass
if __name__ == "__main__":
main()
批量擷取圖檔元資訊的腳本(009提取Exif.py)
import os
import sys
import re
import PIL
from PIL import Image
from PIL.ExifTags import TAGS
def 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:
pass
else:
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:
pass
return image_names
def main():
image_names = get_images()
get_Exif(image_names)
pass
if __name__ == "__main__":
main()