CN109145675B - 一种嵌套式二维码攻击双重检测方法及系统 - Google Patents

一种嵌套式二维码攻击双重检测方法及系统 Download PDF

Info

Publication number
CN109145675B
CN109145675B CN201810690963.7A CN201810690963A CN109145675B CN 109145675 B CN109145675 B CN 109145675B CN 201810690963 A CN201810690963 A CN 201810690963A CN 109145675 B CN109145675 B CN 109145675B
Authority
CN
China
Prior art keywords
dimensional code
detection
position detection
maximum number
locators
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810690963.7A
Other languages
English (en)
Other versions
CN109145675A (zh
Inventor
宋军
杨帆
高坤
刘瑞
徐衡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China University of Geosciences
Original Assignee
China University of Geosciences
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China University of Geosciences filed Critical China University of Geosciences
Priority to CN201810690963.7A priority Critical patent/CN109145675B/zh
Publication of CN109145675A publication Critical patent/CN109145675A/zh
Application granted granted Critical
Publication of CN109145675B publication Critical patent/CN109145675B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1408Methods for optical code recognition the method being specifically adapted for the type of code
    • G06K7/14172D bar codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/06009Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking
    • G06K19/06037Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking multi-dimensional coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/06009Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking
    • G06K19/06046Constructional details
    • G06K19/06075Constructional details the marking containing means for error correction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1439Methods for optical code recognition including a method step for retrieval of the optical code
    • G06K7/1443Methods for optical code recognition including a method step for retrieval of the optical code locating of the code in an image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/146Methods for optical code recognition the method including quality enhancement steps
    • G06K7/1473Methods for optical code recognition the method including quality enhancement steps error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Electromagnetism (AREA)
  • General Health & Medical Sciences (AREA)
  • Toxicology (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Quality & Reliability (AREA)
  • Image Analysis (AREA)

Abstract

本发明提供一种嵌套式二维码攻击双重检测方法与系统,方法具体包括三个步骤,首先对待检测二维码图像进行扫描;系统对扫描的二维码图像进行常规检测,获取该图像中二维码定位符个数,系统将获取的定位符个数与正常值进行比对,若其大于正常值,则判定该二维码异常,警示用户该二维码图像中嵌入了其它二维码,否则,进入深度检测;深度检测模块通过修改定位符探测函数的识读参数,对图像进行深度扫描,再次获取定位符数量特征,并与正常值进行比较。通过上述方式,本发明能够警示用户当前扫描的二维码区域是否嵌入了其它二维码,有效增强二维码扫描环节的安全性,为二维码识别软件设计提供了一种新的检测方法。

Description

一种嵌套式二维码攻击双重检测方法及系统
技术领域
本发明涉及攻击检测领域,具体的涉及一种嵌套式二维码攻击双重检测方法及系统。
背景技术
二维码技术作为一种新型的信息存储技术,具有信息密度高、鲁棒性好、容错性强、制造成本低等特点。近年来,以二维码为媒介的移动服务,已广泛融入人们日常生活的多个领域,在给工作生活带来便捷的同时,也潜在诸多安全问题和隐患。
2016年CCS国际会议上,Adrain等提出了一种针对二维码的新型攻击手段“Barcode-in-Barcode Attacks”,可直译为:“码中码攻击”,这种攻击手段的基本原理是:将另外一张二维码嵌入原有二维码图像区域,形成嵌套式二维码,导致不同用户扫描同一张二维码图像可能得到不同的识读结果。
目前条件下,二维码应用已相对广泛,技术特点也在不断更新,改进和完善解码策略仍需要较长期过程;其次,降低容错率的解决方案通常会影响到二维码的解码性能。因此,采用传统提高解码性能或者完善纠错能力的技术方法,难以有效应对二维码嵌套式攻击问题,统计文献中至今尚无有效的技术方案和治理措施。
综上所述,本发明开展嵌套式二维码(QRinQR)攻击检测研究,具有重要的理论和实际意义。本发明通过改进基于ZXing库的解码流程,能够在用户二维码扫描过程中,对嵌套式二维码(QRinQR)攻击进行双重检测,警示用户原有二维码区域是否被嵌入其它二维码,具有适用多种解码策略,不需降低容错率的特点。
发明内容
本发明要解决的技术问题在于,针对上述目前现有二维码检测技术的不足,提供一种嵌套式二维码攻击双重检测方法及系统,能够在用户扫描二维码过程中,对嵌套式二维码攻击进行双重检测,警示用户原有二维码区域是否被嵌入其它二维码。
一种嵌套式二维码攻击双重检测方法,其特征在于,具体包括以下三个步骤:
步骤1:用户进入嵌套式二维码攻击检测主界面,对待检测二维码图像进行扫描;
步骤2:对扫描的二维码图像进行常规检测,获取该二维码图像中二维码定位符个数,对获取的定位符个数与预设正常值进行比对,若获取的定位符个数大于预设正常值,则判定该二维码是非正常二维码,警示用户该二维码图像中嵌入了其它二维码,否则,进入步骤3进行深度检测;
步骤3:修改定位符探测函数的识读参数,对二维码图像进行深度检测,再次获取定位符个数,并与正常值进行比较,若再次获取定位符个数大于预设正常值,则判定该二维码是非正常二维码,警示用户该二维码图像中嵌入了其它二维码,否则,判定此二维码时正常二维码。
进一步的,采用开源条码ZXing包完成所述常规检测。
进一步的,对开源条码ZXing包中二维码解码流程进行改善,采用改善后的二维码解码流程完成所述深度扫描,改善后的二维码解码流程的具体流程如下:
(1)修改解析图形寻找特征点的类,在此类中添加位置探测图形的最大个数变量,记录检测到的位置探测图形个数,即定位符个数,在其内部选取获取位置探测图形的最大个数的函数中,将检测出的定位点个数赋予位置探测图形的最大个数变量,对检测获得的定位符进行筛选,得到最符合编码规则要求的三个,添加返回位置探测图形的最大个数函数并返回得到的位置探测图形的最大个数变量;
(2)修改处理探测结果的类,添加位置探测图形的最大个数变量、构造函数,以及添加位置探测图形的最大个数变量的get访问器;
(3)在探测类中,添加位置探测图形的最大个数变量,从内部检测函数中获得解析图形类对象中的位置探测图形的最大个数变量,然后修改图像信息获取函数的返回语句,返回获取位置探测图形的最大个数;
(4)在扫码类中的解码方法中,得到解析结果对象中的位置探测图形的最大个数变量,并将其用于构造结果对象;
(5)从捕获活动类中的解码操作函数得到位置探测图形的最大个数变量,将其返回调用此模块活动,并与正常值进行比对,判断是否为嵌套二维码。
一种嵌套式二维码攻击双重检测系统,其特征在于,包括以下三个模块:
二维码扫描模块:用于用户进入嵌套式二维码攻击检测主界面,对待检测二维码图像进行扫描;
常规检测模块:用于对扫描的二维码图像进行常规检测,获取该二维码图像中二维码定位符个数,对获取的定位符个数与预设正常值进行比对,若获取的定位符个数大于预设正常值,则判定该二维码是非正常二维码,警示用户该二维码图像中嵌入了其它二维码,否则,进入深度检测;
深度检测模块:用于修改定位符探测函数的识读参数,对二维码图像进行深度检测,再次获取定位符个数,并与正常值进行比较,若再次获取定位符个数大于预设正常值,则判定该二维码是非正常二维码,警示用户该二维码图像中嵌入了其它二维码,否则,判定此二维码时正常二维码。
进一步的,采用开源条码ZXing包完成所述常规检测。
进一步的,对开源条码ZXing包中二维码解码流程进行改善,采用改善后的二维码解码流程完成所述深度扫描,改善后的二维码解码流程的具体流程如下:
(1)修改解析图形寻找特征点的类,在此类中添加位置探测图形的最大个数变量,记录检测到的位置探测图形个数,即定位符个数,在其内部选取获取位置探测图形的最大个数的函数中,将检测出的定位点个数赋予位置探测图形的最大个数变量,对检测获得的定位符进行筛选,得到最符合编码规则要求的三个,添加返回位置探测图形的最大个数函数并返回得到的位置探测图形的最大个数变量;
(2)修改处理探测结果的类,添加位置探测图形的最大个数变量、构造函数,以及添加位置探测图形的最大个数变量的get访问器;
(3)在探测类中,添加位置探测图形的最大个数变量,从内部检测函数中获得解析图形类对象中的位置探测图形的最大个数变量,然后修改图像信息获取函数的返回语句,返回获取位置探测图形的最大个数;
(4)在扫码类中的解码方法中,得到解析结果对象中的位置探测图形的最大个数变量,并将其用于构造结果对象;
(5)从捕获活动类中的解码操作函数得到位置探测图形的最大个数变量,将其返回调用此模块活动,并与正常值进行比对,判断是否为嵌套二维码。
本发明的优势在于能够警示用户当前扫描的二维码区域是否嵌入了其它二维码,有效增强二维码扫描环节的安全性,具有适用多种解码策略,不需降低容错率的特点,为二维码识别软件设计提供了一种新的检测方案。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1为本发明的系统检测示意图;
图2为本发明的多标准解码歧义示意图;
图3为本发明中扫描时滑动手机对准二维码情景示意图;
图4为本发明中二维码结构及位置探测图形示意图;
图5是本发明所提及文献中测试的QRinQR图像;
图6是本发明的嵌套式二维码检测原理示意图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
嵌套式二维码(QRinQR)攻击双重检测包含常规检测和深度检测,其基本流程如下图1所示,一种嵌套式二维码攻击双重检测方法实现对嵌套式二维码攻击双重检测具体包括以下三个步骤:
步骤1:用户进入嵌套式二维码攻击检测主界面,对待检测二维码图像进行扫描;
步骤2:对扫描的二维码图像进行常规检测,获取该二维码图像中二维码定位符个数,对获取的定位符个数与预设正常值进行比对,若获取的定位符个数大于预设正常值,则判定该二维码是非正常二维码,警示用户该二维码图像中嵌入了其它二维码,否则,进入步骤3进行深度检测;
步骤3:修改定位符探测函数的识读参数,对二维码图像进行深度检测,再次获取定位符个数,并与正常值进行比较,若再次获取定位符个数大于预设正常值,则判定该二维码是非正常二维码,警示用户该二维码图像中嵌入了其它二维码,否则,判定此二维码时正常二维码。
本发明通过对嵌套式二维码(QRinQR)攻击进行检测,警示用户当前扫描的二维码区域是否嵌入了其它二维码,有效增强二维码扫描环节的安全性,为二维码识别软件设计提供了一种新的检测方案。将从以下四个方面展开介绍:
1)介绍嵌套式二维码攻击式实现原理及其基本工作流程;
2)分析介绍QRinQR检测原理,重点介绍其识别和检测原理与方法;
3)介绍Google开源ZXing代码实现原理,即本发明实现的技术基础;
4)详细介绍本发明实现流程和检测基本流程。
1、嵌套式二维码(QRinQR)实现原理
(1)多标准歧义(Multiple Standards Ambiguity)
大多数条码阅读器通常集成了多个符号系统,确保设备能够识别多种不同类型的二维条形码。若待扫描的图像中包含多个条形码,识别结果就存在较大的不确定性。一个经过精心设计制作的嵌套式二维码通常能够符合多个解码标准,没有专业知识背景的普通用户,通常难以察觉或者未注意二维码图像特征的变化,在扫描二维码过程中不仔细检查二维码图像是否属于正常类型。目前大多数二维码解码软件为了提高识读方面效率,注重降低计算时间。检测过程中,一旦符合某一解码标准,则立即停止检测并转入解码过程,并且内部二维码较外部二维码更容易检测。如图2所示,解码器按照解码类型C、B、A顺序进行检测,当检测到图像符合类型B的解码规则后,对其进行解码将结果呈现给用户。
(2)相机边框(Camera Frame)
众所周知,使用手机条码阅读器扫描二维码时,用户通常难以将手机直接指向正确的条形码,经常需要滑动手机使相机框架瞄准条形码(如图3)。并且在扫描过程中,条码阅读器时刻在获取每一帧图像信息并尝试解码,用户无需按下任何按钮。在这种情况下,内部嵌入的二维码可能先于外部二维码进入成像框中,出现未扫描完整图像但已完成解码的典型情况。这种先解码内部嵌入二维码情况,会以一定概率形式出现,通常与用户扫描二维码的动作和习惯有关。这也是不同用户扫描同一张嵌套式二维码,导致可能得到不同识读结果的原因所在。
(3)QR码技术特性
嵌套式二维码设计,需要原始二维码满足以下两个条件:一是需要提供相对较大的连续区域,其中可以嵌入另一个二维码;二是需要可靠的数据纠正机制。QR码和DataMatrix通常都可以满足第一个条件;对于第二个条件,QR码具有较高的纠错能力,其纠错效果优于Data Matrix。在QR码中,解码器具有忽略未知编码段的能力,这使得将普通图标嵌入至二维码图像后依旧能够完成解码。因此,QR码是嵌入嵌入式二维码实现的最佳载体。
2、QRinQR检测原理
QR码的解码系统主要包括两部分:第一部分先对采集的QR码图像进行预处理,对图像进行校正,借此提高识别准确率;第二部分是对预处理后的图像进行译码,得到QR码所表示的文本信息。
在译码过程中,首先要得到位置探测图形,并且需要获得符合解码要求的三个位置探测图形。如图4所示,二维码具有三个相同的位置探测图形,分别位于左下角、左上角、右上角。每个位置探测图形可以看作是由3个重叠的同心正方形组成,分别为7x7个深色模块、5x5个浅色模块、3x3个深色模块,位置探测图形模块的宽度比为1:1:3:1:1。通常在图像中其它位置遇到类似图形的可能性很小,因此可以快速识别图像中3个位置探测图形。
与正常二维码图像相比,嵌套二维码图像中存在更多的位置探测图形。例如图5展示了文献中测试的四个QRinQR图像。从这四个图像可以看出,位置探测图形明显增多。条码阅读器扫描这些图像时,将对得到的位置探测图形进行筛选,得到最符合解码要求的三个位置探测图形。
综上所述,嵌套二维码与正常二维码在图像位置探测图形上存在差异,本模块结合常规检测和深度检测,通过探测图像中位置探测图形的个数,并在其筛选出最佳定位符前进行保存。通过与正常二维码图像中位置探测图形个数进行比较,若大于正常二维码中的个数,则可以警示用户该二维码图像中嵌入其它二维码。图6为本发明原理示意图。
3、Google开源ZXing代码
Google开源ZXing代码是实现嵌套式二维码(QRinQR)检测的基础,本作品嵌套式二维码检测是通过改进ZXing中的解码流程实现,通过识别所扫描的二维码图像中位置探测图形的个数,进一步判断该二维码图像中是否嵌入了其它二维码。
(1)开源ZXing包简介
ZXing是一个Google开源Java类库,用于多种码制的一维条码和二维条码的编码和解析,面向多种平台和编程语言提供了开发接口,并提供了帮助文档和示例代码。ZXing不仅支持众多的条码格式,而且提供了各种语言的实现版本,它支持的语言包括:Java、C++、C#、Objective-C、ActionScript和Ruby等。
与其他条形码开源代码相比,ZXing具有以下三个优点:
1)安装在手机中识别速度快,识别时间短,能够识别多种条形码;
2)具有良好的兼容性和多语言支持;
3)文献资料广泛,对本作品实现提供了文献资料支持。
(2)ZXing中主要解码流程分析
ZXing开源代码中,关于QR码的代码实现主要包括四个package,其中:
1)qrcode:编解码接口,外部代码通过包内QRcodeReader和QRCodeW-riter两个类进行QR码的编解码;
2)detector:从图像中检测QR码,并将其提取出来。这个package是解码的关键部分,能够进行优化和改进;
3)decoder:按照QR码编码规范,将detector中提取的QR码符号进行译码操作,将图像解析为实际信息;
4)encdoer:按照QR码的编码规范,将文本信息编码生成QR码符号。
ZXing中QR码解码流程主要由图像处理、原始图像提取符号码、符号码解码三部分组成。其中,原始图像中提出符号码部分,主要是寻找定位符和校正符,并依次进行透视转换生成最终矩阵,本发明通过改进和完善解码流程,实现对嵌套式二维码的检测。
提取符号码是解码的关键部分,其主要目标是从像素为单位的原始图像中,提取符号码部分并转换为符号码矩阵。然后将图像处理过后的矩阵交给dector,其中detect方法就是接口方法,调用该方法得到符号码矩阵。下面介绍detect方法工作原理:
其中,寻找定位符由FinderPatternFinder类实现。在图像中每隔iSkip就进行一行采样,并将连续相同颜色的像素个数计入数组中,数组长度为5位,即寻找黑\白\黑\白\黑的图像。如开始检测到黑色计入数组[0],直到检测出白色之前都将数组[0]的值加1;检测到白色后,开始在数组[1]中计数,以此类推。填满5位后检测这5位中像素个数是否比例为1:1:3:1:1,可能存在50%的误差。如果满足条件则说明找到了定位符的大致位置。将其交由handlePossibleCenter方法,进一步确定定位符的中心点。先从垂直方向检测是否满足定位符条件,如满足就定出Y轴的中心点坐标值,然后利用该坐标值再次检测水平方向是否满足定位符条件,如满足就定出X轴的中心点坐标值。至此,我们就找到了一个定位符的中心坐标。
按照上面步骤找出所有三个定位符的中心坐标,接下来定位三个定位符在符号中的位置,即左下(A点)、左上(B点)、右上(C点)三个位置。先通过两两之间的距离,确定出哪个点是左上那一点,通常左上点到其他两点的距离相近,然后通过计算BA、BC向量的叉乘定出A和C两点。
如上所述,通过ABC三点的坐标计算出*校正符的可能位置,然后交由Alignment-PatternFinder去寻找处于最右下角的校正符,这一过程与寻找定位符的方法基本相同。
找到三个定位点和一个校正符的坐标后(如果校正符没有找到,可以用一个计算值代替),符号图像的位置就可以确定。此时需要进行图像变形,建立起以模块为单位的符号矩阵与原图像之间的关系,本作品采用PerspectiveTransform方法。转换关系确立后,需要将新矩阵(以模块为单位的符号矩阵)中每个点对应到原图像中的点,查看该点是黑或白,将0、1填充至矩阵中,并生成最终的符号码。
4、实现流程和检测基本流程
嵌套式二维码(QRinQR)攻击检测的核心环节,是在dector中获取定位符个数。ZXing实现代码部分,按行对像素矩阵进行遍历,并得到图像中所有的定位符,进一步匹配最符合二维码编码规则的三个定位符,然后进行后继译码操作。本发明的实现目标是在进行最佳定位符筛选之前,得到最大定位符个数,并与正常二维码定位符个数进行比较,判断当前二维码图像是否异常;为提高检测成功率,修改检测流程,重设关键函数中识读参数,对当前图像进行深度扫描,获取更加准确的定位符个数具体实现流程如下:
(1)修改解析图形寻找特征点的类,在此类中添加位置探测图形的最大个数变量,记录检测到的位置探测图形个数,即定位符个数。在其内部选取获取位置探测图形的最大个数的函数中,将检测出的定位点个数赋予位置探测图形的最大个数变量。此后,对检测获得的定位符进行筛选,得到最符合编码规则要求的三个。最后,添加返回位置探测图形的最大个数函数并返回得到的位置探测图形的最大个数变量。
(2)修改处理探测结果的类,添加位置探测图形的最大个数变量、构造函数,以及添加位置探测图形的最大个数变量的get访问器。
(3)在探测类中,添加位置探测图形的最大个数变量,从内部检测函数中获得解析图形类对象中的位置探测图形的最大个数变量。然后修改图像信息获取函数的返回语句,返回获取位置探测图形的最大个数。
(4)在扫码类中的解码方法中,得到解析结果对象中的位置探测图形的最大个数变量,并将其用于构造结果对象。
(5)从捕获活动类中的解码操作函数得到位置探测图形的最大个数变量,将其返回调用此模块活动。与正常值进行比对,判断是否为嵌套二维码。
考虑到用户扫码动作对扫码结果的影响,本模块解码操作设置在用户扫描到整个二维码区域。通过设置延时扫码即止,避免用户在成像框未对准二维码图像条件下,条码阅读软件已完成解码的情形。具体的实现方法如下:
1)修改FinderPatternFinder类,在此类中添加maxResultPoints变量,记录检测到的位置探测图形个数,即定位符个数。在其内部函数selectBest-Patterns()中,将检测出的定位点个数赋予maxResultPoints。此后,对检测获得的定位符进行筛选,得到最符合编码规则要求的三个。最后,添加getMax-ResultPoints()函数并返回得到的maxResultPoints。
2)修改DetectorResult类和Result类,添加maxResultPoints变量、构造函数,以及添加maxResultPoints变量的get访问器。
3)在Detector类中,添加maxResultPoints变量,从内部detect()函数中获得FinderPatternFinder对象中的maxResultPoints。然后修改processFinder-PatternInfo()函数的return语句,返回maxResultPoints值。
4)在QRCodeReader类中的decode()方法中,得到DetectorResult对象中的maxResultpoints,并将其用于构造Result对象。
5)从CaptureActivity类中的handleDecode()函数得到maxResultPoints,将其与正常值进行比对,判断是否为嵌套二维码。
6)修改FinderPatternFinder类中finder()函数,重设采样间隔iSkip值,逐行对图像进行检测;
7)修改haveMultiplyConfirmedCenters()函数,确保对将整个图像进行扫描,避免因检测到三个相似定位符后退出检测流程;
其中,除了maxResultPoints和getMax-ResultPoints(),其他的都是Zxing库中自带的类与方法。
maxResultPoints变量:位置探测图形的最大个数。
getMax-ResultPoints()函数:返回位置探测图形的最大个数(返回maxResultPoints变量)。
selectBest-Patterns()函数:获取位置探测图形的最大个数(检测定位点个数并赋值给maxResultPoints变量)。
FinderPatternFinder类:Zxing库中用于解析图形的类,寻找特征点。
DetectorResult类\Result类:处理探测结果的类。
Detector类:Zxing库中用于解析图形的类,处理检测结果。
detect()函数:detector类中的函数,探测特征点。
processFinder-PatternInfo()函数:获取图形信息的函数。
QRCodeReader类:扫描QR码的类,其中包含decode函数。
decode():解码函数。
CaptureActivity类:ZXing提供的可以调用的Activity。可以对扫码成功后的动作作处理。
handleDecode()函数:处理扫码成功后的结果。
如上所述,本发明侧重解决嵌入式二维码攻击威胁问题,用户在二维码扫描过程中通过对嵌套式二维码进行深度检测,警示用户是否扫描了嵌入式二维码图像,避免用户遭受嵌套式二维码恶意攻击。
本发明针对Adrain等在CCS2016国际会议中提出的新型嵌套式二维码(QRinQR)攻击问题,设计并实现了一种基于位置探测图形检测机制的方案,通过改进Google开源ZXing代码中的解码流程,实现对QRinQR攻击的检测,降低解码歧义带来的安全风险。由于目前市场上大所数移动终端二维码扫描软件无法有效抵御这些攻击,文献中至今也尚无有效的技术方案和治理措施,本发明为二维码识别软件设计提供了一种新的解决思路和技术手段。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

