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}