PUZZLE
下载附件是一张图片,可以正常打开
但图片被分成一小片一小片的,而且随机摆放,但可以看出来,在原来的图片上写上了文件,猜测flag就应该是上面的文字。
使用gaps对图片进行拼图。
发现拼不出来。天空中的大字有flag、what’s、not、ing等,下面的花丛里有“{”。所以flag应该在在下的花丛里。
只好手动拼接。
用脚本将图片分割:
import os
from PIL import Image
def splitimage(src, rownum, colnum, dstpath):
img = Image.open(src)
w, h = img.size
if rownum <= h and colnum <= w:
print('Original image info: %sx%s, %s, %s' % (w, h, img.format, img.mode))
print('开始处理图片切割, 请稍候...')
s = os.path.split(src)
if dstpath == '':
dstpath = s[0]
fn = s[1].split('.')
basename = fn[0]
ext = fn[-1]
num = 0
rowheight = h // rownum
colwidth = w // colnum
for r in range(rownum):
for c in range(colnum):
box = (c * colwidth, r * rowheight, (c + 1) * colwidth, (r + 1) * rowheight)
img.crop(box).save(os.path.join(dstpath, basename + '_' + str(num) + '.' + ext), ext)
num = num + 1
print('图片切割完毕,共生成 %s 张小图片。' % num)
else:
print('不合法的行列切割参数!')
src = input('请输入图片文件路径:')
if os.path.isfile(src):
dstpath = input('请输入图片输出目录(不输入路径则表示使用源图片所在目录):')
if (dstpath == '') or os.path.exists(dstpath):
row = int(input('请输入切割行数:'))
col = int(input('请输入切割列数:'))
if row > 0 and col > 0:
splitimage(src, row, col, dstpath)
else:
print('无效的行列切割参数!')
else:
print('图片输出目录 %s 不存在!' % dstpath)
else:
print('图片文件 %s 不存在!' % src)
多少行和多少列,需要自己数一下。应该是25行,44列。
我们就得到了1100张小图片。
然后把带有黑色笔画的图片找出来,
我找出了213张:
再用PPT进行拼接(因为PPT有自动对齐功能):
最后拼出了flag:
{you_can _never_finish_the}