科普:图片中的EXIF信息
当我们拍摄完一张图片后,其实我们会发现这个图片里是携带着EXIF
相关信息的
包括但不限于:
- 快速查看相机/手机品牌
- 镜头型号
- 曝光对焦参数
- 快门次数
- GPS定位等信息
很多对社工感兴趣的小伙伴,这时应该会有一个大胆的想法,那就是图片里如果包含了GPS定位信息
,那岂不是别人发个朋友圈不用定位我们也知道在哪里了呢?不妨现在就来试一试吧
演示:寻找下面图片的EXIF信息
我这里找到了一张之前在天津吃饭的照片,这里我发原图,大家可以用这张图做测试进行验证(3MB多,加载可能有点慢)
通过电脑自带的工具查看
下载完图片后,右键属性
,点击详细信息
![图片[2]-你知道一张图片,背后隐藏了多少信息?-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/08/20210812163550605.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
这里面就可以看到很多参数了,当然包括定位咯
![图片[3]-你知道一张图片,背后隐藏了多少信息?-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/08/20210812163628908.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
如果你不嫌麻烦,可以用在线工具来找到具体定位
我们粗略的填入上方的39
和117
![图片[4]-你知道一张图片,背后隐藏了多少信息?-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/08/20210812164300366-1024x522.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
我把相关链接放到下方,评论自取
通过微信小程序进行查看
微信里面可以使用小程序进行查看
![图片[5]-你知道一张图片,背后隐藏了多少信息?-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/08/20210812164735320.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
使用Python实现获取图片EXIF信息
当然,我们这里还给大家准备了适合程序员的处理方式,这里主要就是使用了exifread
模块读取图片的exif
信息
相关代码
百度地图的key我给大家已经配置好了,只需要修改倒数第二行的图片名称即可IMG_6623.jpg
import requests
import exifread
class GetPhotoInfo:
def __init__(self, photo):
self.photo = photo
# 百度地图ak 请替换为自己申请的ak
self.ak = 'w5yCMHrlcHn2Er6WHcjvpHMpNOeYGIX7'
self.location = self.get_photo_info()
def get_photo_info(self, ):
with open(self.photo, 'rb') as f:
tags = exifread.process_file(f)
try:
# 打印照片其中一些信息
print('拍摄时间:', tags['EXIF DateTimeOriginal'])
print('照相机制造商:', tags['Image Make'])
print('照相机型号:', tags['Image Model'])
print('照片尺寸:', tags['EXIF ExifImageWidth'], tags['EXIF ExifImageLength'])
# 纬度
lat_ref = tags["GPS GPSLatitudeRef"].printable
lat = tags["GPS GPSLatitude"].printable[1:-1].replace(" ", "").replace("/", ",").split(",")
lat = float(lat[0]) + float(lat[1]) / 60 + float(lat[2]) / float(lat[3]) / 3600
if lat_ref != "N":
lat = lat * (-1)
# 经度
lon_ref = tags["GPS GPSLongitudeRef"].printable
lon = tags["GPS GPSLongitude"].printable[1:-1].replace(" ", "").replace("/", ",").split(",")
lon = float(lon[0]) + float(lon[1]) / 60 + float(lon[2]) / float(lon[3]) / 3600
if lon_ref != "E":
lon = lon * (-1)
except KeyError:
return "ERROR:请确保照片包含经纬度等EXIF信息。"
else:
print("经纬度:", lat, lon)
return lat, lon
def get_location(self):
url = 'http://api.map.baidu.com/reverse_geocoding/v3/?ak={}&output=json' \
'&coordtype=wgs84ll&location={},{}'.format(self.ak, *self.location)
response = requests.get(url).json()
status = response['status']
if status == 0:
address = response['result']['formatted_address']
print('详细地址:', address)
else:
print('baidu_map error')
if __name__ == '__main__':
Main = GetPhotoInfo('IMG_6623.jpg')
Main.get_location()
图片和代码建议放在同一目录下
![图片[6]-你知道一张图片,背后隐藏了多少信息?-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/08/20210812165039492.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
然后运行一下程序
![图片[7]-你知道一张图片,背后隐藏了多少信息?-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/08/20210812165210887-1024x492.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
然后就可以看到结果了
![图片[8]-你知道一张图片,背后隐藏了多少信息?-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/08/20210812165233251-1024x185.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
附录:Pycharm安装
由于本教程需要使用python
脚本,故这里也简单介绍一下pycharm的安装过程
安装简易思路
如果你懒得看下面的过程,就记住:一直点next,如果有没打勾的打勾,简单粗暴。
安装详细过程
![图片[9]-你知道一张图片,背后隐藏了多少信息?-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/08/20210812150333626.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
![图片[10]-你知道一张图片,背后隐藏了多少信息?-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/08/20210812150345906.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
这里需要重启,添加环境变量才会生效
![图片[11]-你知道一张图片,背后隐藏了多少信息?-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/08/20210812150507882.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
然后立即重启
![图片[12]-你知道一张图片,背后隐藏了多少信息?-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/08/20210812150620345.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
重启之后,打开并同意用户协议
![图片[13]-你知道一张图片,背后隐藏了多少信息?-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/08/20210812150850574.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
然后选择不发送数据
![图片[14]-你知道一张图片,背后隐藏了多少信息?-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/08/20210812151105300.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
创建项目
使用PyCharm
创建一个新的项目
![图片[15]-你知道一张图片,背后隐藏了多少信息?-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/08/20210812151312992.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
文件位置可以根据你的需要进行修改,我这里选择默认的
![图片[16]-你知道一张图片,背后隐藏了多少信息?-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/08/20210812151424332.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
安装exifread模块
在Terminal
中使用pip安装exifread
模块
pip install exifread
![图片[17]-你知道一张图片,背后隐藏了多少信息?-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/08/20210812152623991.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
安装Requests模块
在Terminal
中使用pip安装Requests
模块
pip install Requests
配置过程中可能会遇到的坑
使用pip
安装的时候如果你习惯开了vpn
,很有可能会报错,然后还查不到原因。
NO ZUO NO DIE
![图片[18]-你知道一张图片,背后隐藏了多少信息?-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/08/20210812161244879-1024x251.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
© 版权声明
THE END
- 最新
- 最热
只看作者