采用工具:StegSolve、binwalk、winhex
乍看这图,想用是stegsolve看看试试,结果发现什么都看不出来。
于是,用binwalk来分析图片,发现其中藏着另一幅图
用winhex打开文件,由binwalk所得的偏移位置为0X1D55DC,在winhex中找到相应位置
以开头第一个位置为选块起始,以偏移位置的前一位地址为选块结尾,右键->编辑->复制选块->至新文件,并保存为1.png文件
以偏移位置为选块起点,以最后一位地址为选块结尾,进行相同操作保存为2.png文件。
用StegSolve打开文件2.png,并且Analyse->image combine->选择1.png文件。
切换到SUB(R,G,B separate),发现下面有一行红线。
将文件save成solved.bmp。
然后把2.png保存成2.bmp 24位位图的格式,这个是因为png图片经过了压缩,不好直接对比每个字节,而bmp图片是没有压缩的,直接保存各个像数点的数据。(搬运自http://bobao.360.cn/learning/detail/243.html)
之后 用winhex 打开 solved.bmp
发现大部分是0,但是X1110到X1330之间的部分有所不同。
一开始还以为这些就是flag的信息了,后来才发现是因为两个图片sub影响到了效果,真正的信息是隐藏在2.png中的,所以 打开由2.png转换的2.bmp来对,通过之前diff得到的偏移,寻找到0x1110的地方,直到0x1330结束,这是隐藏的信息。(搬运自http://bobao.360.cn/learning/detail/243.html)
因为是RGB的原因,且只藏在R通道里了,所以只保留00和01,其他通道都是图片的正常像数信息,和结果无关。
可以发现奇数位都是0,是多余的,把这些去除掉。直接把00 替换成0,01替换成1就可以了。
得到结果后发现长度是184,是8的倍数,便将其转换成ascii码,可以用jpk来实现(jpk下载地址为:https://www.52pojie.cn/forum.php?mod=viewthread&tid=555950)
点击Binary Format->Binary to Ascii,就可以得到结果。
部分搬运自(http://bobao.360.cn/learning/detail/243.html和https://blog.csdn.net/KakeruJ/article/details/89608727),实在是不会啊