Claims (2)

1.一种嵌套式二维码攻击双重检测方法,其特征在于,具体包括以下三个步骤:
步骤1:用户进入嵌套式二维码攻击检测主界面,对待检测二维码图像进行扫描;
步骤2:对扫描的二维码图像进行常规检测,获取该二维码图像中二维码定位符个数,对获取的定位符个数与预设正常值进行比对,若获取的定位符个数大于预设正常值,则判定该二维码是非正常二维码,警示用户该二维码图像中嵌入了其它二维码,否则,进入步骤3进行深度检测;
步骤3:修改定位符探测函数的识读参数,对二维码图像进行深度检测,再次获取定位符个数,并与正常值进行比较,若再次获取定位符个数大于预设正常值,则判定该二维码是非正常二维码,警示用户该二维码图像中嵌入了其它二维码,否则,判定此二维码时正常二维码;
采用开源条码ZXing包完成所述常规检测;
对开源条码ZXing包中二维码解码流程进行改善,采用改善后的二维码解码流程完成所述深度检测,改善后的二维码解码流程的具体流程如下:
(1)修改解析图形寻找特征点的类,在此类中添加位置探测图形的最大个数变量,记录检测到的位置探测图形个数,即定位符个数,在其内部选取获取位置探测图形的最大个数的函数中,将检测出的定位点个数赋予位置探测图形的最大个数变量,对检测获得的定位符进行筛选,得到最符合编码规则要求的三个,添加返回位置探测图形的最大个数函数并返回得到的位置探测图形的最大个数变量;
(2)修改处理探测结果的类,添加位置探测图形的最大个数变量、构造函数,以及添加位置探测图形的最大个数变量的get访问器;
(3)在探测类中,添加位置探测图形的最大个数变量,从内部检测函数中获得解析图形类对象中的位置探测图形的最大个数变量,然后修改图像信息获取函数的返回语句,返回获取位置探测图形的最大个数;
(4)在扫码类中的解码方法中,得到解析结果对象中的位置探测图形的最大个数变量,并将其用于构造结果对象;
(5)从捕获活动类中的解码操作函数得到位置探测图形的最大个数变量,将其返回调用此模块活动,并与正常值进行比对,判断是否为嵌套二维码。
2.一种嵌套式二维码攻击双重检测系统,其特征在于,包括以下三个模块:
二维码扫描模块:用于用户进入嵌套式二维码攻击检测主界面,对待检测二维码图像进行扫描;
常规检测模块:用于对扫描的二维码图像进行常规检测,获取该二维码图像中二维码定位符个数,对获取的定位符个数与预设正常值进行比对,若获取的定位符个数大于预设正常值,则判定该二维码是非正常二维码,警示用户该二维码图像中嵌入了其它二维码,否则,进入深度检测;
深度检测模块:用于修改定位符探测函数的识读参数,对二维码图像进行深度检测,再次获取定位符个数,并与正常值进行比较,若再次获取定位符个数大于预设正常值,则判定该二维码是非正常二维码,警示用户该二维码图像中嵌入了其它二维码,否则,判定此二维码时正常二维码;
采用开源条码ZXing包完成所述常规检测;
对开源条码ZXing包中二维码解码流程进行改善,采用改善后的二维码解码流程完成所述深度检测,改善后的二维码解码流程的具体流程如下:
(1)修改解析图形寻找特征点的类,在此类中添加位置探测图形的最大个数变量,记录检测到的位置探测图形个数,即定位符个数,在其内部选取获取位置探测图形的最大个数的函数中,将检测出的定位点个数赋予位置探测图形的最大个数变量,对检测获得的定位符进行筛选,得到最符合编码规则要求的三个,添加返回位置探测图形的最大个数函数并返回得到的位置探测图形的最大个数变量;
(2)修改处理探测结果的类,添加位置探测图形的最大个数变量、构造函数,以及添加位置探测图形的最大个数变量的get访问器;
(3)在探测类中,添加位置探测图形的最大个数变量,从内部检测函数中获得解析图形类对象中的位置探测图形的最大个数变量,然后修改图像信息获取函数的返回语句,返回获取位置探测图形的最大个数;
(4)在扫码类中的解码方法中,得到解析结果对象中的位置探测图形的最大个数变量,并将其用于构造结果对象;
(5)从捕获活动类中的解码操作函数得到位置探测图形的最大个数变量,将其返回调用此模块活动,并与正常值进行比对,判断是否为嵌套二维码。
CN201810690963.7A 2018-06-28 2018-06-28 一种嵌套式二维码攻击双重检测方法及系统 Active CN109145675B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810690963.7A CN109145675B (zh) 2018-06-28 2018-06-28 一种嵌套式二维码攻击双重检测方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810690963.7A CN109145675B (zh) 2018-06-28 2018-06-28 一种嵌套式二维码攻击双重检测方法及系统

