running_pixel.gif
    将所有帧分离出来,

    1. from PIL import Image
    2. import os
    3. gifFileName = 'running_pixel.gif'
    4. im = Image.open(gifFileName)
    5. pngDir = gifFileName[:-4]
    6. os.mkdir(pngDir)
    7. try:
    8. while True:
    9. current = im.tell()
    10. im.save(pngDir+'/'+str(current)+'.png')
    11. im.seek(current+1)
    12. except EOFError:
    13. pass

    发现每隔10张图片都有异常,stegsolve看下
    image.png
    可以看到小人头上有个奇怪的点,并且在第20张图片也看到了类似的点,不过位置不同
    图片放大后,发现那个点的颜色与其背景色不同,背景色为(247,247,247),点的颜色是(233,233,233)
    image.png
    每隔10张将其坐标提取出来并绘制到新的图片上,但是提取过程中发现getpixel得到的不是元组,而是一个数字,经过搜索,发现提取出来的图片是P模式,需要改成RGB模式。
    image.png
    但是得到的却是很不连贯的散点。看了wp才发现原来其他图片也有类似的点,全部弄出来之后得到一张图片,里面有很多个字母
    image.png
    写个脚本,把字母出现的顺序弄出来,就是flag

    1. from PIL import Image
    2. count=1
    3. old_x=0
    4. old_y=0
    5. im = Image.new('RGB', (400, 400))
    6. for i in range(382):
    7. _im=Image.open(f'./running_pixel/{i}.png')
    8. _im = _im.convert('RGB')
    9. for x in range(400):
    10. for y in range(400):
    11. if _im.getpixel((x, y)) == (233, 233, 233):
    12. if abs(old_x-x) > 5 and abs(old_y-y) > 5:
    13. im.save(f'./save/{count}.png')
    14. else:
    15. im.putpixel((x, y), (255, 255, 255))
    16. count+=1
    17. old_x = x
    18. old_y = y