[XMAN-2017-资格赛](MISC)Green_Code

先挖坑...下班了 , 回学校继续搞...

这才是真正的好题啊...学到好多东西 , 感谢出题人

目前已经根据流量包中的数据恢复得到了二维码 :


[XMAN-2017-资格赛](MISC)Green_Code_第1张图片
QR_CODE

简单使用 PhotoShop 将图片修正 , 如下 :

[XMAN-2017-资格赛](MISC)Green_Code_第2张图片
image.png
  1. 根据已知的二维码搜集通用的信息
例如 : 
版本
掩码模式

首先根据二维码的尺寸可以直接推断出二维码的版本为 2

二维码总共有 1 - 40 个版本
每个版本对应不同的尺寸
每一个版本和上一个版本的长宽相差 4 个像素
版本1 : (7+7+7) 即 21 * 21像素
而题目中的图片明显是 25 * 25 像素 , 说明为版本 2 

版本信息 :

[XMAN-2017-资格赛](MISC)Green_Code_第3张图片
image.png
只有 Version 大于等于 7 的二维码才需要在上图所示的的位置添加版本信息
本图为 Version 2 , 因此不需要考虑版本信息

根据上述信息继续对二维码进行完善

[XMAN-2017-资格赛](MISC)Green_Code_第4张图片
image.png
[XMAN-2017-资格赛](MISC)Green_Code_第5张图片
Format String

可以看到 Format String 在二维码中被编码了两次
这里 Format String 总共有 15 个 bit 来表示
根据上图 , 结合我们已知的二维码信息 , 我们对我们的二维码进行一次完善

我们已经得到的二维码的 Format String 为 : (白色为 0 , 黑色为 1)
根据左上角的 Format String
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 0 0 1 1 0 0 0 1 ?  ?  ?  ?  ?  ?  ?
根据偏右下方的 Format String 暂时并不能得到有效的信息
我们得到的最多的信息就是左上角的 Format String 为 : 
000110001??????
根据文章 : 
http://www.thonky.com/qr-code-tutorial/format-version-tables
(这里有点坑 , 这个网站里面说的 Format String 的最低位是 0 , 因此要反过来看)
那么我们需要在这个网站中搜索 : 
??????100011000
可以得到 : 
...居然没有找到
吐血...
浏览器的搜索真是个大坑 , 如下图
[XMAN-2017-资格赛](MISC)Green_Code_第6张图片
image.png
注意到 110001100011000 
被匹配到了
但是这个怎么这么奇怪 , 怎么不是以我们刚才找到的 10 串结尾的呢
事实上这个 110001100011000 就是以 100011000 结尾的
只是因为先匹配到了前面的 , 后面的就不显示了
在这里坑了好久

这样我们就得到了这个二维码的另一些信息 :

ECC Level   Mask Pattern    Type Information Bits
L   0   111011111000100
L   1   111001011110011
L   2   111110110101010
L   3   111100010011101
L   4   110011000101111
L   5   110001100011000
# 纠错等级 : L , 掩码模式 : 5
# 纠错等级有点低啊 ... 不知道能不能恢复出来

我们再对二维码根据 Format String 进行恢复
得到结果如下图 :

[XMAN-2017-资格赛](MISC)Green_Code_第7张图片
Dark Module

继续完善如下图 :

[XMAN-2017-资格赛](MISC)Green_Code_第8张图片
image.png

到现在为止 , 上图已经是我们能通过已知信息直接恢复的包含最多信息的图了
下面我们需要根据这个图来解码真正的数据

再来看看掩码

[XMAN-2017-资格赛](MISC)Green_Code_第9张图片
image.png
掩码模式为 5
即为下图 : 
[XMAN-2017-资格赛](MISC)Green_Code_第10张图片
image.png

参考链接 :

qr-code-tutorial
QR code recovery challenge - Misc 400 Problem - Writeup by Robert Xiao (@nneonneo)
二维码的生成细节和原理-酷壳

你可能感兴趣的:([XMAN-2017-资格赛](MISC)Green_Code)