记一道TWCTF的misc-gif

发布时间 2023-12-25 16:14:43作者: 张伟文

misc-gif:

题目描述:附件下载下来后发现是一张.gif的动图

解题方法:仔细观察发现这张动图里面有黑色的字母在闪烁,猜测它的flag信息可能就隐藏在里面:

编写python脚本来将它逐帧分离:

from PIL import Image
im = Image.open(r'D:\桌面/flag.gif')   #读入一个GIF文件
try:
    im.save(r'D:\桌面\逐帧图片\{}.png'.format(im.tell()))
    while True:
        im.seek(im.tell()+1)
        im.save(r'D:\桌面\逐帧图片\{}.png'.format(im.tell()))
except:
    print('处理结束')

分离后可以看到有201张图片:

查看了每一张图片的属性,发现他们的宽度都为2像素,这里就可以想到要将这些图片进行排序组合成一张宽度为201x2像素的一张大图,编写python脚本:

from PIL import Image

# 设置大图的宽度和高度
big_image_width = 2 * 201  # 每张照片宽度为2像素,共201张照片
big_image_height = 600

# 创建一张空白的大图
big_image = Image.new('RGB', (big_image_width, big_image_height))

# 将所有照片按顺序拼接到大图上
for i in range(201):
    # 读取每张照片
    filename = f"D:\桌面\逐帧图片/{i}.png"  # 更改为你的照片文件路径和命名规则
    img = Image.open(filename)

    # 将照片缩放到与大图一样的高度并粘贴到大图上,依次排列
    img_resized = img.resize((2, 600))
    big_image.paste(img_resized, (i * 2, 0))  # 每张照片的宽度为2像素,依次排列

# 保存拼接完成的大图
big_image.save("D:\桌面\逐帧图片/big_image_sorted.png")  # 更改为你想保存的大图路径和文件名

最后就组合成一张大图:

这里我们就可以得到它的flag了