JPG图片中默认存在敏感数据,例如位置,相机类型等,可以使用Python脚本提取出来,加以利用,自己手动拍摄一张照片,然后就能解析出这些敏感数据了,对于渗透测试信息搜索有一定帮助,但有些相机默认会抹除这些参数。

提取图片EXIF参数: 通过提取指定图片的EXIF参数结合GPS数据定位到当时拍摄图片的物理位置.

import os,sys,json
import exifread
import urllib.request #调用百度地图API通过经纬度获取位置
def getlocation(lat,lon):
url = "http://api.map.baidu.com/reverse_geocoding/v3/?ak=GPqF0q0uFT4zOmVKmPU7 \
gu3SmB9z3jFV&output=json&coordtype=wgs84ll&location="+lat+","+lon
req = urllib.request.urlopen(url)
res = req.read().decode("utf-8")
string = json.loads(res)
jsonResult = string.get("result")
formatted_address = jsonResult.get("formatted_address")
print("目标所在城市: {}".format(formatted_address)) if __name__ == "__main__":
if len(sys.argv) < 2:
print("[-] 请传递一个图片地址")
else:
ImageName = str(sys.argv[1])
with open(ImageName,'rb') as f:
tags = exifread.process_file(f)
print("设备品牌: {}".format(tags['Image Make']))
print("具体型号: {}".format(tags['Image Model']))
print('照片尺寸: {} x {}'.format(tags['EXIF ExifImageWidth'], tags['EXIF ExifImageLength']))
print("创建日期: {}".format(tags['Image DateTime']))
print("拍摄时间: {}".format(tags["EXIF DateTimeOriginal"].printable))
print("GPS处理方法: {}".format(tags['GPS GPSProcessingMethod']))
print("GPSTimeStamp: {}".format(tags['GPS GPSTimeStamp']))
print("拍摄软件版本: {}".format(tags['Image Software']))
#纬度
LatRef=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 LatRef != "N":
Lat=Lat*(-1)
#经度
LonRef=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 LonRef!="E":
Lon=Lon*(-1)
f.close()
print("目标所在经纬度: {},{}".format(Lat,Lon))
getlocation(str(Lat),str(Lon))

将图片转为字符图片: 通过pillow图片处理库,对图片进行扫描,然后用特殊字符替换图片的每一个位,生成的字符图片.

from PIL import Image
import argparse # 将256灰度平均映射到70个字符上
def get_char(r,g,b,alpha = 256):
ascii_char = list("~!@#$%^&*()_+ ")
if alpha == 0:
return " "
length = len(ascii_char)
gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
unit = (256.0 + 1)/length
return ascii_char[int(gray/unit)] if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--file",dest="file",help="指定一个图片文件")
parser.add_argument("--width",dest="width",type=int,default=50,help="指定图片宽度")
parser.add_argument("--height",dest="height",type=int,default=25,help="指定图片高度")
args = parser.parse_args()
# 使用方式: pip install pillow | main.py --file=xxx.jpg
if args.file != None:
img = Image.open(args.file)
img = img.resize((args.width,args.height), Image.NEAREST)
txt = ""
for row in range(args.height):
for cow in range(args.width):
txt += get_char(*img.getpixel((cow,row)))
txt += "\n"
print(txt)
else:
parser.print_help()