Publications (2)

Publication Number Publication Date
CN109145675A CN109145675A (zh) 2019-01-04
CN109145675B true CN109145675B (zh) 2020-08-25

Family

ID=64802641

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810690963.7A Active CN109145675B (zh) 2018-06-28 2018-06-28 一种嵌套式二维码攻击双重检测方法及系统

Country Status (1)

Country Link
CN (1) CN109145675B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113361674B (zh) * 2021-06-04 2023-04-14 重庆邮电大学 一种嵌套引导二维码的编码解码方法
CN118551785A (zh) * 2023-02-27 2024-08-27 荣耀终端有限公司 扫码方法、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013238943A (ja) * 2012-05-14 2013-11-28 Denso Corp 二次元コード読取装置
CN105894072A (zh) * 2016-03-31 2016-08-24 郝迎喜 二维码混合生成系统
CN107451641A (zh) * 2017-07-27 2017-12-08 千里码数据服务有限公司 一种二维码及其生成方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013238943A (ja) * 2012-05-14 2013-11-28 Denso Corp 二次元コード読取装置
CN105894072A (zh) * 2016-03-31 2016-08-24 郝迎喜 二维码混合生成系统
CN107451641A (zh) * 2017-07-27 2017-12-08 千里码数据服务有限公司 一种二维码及其生成方法

