简单的图片隐写方法和解密

简单的图片隐写方法和解密
图片隐写被用于加密重要文件,在ctf比赛的misc方向中也是必考点,在这里我分享一些隐写和解密方法隐写:一、文本追加:这是最简单的隐写方法,也是最容易被发现的with open(1.png,ab) as f:#1.png为要隐写的图片 f.write(bflag{gc})二、修改尺寸:通过修改图片宽高隐藏信息 这里我们首先看目标图片的分辨率(360x314)转换为十六进制360-168,314-13a然后我们用winhex看,一般png图片的宽高都在第二行现在把高度改为250(十六进制为fa)原图片与现图片对比(信息隐藏在了下面)三、LSB隐写:常见的隐写术,通过改变RGB最低二进制位来隐写信息这里可以用在线工具,也可以用脚本,我这里用stegano库写一个python脚本:#pip install stegano from stegano import lsb secretlsb.hide(1.png,flag{gc}) secret.save(output.png) ##好简单啊这脚本,还是用专门的第三方库方便运行即可四、文件拼接/附加型隐写,这种一般是在文件中间或末尾附加另一个文件数据示例:with open(1.png,rb) as f: imgf.read() with open(n.png,rb) as f: flagf.read() with open(output.png,wb) as f: f.write(img) f.write(flag)现在output.png存在了两个图片(看着只有一个)解密:(与上面的隐写方法对应)一.直接用winhex打开,在尾部找到隐写内容二.用winhex找到图片高度的位置,改回原来的高度即可信息出来了三.这里推荐使用StegSolve工具下载地址:http://www.caesum.com/handbook/Stegsolve.jar下载后打开,使用Data Extract模式把Red、Green、Blue三个颜色的0通道勾选上,点Preview隐藏的信息出来了,点Save Bin可以保存隐写信息四.利用各种工具分离出目标图片打开kali,那里的破解工具多用binwalk -e output.png不起效果,但可以读出确有两个图片binwalk不行就用foremost:foremost output.png获得两个图片,打开后的确有隐藏信息参考文献:CTF Misc(1)图片隐写基础以及原理覆盖了大部分题型_misc图片隐写-CSDN博客本文链接:简单的图片隐写方法和解密