每天一个坑,专治想当然
昨天完成了一个破HR软件到海康ISC平台的同步程序,没啥技术含量,就从客户老HR系统的数据库中抓信息,然后加盐加油一顿爆炒后,批量倒到海康的API中,几十个字段,包括数据库image字段转base64也都非常顺利,为项目节省了许多时间,于是领导为了不让我闲着,操碎了心,让我把指纹信息从中控的ZK-time中同步过去,并把捷顺的IC卡信息也同步到海康的ISC中,由于都没有人协助也没有管理员帐号,我像瞎子摸象样终于摸进了捷顺的数据库,别说我还真有狗屎运,在一堆表中用了几个小时就找到了指纹信息表,完成导出后,清洗好数据就手动导入了,刷卡测试,全都不通过。再一比对:刷卡记录显示,卡号:1937575669。 而我数据中卡号为75812173,哦嚯白忙活了。
开始百度找答案:卡片出厂的时候,本身的序列号是以二进制形式存贮的,是4个字节,例如2A83155E.
不管是什么读卡器读卡片的时候,读出来的都是一样的,只不过它们在转成10进制输出之前经过不同的处理就会输出不同的卡号了,例如把2A83155E 直接转成713233758,也可把它们取反5E15832A再输出1578468138,也可以取最3字节83155E得到8590986,也可以取31转成10进制得到16,再并上155E转成10进制5470,得到165470,总之他们想怎么组合都可以.
凉凉!尝试了转换16进制,进行补码,反码运算。结果都与预期相差较大,所以标识大坑:不同的设备厂商读卡器是不一样的,不要想当然了。重新收集卡号吧!
然后开始想办法导入指纹信息,中控不允许导入导出,下坑挖数据前,百度了一个指纹信息序列化,发现了《中国人民共和国公共行为标准 - 指纹编码规范》明确规定#@&!(#*是违法行为。 王德发,这难道就是传说中的陨石天坑!
报告领导后,感觉学到不少东西,程序员从入门到入狱真挺快的,记录下快乐工作,也希望疫情快点结束,祖国繁荣,收复台湾,收复志林姐姐