[SWPUCTF 2021 新生赛]gif好像有点大

Problem: [[SWPUCTF 2021 新生赛]gif好像有点大](https://www.nssctf.cn/problem/401)

[[toc]]## 思路
* 解题大致思路
直接上代码,先分解gif到png,再逐渐扫描即可
## EXP
* 具体攻击代码
------------------------------------

from PIL import Image, ImageSequence
import os
from pyzbar.pyzbar import decode  
import cv2  
def save_gif_frames_as_png(gif_path, output_folder="output"):
 #  将GIF的每一帧保存为PNG图片。
  #  参数:
  #  gif_path (str): GIF文件的路径。
   # output_folder (str): 保存PNG图片的文件夹。默认为"output"。

    # 确保输出文件夹存在
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

        # 打开GIF文件
    with Image.open(gif_path) as img:
        # 遍历GIF的每一帧
        frames = [frame.copy() for frame in ImageSequence.Iterator(img)]

        # 为每一帧保存一个PNG文件
        for index, frame in enumerate(frames):
            frame.save(os.path.join(output_folder, f"frame_{index:03d}.png"))
        # 使用示例
gif_path = "CTF.gif"  # 替换为你的GIF文件路径
save_gif_frames_as_png(gif_path)
def scan_qr_code(image_path):  
    # 读取图片  
    image = cv2.imread(image_path)  
    # 解码图片中的二维码  
    decoded_objects = decode(image)  
    for obj in decoded_objects:  
        print("Type:", obj.type)  
        print("Data:", obj.data.decode("utf-8"))  
if __name__ == "__main__":  
    for i in range(1,700):
        i=str(i)
        if len(i)==1:
            i="00"+i
        elif len(i)==2:
            i="0"+i
        image_path = 'output/frame_'+i+'.png'  
        scan_qr_code(image_path)


------------------------------------
## 总结
最后在命令行中输入:  python 123.py > 123.txt
运行之后123.txt里面就会包含着错误信息和正确的扫描内容
ctrl+F搜索NSSCTF即可
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值