window.onload=function(){ /*页面加载完成之后生成博客目录*/ BlogDirectory.createBlogDirectory("cnblogs_post_body","h2","h3",20); }

MISC—国粹

打开附件看到三个图片,其中有一个题目.png

感觉像是跟前两张图片有关系,像是组合的,试着提取题目.png尺寸并且保存为一个字节组,根据题目.png再将前两张图片分别进行切片然后再根据字节组进行匹配,代码如下:

import numpy as np
from PIL import Image
 
class test():
    def __init__(self):
        self.a = np.array(Image.open("./a.png"))
        self.k = np.array(Image.open('./k.png'))
        self.img = np.array(Image.open('./题目.png'))
        self.img_make()
        self.dic()
 
    def img_make(self):
        lst_img = self.img.shape
        self.part = (lst_img[0] // 2, lst_img[1] // 43, lst_img[2])
 
    def dic(self):
        dic = {}
        for n, x in enumerate(range(self.part[1], self.img.shape[1], self.part[1])):
            dic[self.img[0:self.part[0], x:x + self.part[1], :self.part[2] - 1].tobytes()] = n
        self.a = [dic[self.a[:, x:x + self.part[1]].tobytes()] for x in range(0, self.a.shape[1], self.part[1])]
        self.k = [dic[self.k[:, x:x + self.part[1]].tobytes()] for x in range(0, self.k.shape[1], self.part[1])]
        result = np.zeros((max(self.a), max(self.k)), dtype=np.uint8)
        result[np.array(self.a) - 1, np.array(self.k) - 1] = 1
        resimg = Image.fromarray(result * 255)
        resimg.show()
 
if __name__ == "__main__":
    test()

#获取题目图片尺寸并保存为一个字节组,根据题目.png 将图像 a.png, k.png 进行切片,然后根据 A 和 K 图片对字节组进行匹配

运行得到:

即flag{202305012359}

posted @ 2023-06-03 11:36  Kicky_Mu  阅读(53)  评论(0编辑  收藏  举报