rrrgggbbb
下载附件attachments.zip,打开里面有三个图片
通过题目名rrrgggbbb可以推测在颜色通道藏有数据,用StegSolve分别打开这三张图片看看
rrr.png图片的red0通道读取一下,发现了一些数据
同理,ggg.png的g通道0的数据
bbb.png的b通道0的数据
我们将三个数据都Save Bin,保存下来,分别命名为r
g
b
仔细观察这些数据,发现 r
数据的首字节 是B, g
数据的首字节是P, b
数据的首字节是G,一下子就联想到了BPG格式的图片,接着我们查询一下BPG图片的文件头
在网上发现了 有关BPG图片格式的图片的 文件头是 BPGû0.
r
数据的第二个字节就是û,这下就印证了我们的思路是正确的,先读r数据
的第一个字节B
,然后再读g数据
的第一个字节是P
,然后再读 b数据
的第一个字节G
,然后再读r数据
的第二个字节û
,然后再读g数据
的第二个字节0
,然后再读b数据
的第二个字节.
这就构成了文件头BPGû0.
其他数据以此类推,三个数据包,一个数据包依次读取一个字节。手撸的话,效率太慢了,我们写一个脚本,因为每个数据包后面都有大量垃圾数据,我们这里只需要每个包的前面部分的有效数据,因为每个包的有效数据末尾都是第202个字节,所以这里对字节数做出限制。用range(202)给seek指针指一个位置
脚本如下:
1 | with open('flag.bpg', 'wb') as f1: |
先创建一个名为flag.bpg
空文件,然后将这些数据包跟脚本放在同一路径,运行一下脚本,数据就写进了flag.bpg
用010 Editor打开看看数据是否写进去了
确认没问题后,用bpgview可以直接打开bpg格式的图片
bpgview工具下载地址:https://bellard.org/bpg/
点击这个下载:
在当前路径,打开cmd窗口,使用命令打开bpg图片
命令:
1 | bpgview.exe flag.bpg |
运行之后,就会有一个弹窗,这个弹窗就是这个flag图片
所以flag为:
1 | flag{1e0b38f7-d1ab-480e-bc82-3da0baae2451} |