bugkuctf——猫片
一张猫的图片,题目有三个提示LSB BGR NTFS
于是用StegSolver去提取数据
看到了PNG的文件头
保存下来在Winhex中打开
修复好图片,然后用微信扫描,(虽然这张图片是颜色反转的,但是新版的微信也能扫出来)
得到一个rar压缩文件,用winrar解压报错,于是机智的我用7z解压,然而。。。
只好去找师傅们的wp,说是NTFS隐写,给了个工具
这时候就有点坑爹了,用7z解压缩的找不到,必须得用winrar解压缩的才行
得到pyc文件之后需要去这个网站反编译成python代码
得到python代码:
1 | import base64 |
我的解密脚本
1 | # 解码 |
whuctf—taxi.png
这个题目当时使用matlab提取出来的,不过后来才知道用stegsolver也行
只需要打开之后浏览不同的通道即可
解密网站
此时我们简要分析一下StegSolver是如何提取数据的
给出代码:
1 | from PIL import Image |
这个是参考先知某位师傅后修改的,适用于python3
可以帮助理解如何提取,从代码中可以看出,此处是先确定某一处高度,然后依次将宽度上的像素点提取出来,也就是StegSolver中的Extracted by Row
,并且此处是按照该rgb的顺序来的
大概思考了一下如果要把信息隐藏到图片中,这样应该可以:
1 | from PIL import Image |
但是我不知道怎么把数据写回图片。。。未完待续好了
实验吧一道题
这样一张bmp格式的图片
解法就是通过Windows的画图工具另存为png格式的,然后用StrgSolver浏览就行
问鼎杯保密技能大赛
得到这样一张图片,
![]https://raw.githubusercontent.com/xinyongpeng/gitpic/master/misc4.png
首先需要修复png格式,其次需要修改宽度,但是需要考虑到crc32校验码
1 | import os |
第一个数据块总共就是13位长,struct.pack('>i',i)
依次尝试每一个宽度
不过为啥要与0xffffffff
进行与运算就很神奇