你与陌生人之间,
可能只是一张照片的距离。
有时候一张“原图”照片,
分分钟就暴露了你的信息…
很多朋友喜欢在朋友圈晒各种图片,美食、旅游、自拍,殊不知这些朋友在晒照片时,已经将自己的信息泄露出去了,特别是将自己家里拍的照片晒到朋友圈时,家庭住址信息暴露无遗,让非法之徒有了可乘之机。粗心的父母们发出孩子照片,给了人贩子可趁之机。
这背后是什么原理呢?
因为你将原图晒到了朋友圈。
今天我们就来说一说“原图”背后的东西,以及如何通过技术手段获取原图的定位信息。
原来,现在任何智能手机拍摄的照片,都含有一个叫
Exif
参数的东西。
它还包括光圈、快门、ISO、白平衡、日期时间等各种图像数据,最关键的一项是,位置信息。
如果没有经过人为处理,这些图片的Exif参数会一直存在。
拍照时因为软件调用了Exif中的GPS全球定位系统数据,这些来自于手机内部的传感器以及陀螺仪的数据,把拍照时的位置时间等一点不差地记录了下来。于是在朋友圈po的照片,完整展示了一天的踪迹,也就不难解释。那么,如何通过技术手段实现定位信息的抓取呢,来来来让我们一起看下实现方式:
from PIL import Image
from PIL.ExifTags import TAGS
def get_exif_data(fname): # 该函数定义了如何从照片原图中获取EXIF信息
ret = {}
try:
img = Image.open(fname)
if hasattr( img, '_getexif' ):
exifinfo = img._getexif()
if exifinfo != None:
for tag, value in exifinfo.items():
decoded = TAGS.get(tag, tag)
ret[decoded] = value
except IOError:
print('IOERROR ' + fname)
return ret
fileName= '请输入文件路径'
if __name__ == '__main__':
exif = get_exif_data(fileName)
for key, value in exif.items():
if key == 'GPSInfo':
TD = exif[key]
print(TD)
运行上述代码,得到以下结果:{1: ‘N’, 2: ((31, 1), (11, 1), (34, 1)), 3: ‘E’, 4: ((121, 1), (29, 1), (38, 1)), 7: ((1, 1), (49, 1), (7, 1)), 29: ‘2020-03-11′}翻译一下,就是照片拍摄地的维度为:31°11′ 34″ ,经度为:121°29’ 38″
将上述经纬度信息,调用百度或高德地图API,就能转换成地址啦,如何调用及转化,将在下一篇文章中做详细说明。
友情提醒:经过美图的照片依然会显示位置信息:
不要随意在网上po出原图照片,
同时谨慎开启APP里的定位功能。
如果大家喜欢我的文章,请添加关注公众号(二帮主做IT审计),你们的关注和赞赏,是我不断更新的动力。
http://weixin.qq.com/r/_zl5YfbEe6sErbIC92zp (二维码自动识别)