每日一练:攻防世界:qr-easy

本题思路与CTFSHOW: 36D杯 misc ez-qrcode思路相同

工具链接:补全二维码QRazyBox - QR Code Analysis and Recovery Toolkit (h3110w0r1d.com)

1.首先,我们需要基于上图的干净图像。

此二维码的大小为 29x29,版本V的大小为N × N,N = 17 + 4V,所以这是版本 3。

2.二维码格式信息

该区域表示二维码的格式信息。实际上,格式信息是 15 位长,区域有最后 7位。

所以二维码的信息字符串为????????0111110。再结合所有格式信息字符串的列表

所有格式信息字符串的列表:

ECC 级别 蒙版图案 类型信息位

L 0 111011111000100

L 1 111001011110011

L 2 111110110101010

L 3 111100010011101

L 4 110011000101111

L 5 110001100011000

L 6 110110001000001

L 7 110100101110110

M 0 101010000010010

M 1 101000100100101

M 2 101111001111100

M 3 101101101001011

M 4 100010111111001

M 5 100000011001110

M 6 100111110010111

M 7 100101010100000

Q 0 011010101011111

Q 1 011000001101000

Q 2 011111100110001

Q 3 011101000000110

Q 4 010010010110100

Q 5 010000110000011

Q 6 010111011011010

Q 7 010101111101101

H 0 001011010001001

H 1 001001110111110

H 2 001110011100111

H 3 001100111010000

H 4 000011101100010

H 5 000001001010101

H 6 000110100001100

H 7 000100000111011

所以这个二维码有ECC级别H和掩码模式1

1 号掩码有公式(row) mod 2 == 0。注意行号是从0开始的,所以我们要切换坐标为0,2,4,…,28的行的位。

二维码也有固定的图案,所以我们只需要切换数据部分的位即可。查看数据区和位顺序。

掩码号 如果下面的公式对于给定的行/列坐标为真,则切换该坐标处的位

0 (行 + 列) mod 2 == 0

1 (行) mod 2 == 0

2 (列) mod 3 == 0

3 (行 + 列) mod 3 == 0

4 (楼(行 / 2)+ 楼(列 / 3)) mod 2 == 0

5 ((行 * 列) mod 2) + ((行 * 列) mod 3) == 0

6 ( ((行 * 列) mod 2) + ((行 * 列) mod 3) ) mod 2 == 0

7 ( ((行 + 列) mod 2) + ((行 * 列) mod 3) ) mod 2 == 0

使用在线工具QRazyBox - QR Code Analysis and Recovery Toolkit (h3110w0r1d.com)

所以我们拿到掩码信息并且(row) mod 2 == 0,及取0,2,4,6,8,10……的数据

3.ruby脚本:(在线网站运行)

data = '00100000' \
       '00110100' \
       '11111010' \
       '01000101' \
       '00010001' \
       '00111101' \
       '00000100' \
       '10011110' \
       '11010100' \
       '00010100' \
       '11011101' \
       '11010010' \
       '01010100' \
       '01001110' \
       '01011001' \
       '00001110' \
       '01010001' \
       '11011010' \
       '10010010' \
       '11010101' \
       '00011001' \
       '00010001' \
       '00001110' \
       '00010010' \
       '00011111' \
       '01000000'
alphanumeric = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:'.chars

def read(str, size)
  str.slice!(0, size)
end

def kanji(num)
  if num >= 0x1740
    (0xC140 + num / 0xC0 * 0x100 + num % 0xC0)
      .chr(Encoding::Shift_JIS).encode(Encoding::UTF_8)
  else
    (0x8140 + num / 0xC0 * 0x100 + num % 0xC0)
      .chr(Encoding::Shift_JIS).encode(Encoding::UTF_8)
  end
end

