全球要闻:为什么不要上传原图?一张图片背后能提取多少信息?
时间 : 2023-07-03 03:00:52   来源 : 哔哩哔哩

科普:图片中的EXIF信息

EXIF是Exchangeable Image File Format的缩写,它是一种用于在数字图像文件中存储元数据的标准格式。元数据是关于图片的信息,比如拍摄设备、拍摄日期和时间、曝光时间、ISO值、焦距、GPS定位等信息。


(资料图片仅供参考)

EXIF信息通常由数码相机、智能手机等设备在拍摄照片时自动添加到图像文件中。这些数据可以提供有关照片的详细信息,使用户能够了解拍摄环境以及使用的摄影设置。EXIF还可以记录一些特定于设备的信息,如制造商和型号。

很多对社工感兴趣的小伙伴,这时应该会有一个大胆的想法,那就是图片里如果包含了GPS定位信息,那岂不是别人发个朋友圈不用定位我们也知道在哪里了呢?(发朋友圈不就是为了展示自己在哪?)不妨现在就来试一试吧

演示:寻找下面图片的EXIF信息

我这里找了一张昨天随手拍的一张照片,大家可以用这张图做测试进行验证

通过电脑自带的工具查看

下载完图片后,右键属性,点击详细信息

这里面就可以看到很多参数了,当然也包括最重要的定位

到了这里如果你不嫌麻烦,可以用在线工具来找到具体定位

我们粗略的填入上方的29和108

发现这里和我的实际位置相差有点大,那么我们再精确一点

真正想要获取大家个人的人肯定不会用这么傻的方法,下面为大家讲解高效的批量获取

使用Python实现获取图片EXIF信息

这里主要就是使用了exifread模块读取图片的exif信息,测试使用中需要安装

exifread模块和Requests模块

相关代码

import requests

import exifread

class GetPhotoInfo:

def __init__(self, photo):

= photo  

= '填写自己的百度ak'

= _photo_info()

def get_photo_info(self, ):

with open(, 'rb') as f:

tags = _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 = '/reverse_geocoding/v3/?ak={}&output=json' \

'&coordtype=wgs84ll&location={},{}'.format(, *)

response = (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_')

_location()

配置过程中可能会遇到的坑

使用pip安装的时候如果你习惯开了vpn,很有可能会报错,然后还查不到原因。

为防止这里被别有用心的人利用,这里我就点到为止了(真正想干坏事的也不用我这小菜鸡教)

写这篇文章只是为了从一个人肉者,开盒者的角度提醒大家注意防范个人隐私的泄露。

最后引用一句网友的话“对于大多数人来说,个人信息会不会泄露,不取决于你想不想泄露,而取决于有没有人想要”

标签:

相关文章

X 关闭

X 关闭