[网鼎杯 2020 青龙组]虚幻2 详解 (python脚本)

news/2024/11/24 5:36:41/

参考文章:

汉信码识读技术研究

2020网鼎AreUSerialz、虚幻2 | BTIS’s blog

图片很小,没有隐藏信息,PS打开:

每个像素点的RGB的三个通道都是255/0:

红R色通道:

绿G通道:

蓝B通道:

像二维码,但拼接之后啥都没有。处理思路:

  1. 分通道按行拼接,读的时候是 B-G-R,拼接的时候是 R-G-B,图像且大小为36*36

    • 注意看G通道,上下沿的两边都是长黑线,一般是二维码的边沿

    • 而我们还观察到到一般二维码的四角都会有空白的一行,但最两边是黑色:


    • 观察到R通道对应像素行是白色的:

    • 而B通道符合二维码的特征,所以把它放在G后面

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NenOk0GV-1648263350723)(CTF.assets/image-20220326102541858.png)]

    • 结合经验,那么就可以发现R-G-B 可以拼出二维码

    import cv2
    import numpy as np
    from PIL import Image
    img=cv2.imread('file.png')
    image1=np.hstack((img[:,:,2],img[:,:,1],img[:,:,0])).reshape(36,36) #RGB
    Image.fromarray(image1).save('res.png')
    
    • cv2.imread读文件,读出来是个三维数组(numpy.ndarray)3(B:G:R)*36(列数)*12(行数)

    • img[:,:,0] 抽出B通道:(B)*36(列数)*12(行数)

    • np.hstack 依次读取每个通道数组的行,连在一起:(36+36+36)*12

    • reshape(36,36) 分割最低位维,分割后的数组规格为:36*36

      • 分割过程大致就是砍断长的一维向量,把截出来的向量直接紧挨着放到下面(不理解的话可以自己尝试或者上网查询)
    • Image.fromarray 实现ndarray到image的转换

  2. 这时候我们确认这是个汉信码,但是发现校正折线位置不对,正常的:

  3. 加上图像反转

    import cv2
    import numpy as np
    from PIL import Image
    img=cv2.imread('file.png')
    image1=np.hstack((img[:,:,2],img[:,:,1],img[:,:,0])).reshape(36,36) #RGB
    image1=np.flipud(image1)
    Image.fromarray(image1).save('res.png')
    

  4. 左下定位码也反了,将左下定位码反转180度

     import cv2import numpy as npfrom PIL import Imageimg=cv2.imread('file.png')image1=np.hstack((img[:,:,2],img[:,:,1],img[:,:,0])).reshape(36,36)image1=np.flipud(image1)image1[24:33,3:10]=np.rot90(image1[24:33,3:10],2)Image.fromarray(image1).save('res.png')
    
    • rot90(array,2)将数组旋转180度
      在这里插入图片描述
  5. 放进http://www.efittech.com/hxdec.html或用中国编码APP都读不出来,题目中提示暴力修补,而汉信码设计是有纠错能力的,一般使用要选择L2及以上的纠错等级:

  6. L2的纠错容量可达到15%,足够用了我们随便在那块空白的地方划两下哈哈:

  1. 也可以专业一点:补全辅助矫正位,并另填一个像素点辅助汉信码识别系统识别辅助矫正位:

在这里插入图片描述

image1[17,33],image1[15,31]=0,0

  1. 都可以扫得到flag
flag{eed70c7d-e530-49ba-ad45-80fdb7872e0a}

http://www.ppmy.cn/news/152050.html

相关文章

从ThinkPad E530到ThinkPad E531,15寸影音本的“+1”故事

从ThinkPad E530到ThinkPad E531,15寸影音本的“1”故事 不知道大家对于Thinkpad了解有多少,“思迥异,做不同”的ThinkPad Edge系列相信有很多人和我一样很喜欢; 主要是因为该系列中采用了15寸显示屏的ThinkPad E530,相比同系列机…

英特尔530和535哪个好_性能去哪儿?英特尔530现身说法_硬盘_固态硬盘评测-中关村在线...

本次22款256GB SSD横评当中,英特尔530系240GB SSD堪称美男子,它拥有雍容华贵、炫丽多彩的外观。出人意料的是,这款SSD采用的却是备受争议的SF-2281主控!今天我们将用它现身说法,分析丢失的SSD性能去哪儿了?…

e470c拆机图解全拆 thinkpad_THINKPAD e470硬盘拆解教程是?

展开全部 【准备工作】ThinkPad E530的光驱e68a843231313335323631343130323136353331333363396463是厚度是12.7mm的 所以光驱位硬盘架要买12.7mm的 不可买错 。 【开始动手】 一、把后盖拆开 发现那散热风扇实在是太脏了 必须先打扫灰尘才能进行下面的工作。 用魔力胶擦一擦。…

Microsoft365安装记录

一、office安装 office tool plus下载 https://otp.landian.vip/zh-cn/ 然后解压、打开 2、安装office之前要做的事情 a、旧版本激活信息的清除: b、卸载旧版本的office:在工具箱——office工具——移除office 3、安装Microsoft365 添加完产品&#xff0…

ThinkPad E530 Fedora 20 下无线上网问题

一直在用 Fedora 系列的 Linux, 但是它自带的无线网卡驱动似乎有些问题,经常是有时能连接上有时就不能。还经常搜索不到家里的无线路由器。因为家里有网线所以也就一直没在意。这两天在家里没什么事就折腾了一下,总算把无线网卡驱动搞定了。 …

E5 调用API续订服务:Microsoft 365 E5 Renew X

Microsoft 365 E5 Renew X Microsoft 365 E5 Renew X是一款网页版的E5续订服务,其依赖网页浏览器呈现支持用户多端操作,完全将E5账户API调用托管在了服务器端因此用户无需电脑也可使用。 Microsoft 365 E5 Renew X 由来 Microsoft 365 E5 Renew X为Mi…

e470c拆机图解全拆 thinkpad_e470c拆机图解全拆 thinkpad_THINKPAD e470硬盘拆解教程是?...

展开全部 【准备工作】ThinkPad E530的光驱e68a843231313335323631343130323136353331333363396463是厚度是12.7mm的 所以光驱位硬盘架要买12.7mm的 不可买错 。 【开始动手】 一、把后盖拆开 发现那散热风扇实在是太脏了 必须先打扫灰尘才能进行下面的工作。 用魔力胶擦一擦。…

thinkpad装linux无线网卡驱动,ThinkPad E530 Fedora 20 下无线网卡驱动的安装

一直在用 Fedora 系列的 Linux, 但是它自带的无线网卡驱动似乎有些问题,经常是有时能连接上有时就不能。还经常搜索不到家里的无线路由器。因为家里有网线所以也就一直没在意。这两天在家里没什么事就折腾了一下,总算把无线网卡驱动搞定了。 …