WP CTF-Misc 攻防世界 CSFJ0971 碎纸机

「附件」

下载附件,内含50个图片,看着像是被碎纸机粉碎过

「思路」

根据附件判断,应该是要将50个图片合并成一张图。
观察图片的名称,由字母和数字构成,长度都是20位,尝试解码,无结果,猜测是随机生成的。
打开图片属性,创建日期是图片解压的时间,猜测是根据修改日期升序排列。
让百度的搜索AI伙伴生成一段Python代码来合并看看。

「过程」

打开百度 搜索AI伙伴 https://chat.baidu.com/ ,在对话框中输入以下描述:

python 多张图片左右拼接成一张

上述代码的image_list 改为从文件夹获取图片名

上述代码,在获取文件夹中所有图片的名称前,先按修改时间进行升序排序,再读取

通过2次修改,AI生成的Python代码应该符合要求,将代码复制到VScode中,修改图片文件夹路径后,果断运行。

from PIL import Image
import os

# 定义要拼接的文件夹路径
folder_path = './images'

# 获取文件夹中所有的图片文件名,按修改时间进行升序排序
image_files = sorted(filter(lambda f: f.endswith('.jpg') or f.endswith('.png'), os.listdir(folder_path)), key=lambda f: os.path.getmtime(os.path.join(folder_path, f)))

# 计算拼接后的图片宽度和高度
widths, heights = zip(*(Image.open(os.path.join(folder_path, img)).size for img in image_files))
total_width = sum(widths)
max_height = max(heights)

# 创建一个新的空白图片,宽度为拼接后的图片宽度,高度为最高图片的高度
new_image = Image.new('RGB', (total_width, max_height))

# 将要拼接的图片粘贴到新的空白图片上
x_offset = 0
for img in image_files:
    new_image.paste(Image.open(os.path.join(folder_path, img)), (x_offset, 0))
    x_offset += Image.open(os.path.join(folder_path, img)).size[0]

# 保存拼接后的图片
new_image.save('combined_image.jpg')

也可通过 https://uutool.cn/photo-collage/ 在线多图合一拼图工具 进行拼图,尝试过先排序,后导入在线工具,生成的图片错位,故使用了Python合并图片。
得到拼接后的图片。
用手机扫一扫,得到flag。

若手机扫不出来,可使用 Stegsolve 得到更干净的图片。

「工具」

  • 搜索AI伙伴
  • Python
  • Stegsolve
  • 微信扫一扫

「知识拓展」

Python安装Image库命令:pip install Image

posted @ 2023-06-22 19:47  没事摸摸小肚子  阅读(196)  评论(0编辑  收藏  举报