磁卡读卡器涉及到的一个问题,大家是怎么解决的(100分)

  • 主题发起人 主题发起人 netrobo
  • 开始时间 开始时间
N

netrobo

Unregistered / Unconfirmed
GUEST, unregistred user!
软件使用的是键盘口的磁卡读卡器,不用编程,光标在目标文本框时直接刷卡,就可读出数据,方便简单,但这有一个问题就是如果操作员知道卡号的话,就可直接输入卡号,根本无需刷卡,但程序的要求是必须刷卡,确认身份。也想过很多种解决办法,但都不理想,不知道大家有没有什么好办法(不更换硬件的前提下)。
 
提供时间限制。如果用户使用手工输入,至少会1秒钟以上,但是刷卡会很快。
你从第一个字符输入开始计时,如果超过2秒钟才回车确认,认为是手工输入,当次输入无效。
 
楼上的办法不错
 
这个不可靠吧,我可以先把卡号写在记事本中,然后复制->粘贴->回车,而且系统忙的时候刷卡反应也会变慢,还可以设置键盘速度。

在卡信息中加入加密信息,读出来后程序校验,另外还需要判断一下alt键,大致如此。
 
屏蔽keypress事件行不?
 
文本框.readonly:=true不可以吗
 
你这个读卡软件是在什么地方用的~?

POS机的话,很简单:POS用专门的收银键键盘,屏蔽一些键,比如“;”、“:”、“?”,因为磁卡的话,你写数字1245,在磁卡上的信息是: ;1234? (没记错的话)

如果是后台软件,使用普通键盘,那么也很简单!就是对磁卡上的数据进行加密:

比如: 1234 ====》》 845121002121 (这个就是你的加密码出来的唯一值),最后进行解密,Edit用*号显示(毒了吧),就是知道这个密匙的话,也只是这一个号。。
 
磁卡信息本来就没法保密,随便找台可以写磁卡的磁卡键盘,一刷一写,复制一张要不到5秒.
磁卡这样应用还不如再定制卡上打印出条码和相关信息.毕竟定制的卡仿冒成本还大些.
磁卡必须和系统的密码认定结合才有用.否则只能作为加快录入的手段,安全性是一点都没有的.
 
to yanyyx:
先在记事本里刷卡,然后复制刷出来的内容,粘帖到程序的目标文本框,就绕过了。

to dirk:
判断ALK键作什么?
 
文本框.readonly:=true不可以吗,这个方法最简单了
 
文本框.readonly:=true不可以吗,这个方法最简单了
 
先在记事本里刷卡,然后复制刷出来的内容,粘帖到程序的目标文本框,就绕过了。

======================

能不能这样设计~?这个Edit得到焦点的时候,屏蔽所有的键,只保留“ESC”键,还有屏蔽鼠标的右键菜单。。(写事件触发条件)看你还有什么办法破解~?
 
看来很多网友没理解刷卡的机制,实际上它完全等同于键盘输入,大部分刷卡设备和键盘在一起的,蒙蔽按键等于蒙蔽刷卡.
 
输入框只读就可以了的[:D]
 
不改变硬件的前提下,要判断是刷卡还是键盘直接敲入,只能判断输入时间.
我以前做键盘接口条码枪输入的时候就是这样做的.条码枪输入数字每个间隔大约10毫秒.键盘输入,一般达不到这么快的.
而复制粘贴,又可能速度很快很快了,只要时间范围超过刷卡的合理值,就可以认为是非法输入.
另外,要屏蔽复制粘贴,也可以在edit获得焦点时屏蔽右键菜单,屏蔽ctrl键等.
 
to:bmsr
有读卡器分离的情况啥,也有一体的。。
照下面的方法就行了啥。

晕~!!

刚才忘考虑个情况了。

可以这样设计程序,在需要读卡的时候,点击刷卡按钮,生成一个模式窗体,窗体上没有别的可输入的控件,调用读卡器的DLL(或自己写),读卡,得到卡号,成功后取出数据值。
这样可以完全屏蔽手工输入的作弊行为。

呵呵~~现在使用的软件就是这么设计的。。
看谁还有更高的招~??
 
to:yanyyx
键盘接口的磁卡,只是提高了输入的速度和准确度,和条码枪一个样的.
此类东东没有驱动的,使用的是键盘驱动,在程序看来就是一个键盘.
 
楼上几位说的ReadOnly是不可以的,磁卡读卡器就等同于键盘输入,如果ReadOnly,也就等于刷不了卡了。

TO Yanyyx:
客户用的是读卡器,是键盘口的,没有驱动,没有DLL,(其实如果改用写卡器,就可以解决现在的问题,因为写卡器有接口函数,可以读卡内数据)。

综合大家的观点,我觉得zywcd,ufo!的方法是一个不错的解决方案,那就是时间判断,整理如下:
1、在制卡的时候,卡内数据位数多一些(如果位数太少,操作员也有可能在很短时间内输入,最好再带上卡本身的控制字符);
2、屏弊刷卡文本框的粘贴功能(包括右键和快捷键);
3、在程序中判断时间,如果文本进入时间大于规定时间,比如说2秒,则认为是无效刷卡。

还有一种办法,就是屏弊刷卡文本框的粘贴功能,弄坏键盘的?键和:键,调整读卡器的开关,让其读出控制字符(读卡器的控制字符是?和:),这样不用判断时间也能达到目的,但会破坏硬件,呵呵~~,当然了,操作员如果换一个好键盘,此方法也就失灵了。
 
这问题之前做的时候有考虑过,不过允许操作员输入卡号的
也就没做深究
 
一般这类的设备在数据的尾巴上会有一个回车,所以屏蔽回车应该可用!
我用过条形码扫描器就是这样做的!
 
后退
顶部