Also Published As

Publication number Publication date
CN109145675A (zh) 2019-01-04

Similar Documents

Publication Publication Date Title
US11983599B2 (en) System and method for document processing
US8774453B2 (en) Method and arrangement for retrieving information comprised in a barcode
Liu et al. Recognition of QR Code with mobile phones
EP1580683B1 (en) Barcode recognition apparatus
US6176428B1 (en) Techniques for reading postal code
US20110309138A1 (en) Barcode Image Recognition System and Associated Method for Hand-Held Device
CN110765795B (zh) 二维码识别方法、装置及电子设备
EP1469420A2 (en) Method and device for recording of data
WO2013044875A1 (zh) 线性条码识别方法和系统
CN100452077C (zh) 二维代码区域提取方法及其提取装置和电子装置
CN109145675B (zh) 一种嵌套式二维码攻击双重检测方法及系统
CN112052702A (zh) 一种识别二维码的方法和装置
US11250230B2 (en) Narrow-strip 2-dimensional bar codes, methods, apparatuses, and devices for generating and identifying narrow-strip 2-dimensional bar codes
KR100404306B1 (ko) 코드화된 패턴 및 이의 코드 추출 방법
CN117540762A (zh) 条形码的识别方法、装置、设备及可读存储介质
US20020021835A1 (en) Method and device for recording of information
CN111523331B (zh) 一种二维码识别方法及装置
CN110689337A (zh) 一种基于QR Code二维码的智能提示方法及其系统
CN108388825B (zh) 快速反应码搜寻方法和装置
Liang et al. Real time recognition of 2D bar codes in complex image conditions
Liu et al. QR code positioning algorithm
US20240296300A1 (en) Method and apparatus for decoding optical codes of different orientations
CN116992902A (zh) 一种业务码物料统计方法、装置和设备
JP2003187180A (ja) バーコード読取装置
WO2008072219A2 (en) An apparatus system and method for encoding and decoding optical symbols

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB03 Change of inventor or designer information

Inventor after: Song Jun

Inventor after: Yang Fan

Inventor after: Gao Kun

Inventor after: Liu Rui

Inventor after: Xu Heng

Inventor before: Song Jun

Inventor before: Wang Lizhe

Inventor before: Yang Fan

Inventor before: Gao Kun

Inventor before: Liu Rui

Inventor before: Xu Heng

CB03 Change of inventor or designer information
GR01 Patent grant
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20190104

Assignee: WUHAN TIMES GEOSMART TECHNOLOGY Co.,Ltd.

Assignor: CHINA University OF GEOSCIENCES (WUHAN CITY)

Contract record no.: X2022420000021

Denomination of invention: A double detection method and system of nested QR code attack

Granted publication date: 20200825

License type: Common License

Record date: 20220302

EE01 Entry into force of recordation of patent licensing contract