a这关啊很神奇啊
stegsolve 打开转一转看到这么一张图看了半天 哎我是废物(;′⌒`)
图片放大后发现像素点排列很有规律 010看像素值
按理说正常图像像素点之间差值都不会很大
但是这边以三为周期之间差值很大但是四为周期就很小
试一下给这个图升维处理
bmp图片有个叫bibitcount 就是每个像素所占的字节数
现在**是24 即3个字节 将其改为32 **
就变成新的图片了
然后老样子stegsolve 发现一老头
右上角有一串白点代表藏着信息
dataextra 查看其中信息 alpha red green bule 的0 一个个试下来
blue这边发现了东西 先行后列查看
这老头叫david 著名数学家 大卫希尔伯特
010那边多出来一个通道 而且值和blue的很接近
尝试将reversed通道的值复制给blue
跑脚本:
1 | with open('threebody.bmp', 'rb') as f: |
生成新的图片然后再次分析有找到一张不一样的图片
考虑这张图是二维的 图片按照01序列来保存但没有什么结果,并且如果是逐行保存的话不应该出现左上角的区域与其他区域密度明显不同的情况。
前面的三体和大卫联合搜索一下会发现一个网址
https://mp.weixin.qq.com/s/IOSGOJnGyiGoD8J1ITQJlg
希尔伯特曲线
这是一种将高维进行降维处理的一种方法,所以在这里可以将二维的二进制数组转成一维的二进制流。
这边得到的是128128的矩阵128=27应该使用7维的希尔伯特矩阵
用脚本把二维的01矩阵降维成一维的二进制流就能得到隐藏文件
1 | import numpy as np |
生成一个output的文件是c语言代码
另存为.c 打开发现源码这边11行的位置后面全是空格和tab
把0当作空格 1当作tab转换成二进制流
01100110011011000110000101100111011110110100010000110001011011010100010101101110001101010110100100110000011011100100000101101100010111110101000001110010001100000011011000110001011001010110110101111101
对这一串出来对了大半天
flag{D1mEn5i0nAl_Pr061em}