loop do
  case mode = read(data, 4)
  when '0010' # Alphanumeric
    count = read(data, 9).to_i(2)
    (count / 2).times do
      chunk = read(data, 11).to_i(2)
      print alphanumeric[chunk / 45] + alphanumeric[chunk % 45]
    end
    print alphanumeric[read(data, 11).to_i(2)] if count.odd?
  when '0100' # Byte
    count = read(data, 8).to_i(2)
    count.times do
      print read(data, 8).to_i(2).chr
    end
  when '1000' # Kanji
    count = read(data, 8).to_i(2)
    count.times do
      print kanji(read(data, 13).to_i(2))
    end
  when '0000' # Terminate
    break
  else
    fail "Unhandled mode #{mode}"
  end
end

3.python脚本:

# D1-D26:
data = ['01000001', '01100110', '01100110', '11000110', '00010110', '01110111', '10110101', '01000110', '01110100', '00110110', '00010110', '11100110', '11100110', '11110111', '01000100', '01110110', '01010111', '01000100', '10000110', '11110111', '01010111', '00110110', '01010111', '11010000', '11101100', '00010001']
#data是掩码
data = "".join(data)
data = data[4:]

for i in range(0, len(data), 8):
    print(chr(int(data[i:i+8], 2)), end="")

参考文章:

CTFSHOW: 36D杯 misc ez-qrcode_ctfshow 36d杯 misc-CSDN博客

