西湖论剑2021杂项(misc)–YUSA的小秘密
题目描述:LSB,但又不是LSB,众所周知不止RGB。yusa,我的yusa,嘿嘿
解答:
打开压缩包是一个很可爱小姐姐哟
根据题目描述是LSB,但又不是LSB,于是放到stegsolve 工具链接 :CTF工具stegsolve隐写分析(misc)
使用这个工具下red 0号和green 0号通道所找到的flag都不完整。
这里看了大佬的writeup,才知道颜色反转,利用python中cv2库脚本即可得到含有清楚的flag图片。
from cv2 import cv2 as cv
'''
使用函数cv2.imread(filepath,flags)读入一副图片
filepath:要读入图片的完整路径
flags:读入图片的标志
cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道
cv2.IMREAD_GRAYSCALE:读入灰度图片
cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道
'''
imag=cv.imread('G:/Desktop/211119619784cbdb9fb.png')
'''
用法: cv2.cvtColor(src, code[, dst[, dstCn]])
参数:
src:它是要更改其色彩空间的图像。
code:它是色彩空间转换代码。
dst:它是与src图像大小和深度相同的输出图像。它是一个可选参数。
dstCn:它是目标图像中的频道数。如果参数为0,则通道数自动从src和代码得出。它是一个可选参数。
'''
src=cv.cvtColor(imag,cv.COLOR_BGR2YCrCb)
Y,Cr,Cb=cv.split(src)
'''
使用函数cv2.imwrite(file,img,num)保存一个图像。
第一个参数是要保存的文件名,第二个参数是要保存的图像。
可选的第三个参数,它针对特定的格式:对于JPEG,其表示的是图像的质量,
用0 - 100的整数表示,默认95;对于png ,第三个参数表示的是压缩级别,默认为3
'''
cv.imwrite('G:/Desktop/Y.png',(Y%2)*255)
cv.imwrite('G:/Desktop/Cr.png',(Cr%2)*255)
cv.imwrite('G:/Desktop/Cb.png',(Cb%2)*255)
根据提示不止RGB,opencv中有多种色彩空间,包括 RGB、HSI、HSL、HSV、HSB、YCrCb、CIE XYZ、CIE Lab8种
得到文件中含有flag
|