MISC-隐写的总结
这周做了几个隐写题,感觉非常有趣。看了许多大佬的博客,最终才完整的做完这些隐写题。为了加深自己的理解,还是有必要总结一下的。毕竟学以致用,学以会用!!
解隐写题的一般思路:
- 首先看看图片是不是图种
- 然后使用binwalker分析图片,如果是有文件合成,分离
- 有时信息藏在备注中
- 工具stegsolve
- 编程分析
1、LSB隐写
简介:
LSB(英文 least significant bit)即最低有效位。LSB加密是信息隐藏中最基本的方法。由于人们识别声音或图片的能力有限,因此我们稍微改动信息的某一位是不会影响我们识别声音或图片的。
用法:
通常来说LSB加密用在无损压缩的数据格式文件中,例如图像中的png格式、bmp格式和音频的wav格式。由于这三种格式未对源数据进行有损压缩,因此可以将信息隐藏起来。
对于图像文件LSB的特征很明显,通常将信息隐藏在某一个颜色通道中。我们可以查看图片的每个像素点的RGB值,或者使用stegsolve工具进行查看。 stegsolve工具下载
需要下载Java配置Java环境或者只下载Java,用Java打开stegsolve.jar文件
由于图像是由像素构成的,每个像素有8位(对于BMP图像来说),通常最后一位的变化,通过肉眼是无法察觉的
例1:
下载题目文件并解压后,发现一个名叫taqing.png的图片。因为题目是“LSB”,所以这张图片应该进行了LSB隐写。
用stegsolve打开taqing.png,并选择Analyse的Data Extract
把Red、Green、Blue的最低有效位0那一列打对勾(原因),并点击Preview,在最上面会发现flag了!!
flag是flag{have a good time!}
例2:
下载题目文件并解压后,发现一个名叫LSBencode.png的图片。因为题目是“LSB2”,所以这张图片也应该进行了LSB隐写。
用stegsolve打开LSBencode.png,并选择Analyse的Data Extract
把Red、Green、Blue的最低有效位0那一列打对勾(原因),并点击Preview,在最上面会发现flag了!!
2、盲水印
由题目可知,此题为盲水印,所以使用bwm脚本(python2)另一个脚本decode脚本。
并且这两个不完全一样,用其中一个加上水印,用另一个解不开,所以还是都存起来吧。
运行脚本发现没有cv2这个模块,使用下面的命令安装cv2
pip install opencv-python
接下来:
如果是bwm脚本运行
python bwm.py decode 1.png 2.png flag.png
其中1.png和2.png是解压所得图片,flag.png是所分离出来的水印。
如果是decode脚本运行
python decode.py --original 1.png --image 2.png --result flag.png
。
其中1.png和2.png是解压所得图片,flag.png是所分离出来的水印。
另外推荐一个加盲水印和分离盲水印的神器:WaterMarkH下载
例:
下载题目文件并解压后,发现两张图片:text.jpg和text2.jpg。因为题目是“盲水印”,所以这道题应该是找盲水印。
把文件后缀改成.png格式,结果我试了两个脚本都没有找到盲水印,我以为是因为python版本的问题,然而并不是。。。所以这道题应该是使用WaterMarkH加的盲水印,所以直接使用这个工具就找到了盲水印
3、双图
例:
下载题目文件,解压出来就是双图first.png和second.png,先用stegslove打开first.png保存反色图片为1.bmp
然后打开保存的反色图片1.bmp,选择stegslove的image combiner结合second.png,保存结合的图片为solved.bmp
然后打开保存的结合图片solved.bmp,再用stegslove对二维码变化一下,得到三张二维码
扫描结果是DES 6XaMMbM7
和一长串字符,很显然是des加密,秘钥是6XaMMbM7,然后对长串字符进行DES解密,即可得到flag!!
4、画图
例:
根据题目可知,此题是画图
用winhex打开发现图片后面有很多的数据
复制下来保存为1.txt文件用notepad++转换一下编码
这就是坐标了,这样来画图吧 转换成gnuplot能识别的格式
保存1.txt文件,下载gnuplot画图工具,把1.txt文件和画图工具放入同一路径,打开gnuplot.exe,输入命令plot "1.txt"
进行画图
扫描二维码,即可得到flag!!
隐写题总结之后,果然让我对此更加理解了,开心!!!