【愚公系列】2022年02月 攻防世界-进阶题-MISC-83(qr-easy)-腾讯云开发者社区-腾讯云 (tencent.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/720389.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

msvcp100.dll已加载但找不到入口点的处理方法,分析比较靠谱的msvcp100.dll解决方法

用户在日常使用中有时会遇到一个错误提示:“已加载 msvcp100.dll,但找不到入口点”。这一信息不仅引发了使用上的不便,也对软件的稳定性产生了质疑。理解并解决该问题不仅对确保计算机正常运行至关重要,也对维护软件的长期稳定性和…

最新扣子(Coze)实战案例:扣子图像流的创建及使用,完全免费教程

🧙‍♂️ 诸位好,吾乃斜杠君,编程界之翘楚,代码之大师。算法如流水,逻辑如棋局。 📜 吾之教程,内含诸般技术之秘诀。吾欲以此笔记,传授编程之道,助汝解技术难题。 &#…

电长推荐:手机数据管理软件,免费备份恢复擦除手机数据

在信息时代,手机成为我们生活中不可或缺的工具。然而,管理手机中的海量数据却往往令人头疼。 特别是对于苹果用户,数据管理并不像安卓那样直观方便。 今天为大家推荐一款强大且免费的工具——苹安手机管家,它将为你的数据管理带…

【windows|003】计算机硬件基础及存储单位

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 🏅阿里云ACE认证高级工程师 🏅阿里云开发者社区专家博主 💊交流社区&…

雨量监测预警系统:非接触式测量防汛预警

TH-SW2雨量监测预警系统是一种用于监测降雨量的重要工具,对于防汛预警工作具有重要意义。该系统采用非接触式测量技术,可以实时监测雨量数据,并自动预警,以便及时采取防汛措施,确保人民生命财产安全。 系统组成 1. 雨…

绿色免费离线版JS加密混淆工具 - 支持全景VR加密, 小程序js加密, H5网站加密

自从我们推出在线版的免费JS加密混淆工具以来,受到了广大用户的热烈欢迎。特别是全景开发人员,他们使用该工具加密VR插件的JS代码, 添加域名锁等,都非常有效地保护了插件的代码资源。 最近,我们收到了许多用户的反馈,…

伊拉克目的港清关严控,所有管控范围内的产品务必申请COC证书

伊拉克目的港清关严控,所有管控范围内的产品务必申请COC证书,COC/COI 伊拉克使馆认证,欢迎随时咨询小詹 近期,伊拉克海关扩大了进口产品管控品类,从产品的12大类700多种商品拓宽到800多种商品, 伊拉克海关…

工厂能耗监控与管理

随着工业4.0的浪潮席卷全球,工厂的能耗监控与管理已不再是简单的节能降耗问题,而是关乎企业竞争力、环保责任及可持续发展的核心议题。在这个关键时刻,HiWoo Cloud平台以其独特的视角和强大的功能,为工厂能耗监控与管理领域带来全…

C++项目实战:SPDK文件系统

目录 一、Blobstore设计框架二、Cache机制三、Blob FS I/O操作四、SPDK FUSE (Filesystem in Userspcae) 前言 Blob FS是spdk面向于用户态的轻量级的文件系统 SPDK通过绕过内核(kernel bypass)的方案,构筑了用户态驱动,并利用异步轮询、无锁机制等&a…

Java输入输出语句 和 保留字

目录 键盘输入语句 保留字 键盘输入语句 Input.java , 需要一个 扫描器(对象), 就是Scanner 步骤 : 导入该类的所在包, java.util.*创建该类对象(声明变量)调用里面的功能 案例要求:可以从控制台接收用户信息,【姓…

天然健康:源自大自然的馈赠

我们的农产品,承载着乡村的淳朴与大自然的馈赠。我们精选每一片土地,用科学种植方法,打造出品质卓越的农产品。无论是色泽鲜艳、口感脆嫩的蔬菜,还是香甜可口、营养丰富的水果,都让您在品尝美味的同时,享受…

记录一个利用winhex进行图片隐写分离的

前提 是一次大比武里面的题目,属实给我开了眼,跟我之前掌握的关于隐写合并的操作都不一样。 它不是直接在文件里面进行输入文件隐写,叫你输入密码,或者更改颜色,或者偏移位置; 它不是单纯几个文件合并&a…

css 三角形

方法一&#xff1a; <div class"triangle"></div>css .triangle{width: 8px;height: 8px;border: 8px solid #3C69EF;/* border-radius: 0px 2px 0 0; */ // 右上角加一点圆角border-block-end: 8px solid transparent;border-inline-start: 8px solid…

Pikachu靶场--文件包含

参考借鉴 Pikachu靶场之文件包含漏洞详解_pikachu文件包含-CSDN博客 文件包含&#xff08;CTF教程&#xff0c;Web安全渗透入门&#xff09;__bilibili File Inclusion(local) 查找废弃隐藏文件 随机选一个然后提交查询 URL中出现filenamefile2.php filename是file2.php&…

3d中模型显示黑色给不了材质---模大狮模型网

如果3D模型显示黑色&#xff0c;而且无法给它添加材质&#xff0c;可能有以下几种原因&#xff1a; 一&#xff1a;模型没有UV贴图 UV贴图是3D模型表面纹理的一种方式&#xff0c;如果模型没有正确的UV贴图&#xff0c;渲染时可能会显示黑色。在大多数3D建模软件中&#xff0c…

【植物大战僵尸】C语言简易版

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

如何用Vue3打造一个炫酷的树状图

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 基于 Vue.js 的 Treemap 可视化组件 应用场景介绍 Treemap 可视化组件是一种强大的工具&#xff0c;用于以直观的方式展示分层数据。它将数据点绘制为矩形&#xff0c;其中每个矩形的大小与数据点的大小成正比…

SSM考研咨询app-计算机毕业设计源码05262

摘 要 随着互联网趋势的到来&#xff0c;各行各业都在考虑利用互联网将自己推广出去&#xff0c;最好方式就是建立自己的互联网系统&#xff0c;并对其进行维护和管理。在现实运用中&#xff0c;应用软件的工作规则和开发步骤&#xff0c;采用Java技术建设考研咨询app。 本设计…

Notes客户机开启事务日志

大家好&#xff0c;才是真的好。 了解过事务日志的人都知道——等等&#xff0c;你还不知道事务日志&#xff1f; 那我们先介绍一下&#xff0c;简单来说&#xff0c;Domino事务日志是捕获数据库更改并将其写入的记录&#xff0c;然后等服务器不繁忙或按计划更新到磁盘上的No…

ASP.NET MVC-简单例子

环境&#xff1a; win10&#xff0c;.NET Framework 4.6.1 参考&#xff1a; ASP.NET MVC 简介 | 菜鸟教程 https://www.runoob.com/aspnet/mvc-intro.html 准备 查看 net framework 版本: cmd-> C:\Windows\Microsoft.NET\Framework\v4.0.30319>MSBuild /version Mic…