标签:图片 ora note rtu 地址 保存 mod span 填充
继续对图片隐写技巧的学习,这次是对JPEG文件格式的学习和理解。同PNG文件的格式对比,JPEG文件相对简单,读取其中隐藏payload的方式大同小异,两者区别在于文件格式不同,可供利用的细节存在差异。
下载地址:
https://github.com/abeluck/stegdetect
下载地址:
下载地址:
http://www.impulseadventure.com/photo/jpeg-snoop.html
JPEG是Joint Photographic Experts Group(联合图像专家组)的缩写
采用YCrCb色彩模型,更适合图形压缩,而不是RGB
人眼对图片上的亮度Y的变化远比色度C的变化敏感. 如果每个点保存一个8bit的亮度值Y, 每2×2个点保存一个CrCb值, 图象在肉眼中的感觉不会起太大的变化,而且节省一半的空间
Y = 0.299R + 0.587G + 0.114*B
Cb = - 0.1687R - 0.3313G + 0.5 *B + 128
Cr = 0.5 R - 0.4187G - 0.0813*B + 128
R = Y + 1.402 *(Cr-128)
G = Y - 0.34414(Cb-128) - 0.71414(Cr-128)
B = Y + 1.772 *(Cb-128)
JPEG文件大体上可以分成两个部分:标记码和压缩数据
标记码:
由两个字节构成,第一个字节是固定值0xFF,后一个字节则根据不同意义有不同数值
在每个标记码之前可以添加数目不限的无意义的0xFF填充,连续的多个0xFF可以被理解为一个0xFF,并表示一个标记码的开始
常见的标记码:
压缩数据:
前两个字节保存整个段的长度,包括这两个字节
注:
这个长度的表示方法按照高位在前,低位在后,与PNG文件的长度表示方法不同
例如长度是0x12AB,存储顺序为0x12,0xAB
Exif文件是JPEG文件的一种,遵从JPEG标准,只是在文件头信息中增加了拍摄信息和索引图
用相机拍出来的jpeg都会有这个信息
储存在APP1(0xFFE1)数据区中
接下来两字节保存APP1数据区(即Exif数据区)的大小
接着为Exif Header,固定结构:0x457869660000
后面为Exif的数据
下载地址:
https://github.com/alchemy-fr/exiftool
下载地址:
添加操作如图
以上隐写方法引用自:
目前已经有很多开源的工具能够实现以上高级的隐写方法
当然,对应的隐写检测工具也出现了很久
比如:Stegdetect
下载地址:
https://github.com/abeluck/stegdetect
接下来介绍在学习文件格式后产生的一些隐藏思路:
如图,不会影响图片的正常浏览
COM注释为0xff和0xfe
插入数据0x11111111
长度为0x04
总长度为0x06
完整的十六进制格式为0xffff000611111111
插入位置为DHT前面,如图
插入后如图,不影响图片的正常查看
将ff改为fe,如图,同样不影响图片的正常查看
原理同上,标志码换成可被忽略的特殊值
例如:
经测试以上标识码均不影响图片的正常查看
DQT: Define Quantization Table
标识码为0xdb
接下来两字节表示长度
接下来一字节表示QT设置信息
前4bit为QT号
后4bit为QT精度,0=8bit,否则为16bit
最后是QT信息,长度为64的整数倍
查看测试图片的DQT信息,如图
长度为0x43,十进制为67
00表示QT号为0,精度为8bit
接着64字节为QT信息字节
注:
此处DQT格式参考自http://www.opennet.ru/docs/formats/jpeg.txt
尝试将这64字节替换,如图
前后对比如图,能够发现图片的变化
如果仅仅是调整其中部分字节,改为payload,那么能有多大区别呢,对比如图
依次类推,可供修改的位置还有很多
对于以上的隐藏方法,借助jpeg图片格式分析工具就能发现其中的痕迹
比如JPEGsnoop
下载地址:
http://www.impulseadventure.com/photo/jpeg-snoop.html
支持如下文件的格式分析:
实际测试:
如下图,发现了图片中添加的COM注释
如下图,通过查看DQT的数据识别添加的payload,0x11对应的十进制为17
同样,JPEGsnoop能够解析jpeg图片的EXIF信息,如下图
注:
为便于测试,截图中的以下数值通过MagicEXIF软件手动添加:
EXIF Make/Model: OK [test] [???]
EXIF Makernotes: NONE
EXIF Software: OK [MagicEXIF Metadata Codec 1.02]
相比于png文件,由于jpeg文件没有对图像数据的校验位,所以在jpeg文件中添加payload简单了很多
下载JPEG图片解析并执行payload的方法不再介绍
本文对JPEG的格式进行介绍,着重分析如何根据JPEG的文件格式,利用特定标志码隐藏payload,这种方式虽然不会影响图片的正常浏览,但是借助于格式分析软件仍能够发现其中的细节。介绍JPEG格式的官方文档里面待学习的内容还有很多,认识越深,可供研究的技巧将会更多。
标签:图片 ora note rtu 地址 保存 mod span 填充
原文地址:http://www.cnblogs.com/test404/p/6233862.html