呜呜呜,被北邮大佬们带飞
MISC
Hardcore Watermark 01
Description
厌烦了用工具解图片题?那么来点硬核的~
链接: https://pan.baidu.com/s/1lKNYV4_X2Aqx8-qPB2Z_uw 密码: 6597
(备用下载:https://drive.google.com/drive/folders/1MsAZfHq2G61AQQCv_CBajmjnPUXlIBIo?usp=sharing)
Analyze
开局一张图,丢入stegsolve中发现各个颜色最低位有二维码的印记
因为一开始没什么想法,于是便去找了找原图,发现原图在http://tech.china.com.cn/roll/20200622/367168.shtml 这
丢入stegsolve进行sub处理后得到(别问为什么是sub,就是因为sub比较清楚)
然后猜测是某一个色域的像素值确定一个二维码,于是脚本画出二维码图发现:
from PIL import Image
p = Image.open('x.bmp')
a,b = p.size
for n in range(3):
np = Image.new('RGB', (a, b), (255, 255, 255))
if n == 0:
for y in range(b):
for x in range(a):
if p.getpixel((x,y))[0]>240:
np.putpixel((x,y),(255,0,p.getpixel((x,y))[2]))
np.save('r.png')
elif n == 1:
for y in range(b):
for x in range(a):
if p.getpixel((x,y))[1]>=240:
np.putpixel((x,y),p.getpixel((x,y)))
np.save('g.png')
else:
for y in range(b):
for x in range(a):
if p.getpixel((x,y))[2]>240:
np.putpixel((x,y),p.getpixel((x,y)))
np.save('b.png')
r.png:
g.png:
b.png:
然后得到的图经过PS的阙值
得到
同样操作截图并分隔得到三段二维码,将头和尾部反色操作后得:
拼接后得到:
但是并扫不出来,中间有段模糊的
于是用qrazybox手撸二维码:
解码发现:
使用另外一个工具:
得到flag:
flag
ByteCTF{ByteCTF-2020 FLAG!GALF 0202-FTCetyB10001000}
Hardcore Watermark 02
Description
题目附件: 点击下载附件 1
hint:分块隐藏
Analyze
相比于第一题,第二题感觉偏脑洞(这个出题人第二题感觉也不想是要让我们写脚本啊),首先开局一个jpg
然后我们查看各个通道后,发现其蓝色通道有异常
(PS:图片是蓝色三通道,比较明显)
然后截取上面一条异常的色带
其大小为3000153,稍微观察一下(结果我观察了一整天X)可以看出来上面的图像有一定的规律,就算一对一对的三角形然后按大小和数量可以分成一个个的50 51的小正方形,于是脚本分解
#60格 * 3
from PIL import Image
bp = Image.open('1111.png').convert('L')
a,b = bp.size
aa = int(a//60)
bb = b//3
for i in range(3):#3
for j in range(0,60,1):#60
print(j)
np = Image.new('L',(aa,bb))
piece = bp.crop((aa*j,bb*i,aa*(j+1),bb*(i+1)))
piece2 = piece.transpose(Image.FLIP_LEFT_RIGHT)
# piece.show()
# piece2.show()
np.paste(piece,(0,0))
np.paste(piece2,(aa,0))
np.save('./piece/'+str(j+60*i)+'.png')
得到一堆可以识别出来的图片
然后本来想写个识别脚本。。然后发现常规的像素特征并不好找到,反正不多也就180个,竖向的是0,横向的是1,然后将其转化成字符即可得到flag
flag
ByteCTF{bwmTeam!} .