zoukankan      html  css  js  c++  java
  • CTFshow萌新赛-千字文

    打开靶机

     下载完成后,为一张二维码图片

     使用StegSolve 解出隐写图像

    保存后使用PS或其他工具去除白边

     然后使用脚本分割这个图像(25*25)

    from PIL import Image
    
    im = Image.open('solved.bmp')
    id = 0
    for i in range(0, 25):
        for j in range(0, 25):
            box = (25 * i, 25 * j, 25 * (i + 1), 25 * (j + 1))
            im.crop(box).resize((500, 500), Image.ANTIALIAS).save('./1/%03d.png' % id)
            id += 1

     分割完成后使用pyzbar识别二维码信息,并输出

    import pyzbar.pyzbar as pyzbar
    
    for i in range(625):
        # im = Image.open()
        s = './1/%03d.png' % i
        print(pyzbar.decode(Image.open(s))[0].data.decode())

     成功拿到flag

    使用后输出很多信息,而且需要两个脚本

    我把两个脚本进行了整合

     1 #! /usr/bin/env python3
     2 # _*_  coding:utf-8 _*_
     3 import pyzbar.pyzbar as pyzbar
     4 from PIL import Image
     5 
     6 def main():
     7     fg()
     8     print("图片分割已完成")
     9     dq()
    10 
    11 def fg():
    12     #源文件名
    13     im = Image.open('3.png')
    14     id = 0
    15     for i in range(0, 25):
    16         for j in range(0, 25):
    17             box = (25 * i, 25 * j, 25 * (i + 1), 25 * (j + 1))
    18             #分割后存储路径和文件名
    19             im.crop(box).resize((500, 500), Image.ANTIALIAS).save('./1/%03d.png' % id)
    20             id += 1
    21 
    22 def dq():
    23     for i in range(625):
    24         #分割后单个二维码图片路径
    25         s = './1/%03d.png' % i
    26         str_image = str(pyzbar.decode(Image.open(s))[0].data.decode())
    27         if "flag" in str_image:
    28             print(str_image)
    29 
    30 if __name__ == "__main__":
    31     main()

    运行情况

  • 相关阅读:
    洛谷 1339 最短路
    洛谷 1330 封锁阳光大学 图论 二分图染色
    洛谷 1262 间谍网络 Tarjan 图论
    洛谷 1373 dp 小a和uim之大逃离 良心题解
    洛谷 1972 莫队
    洛谷 2158 数论 打表 欧拉函数
    洛谷 1414 数论 分解因数 水题
    蒟蒻的省选复习(不如说是noip普及组复习)————连载中
    关于筛法
    关于整数划分的几类问题
  • 原文地址:https://www.cnblogs.com/anweilx/p/12435895.html
Copyright © 2011-2022 走看看