「附件」
下载附件,内含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