CN109598872B - 通过模拟波形对键盘施加干扰信号的方法和系统 - Google Patents
通过模拟波形对键盘施加干扰信号的方法和系统 Download PDFInfo
- Publication number
- CN109598872B CN109598872B CN201811488058.XA CN201811488058A CN109598872B CN 109598872 B CN109598872 B CN 109598872B CN 201811488058 A CN201811488058 A CN 201811488058A CN 109598872 B CN109598872 B CN 109598872B
- Authority
- CN
- China
- Prior art keywords
- unit
- turning
- time
- row
- state
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07G—REGISTERING THE RECEIPT OF CASH, VALUABLES, OR TOKENS
- G07G1/00—Cash registers
- G07G1/0018—Constructional details, e.g. of drawer, printing means, input means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/82—Protecting input, output or interconnection devices
- G06F21/83—Protecting input, output or interconnection devices input devices, e.g. keyboards, mice or controllers thereof
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Input From Keyboards Or The Like (AREA)
Abstract
本发明涉及一种键盘加载干扰信号的方法和系统,通过干扰线程与常规线程的运行,常规线程检测用户真正按下的键盘中的按键值,干扰线程来模拟键盘的按键按下时的波形,将模拟的波形加载至真正的按键波形上,施加干扰信号,使得真正波形难以捕捉还原,从而对真正的按键按下的波形进行保护,避免密码按键值被侦测破解的风险,防止被窃取。
Description
技术领域
本发明涉及手持金融POS机领域,尤其是一种通过模拟波形对键盘施加干扰信号的方法和系统。
背景技术
手持POS终端是一种多功能终端,把它安装在信用卡的特约商户和受理网点中与计算机联成网络,就能实现电子资金自动转帐,它具有支持消费、预授权、余额查询和转帐等功能,使用起来安全、方便、快捷、可靠。
在使用过程中,大部分非智能POS机都是使用按键而非触屏来进行操作,而大部分的键盘都是键盘,通过有规律可寻的扫描来获取键值,很容易通过非法的手段来截取用户的密码,给用户带来经济损失。
为了保证手持POS终端的安全性,在目前键盘安全管理中,常用的方法有 (1)通过物理保护,在键盘按键触点平面上贴一个带有电路的保护膜,如果该层保护膜被破坏掉,机器就无法正常使用,也就不存在密码键值被窃取风险。(2) 只采用外壳保护,通过打孔就可以接触到按键触点。
但此两种方法在实现中存在如下缺点:成本较高:添加电路保护膜,会增加生产成本和结构设计难度;安全性不高:都是通过物理保护,容易被破解,给用户带来财产损失。
因此,如何在不使用物理保护的情况下,从而避免在现实中因为键盘的按键原因为用户带来的风险,是金融POS机领域中需要亟待解决的问题。
发明内容
本发明所要解决的技术问题是提供一种通过模拟波形对键盘施加干扰信号的方法和系统。
为了解决上述技术问题,本发明采用的技术方案为:通过模拟波形对键盘施加干扰信号的方法:启动后,启动常规线程;至少在输入密码时,启动干扰线程;
所述常规线程包括如下步骤:
S1.执行开启:每间隔T时间执行一次常规线程;
S2.判断状态:判断干扰线程的第一状态是否为运行状态,若否,则转至步骤S3;若是,则转至步骤S6;
S3.初始化:键盘按键的所有行输出电平设置为高、列输入电平设置为高;
S4.存入数据:所述键盘包括N行*M列个按键;将所述键盘从第一行至第 N行设置一行的输出电平为低、其他行输出电平为高,记录电平为低对应按键的列的IO状态,依次将所有记录存入key_data数据;
S5.输出:输出key_data数据;
S6.结束:结束常规线程;
所述干扰线程包括如下步骤:
A1.标记状态:每间隔T时间标记干扰线程的第一状态为运行状态;
A2.随机获取行列:
在N范围内获取一个值作为第r1行;
在M范围内获取一个值作为第c1列;
A3.随机获取:在N范围内获取一个值作为第r2行;
A4.置行低电平:将第r2行按键的所有行输出电平设置为低;
A5.判断同一行:判断第r2行是否与第r1行为同一行,若是,则转至步骤 A6,若否,则转至步骤A7;
A6.置列低电平:将第c1列的输入电平设为低电平;
A7.遍历判断:判断所有行是否都只获取一遍,若是,则转至步骤A8,若否,则转至步骤A3;
A8.标记:标记干扰线程的第一状态为未运行状态。
进一步的,所述步骤A1和步骤A2之间还包括如下步骤:
A11.初始化:在120—250ms范围内获取一个值作为连续干扰时间times;在1000—2000ms范围内获取一个值作为空闲时间times_1;在0-2500ms范围内随机获取一个值作为起始连续干扰时间t2;在0-2500ms范围内随机获取一个值作为起始空闲时间t1;
所述A2随机获取行列具体包括如下步骤:
A21.判断激活:判断干扰线程是否为激活状态,若是则转至步骤A23,若否则转至步骤A22;
A22.超空闲时间判断:获取当前时间t0,计算当前时间t0与起始空闲时间 t1的差值,判断差值是否大于空闲时间times_1,若是,则转至步骤A221;
A221.标记激活状态:标记干扰线程的第二状态为激活状态,获取当前时间,作为起始连续干扰时间t2,然后转至步骤A23;
A23.小于连续干扰时间判断:获取当前时间t0,计算当前时间t0与起始连续干扰时间t2的差值,判断差值是否小于连续干扰时间times,若是,则转至步骤A3,若否,则转至步骤A231;
A231.标记休眠状态:标记干扰线程的第二状态为休眠状态,获取当前时间作为起始空闲时间t1,然后转至A232;
A232.随机演算:在N范围内随机获取一个值作为第r1行;
在M范围内随机获取一个值作为第c1列;然后转至步骤A21。进一步的,所述步骤S1还包括:消抖次数置0;
所述步骤S4和步骤S5之间,还包括如下步骤:
S41.消抖操作:进行一次消抖,消抖时间为T,消抖次数加1;
S42.判断消抖次数:判断消抖次数是否为2,若是,则转步骤S43,若否,则转步骤S422;
S422.赋值:将key_data数据赋给key_bak数据,然后转至步骤S6;
S43.重置消抖次数:消抖次数置0;
S44.判断相同:判断key_data数据和key_bak数据是否相同,若是,则转至步骤S5,若否,则转至步骤S6。
进一步的,所述步骤A22还包括:判断差值是否大于空闲时间times_1,若否,则转至步骤A21。
进一步的,所述T时间的范围为5ms—20ms。
本发明还提供一种通过模拟波形对键盘施加干扰信号的系统,包括常规线程模块,干扰线程模块;启动后,启动常规线程模块;至少在输入密码时,启动干扰线程模块;
所述常规线程模块包括:
执行开启单元:每间隔T时间执行一次常规线程,然后转至判断状态单元;
判断状态单元:判断干扰线程的第一状态是否为运行状态,若否则转至初始化单元;若是则转至结束单元;
初始化单元:键盘按键的所有行输出电平设置为高、列输入电平设置为高,然后转至存入数据单元;
存入数据单元:所述键盘包括N行*M列个按键;将所述键盘从第一行至第N行设置一行的输出电平为低、其他行输出电平为高,记录电平为低对应按键的列的IO状态,依次将所有记录存入key_data数据,然后转至输出单元;
输出单元:输出key_data数据,然后转至结束单元;
结束单元:结束常规线程;
所述干扰线程模块包括:
标记状态单元:每间隔T时间标记干扰线程的第一状态为运行状态;然后转至随机获取行列单元;
随机获取行列单元:
在N范围内获取一个值作为第r1行;
在M范围内获取一个值作为第c1列,然后转至随机获取单元;
随机获取单元:在N范围内获取一个值作为第r2行;
置行低电平单元:将第r2行按键的所有行输出电平设置为低,然后再转至判断同一行单元;
判断同一行单元:判断第r2行是否与第r1行为同一行,若是,则转至置列低电平单元,若否,则转至遍历判断单元;
置列低电平单元:将第c1列的列输入电平设为低电平,然后转至遍历判断单元;
遍历判断单元:判断所有行是否都只获取一遍,若是,则转至标记单元,若否,则转至随机获取单元;
标记单元:标记干扰线程的第一状态为未运行状态。
进一步的,所述标记状态单元和随机获取行列单元之间还包括:
初始化单元:在120—250ms范围内获取一个值作为连续干扰时间times;在1000—2000ms范围内获取一个值作为空闲时间times_1;在0-2500ms范围内随机获取一个值作为起始连续干扰时间t2;在0-2500ms范围内随机获取一个值作为起始空闲时间t1;
所述随机获取行列单元具体包括:
判断激活单元:判断干扰线程是否为激活状态,若是,则转至小于连续干扰时间判断,若否,则转至超空闲时间判断单元;
超空闲时间判断单元:获取当前时间t0,计算当前时间t0与起始空闲时间 t1的差值,判断差值是否大于空闲时间times_1,若是,则转至标记激活状态单元;
标记激活状态单元:标记干扰线程的第二状态为激活状态,获取当前时间作为起始连续干扰时间t2;然后转至小于连续干扰时间判断单元;
小于连续干扰时间判断单元:获取当前时间t0,计算当前时间t0与起始连续干扰时间t2的差值,判断差值是否小于连续干扰时间times,若是,则转至随机获取单元,若否,则转至标记休眠状态单元;
标记休眠状态单元:标记干扰线程的第二状态为休眠状态,获取当前时间,作为起始空闲时间t1,然后转至随机演算单元;
随机演算单元:在N范围内随机获取一个值作为第r1行;在M范围内随机获取一个值作为第c1列;然后转至判断激活单元。
进一步的,所述常规线程模块中:
执行开启单元还包括:消抖次数置0单元;
所述存入数据单元和输出单元之间,还包括如下单元:
消抖操作单元:进行一次消抖,消抖时间为T,消抖次数加1,然后转至判断消抖次数单元;
判断消抖次数单元:判断消抖次数是否为2,若是,则转重置消抖次数单元,若否,则转赋值单元;
赋值单元:将key_data数据赋给key_bak数据,然后转至结束单元;
重置消抖次数单元:消抖次数置0,然后转至判断相同单元;
判断相同单元:判断key_data数据和key_bak数据是否相同,若是,则转至输出单元,若否,则转至结束单元。
进一步的,所述超空闲时间判断单元还包括:判断差值是否大于空闲时间 times_1,若否,则转至判断激活单元。
进一步的,所述T时间的范围为5ms—20ms。
本发明提供的一种通过模拟波形对键盘施加干扰信号的方法,包括常规线程和干扰线程,常规线程检测用户真正按下的键盘中的按键值,干扰线程来模拟键盘的按键按下时的波形,将模拟的波形加载至真正的按键波形上,施加干扰信号,使得真正波形难以捕捉还原,从而对真正的按键按下的波形进行保护,避免密码按键值被侦测破解的风险,防止被窃取。
本发明还提供一种通过模拟波形对键盘施加干扰信号的系统,包括常规线程模块和干扰线程模块,常规线程模块检测用户真正按下的键盘中的按键值,干扰线程模块来模拟键盘的按键按下时的波形,将模拟的波形加载至真正的按键波形上,施加干扰信号,使得真正波形难以捕捉还原,从而对真正的按键按下的波形进行保护,避免密码按键值被侦测破解的风险,防止被窃取。
附图说明
图1为本发明常规线程流程图;
图2为本发明干扰线程流程图;
图3为本发明一实施例常规 线程流程图;
图4为本发明一实施例干扰 线程流程图;
图5为本发明一实施例的键盘示意图。
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
本发明最关键的构思在于:通过增加干扰线程来模拟键盘的按键按下时的波形,从而对真正的按键波形加载一个干扰信号,使得真正波形难以捕捉还原,从而对真正的按键按下的波形进行保护,避免密码按键值被侦测破解的风险,防止被窃取。
本发明提出一种通过模拟波形对键盘施加干扰信号的方法,启动后,启动如图1所示的常规线程;至少在输入密码时,启动如图2所示的干扰线程;
所述常规线程包括如下步骤:
S1.执行开启:每间隔T时间执行一次常规线程;
S2.判断状态:判断干扰线程的第一状态是否为运行状态,若否,则转至步骤S3;若是,则转至步骤S6;
S3.初始化:键盘按键的所有行输出电平设置为高、列输入电平设置为高;
S4.存入数据:所述键盘包括N行*M列个按键;将所述键盘从第一行至第 N行设置一行的输出电平为低、其他行输出电平为高,记录电平为低对应按键的列的IO状态,依次将所有记录存入key_data数据;
S5.输出:输出key_data数据;
S6.结束:结束常规线程;
所述干扰线程包括如下步骤:
A1.标记状态:每间隔T时间标记干扰线程的第一状态为运行状态;
A2.随机获取行列:
在N范围内获取一个值作为第r1行;
在M范围内获取一个值作为第c1列;
A3.随机获取:在N范围内获取一个值作为第r2行;
A4.置行低电平:将第r2行按键的所有行输出电平设置为低;
A5.判断同一行:判断第r2行是否与第r1行为同一行,若是,则转至步骤 A6,若否,则转至步骤A7;
A6.置列低电平:将第c1列的输入电平设为低电平;
A7.遍历判断:判断所有行是否都只获取一遍,若是,则转至步骤A8,若否,则转至步骤A3;在A7的遍历判断时,第r2行遍历的顺序随机,可以为第 1行,第2行……第N行的顺序,也可随机打乱顺序,但每行都必须获取一次,且只获取一遍,每行都会输出一次低电平,采集列的电平来获取对应交叉点的按键的状态。所以每行都必须扫描,并且在一次干扰动作中每行只扫描一次。如图5所示的4x4矩阵键盘:常规扫描方式是先第1行,顺序扫描下去,第2、 3、4行,结束,这样会生产比较规律的电平信号波形。
A8.标记:标记干扰线程的第一状态为未运行状态。
调整IO操作的顺序以及间隔时间,使得模拟的波形与实际波形完全吻合,从而模拟出实际按下按键的值,给真正按键按下的波形,施加干扰信号,达到干扰的目的。
如图5所示,是一种较为常见的4*4矩阵键盘,其中每个按键都有一个行值一个列值,每个按键的位置用第r1行,第c1列表示,如图5中“取消”按键,便是第2行,第4列,当第2行,第4列这个按键的行值为低电平,按键按下后,行、列触点被导通,配制为上拉输入的列触点被行的输出低电平拉低,因此,行列都为电平,为此按键被按下。本发明便是模拟其中一个按键按下,当干扰线程运行其中第r2行时,通过将第c2列的对应列值设置为低电平,此时与实际按下第r2行,第c2列的按键效果相同,因此便模拟该按键被按下。
从上述描述可知,本发明的有益效果在于:在常规线程的运行中,增加干扰线程,常规线程检测用户真正按下的键盘中的按键值,干扰线程来模拟键盘的按键按下时的波形,将模拟的波形加载至真正的按键波形上,施加干扰信号,使得真正波形难以捕捉还原。在加扰的过程中常规线程禁止工作,以免在模拟按键的触点上产生异常波形,被非法检测技术过滤掉,从而对真正的按键按下的波形进行保护,避免密码按键值被侦测破解的风险,防止被窃取。
实施例1:
如图4所示,所述步骤A1和步骤A2之间还包括如下步骤:
A11.初始化:在120—250ms范围内获取一个值作为连续干扰时间times;在1000—2000ms范围内获取一个值作为空闲时间times_1;在0-2500ms范围内随机获取一个值作为起始连续干扰时间t2;在0-2500ms范围内随机获取一个值作为起始空闲时间t1;
所述A2随机获取行列具体包括如下步骤:
A21.判断激活:判断干扰线程是否为激活状态,若是则转至步骤A23,若否则转至步骤A22;
A22.超空闲时间判断:获取当前时间t0,计算当前时间t0与起始空闲时间 t1的差值,判断差值是否大于空闲时间times_1,若是,则转至步骤A221;
A221.标记激活状态:标记干扰线程的第二状态为激活状态,获取当前时间,作为起始连续干扰时间t2,然后转至步骤A23;
A23.小于连续干扰时间判断:获取当前时间t0,计算当前时间t0与起始连续干扰时间t2的差值,判断差值是否小于连续干扰时间times,若是,则转至步骤A3,若否,则转至步骤A231;
A231.标记休眠状态:标记干扰线程的第二状态为休眠状态,获取当前时间作为起始空闲时间t1,然后转至A232;
A232.随机演算:在N范围内随机获取一个值作为第r1行;
在M范围内随机获取一个值作为第c1列;然后转至步骤A21。
正常使用按键时,按下时间在200ms左右,通过示波器检测对应按键触点,会出现200ms左右的脉冲波形,因此获取到连续干扰时间的随机范围为120ms —250ms。空闲时间times_1的时间范围是1000~2000ms,该时间段是在模拟用户正常使用时的按键速度,如果该间隔过小,会对正常的常规线程产生影响,使得不能快速的响应键值,甚至可能会丢掉某个键值响应。如果间隔时间过长,会使得干扰效果降低。通过连续干扰时间times、空闲时间times_1、起始连续干扰时间t2、起始空闲时间t1从而准确判断当前状态到底是激活状态还是空闲状态。
实施例2:
如图3所示,所述步骤S1还包括:消抖次数置0;
所述步骤S4和步骤S5之间,还包括如下步骤:
S41.消抖操作:进行一次消抖,消抖时间为T,消抖次数加1;
S42.判断消抖次数:判断消抖次数是否为2,若是,则转步骤S43,若否,则转步骤S422;
S422.赋值:将key_data数据赋给key_bak数据,然后转至步骤S6;
S43.重置消抖次数:消抖次数置0;
S44.判断相同:判断key_data数据和key_bak数据是否相同,若是,则转至步骤S5,若否,则转至步骤S6。
常规线程通过消抖操作来避免干扰信号的影响,对键盘先后采样两次,再比较两次的采样结果,如果相同就表示不是瞬间的干扰信号,会输出一个按键值。两次消抖,判断按键值输出的准确性,避免因干扰信号影响,从而导致误输出。
实施例3:
如图4所示,所述步骤A22还包括:判断差值是否大于空闲时间times_1,若否,则转至步骤A21。
若差值不大于空闲时间times_1,说明干扰线程还在空闲状态中,从而进行休眠。
实施例4:
所述T时间的范围为5ms—20ms。
该消抖时间实际是常规线程和干扰线程定时启动的时间间隔。干扰线程和常规线程都是在互斥运行的,并且干扰线程的优先级要高于常规线程,在干扰线程处于激活状态(正在通过操作IO模拟电平变化),键盘扫描就不会起作用,如果在干扰阶段,按键按下并在干扰未结束时就抬起按键,那这时该按键按下的动作将不会被检测到。缩短消抖时间可以提高按键灵敏度,比如T=5ms,那每5ms就会进入干扰线程一次,每两次真实上报键值(相当于对键盘先后采样两次,再比较两次的采样结果,如果相同就表示不是瞬间的干扰信号,也就是消抖时间为5ms的依据),只要真实按键按下超过10ms就可以被检测到该动作并输出上报给上层应用。如果T=10ms,那需要按下20ms才能被检测到,依次类推T=20ms,就需要按键持续按下40ms才可以被检测到。所以缩短消抖时间会提高键盘灵敏度,结果实际操作,5~20ms区间的消抖时间体验最佳。如果消抖时间太短会造成CPU的占用率过高,也不能消抖完全,造成误测按键。
实施示例:
一种通过模拟波形对键盘施加干扰信号的方法:启动后,启动常规线程;至少在输入密码时,启动干扰线程;
所述常规线程包括如下步骤:
S1.执行开启:每间隔T时间执行一次常规线程,消抖次数置0;
S2.判断状态:判断干扰线程的第一状态是否为运行状态,若否,则转至步骤S3;若是,则转至步骤S6;
S3.初始化:键盘按键的所有行输出电平设置为高、列输入电平设置为高;
S4.存入数据:所述键盘包括N行*M列个按键;将所述键盘从第一行至第 N行设置一行的输出电平为低、其他行输出电平为高,记录电平为低对应按键的列的IO状态,依次将所有记录存入key_data数据,然后转至S41;
S41.消抖操作:进行一次消抖,消抖时间为T,消抖次数加1;
S42.判断消抖次数:判断消抖次数是否为2,若是,则转步骤S43,若否,则转步骤S422;
S422.赋值:将key_data数据赋给key_bak数据,然后转至步骤S6;
S43.重置消抖次数:消抖次数置0;
S44.判断相同:判断key_data数据和key_bak数据是否相同,若是,则转至步骤S5,若否,则转至步骤S6。
S5.输出:输出key_data数据;
S6.结束:结束常规线程;
所述干扰线程包括如下步骤:
A1.标记状态:每间隔T时间标记干扰线程的第一状态为运行状态,然后转至A11;
A11.初始化:在120—250ms范围内获取一个值作为连续干扰时间times;在1000—2000ms范围内获取一个值作为空闲时间times_1;在0-2500ms范围内随机获取一个值作为起始连续干扰时间t2;在0-2500ms范围内随机获取一个值作为起始空闲时间t1,然后转至A21;
A21.判断激活:判断干扰线程是否为激活状态,若是则转至步骤A23,若否则转至步骤A22;
A22.超空闲时间判断:获取当前时间t0,计算当前时间t0与起始空闲时间 t1的差值,判断差值是否大于空闲时间times_1,若是,则转至步骤A221;
A221.标记激活状态:标记干扰线程的第二状态为激活状态,获取当前时间,作为起始连续干扰时间t2,然后转至步骤A23;
A23.小于连续干扰时间判断:获取当前时间t0,计算当前时间t0与起始连续干扰时间t2的差值,判断差值是否小于连续干扰时间times,若是,则转至步骤A3,若否,则转至步骤A231;
A231.标记休眠状态:标记干扰线程的第二状态为休眠状态,获取当前时间作为起始空闲时间t1,然后转至A232;
A232.随机演算:在N范围内随机获取一个值作为第r1行;
在M范围内随机获取一个值作为第c1列;然后转至步骤A21;
A3.随机获取:在N范围内获取一个值作为第r2行;
A4.置行低电平:将第r2行按键的所有行输出电平设置为低;
A5.判断同一行:判断第r2行是否与第r1行为同一行,若是,则转至步骤 A6,若否,则转至步骤A7;
A6.置列低电平:将第c1列的输入电平设为低电平;
A7.遍历判断:判断所有行是否都只获取一遍,若是,则转至步骤A8,若否,则转至步骤A3;
A8.标记:标记干扰线程的第一状态为未运行状态。
本发明还提出一种通过模拟波形对键盘施加干扰信号的系统,包括常规线程模块,干扰线程模块;启动后,启动常规线程模块;至少在输入密码时,启动干扰线程模块;
所述常规线程模块包括:
执行开启单元:每间隔T时间执行一次常规线程,然后转至判断状态单元;
判断状态单元:判断干扰线程的第一状态是否为运行状态,若否则转至初始化单元;若是则转至结束单元;
初始化单元:键盘按键的所有行输出电平设置为高、列输入电平设置为高,然后转至存入数据单元;
存入数据单元:所述键盘包括N行*M列个按键;将所述键盘从第一行至第 N行设置一行的输出电平为低、其他行输出电平为高,记录电平为低对应按键的列的IO状态,依次将所有记录存入key_data数据,然后转至输出单元;
输出单元:输出key_data数据,然后转至结束单元;
结束单元:结束常规线程;
所述干扰线程模块包括:
标记状态单元:每间隔T时间标记干扰线程的第一状态为运行状态;然后转至随机获取行列单元;
随机获取行列单元:
在N范围内获取一个值作为第r1行;
在M范围内获取一个值作为第c1列,然后转至随机获取单元;
随机获取单元:在N范围内获取一个值作为第r2行;
置行低电平单元:将第r2行按键的所有行输出电平设置为低,然后再转至判断同一行单元;
判断同一行单元:判断第r2行是否与第r1行为同一行,若是,则转至置列低电平单元,若否,则转至遍历判断单元;
置列低电平单元:将第c1列的列输入电平设为低电平,然后转至遍历判断单元;
遍历判断单元:判断所有行是否都只获取一遍,若是,则转至标记单元,若否,则转至随机获取单元;在遍历判断单元的遍历判断时,第r2行遍历的顺序随机,可以为第1行,第2行……第N行的顺序,也可随机打乱顺序,但每行都必须获取一次,且只获取一遍,每行都会输出一次低电平,采集列的电平来获取对应交叉点的按键的状态。所以每行都必须扫描,并且在一次干扰动作中每行只扫描一次。如图5所示的4x4矩阵键盘:常规扫描方式是先第1行,顺序扫描下去,第2、3、4行,结束,这样会生产比较规律的电平信号波形。
标记单元:标记干扰线程的第一状态为未运行状态。
调整IO操作的顺序以及间隔时间,使得模拟的波形与实际波形完全吻合,从而模拟出实际按下按键的值,给真正按键按下的波形,施加干扰信号,达到干扰的目的。
如图5所示,是一种较为常见的4*4矩阵键盘,其中每个按键都有一个行值一个列值,每个按键的位置用第r1行,第c1列表示,如图5中“取消”按键,便是第2行,第4列,当第2行,第4列这个按键的行值为低电平,按键按下后,行、列触点被导通,配制为上拉输入的列触点被行的输出低电平拉低,因此,行列都为电平,为此按键被按下。本发明便是模拟其中一个按键按下,当干扰线程运行其中第r2行时,通过将第c2列的对应列值设置为低电平,此时与实际按下第r2行,第c2列的按键效果相同,因此便模拟该按键被按下。
在常规线程的运行中,增加干扰线程模块,常规线程模块检测用户真正按下的键盘中的按键值,干扰线程模块来模拟键盘的按键按下时的波形,将模拟的波形加载至真正的按键波形上,施加干扰信号,使得真正波形难以捕捉还原。在加扰的过程中常规线程模块禁止工作,以免在模拟按键的触点上产生异常波形,被非法检测技术过滤掉,从而对真正的按键按下的波形进行保护,避免密码按键值被侦测破解的风险,防止被窃取。
实施例5:
所述标记状态单元和随机获取行列单元之间还包括:
初始化单元:在120—250ms范围内获取一个值作为连续干扰时间times;在1000—2000ms范围内获取一个值作为空闲时间times_1;在0-2500ms范围内随机获取一个值作为起始连续干扰时间t2;在0-2500ms范围内随机获取一个值作为起始空闲时间t1;
所述随机获取行列单元具体包括:
判断激活单元:判断干扰线程是否为激活状态,若是,则转至小于连续干扰时间判断,若否,则转至超空闲时间判断单元;
超空闲时间判断单元:获取当前时间t0,计算当前时间t0与起始空闲时间 t1的差值,判断差值是否大于空闲时间times_1,若是,则转至标记激活状态单元;
标记激活状态单元:标记干扰线程的第二状态为激活状态,获取当前时间作为起始连续干扰时间t2;然后转至小于连续干扰时间判断单元;
小于连续干扰时间判断单元:获取当前时间t0,计算当前时间t0与起始连续干扰时间t2的差值,判断差值是否小于连续干扰时间times,若是,则转至随机获取单元,若否,则转至标记休眠状态单元;
标记休眠状态单元:标记干扰线程的第二状态为休眠状态,获取当前时间,作为起始空闲时间t1,然后转至随机演算单元;
随机演算单元:在N范围内随机获取一个值作为第r1行;在M范围内随机获取一个值作为第c1列;然后转至判断激活单元。
正常使用按键时,按下时间在200ms左右,通过示波器检测对应按键触点,会出现200ms左右的脉冲波形,因此获取到连续干扰时间的随机范围为120ms —250ms。空闲时间times_1的时间范围是1000~2000ms,该时间段是在模拟用户正常使用时的按键速度,如果该间隔过小,会对正常的常规线程产生影响,使得不能快速的响应键值,甚至可能会丢掉某个键值响应。如果间隔时间过长,会使得干扰效果降低。通过连续干扰时间times、空闲时间times_1、起始连续干扰时间t2、起始空闲时间t1从而准确判断当前状态到底是激活状态还是空闲状态。
实施例6:
所述常规线程模块中:
执行开启单元还包括:消抖次数置0单元;
所述存入数据单元和输出单元之间,还包括如下单元:
消抖操作单元:进行一次消抖,消抖时间为T,消抖次数加1,然后转至判断消抖次数单元;
判断消抖次数单元:判断消抖次数是否为2,若是,则转重置消抖次数单元,若否,则转赋值单元;
赋值单元:将key_data数据赋给key_bak数据,然后转至结束单元;
重置消抖次数单元:消抖次数置0,然后转至判断相同单元;
判断相同单元:判断key_data数据和key_bak数据是否相同,若是,则转至输出单元,若否,则转至结束单元。
常规线程模块通过消抖操作单元来避免干扰信号的影响,对键盘先后采样两次,没运行一次常规线程,进行一次消抖,会得到一个采样结果,再比较两次的采样结果,如果相同就表示不是瞬间的干扰信号,会输出一个按键值。两次消抖,判断按键值输出的准确性,避免因干扰信号影响,从而导致误输出。
实施例7:
所述超空闲时间判断单元还包括:判断差值是否大于空闲时间times_1,若否,则转至判断激活单元。
若差值不大于空闲时间times_1,说明干扰线程还在空闲状态中,从而进行休眠。
实施例8:
所述T时间的范围为5ms—20ms。
该消抖时间实际是常规线程模块和干扰线程模块定时启动的时间间隔。干扰线程模块和常规线程模块都是在互斥运行的,并且干扰线程模块的优先级要高于常规线程模块,在干扰线程模块处于激活状态(正在通过操作IO模拟电平变化),键盘扫描就不会起作用,如果在干扰阶段,按键按下并在干扰未结束时就抬起按键,那这时该按键按下的动作将不会被检测到。缩短消抖时间可以提高按键灵敏度,比如T=5ms,那每5ms就会进入干扰线程一次,每两次真实上报键值(相当于对键盘先后采样两次,再比较两次的采样结果,如果相同就表示不是瞬间的干扰信号,也就是消抖时间为5ms的依据),只要真实按键按下超过10ms就可以被检测到该动作并输出上报给上层应用。如果T=10ms,那需要按下20ms才能被检测到,依次类推T=20ms,就需要按键持续按下40ms才可以被检测到。所以缩短消抖时间会提高键盘灵敏度,结果实际操作,5~20ms区间的消抖时间体验最佳。如果消抖时间太短会造成CPU的占用率过高,也不能消抖完全,造成误测按键。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种通过模拟波形对键盘施加干扰信号的方法,其特征在于:启动后,启动常规线程;至少在输入密码时,启动干扰线程;
所述常规线程包括如下步骤:
S1.执行开启:每间隔T时间执行一次常规线程;
S2.判断状态:判断干扰线程的第一状态是否为运行状态,若否,则转至步骤S3;若是,则转至步骤S6;
S3.初始化:键盘按键的所有行输出电平设置为高、列输入电平设置为高;
S4.存入数据:所述键盘包括N行*M列个按键;将所述键盘从第一行至第N行设置一行的输出电平为低、其他行输出电平为高,记录电平为低对应按键的列的IO状态,依次将所有记录存入key_data数据;
S5.输出:输出key_data数据;
S6.结束:结束常规线程;
所述干扰线程包括如下步骤:
A1.标记状态:每间隔T时间标记干扰线程的第一状态为运行状态;
A2.随机获取行列:
在N范围内获取一个值作为第r1行;
在M范围内获取一个值作为第c1列;
A3.随机获取:在N范围内获取一个值作为第r2行;
A4.置行低电平:将第r2行按键的所有行输出电平设置为低;
A5.判断同一行:判断第r2行是否与第r1行为同一行,若是,则转至步骤A6,若否,则转至步骤A7;
A6.置列低电平:将第c1列的输入电平设为低电平;
A7.遍历判断:判断所有行是否都只获取一遍,若是,则转至步骤A8,若否,则转至步骤A3;
A8.标记:标记干扰线程的第一状态为未运行状态。
2.如权利要求1所述的通过模拟波形对键盘施加干扰信号的方法,其特征在于:所述步骤A1和步骤A2之间还包括如下步骤:
A11.初始化:在120—250ms范围内获取一个值作为连续干扰时间t imes;在1000—2000ms范围内获取一个值作为空闲时间t imes_1;在0-2500ms范围内随机获取一个值作为起始连续干扰时间t2;在0-2500ms范围内随机获取一个值作为起始空闲时间t1;
所述A2随机获取行列具体包括如下步骤:
A21.判断激活:判断干扰线程是否为激活状态,若是则转至步骤A23,若否则转至步骤A22;
A22.超空闲时间判断:获取当前时间t0,计算当前时间t0与起始空闲时间t1的差值,判断差值是否大于空闲时间t imes_1,若是,则转至步骤A221;
A221.标记激活状态:标记干扰线程的第二状态为激活状态,获取当前时间,作为起始连续干扰时间t2,然后转至步骤A23;
A23.小于连续干扰时间判断:获取当前时间t0,计算当前时间t0与起始连续干扰时间t2的差值,判断差值是否小于连续干扰时间t imes,若是,则转至步骤A3,若否,则转至步骤A231;
A231.标记休眠状态:标记干扰线程的第二状态为休眠状态,获取当前时间作为起始空闲时间t1,然后转至A232;
A232.随机演算:在N范围内随机获取一个值作为第r1行;
在M范围内随机获取一个值作为第c1列;然后转至步骤A21。
3.如权利要求2所述的通过模拟波形对键盘施加干扰信号的方法,其特征在于:
所述步骤S1还包括:消抖次数置0;
所述步骤S4和步骤S5之间,还包括如下步骤:
S41.消抖操作:进行一次消抖,消抖时间为T,消抖次数加1;
S42.判断消抖次数:判断消抖次数是否为2,若是,则转步骤S43,若否,则转步骤S422;
S422.赋值:将key_data数据赋给key_bak数据,然后转至步骤S6;
S43.重置消抖次数:消抖次数置0;
S44.判断相同:判断key_data数据和key_bak数据是否相同,若是,则转至步骤S5,若否,则转至步骤S6。
4.如权利要求3所述的通过模拟波形对键盘施加干扰信号的方法,其特征在于:所述步骤A22还包括:判断差值是否大于空闲时间t imes_1,若否,则转至步骤A21。
5.如权利要求4所述的通过模拟波形对键盘施加干扰信号的方法,其特征在于:所述T时间的范围为5ms—20ms。
6.一种通过模拟波形对键盘施加干扰信号的系统,其特征在于:包括常规线程模块,干扰线程模块;启动后,启动常规线程模块;至少在输入密码时,启动干扰线程模块;
所述常规线程模块包括:
执行开启单元:每间隔T时间执行一次常规线程,然后转至判断状态单元;
判断状态单元:判断干扰线程的第一状态是否为运行状态,若否则转至初始化单元;若是则转至结束单元;
初始化单元:键盘按键的所有行输出电平设置为高、列输入电平设置为高,然后转至存入数据单元;
存入数据单元:所述键盘包括N行*M列个按键;将所述键盘从第一行至第N行设置一行的输出电平为低、其他行输出电平为高,记录电平为低对应按键的列的IO状态,依次将所有记录存入key_data数据,然后转至输出单元;
输出单元:输出key_data数据,然后转至结束单元;
结束单元:结束常规线程;
所述干扰线程模块包括:
标记状态单元:每间隔T时间标记干扰线程的第一状态为运行状态;然后转至随机获取行列单元;
随机获取行列单元:
在N范围内获取一个值作为第r1行;
在M范围内获取一个值作为第c1列,然后转至随机获取单元;
随机获取单元:在N范围内获取一个值作为第r2行;
置行低电平单元:将第r2行按键的所有行输出电平设置为低,然后再转至判断同一行单元;
判断同一行单元:判断第r2行是否与第r1行为同一行,若是,则转至置列低电平单元,若否,则转至遍历判断单元;
置列低电平单元:将第c1列的列输入电平设为低电平,然后转至遍历判断单元;
遍历判断单元:判断所有行是否都只获取一遍,若是,则转至标记单元,若否,则转至随机获取单元;
标记单元:标记干扰线程的第一状态为未运行状态。
7.如权利要求6所述的通过模拟波形对键盘施加干扰信号的系统,其特征在于:所述标记状态单元和随机获取行列单元之间还包括:
初始化单元:在120—250ms范围内获取一个值作为连续干扰时间t imes;在1000—2000ms范围内获取一个值作为空闲时间t imes_1;在0-2500ms范围内随机获取一个值作为起始连续干扰时间t2;在0-2500ms范围内随机获取一个值作为起始空闲时间t1;
所述随机获取行列单元具体包括:
判断激活单元:判断干扰线程是否为激活状态,若是,则转至小于连续干扰时间判断单元,若否,则转至超空闲时间判断单元;
超空闲时间判断单元:获取当前时间t0,计算当前时间t0与起始空闲时间t1的差值,判断差值是否大于空闲时间t imes_1,若是,则转至标记激活状态单元;
标记激活状态单元:标记干扰线程的第二状态为激活状态,获取当前时间作为起始连续干扰时间t2;然后转至小于连续干扰时间判断单元;
小于连续干扰时间判断单元:获取当前时间t0,计算当前时间t0与起始连续干扰时间t2的差值,判断差值是否小于连续干扰时间t imes,若是,则转至随机获取单元,若否,则转至标记休眠状态单元;
标记休眠状态单元:标记干扰线程的第二状态为休眠状态,获取当前时间,作为起始空闲时间t1,然后转至随机演算单元;
随机演算单元:在N范围内随机获取一个值作为第r1行;在M范围内随机获取一个值作为第c1列;然后转至判断激活单元。
8.如权利要求7所述的通过模拟波形对键盘施加干扰信号的系统,其特征在于:所述常规线程模块中:
执行开启单元还包括:消抖次数置0单元;
所述存入数据单元和输出单元之间,还包括如下单元:
消抖操作单元:进行一次消抖,消抖时间为T,消抖次数加1,然后转至判断消抖次数单元;
判断消抖次数单元:判断消抖次数是否为2,若是,则转重置消抖次数单元,若否,则转赋值单元;
赋值单元:将key_data数据赋给key_bak数据,然后转至结束单元;
重置消抖次数单元:消抖次数置0,然后转至判断相同单元;
判断相同单元:判断key_data数据和key_bak数据是否相同,若是,则转至输出单元,若否,则转至结束单元。
9.如权利要求8所述的通过模拟波形对键盘施加干扰信号的系统,其特征在于:所述超空闲时间判断单元还包括:判断差值是否大于空闲时间times_1,若否,则转至判断激活单元。
10.如权利要求9所述的通过模拟波形对键盘施加干扰信号的系统,其特征在于:所述T时间的范围为5ms—20ms。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811488058.XA CN109598872B (zh) | 2018-12-06 | 2018-12-06 | 通过模拟波形对键盘施加干扰信号的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811488058.XA CN109598872B (zh) | 2018-12-06 | 2018-12-06 | 通过模拟波形对键盘施加干扰信号的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109598872A CN109598872A (zh) | 2019-04-09 |
CN109598872B true CN109598872B (zh) | 2021-02-05 |
Family
ID=65962233
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811488058.XA Active CN109598872B (zh) | 2018-12-06 | 2018-12-06 | 通过模拟波形对键盘施加干扰信号的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109598872B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111145394B (zh) * | 2019-12-20 | 2021-08-03 | 上海爱信诺航芯电子科技有限公司 | 电容触控按键的扫描控制方法与扫描控制装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101013896A (zh) * | 2006-11-01 | 2007-08-08 | 深圳市菉华半导体有限公司 | 键盘扫描电路及其扫描方法 |
CN105447413A (zh) * | 2015-11-13 | 2016-03-30 | 深圳市新国都支付技术有限公司 | 一种基于动态信号的安全保护装置、方法和pos机 |
EP3532980A1 (en) * | 2016-10-31 | 2019-09-04 | Jetico Inc. Oy | Method in computer assisted operation |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2372608B (en) * | 2001-02-24 | 2003-01-15 | 3Com Corp | Keypad scanner with serial input and output |
US8925073B2 (en) * | 2007-05-18 | 2014-12-30 | International Business Machines Corporation | Method and system for preventing password theft through unauthorized keylogging |
CN102393894B (zh) * | 2011-09-30 | 2015-07-22 | 飞天诚信科技股份有限公司 | 一种提高用户信息输入安全性的方法和装置 |
CN106295422B (zh) * | 2016-08-09 | 2019-04-19 | 深圳市证通电子股份有限公司 | 键盘扫描方法及装置 |
CN106656204A (zh) * | 2016-11-28 | 2017-05-10 | 杭州九阳小家电有限公司 | 一种实现触摸按键抗干扰的方法和装置 |
CN106998207A (zh) * | 2017-01-20 | 2017-08-01 | 艾体威尔电子技术(北京)有限公司 | 一种应用于pos系统的扫描按键方法 |
-
2018
- 2018-12-06 CN CN201811488058.XA patent/CN109598872B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101013896A (zh) * | 2006-11-01 | 2007-08-08 | 深圳市菉华半导体有限公司 | 键盘扫描电路及其扫描方法 |
CN105447413A (zh) * | 2015-11-13 | 2016-03-30 | 深圳市新国都支付技术有限公司 | 一种基于动态信号的安全保护装置、方法和pos机 |
EP3532980A1 (en) * | 2016-10-31 | 2019-09-04 | Jetico Inc. Oy | Method in computer assisted operation |
Also Published As
Publication number | Publication date |
---|---|
CN109598872A (zh) | 2019-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3100152B1 (en) | User-authentication gestures | |
US9703941B2 (en) | Electronic device with touch screen for fingerprint recognition | |
JP5788435B2 (ja) | グラフィカルパスコードセキュリティのための方法およびシステム | |
EP2541452A1 (en) | Authentication method of user of electronic device | |
US20120306758A1 (en) | System for detecting a user on a sensor-based surface | |
US20070132717A1 (en) | Input device and method of locking a computer system | |
US20140189604A1 (en) | Method and system for unlocking a touchscreen of an electronic device | |
US20130265242A1 (en) | Touch sensor common mode noise recovery | |
CN104427081B (zh) | 一种移动终端的解锁方法及装置 | |
WO2008070395A2 (en) | Method for secure data entry in an application | |
CN110781469B (zh) | 一种身份认证方法及装置 | |
CN105068733B (zh) | 一种终端解锁的方法及装置 | |
US20160162182A1 (en) | Method and Terminal for Varying Keys of a Touch Keyboard | |
TW201740248A (zh) | 使用者介面控制方法及電子裝置 | |
CN109598872B (zh) | 通过模拟波形对键盘施加干扰信号的方法和系统 | |
TWI703466B (zh) | 指紋識別方法、存儲媒體、指紋識別系統及智能裝置 | |
CN108052269A (zh) | 屏幕解锁优化方法、终端设备及计算机可读介质 | |
WO2017185670A1 (zh) | 控制指纹传感器的方法、装置及电子设备 | |
TW201337719A (zh) | 觸摸屏操作系統及方法 | |
CN107516024B (zh) | 解锁电子设备的方法、装置、电子设备 | |
CN111327746B (zh) | 一种用于移动终端的压力异常的确定方法及设备 | |
Rahman et al. | How discernible is user impromptu behavior when unlocking a touch screen? | |
CN106293304B (zh) | 界面操作方法及装置 | |
US12118072B2 (en) | Interaction-based authentication and user interface adjustment | |
CN105320906A (zh) | 移动终端信息安全保护的方法和装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |