图片隐写相关

前言
图片隐写总的来讲,就是对图片进行一些加密,将自己所要隐藏的信息进行隐藏,而隐藏的方式多重多样,破解的方式也多种多样。
话不多说,开始正题。
一般来讲,我们在拿到图片后都会看到一个后缀名,大部分人在看到后缀名后就会下意识的认为这个就是图片本身的后缀,但有些时候并不是。所以我们在这时需要对图片头部进行分析,精确的确认图片到底是什么图片类型。以下是各个头文件类型:图片隐写相关_第1张图片
图片隐写相关_第2张图片
图片隐写相关_第3张图片
而你自己想要查看图片的头文件的话,可以尝试用binwalk查看,而且还可以找出是否有其他图片在该文件下。
首先最简单的一种隐写方式是在图片的
图片隐写相关_第4张图片
这些区域编辑要隐藏的文本,但很容易识别的。不过都是在jpeg图片中加入,具体原因下方会讲。
而隐写有个最常用的方式是将两个不同文件合并。首先我们需要制作一个 .zip随后准备一张图片,然后用指令copy /b .jpg+ .zip output.jpg来进行合并,随后就能得到一张图片。而这个图片可以用binwalk进行查看
图片隐写相关_第5张图片
而这种方式,你可以用foremost将图片解开,并且在foremost后面推荐加一对参数,-o 123
-o是将解出的文件扔如文件夹,而123是文件夹名字
其次就是对文本进行编辑,在头部或者尾部,甚至中间插入编码。所以这时可以用ue打开图片,进行查找。有时候是base64等编码格式,在看的时候你可以先找找奇怪的编码,进行解密。
jpeg图片隐写
jpeg分为压缩数据和标记码两部分。如果在标记码中间加入数据,不会影响文件的打开,标记码如下。
图片隐写相关_第6张图片
jpeg以0xff 0xd9为结束 而由于jpeg具备exif文件描述信息的特殊性,所以附带的属性多得很,我们也可以进行编辑。
我们可以用exiftool可以查看jpeg图片的exif。
png图片
Png图片会将图片源码无损压缩入idat块中进行储存,这时我们可以使用pngcheck查看png的idat模块。每个idat块长度为65524如果我们在查找时,一个块没有填满就开始填下一个块,我们这时候可以用winhe或者ue查找出错的idat块。
然后可以用python编写一个脚本,由于png是用的zlib的压缩编码方式,所以用zlib解出,然后解出一堆0101。我们会想到二进制,不过这个也可能是二维码,可以看看0101总计有多少字。如果是个正方形块,可以用python进行编辑,解出一个二维码。
ihdr:而有时我们拿到一张png图片,却没法用上述方法解出,那么我们可以用winhex等看图片的编码。通过明文查看ihdr标记头,我们在后面可以改参数,改图片的长和宽,最后发现图片拉长后解出了隐写的内容。

lsb隐写

有种常见的隐写为lsb隐写,lsb也就是最低有效位 (Least Significant Bit),一般用于bmp图片。
原理就是图片中的像数一般是由三种颜色组成,即三原色,由这三种原色可以组成其他各种颜色,例如在PNG图片的储存中,每个颜色会有 8bit,LSB隐写就是修改了像数中的最低的1bit,在人眼看来是看不出来区别的,也把信息隐藏起来了。譬如我们想把’A’隐藏进来的话,如下图,就 可以把A转成16进制的0x61再转成二进制的01100001,再修改为红色通道的最低位为这些二进制串。
而要解这种方式可以用stegsolve,图片放入后,翻找会儿可以看到一个二维码。(懒得翻文件了,所以,没图)
有时候我们也会遇到文字替换
这时打开文件编码后,会发现bm开头,这时候我们用winhex打开图片,
图片隐写相关_第7张图片
这时我们在文件第10-13位可以找到数据位置。可以用python编译个脚本,找到位置后,奇数1,偶数0
其他类型
首先是gif
图片隐写相关_第8张图片
gif有时无法打开,而用winhex会发现gif8的头被删除了部分,所以我们需要修复,用winhex等恢复即可。
而有时候gif跳转较快,导致我们没法捕捉,于是可以用2345看图王等软件进行破解。

还有类型是图片锐化,导致我们难以识别图片上的信息,我们可以用ps,美图秀秀等文件进行处理,

还有一种储存了两张图片的,这时候用froemost可以分解出两张一模一样的图,我们可以用compare进行比较,这时候可以看出俩图片的差异所在位置。然后用hex等看可以看出一些不对的地方,注,在这之前我把图片合成了下。用stegsolve。
图片隐写相关_第9张图片
然后可以用脚本解决。
图片隐写相关_第10张图片
最后推荐下隐写工具。
图片隐写相关_第11张图片

你可能感兴趣的:(测试性)