Just a GIF
[2021DASCTF实战精英夏令营暨DASCTF July X CBCTF 4th] BUUCTF
一个动态的GIF,使用脚本分离出451张图片。
from PIL import Image from pathlib import Path Path(".\\png").mkdir(parents=True, exist_ok=True) f = Image.open('just_a_gif.gif') for i in range(f.n_frames): f.seek(i) tmp=Image.new('RGB',f.size) tmp.paste(f) tmp.save('.\\png\\'+str(i)+'.png')
发现图片是每11张重复的,一共41组。比较41组中相同的图片,得到9张分散的二维码图片及二维码图片位置的图片
from PIL import Image from pathlib import Path Path(".\\result").mkdir(parents=True, exist_ok=True) for i in range(11): p = Image.open(".\\png\\"+str(i)+'.png') f = Image.new('RGB',(83,83),(255,255,255)) for j in range(41): p1 = Image.open(".\\png\\"+str( i + j*11 )+'.png') for x in range(83): for y in range(83): if p.getpixel((x,y)) != p1.getpixel((x,y)): f.putpixel((x,y),(0,0,0)) f.save('.\\result\\'+str(i)+'.png')
拼接成二维码:
from PIL import Image from pathlib import Path pnglist = [[7,1,6],[9,3,4],[5,2,8]] f = Image.new('RGB',(83*3,83*3),(255,255,255)) for i in range(3): for j in range(3): p = Image.open(".\\result\\"+str(pnglist[i][j] -1 )+'.png') f.paste(p,(j*83,i*83)) f.save('.\\result\\result.png')
使用这个在线网站https://mazhuren.com/saoma/,得到flag