读取二代身份证号,做个记录

转自 https://www.amobbs.com/forum.php?mod=viewthread&tid=5548512&highlight=%E8%BA%AB%E4%BB%BD%E8%AF%81


最近用RC523读身份证ID,经过几天摸索和参考网上资料,终于所成功了,特发此贴给有需要的朋友,但愿能少走弯路
RC523 寄存器配置:
       RcSetReg(JREG_TXASK, 0x00);
        RcSetReg(JREG_CONTROL, 0x10);
        RcSetReg(JREG_TXMODE, 0x03);
        RcSetReg(JREG_RXMODE, 0x0B);
        RcSetReg(JREG_TYPEB, 0x03);
        RcSetReg(JREG_DEMOD, 0x4D);
        RcSetReg(JREG_GSN, 0xFF);
        RcSetReg(JREG_CWGSP, 0x3F);
        RcSetReg(JREG_MODGSP, 0x18);
        RcSetReg(JREG_RXTHRESHOLD, 0x4D);
        RcSetReg(JREG_MODWIDTH,0x68);

身份证读卡器的程序流程如下:

先发送0×05,0×00,0×00询卡命令后,身份证返回12字节卡类型代码,不同身份证返回的数据不一样。比如对两个身份证发送询卡命令后分别返回

0×50 0×00 0×00 0×00 0×00 0xd1 0×03 0×86 0×0c 0×00 0×80 0×80

0×50 0×00 0×00 0×00 0×00 0xd1 0×03 0×86 0×07 0×00 0×80 0×90

询卡成功后,发送SELECT命令:0×1d 0×00 0×00 0×00 0×00 0×00 0×08 0×01 0×08 对二代身份证进行选卡操作。这时身份证返回的第一个字节应该等于SELECT命令的最后一个字节0×08,根据这个条件来判断SELECT命令是否操作成功。


最后发送GUID命令:0×00 0×36 0×00 0×00 0×08,身份证会返回10字节数据,其中前8字节就是身份证的唯一ID,后两字节是0×90 0×00。可以用后两字节来判断得到的是否是身份证ID。



转自 https://www.amobbs.com/forum.php?mod=viewthread&tid=5588921

二代身份证UID读取测试   二代证是应答标准的REQB指令的,但Attrib指令是非标的,
二代证的唯一UID可以通过下面的步骤简单读取,
1. PCD发送REQB命令:  0x05 0x00 0x00  二代证收到后会发送ATQB(12 bytes)应答。  例:50  00  00  00  00  d1  03  86  0c  00  80  80   
2.PCD发送非标Attrib命令  1d  00  00  00  00  00  08  01  08   二代证返回应答:08 //这里返回08不能认为是错误的,ISO14443标准返回为00
3.PCD发送读取UID命令    00  36  00  00  08   二代证返回应答:xx xx xx xx xx xx xx xx 90  00   
Sent bits:     05  00  00   
Received bits: 50  00  00  00  00  d1  03  86  0c  00  80  80   
Sent bits:     1d  00  00  00  00  00  08  01  08   
Received bits: 08   
Sent bits:     00  36  00  00  08   
Received bits: xx xx xx xx xx xx xx xx 90  00




你可能感兴趣的:(读取二代身份证号,做个记录)