Python 提取图片中的GPS信息的更多相关文章

  1. python 提取linux的硬件信息

    1.代码实现目的 注:代码可以直接粘贴使用 为了实现对主机的整体有明确的了解,实现了下面的代码功能 代码主要功能是: 提取到主机的内存.硬盘.CPU.型号等信息 插入到mysql的数据库中 2.代码具 ...

  2. 使用 python 提取照片中的手机信息

    使用 python 提取照片中的手机信息 最近在做一个项目,有一个很重要的点是需要获取使用用户的手机信息,这里我选择从照片中获取信息.有人会问为什么不从手机里面直接获取设备信息.由于现在android ...

  3. 实战项目——获取图片中的GPS位置信息和拍摄时间

    今天突然看到有人写过获取图片中位置信息的程序.我觉得很有趣,也就自己实践了一下,研究了一下 话不多说,先上代码 #!/usr/bin/env python3 # -*- coding: utf-8 - ...

  4. python学习笔记——爬虫中提取网页中的信息

    1 数据类型 网页中的数据类型可分为结构化数据.半结构化数据.非结构化数据三种 1.1 结构化数据 常见的是MySQL,表现为二维形式的数据 1.2 半结构化数据 是结构化数据的一种形式,并不符合关系 ...

  5. 文件读写以及NMEA码中GPS信息的提取

    首先先了解下什么是NMEA码,这里有很好的解释,就不直接搬运了 http://www.gpsbaby.com/wz/nmea.html 首先要找到包含GPS信息的文本行,即字符串GPGGA所在行 $G ...

  6. 利用Python读取图片exif敏感信息

    众所周知,现在很多的照相机等软件,拍摄会有选项,是否包含位置信息等. 当然有的人会说,我在微信中查看图片exif信息并没有啊,这是因为你发送到微信服务器的时候,微信帮你完成了保密工作. 常见的图片中包 ...

  7. python提取浏览器Cookie

    在用浏览器进行网页访问时,会向网页所在的服务器发送http协议的GET或者POST等请求,在请求中除了指定所请求的方法以及URI之外,后面还跟随着一段Request Header.Request He ...

  8. 利用strstr和sscanf解析GPS信息

    比如说我们要做一个GPS导航的项目,需要读取GPS模块以ASCII码的形式发送过来的数据,然后对这些数据进行处理,提取我们需要的信息.这就涉及到很多操作字符串的问题.下面就以此为例,利用strstr函 ...

  9. python操作txt文件中数据教程[2]-python提取txt文件

    python操作txt文件中数据教程[2]-python提取txt文件中的行列元素 觉得有用的话,欢迎一起讨论相互学习~Follow Me 原始txt文件 程序实现后结果-将txt中元素提取并保存在c ...

  10. 如何用ABBYY FineReader提取图片中的文字

    作为OCR文字识别软件中的佼佼者,可能大家对于ABBYY FineReader的使用还不熟练,没关系,今天小编就为大家演示,如何用ABBYY FineReader这款文字识别软件,将一张截图中的文字识 ...

随机推荐

  1. GPT-4测评,大家先别急,图片输入还没来

    昨天GPT-4朋友圈刷屏,我更新了一篇小文章,极简罗列GPT-4的一些情报: 1 ChatGPT Plus用户才可试用GPT-4 2 试用阶段每四小时最多100条信息 3 知识库还是2021年 4 上 ...

  2. ajax补充说明 多对多三种创建方式 django内置序列化组件 ORM批量操作数据 分页器 form组件入门

    目录 ajax补充说明 request.is_ajax() ajax回调函数接收返回值 ajax回调函数 接受json数据 第一种方式:后端使用json模块 第二种方式:后端返回JsonRespons ...

  3. POJ 3259 Wormholes(bellman_ford、Floyd、SPFA判断负环)

    POJ 3259 http://poj.org/problem?id=3259 题意: 农夫 FJ 有 N 块田地[编号 1...n] (1<=N<=500) 田地间有 M 条路径 [双向 ...

  4. 智能制造之 SMT 产线监控管理可视化

    前言 随着<中国制造2025>的提出,制造业迎来了全新的发展机遇.更多的企业将制造业信息化技术进行广泛的应用,如 MES 系统.数字孪生以及生产管理可视化等技术的研究应用,已经成为社会各界 ...

  5. 实战指南 | Serverless 架构下的应用开发

    作者 | 刘宇.田初东.卢萌凯.王仁达 UC Berkeley认为Serverless架构的出现过程类似于40多年前从汇编语言转向高级语言的过程,在未来Serverless架构的使用会飙升,或许服务器 ...

  6. 机器学习-决策树系列-Adaboost算法-集成学习-29

    目录 1. adaboost算法的基本思想 2. 具体实现 1. adaboost算法的基本思想 集成学习是将多个弱模型集成在一起 变成一个强模型 提高模型的准确率,一般有如下两种: bagging: ...

  7. SNMP 使用总结

    转载请注明出处: 1.SNMP简介 SNMP(Simple Network Management Protocol,简单网络管理协议)是一种用于网络设备和系统的管理协议.它允许网络管理员监控和管理网络 ...

  8. AMBA总线介绍-01

    AMBA总线介绍 AMBA总线概述 AHB APB 不同IP之间的互连 1.系统总线简介 系统芯片中各个模块之间需要有接口连接,使用总线作为子系统之间共享的通信链路 优点:成本低,方便易用(通用协议, ...

  9. WebApi允许跨域

    services.AddCors(options => { options.AddPolicy("abc", builder => { //App:CorsOrigin ...

  10. html监听标签的resize

    <html> <body> <div id="div1" style="width:100%;height:100%;"> ...