网鼎杯2024 MISC04
新知识:peano曲线
下载文件是一个看起来特别无序的图片
应该是经过了某种算法,但是我并没有见过,所以是看了wp
是一种图像加密算法,需要把这个红线还原重组成二维码,搜索一个是这个Peano曲线
from PIL import Image
from tqdm import tqdm
def peano(n):
if n == 0:
return [[0,0]]
else:
in_lst = peano(n - 1)
lst = in_lst.copy()
px,py = lst[-1]
lst.extend([px - i[0], py + 1 + i[1]] for i in in_lst)
px,py = lst[-1]
lst.extend([px + i[0], py + 1 + i[1]] for i in in_lst)
px,py = lst[-1]
lst.extend([px + 1 + i[0], py - i[1]] for i in in_lst)
px,py = lst[-1]
lst.extend([px - i[0], py - 1 - i[1]] for i in in_lst)
px,py = lst[-1]
lst.extend([px + i[0], py - 1 - i[1]] for i in in_lst)
px,py = lst[-1]
lst.extend([px + 1 + i[0], py + i[1]] for i in in_lst)
px,py = lst[-1]
lst.extend([px - i[0], py + 1 + i[1]] for i in in_lst)
px,py = lst[-1]
lst.extend([px + i[0], py + 1 + i[1]] for i in in_lst)
return lst
order = peano(6)
img = Image.open(r"./1.png")
width, height = img.size
block_width = width *# // 3*
block_height = height *# // 3*
new_image = Image.new("RGB", (width, height))
for i, (x, y) in tqdm(enumerate(order)):
*# 根据列表顺序获取新的坐标*
new_x, new_y = i % width, i // width
*# 获取原图像素*
pixel = img.getpixel((x, height - 1 - y))
*# 在新图像中放置像素*
new_image.putpixel((new_x, new_y), pixel)
new_image.save("rearranged_image.jpg")
以上是大佬的脚本,运行出来得到一个二维码图片
扫描得到flag:wdflag{dde235fa-114d-404c-8add-6007e6efabfd}
总结:新知识peano曲线
标签:extend,MISC04,py,2024,width,lst,new,网鼎杯,px From: https://www.cnblogs.com/AkaashiKeiji/p/18537239