此分析是在iphone7拍摄照片基础上做出的,是否是通用情况还需测试。
jpeg格式文件以'0xFFD8'
开始,以'0xFFD9'
(大端存储)
获取照片元数据信息:
查找Exif区域:FF E1 16 9F 45 78 69 66 00 00 4D 4D 00 2A 00 00 00 08 00 0B
FF E1
Exif段开始标志, 后面两字节是Exif段大小, 再后面45 78 69 66 00 00
是Exif的ascii码和两个零字节。
4D 4D
表示后面的数据区用大端字节序存储,对应还有小端用49 49
表示。
00 2A
和 00 00 00 08
是固定的。分别是0x002A,因为是大端所以如此存储。
00 0B
是后面数据区大小(数据区包括这两个字节本身)。
寻找修改时间:0x0132
,
子数据区:0x8769
,里面有两个时间:0x9003
,0x9004
GPS信息区域:0x8825
,里面有如下:
0x0001:’N’或’S’
0x0002:纬度,8字节*3
0x0003:’E’或’W’
0x0004:经度,8字节*3
0x0005:0海平面上,1海平面下
0x0006:海拔,8字节
0x0007:UTC时间的时分秒,8字节*3。一般是我们的时间减8小时,分秒不变。
0x001d:11个字节的字符(包括结尾的0字节),时间戳