我们平时拍摄的图片,不仅包含了可见的像素信息,还包含了我们看不到的隐藏信息(元信息),而这些元信息,往往会不经意间泄露我们的隐私.
我们先来看看平时我们拍摄的照片里面,到底藏了哪些信息;
#####手机拍摄的照片,元信息非常丰富,包含了光圈/快门等拍摄参数,也包含了拍摄时间,拍摄地点等个人隐私信息,所以不要轻易将未经处理的原图发送给他人,尤其不要随意上传原图!
#####相机拍摄的图片与手机类似,同样包含了地理信息,拍摄时间信息; #####相机拍摄的图片,摄影师一般会使用软件进行后期处理,为了保护隐私,图片在导出时记得勾选消除元信息的选项(下图为Adobe Lightroom的导出示例)
不只是我们平常拍的照片,网站图片的也可能存在安全隐患;
#####黑客通过爬虫批量下载网站图片,然后分析网站图片的元数据,从中获取有价值的信息,有的网站对于用户上传的图片处理的很好,有的网站做的就不够理想... ###(3) 高校网站:
高校的官网大多年久失修,底层框架陈旧,网站安全性不是很好,高校网站的图片,一般没有进行过专业的后期处理,几乎是拍完即用,有很多安全隐患,以我从学校官网下载的新闻图片为例:
仅从图片的命名就可以确定拍摄的时间; 通过读取图片的元信息可以了解到,相机型号: 佳能750D; 拍摄时间:2017年6月23日下午4点15分16秒; 最应该消除的GPS信息被保留了下来...
不讲了...高校的网站安全建设有待提高...
###(4) 政府官网图片元信息:
下面这张图片是从政府官网找到的,与高校官网的图片相比,图片命名看不到有价值的信息,通过读取元信息,能了解到: 相机型号:Canon EOS-1D X Mark II, 拍摄时间:2017年9月13日下午3点48分13秒拍摄...
与高校相比,政府官网的图片信息相对安全
简书网站的图片找不到任何图片元信息的,大家可以放心上传!不只是简书,微博,微信,qq等主流的社交平台,为了减少服务器存储图片的开销,会主动帮用户主动消除元信息,只要你不往平台上传原图,就基本可以保证信息的安全!
##我想消除图片隐藏的信息,怎么办? ####这里提供一个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()
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()