NSSCTF Round5 Misc Grating 出题人笔记
做 CCBC12 有感而发,感觉光栅图片挺好玩的,就出了一个类似光栅的题目了,至于为什么说类似是因为这个比例不太能直接用遮挡的方式看出 flag,需要提取操作。
CCBC12 最后是这样的
为了加点难度,只能给更模糊的信息了,其实如果高度改的好的话,还是可以正儿八经用光栅,但是为了这道题手动写了一套像素的图片,想搞成批量生成就变成了这样了((
根据光栅化的原理,手动搓了一个脚本(,由于 Pillow 用的太少(说白了就是比赛摆烂强行让 re 队员帮忙写),现在遭报应了,就只能这样勉强写写了,求不被骂呜呜呜
from PIL import Image
flag = 'NSSCTF{*}'
blockLen = len(flag) // 3 + (len(flag) % 3 >= 1)
imageLen = blockLen * 5
finalImage = Image.new('RGB', (imageLen + blockLen, 5), (255, 255, 255))
finalPixel = finalImage.load()
for color in range(3):
for imagePixelX in range(5):
for flagPointer in range(blockLen):
if flagPointer + color * blockLen < len(flag):
tempImage = Image.open(flag[flagPointer + color * blockLen] + '.png')
tempPixel = tempImage.load()
for imagePixelY in range(5):
if tempPixel[imagePixelX, imagePixelY] == (0, 0, 0, 255):
tempPixelList = list(finalPixel[flagPointer + imagePixelX * 12, imagePixelY])
tempPixelList[color] -= 1
finalPixel[flagPointer + imagePixelX * 12, imagePixelY] = tuple(tempPixelList)
tempImage.close()
finalImage.save('Grating4.png')
finalImage.close()
强行把光栅图片改成的图片操作题(
Writeup
根据题目信息,光栅动画原理是遮挡其他部分剩下的部分显示出动画内容,那其实有点像栅栏加密。
拿到图片看到白的第一时间瞟一眼 LSB,看到只有 3 个 0 通道有信息,那就应该是对三个 0 通道进行操作。
先猜下光栅动画的缝宽和黑线宽度(说人话就是每隔几位取一次像素)
根据题目信息给的长度 36 平分给每一个通道是 12 个信息位,那一个信息位对于 6 列像素
那么第一个信息位对于的像素条文是第 0,12,24,36,48,60 列,取出来之后看 Stegsolver 里面 R0 有个字母 N G0 有个 R B0 有个 I 剩下来的就好解决了。
from PIL import Image
sourceImage = Image.open('Grating.png')
sourcePixel = sourceImage.load()
sourceImageSizeX = sourceImage.size[0]
sourceImageSizeY = sourceImage.size[1]
resultImage = Image.new('RGB', (sourceImageSizeX, sourceImageSizeY), (255, 255, 255))
resultPixel = resultImage.load()
blockSize = 6
blockCount = sourceImageSizeX // blockSize + (sourceImageSizeX % blockSize >= 1)
for i in range(blockSize):
for j in range(blockCount):
for height in range(sourceImageSizeY):
resultPixel[((j * blockSize + i) % sourceImageSizeX), height] = sourcePixel[(i * blockCount + j), height]
resultImage.save('Grating_Decrypt.png')
resultImage.close()
Pillow 用的不熟练,脚本写的有点臭,能看懂就行()
当然最后还是放大一点为什么题目不放大呢,因为懒得重新写脚本(,最后处理完放大看会好点。
感谢观看我的博客~
NSSCTF Round5 Misc Grating 出题人笔记
https://www.wd-ljt.com/post/0828/879.html
来源于问谛居,转载记得联系作者哟~
NSSCTF Round5 Misc Grating 出题人笔记
https://www.wd-ljt.com/post/0828/879.html
来源于问谛居,转载记得联系作者哟~
THE END
0
二维码
海报
NSSCTF Round5 Misc Grating 出题人笔记
做 CCBC12 有感而发,感觉光栅图片挺好玩的,就出了一个类似光栅的题目了,至于为什么说类似是因为这个比例不太能直接用遮挡的方式看出 flag,需要提取操作。……
共有 0 条评论