Home > Python > pc端二维码的编码及解码

pc端二维码的编码及解码

之前做了个隐写题,大致意思是二维码里面有段网址,直接扫会到对应的页面,但是会发现什么都发现不了,那么问题来了,隐藏的信息在什么地方。

猜猜都知道估计就是在二维码解析的过程中隐藏了,但是该怎么解析呢?

度娘谷歌都问了,方法是有,解码用zbar+PIL的库即可完成,心想很容易,真正安装了才发现zbar的源码安装包不了,而编译好的exe文件安装完后用python导入还是报错如下:

ovxvut9q9m0jegxa4

感觉是失败了,想转移到linux,发现还是zbar的源码依然编译不来。

也就这个时候,我想搜一下zbar有没有删除干净的时候,我发现了这个:

ayxgt0rbbkal1n8o8uc

点开一看一闪,我就有点开心了,估计是要加参数,结果-h一下,果然有门,-p后加上图片,即可解析内容:

o6j00n6367r643c6

原来的二维码如下:

369f_tjwo4v2tza2nw

还有其他参数:

options:
 -h, --help display this help text
 --version display version information and exit
 -q, --quiet minimal output, only print decoded symbol data
 -v, --verbose increase debug output level
 --verbose=N set specific debug output level
 -d, --display enable display of following images to the screen
 -D, --nodisplay disable display of following images (default)
 --xml, --noxml enable/disable XML output format
 --raw output decoded symbol data without symbology prefix
 -S<CONFIG>[=<VALUE>], --set <CONFIG>[=<VALUE>]
 set decoder/scanner <CONFIG> to <VALUE> (or 1)

英文不难,基本意思都能懂。

生成二维码就比较容易了,用qrcode库,下载完直接安装就好了,可能会出现的问题是setup.py的编码有点问题,unicode编码问题,直接在内容前面reload(sys)一下,再设定一下默认编码为gb2312即可。

安装完有个qr.exe,要具体生成一个自定义的二维码,要加的参数还是很多的。不过还是写脚本比较随性一点:

import qrcode
from sys import argv
a = argv[1]
qr = qrcode.QRCode(
version=2,       //一个整数,范围为1到40,表示二维码的大小(最小值是1,是个12×12的矩阵),如果想让程序自动生成,将值设置为 None 并使用 fit=True 参数即可。
error_correction=qrcode.constants.ERROR_CORRECT_L,       //二维码的纠错范围,可以选择4个常量
box_size=10,       //每个点(方块)中的像素个数
border=1          //二维码距图像外围边框距离,默认为4,而且相关规定最小为4
)
qr.add_data(a)
qr.make(fit=True)
img = qr.make_image()
img.save("caokefan.png")

error_correction:二维码的纠错范围,可以选择4个常量
ERROR_CORRECT_L 7%以下的错误会被纠正
ERROR_CORRECT_M (default) 15%以下的错误会被纠正
ERROR_CORRECT_Q 25 %以下的错误会被纠正
ERROR_CORRECT_H. 30%以下的错误会被纠正。

工具地址:GitHub

You may alo like...

发表评论

邮箱地址不会被公开。 必填项已用*标注