隐写的判断
图片一:
图片二:
如果让你找出这两张图片有什么不同的话你可以找到的不同点有什么?或者说有一张照片隐藏了什么信息?
其实,这里用了“隐写”,在图片中添加了特别的文字信息。
了解基本原理
一张数码照片是由像素构成,而每一个像素由RGB构成,R,G,B 都有256种状态。一般用1个十六进制或者,三个十进制来表示。那么隐写就是基于这个原理来实现的,就是先把文字信息转换成二进制信息,然后将二进制信息写入到每一个RGB的最低位上,也就是LSB技术。
比如6的二进制是:0110
一个像素点的RGB(46,22,22)转换成二进制是RGB(00101110,00010110,00010110)
把被加密数字6的二进制信息,按顺序放到RGB的最后一位就好了。处理完之后这个像素点就变成了RGB(00101110,00010111,00010111)转换成十进制就是RGB(46,23,23)。
这里只用了一个像素点,只能放三位,像素点多了,就可以放很多信息。
除了以上以为我们还可以分析图片的编码,来找出一张图片是否存在问题。
找不同
明白基本原理了那么我们找找这两张图片有什么不同的地方
把两张放到同一个文件夹中
先看看二进制字符串有没有什么问题
在对象文件或二进制文件中查找可打印的字符串。字符串是4个或更多可打印字符的任意序列,以换行符或空字符结束。 strings命令对识别随机对象文件很有用。
在这里插入图片描述
其实这里大概看的话是没什么问题的,但是在下面图片三的字符串出现了和图片二不一样的地方
这里字符串怪异的想到图片三肯定隐藏了一些信息,继续往下走
这里我们可以看见两个图片的差异了,3.jpg从117477开始出现偏移就是压缩文件,反观看2.jpg就只是一个单纯的图片没什么有趣的地方。
这里我们也可以手动观察编码来进行区分
我们只需要知道一个完整的 jpg 文件由 FF D8 开头,FF D9结尾,图片查看器会忽略 FF D9 以后的内容,因此可以在 jpg 文件中加入其他文件。经过上面的分析, 知道图片中隐藏了文件。我们只是需要找到FF D9结尾就可以找到下一个文件的位置。
分离
既然找出图片二有问题的话,那么我们只需要找到其中的问题
可以看到分离出一张照片
分析一下这张照片除了图片里的人adr为0以为还有什么
这里我们可以看见这张这里里面被隐写入了一个文件,这种隐写一般是写编码不是写像素的那种那么我们直接把文件从图片里提出来。
这样最后的文件也被我们提出来了
这样最后的文件也被我们提出来了
网站少儿不宜,到此我们找到两张图片存在的不同不止一处。