N netrobo Unregistered / Unconfirmed GUEST, unregistred user! 2006-09-27 #1 软件使用的是键盘口的磁卡读卡器,不用编程,光标在目标文本框时直接刷卡,就可读出数据,方便简单,但这有一个问题就是如果操作员知道卡号的话,就可直接输入卡号,根本无需刷卡,但程序的要求是必须刷卡,确认身份。也想过很多种解决办法,但都不理想,不知道大家有没有什么好办法(不更换硬件的前提下)。
软件使用的是键盘口的磁卡读卡器,不用编程,光标在目标文本框时直接刷卡,就可读出数据,方便简单,但这有一个问题就是如果操作员知道卡号的话,就可直接输入卡号,根本无需刷卡,但程序的要求是必须刷卡,确认身份。也想过很多种解决办法,但都不理想,不知道大家有没有什么好办法(不更换硬件的前提下)。
Z zywcd Unregistered / Unconfirmed GUEST, unregistred user! 2006-09-27 #2 提供时间限制。如果用户使用手工输入,至少会1秒钟以上,但是刷卡会很快。 你从第一个字符输入开始计时,如果超过2秒钟才回车确认,认为是手工输入,当次输入无效。
D dirk Unregistered / Unconfirmed GUEST, unregistred user! 2006-09-27 #4 这个不可靠吧,我可以先把卡号写在记事本中,然后复制->粘贴->回车,而且系统忙的时候刷卡反应也会变慢,还可以设置键盘速度。 在卡信息中加入加密信息,读出来后程序校验,另外还需要判断一下alt键,大致如此。
这个不可靠吧,我可以先把卡号写在记事本中,然后复制->粘贴->回车,而且系统忙的时候刷卡反应也会变慢,还可以设置键盘速度。 在卡信息中加入加密信息,读出来后程序校验,另外还需要判断一下alt键,大致如此。
Y yanyyx Unregistered / Unconfirmed GUEST, unregistred user! 2006-09-27 #7 你这个读卡软件是在什么地方用的~? POS机的话,很简单:POS用专门的收银键键盘,屏蔽一些键,比如“;”、“:”、“?”,因为磁卡的话,你写数字1245,在磁卡上的信息是: ;1234? (没记错的话) 如果是后台软件,使用普通键盘,那么也很简单!就是对磁卡上的数据进行加密: 比如: 1234 ====》》 845121002121 (这个就是你的加密码出来的唯一值),最后进行解密,Edit用*号显示(毒了吧),就是知道这个密匙的话,也只是这一个号。。
你这个读卡软件是在什么地方用的~? POS机的话,很简单:POS用专门的收银键键盘,屏蔽一些键,比如“;”、“:”、“?”,因为磁卡的话,你写数字1245,在磁卡上的信息是: ;1234? (没记错的话) 如果是后台软件,使用普通键盘,那么也很简单!就是对磁卡上的数据进行加密: 比如: 1234 ====》》 845121002121 (这个就是你的加密码出来的唯一值),最后进行解密,Edit用*号显示(毒了吧),就是知道这个密匙的话,也只是这一个号。。
B bmsr Unregistered / Unconfirmed GUEST, unregistred user! 2006-09-27 #8 磁卡信息本来就没法保密,随便找台可以写磁卡的磁卡键盘,一刷一写,复制一张要不到5秒. 磁卡这样应用还不如再定制卡上打印出条码和相关信息.毕竟定制的卡仿冒成本还大些. 磁卡必须和系统的密码认定结合才有用.否则只能作为加快录入的手段,安全性是一点都没有的.
磁卡信息本来就没法保密,随便找台可以写磁卡的磁卡键盘,一刷一写,复制一张要不到5秒. 磁卡这样应用还不如再定制卡上打印出条码和相关信息.毕竟定制的卡仿冒成本还大些. 磁卡必须和系统的密码认定结合才有用.否则只能作为加快录入的手段,安全性是一点都没有的.
N netrobo Unregistered / Unconfirmed GUEST, unregistred user! 2006-09-27 #9 to yanyyx: 先在记事本里刷卡,然后复制刷出来的内容,粘帖到程序的目标文本框,就绕过了。 to dirk: 判断ALK键作什么?
J JamesDF Unregistered / Unconfirmed GUEST, unregistred user! 2006-09-27 #10 文本框.readonly:=true不可以吗,这个方法最简单了
D Delphistarstar Unregistered / Unconfirmed GUEST, unregistred user! 2006-09-27 #11 文本框.readonly:=true不可以吗,这个方法最简单了
Y yanyyx Unregistered / Unconfirmed GUEST, unregistred user! 2006-09-27 #12 先在记事本里刷卡,然后复制刷出来的内容,粘帖到程序的目标文本框,就绕过了。 ====================== 能不能这样设计~?这个Edit得到焦点的时候,屏蔽所有的键,只保留“ESC”键,还有屏蔽鼠标的右键菜单。。(写事件触发条件)看你还有什么办法破解~?
先在记事本里刷卡,然后复制刷出来的内容,粘帖到程序的目标文本框,就绕过了。 ====================== 能不能这样设计~?这个Edit得到焦点的时候,屏蔽所有的键,只保留“ESC”键,还有屏蔽鼠标的右键菜单。。(写事件触发条件)看你还有什么办法破解~?
B bmsr Unregistered / Unconfirmed GUEST, unregistred user! 2006-09-27 #13 看来很多网友没理解刷卡的机制,实际上它完全等同于键盘输入,大部分刷卡设备和键盘在一起的,蒙蔽按键等于蒙蔽刷卡.
U ufo! Unregistered / Unconfirmed GUEST, unregistred user! 2006-09-27 #15 不改变硬件的前提下,要判断是刷卡还是键盘直接敲入,只能判断输入时间. 我以前做键盘接口条码枪输入的时候就是这样做的.条码枪输入数字每个间隔大约10毫秒.键盘输入,一般达不到这么快的. 而复制粘贴,又可能速度很快很快了,只要时间范围超过刷卡的合理值,就可以认为是非法输入. 另外,要屏蔽复制粘贴,也可以在edit获得焦点时屏蔽右键菜单,屏蔽ctrl键等.
不改变硬件的前提下,要判断是刷卡还是键盘直接敲入,只能判断输入时间. 我以前做键盘接口条码枪输入的时候就是这样做的.条码枪输入数字每个间隔大约10毫秒.键盘输入,一般达不到这么快的. 而复制粘贴,又可能速度很快很快了,只要时间范围超过刷卡的合理值,就可以认为是非法输入. 另外,要屏蔽复制粘贴,也可以在edit获得焦点时屏蔽右键菜单,屏蔽ctrl键等.
Y yanyyx Unregistered / Unconfirmed GUEST, unregistred user! 2006-09-27 #16 to:bmsr 有读卡器分离的情况啥,也有一体的。。 照下面的方法就行了啥。 晕~!! 刚才忘考虑个情况了。 可以这样设计程序,在需要读卡的时候,点击刷卡按钮,生成一个模式窗体,窗体上没有别的可输入的控件,调用读卡器的DLL(或自己写),读卡,得到卡号,成功后取出数据值。 这样可以完全屏蔽手工输入的作弊行为。 呵呵~~现在使用的软件就是这么设计的。。 看谁还有更高的招~??
to:bmsr 有读卡器分离的情况啥,也有一体的。。 照下面的方法就行了啥。 晕~!! 刚才忘考虑个情况了。 可以这样设计程序,在需要读卡的时候,点击刷卡按钮,生成一个模式窗体,窗体上没有别的可输入的控件,调用读卡器的DLL(或自己写),读卡,得到卡号,成功后取出数据值。 这样可以完全屏蔽手工输入的作弊行为。 呵呵~~现在使用的软件就是这么设计的。。 看谁还有更高的招~??
U ufo! Unregistered / Unconfirmed GUEST, unregistred user! 2006-09-27 #17 to:yanyyx 键盘接口的磁卡,只是提高了输入的速度和准确度,和条码枪一个样的. 此类东东没有驱动的,使用的是键盘驱动,在程序看来就是一个键盘.
N netrobo Unregistered / Unconfirmed GUEST, unregistred user! 2006-09-28 #18 楼上几位说的ReadOnly是不可以的,磁卡读卡器就等同于键盘输入,如果ReadOnly,也就等于刷不了卡了。 TO Yanyyx: 客户用的是读卡器,是键盘口的,没有驱动,没有DLL,(其实如果改用写卡器,就可以解决现在的问题,因为写卡器有接口函数,可以读卡内数据)。 综合大家的观点,我觉得zywcd,ufo!的方法是一个不错的解决方案,那就是时间判断,整理如下: 1、在制卡的时候,卡内数据位数多一些(如果位数太少,操作员也有可能在很短时间内输入,最好再带上卡本身的控制字符); 2、屏弊刷卡文本框的粘贴功能(包括右键和快捷键); 3、在程序中判断时间,如果文本进入时间大于规定时间,比如说2秒,则认为是无效刷卡。 还有一种办法,就是屏弊刷卡文本框的粘贴功能,弄坏键盘的?键和:键,调整读卡器的开关,让其读出控制字符(读卡器的控制字符是?和:),这样不用判断时间也能达到目的,但会破坏硬件,呵呵~~,当然了,操作员如果换一个好键盘,此方法也就失灵了。
楼上几位说的ReadOnly是不可以的,磁卡读卡器就等同于键盘输入,如果ReadOnly,也就等于刷不了卡了。 TO Yanyyx: 客户用的是读卡器,是键盘口的,没有驱动,没有DLL,(其实如果改用写卡器,就可以解决现在的问题,因为写卡器有接口函数,可以读卡内数据)。 综合大家的观点,我觉得zywcd,ufo!的方法是一个不错的解决方案,那就是时间判断,整理如下: 1、在制卡的时候,卡内数据位数多一些(如果位数太少,操作员也有可能在很短时间内输入,最好再带上卡本身的控制字符); 2、屏弊刷卡文本框的粘贴功能(包括右键和快捷键); 3、在程序中判断时间,如果文本进入时间大于规定时间,比如说2秒,则认为是无效刷卡。 还有一种办法,就是屏弊刷卡文本框的粘贴功能,弄坏键盘的?键和:键,调整读卡器的开关,让其读出控制字符(读卡器的控制字符是?和:),这样不用判断时间也能达到目的,但会破坏硬件,呵呵~~,当然了,操作员如果换一个好键盘,此方法也就失灵了。
S stuwe Unregistered / Unconfirmed GUEST, unregistred user! 2006-09-28 #19 这问题之前做的时候有考虑过,不过允许操作员输入卡号的 也就没做深究
L lanterwork Unregistered / Unconfirmed GUEST, unregistred user! 2006-09-28 #20 一般这类的设备在数据的尾巴上会有一个回车,所以屏蔽回车应该可用! 我用过条形码扫描器就是这样做的!