首页 > 其他分享 >[WP] 攻防世界 CSFJ0967 Let_god_knows

[WP] 攻防世界 CSFJ0967 Let_god_knows

时间:2023-06-25 21:24:12浏览次数:35  
标签:knows img god start range Let path col 255

「附件」

题目描述:
让苍天知道,你不认输?

附件下载解压,得到一个bmp图片

「思路」

使用Stegsolve找图片隐写,在Red plane 0 中发现清晰二维码。

CQR扫码得到flag。

「工具」

  • Stegsolve
  • CQR

「知识拓展」

转载:官方WP

出题思路

使用传统图片隐写方法LSBS,将270270px的二维码图片分解为2727的方块矩阵,去除上下左右10px宽度的白色边框后变为2525的方块矩阵,将黑色方块看做1,白色方块看做0,变成一个2525的矩阵。
自RGB图0x233*0x233px的位置开始,将二维码的01矩阵隐写入R通道的最后1bit中。

def encode():
    img = cv2.imread(data_path + "test.jpg")
    flag = cv2.imread(data_path + "flag.png")
    start = 0x233

    for i in range(start, start + 25):
        for j in range(start, start + 25):
            if list(flag[(2+i-start)*10-5][(2+j-start)*10-5]) == [255, 255, 255]:
                img[i][j][2]  = img[i][j][2] & 254      # white: 0
            else:
                img[i][j][2]  = img[i][j][2] | 1        # black: 1

    cv2.imwrite(data_path + "Let_god_knows.bmp", img)

解题思路

使用StegSolve工具找到Red plane 0,保存图片后放大即可看到二维码,扫码得flag。

python还原二维码逆过程代码如下:

def decode():
    img2 = cv2.imread(data_path + "Let_god_knows.bmp")
    start = 0x233
    resolve = [[[255, 255, 255] for i in range(27)]]

    for i in range(start, start + 25):
        col = [[255, 255, 255]]
        for j in range(start, start + 25):
            if img2[i][j][2] & 1 == 0:
                col.append([255, 255, 255])
            else:
                col.append([0, 0, 0])
        col.append([255, 255, 255])
        resolve.append(col)
    resolve.append([[255, 255, 255] for i in range(27)])

    cv2.imwrite(data_path + "recovered.bmp", np.array(resolve))

标签:knows,img,god,start,range,Let,path,col,255
From: https://www.cnblogs.com/stonechen/p/CSFJ0967.html

相关文章

  • MongoDB 概念解析
    1.MongoDB概念解析不管我们学习什么数据库都应该学习其中的基础概念,在mongodb中基本的概念是文档、集合、数据库,下面我们依次介绍。下表将帮助您更容易理解Mongo中的一些概念:通过下图实例,我们也可以更直观的的了解Mongo中的一些概念:2.数据库一个mongodb中可以建立多个数据库。Mong......
  • How to restore ASM based OCR after complete loss of the CRS diskgroup on Linux/U
    HowtorestoreASMbasedOCRaftercompletelossoftheCRSdiskgrouponLinux/Unixsystems[ID1062983.1]--------------------------------------------------------------------------------修改时间12-FEB-2012类型HOWTO状态PUBLISHEDInthis......
  • mongodb第八篇:数组操作
    db.students.insertOne({"_id":1,"grades":[80,85,90]})db.students.insertOne({"_id":2,"grades":[88,90,92]})db.students.insertOne({"_id":3,"grades":[85,100,90]})需求1、把_id为1的文档的grades数组中的85改成8......
  • MongoDB常用命令指南
    定义......
  • mongodb-复制集
    启动三个实例配置replicaset创建路径$mkdir/mongodb/28017/{conf,data,log}-p$mkdir/mongodb/28018/{conf,data,log}-p$mkdir/mongodb/28019/{conf,data,log}-p编辑配置文件$cat/mongodb/28017/conf/mongod.confsystemLog:destination:filepath:/mon......
  • Servlet方法介绍
     publicvoidinit(ServletConfigconfig)throwsServletException{this.config=config;System.out.println("init...");}publicServletConfiggetServletConfig(){returnconfig;} ......
  • Servlet生命周期
     packagecom.itheima.web;importjavax.servlet.*;importjavax.servlet.annotation.WebServlet;importjava.io.IOException;//urlPatterns:访问路径@WebServlet(urlPatterns="/demo1",loadOnStartup=1)publicclassServletDemo2implementsServlet{......
  • MongoDB负载均衡集群(第8章节选)​
    MongoDB自身可组成分片加复制的集群,在这个集群的前端加上负载均衡器(比如HAProxmy+Keepalived),就可组建成一个无单点故障、十分完美的高可用负载均衡集群(如图8-1所示)。图8-1整个MongDB高可用体系结构中,存在四个应用集群:入口路由集群Mongos、配置集群“ConfigServer”、分片集群1......
  • PANDACU: second hand luxury bag and wallet bags designer used leather branded ba
    PANDACUisareputablewholesalesupplierspecializinginsecond-handluxurybagsandwallets.Theyofferawideselectionofdesignerusedleatherbags,includingbrandedoptions.Withafocusonprovidinghigh-qualityproducts,PANDACUcaterstoretaile......
  • Freertos学习01-Task Creat & Delete
    一、Freertos介绍FreeRTOS是一个开源的实时操作系统内核,它是由英国的RealTimeEngineersLtd.开发的。它提供了一些基本的内核功能,如任务管理、时间管理、信号量、队列和软件定时器等,可以帮助开发人员更容易地构建嵌入式系统。FreeRTOS是一个非常流行的实时操作系统内核,因为它是......