搜索
bottom↓
回复: 44

贴一个PN532 读取二代证 UID 的完整C程序

  [复制链接]
(180507627)

出0入0汤圆

发表于 2015-2-5 00:06:31 | 显示全部楼层 |阅读模式
最近在调试PN532读取二代证UID的程序,看到坛友pengjun334曾经也研究过这个问题,并给出了很有价值的信息
http://www.amobbs.com/forum.php?mod=viewthread&tid=5588921

在他的基础上,我也成功地用PN532+libnfc读取了二代证,在此表示感谢,并分享一下完整的代码。



只要一个C文件,需要libnfc才能编译运行,编译方法同libnfc的examples一样,linux下的命令为
gcc emu-atqb.c -o emu-atqb `pkg-config --cflags --libs libnfc`

运行效果如图:


最后一行就是UID及其CRC

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
(180507358)

出0入0汤圆

 楼主| 发表于 2015-2-5 00:11:00 | 显示全部楼层
解释一下程序,
由于二代证的ATTRIB操作非标,所以不能直接用PN532提供的InListPassiveTarget等上层指令来选卡,
只能靠自己设置寄存器,并通过InCommunicateThru底层通讯,发送ATQB和ATTRIB,完成选卡操作。
(180476681)

出0入0汤圆

发表于 2015-2-5 08:42:17 | 显示全部楼层
学习了,最近可能也要研究这块
(180475241)

出0入0汤圆

发表于 2015-2-5 09:06:17 | 显示全部楼层
读过公交卡号,身份证还没试过。。。
(177612056)

出0入0汤圆

发表于 2015-3-10 12:26:02 | 显示全部楼层
这个帖子很强。值得参考!
(176659819)

出0入0汤圆

发表于 2015-3-21 12:56:39 | 显示全部楼层
非常感谢,最近也要弄PN532了
(171931114)

出0入0汤圆

发表于 2015-5-15 06:28:24 | 显示全部楼层
这个帖子很强。值得参考!
(171921391)

出0入0汤圆

发表于 2015-5-15 09:10:27 | 显示全部楼层
终于有这样的强帖了。之前也做过类似的
(171920307)

出0入0汤圆

发表于 2015-5-15 09:28:31 | 显示全部楼层
多谢楼主分享
(171438784)

出0入0汤圆

发表于 2015-5-20 23:13:54 | 显示全部楼层
谢谢楼主分享
(163927198)

出0入0汤圆

发表于 2015-8-15 21:47:00 | 显示全部楼层
mark!多谢分享!
(163772293)

出0入0汤圆

发表于 2015-8-17 16:48:45 | 显示全部楼层
多谢分享,顶一下
(157832382)

出0入0汤圆

发表于 2015-10-25 10:47:16 | 显示全部楼层
奇怪, 我用楼主的代码失败,返回全部是  -20
(157284146)

出0入0汤圆

 楼主| 发表于 2015-10-31 19:04:32 | 显示全部楼层
34480016 发表于 2015-10-25 10:47
奇怪, 我用楼主的代码失败,返回全部是  -20

根据libnfc的代码来看,-20应该是射频通讯错误。不知你直接用nfc-poll工具能不能寻到卡?

00151 /* Error codes */
00156 #define NFC_SUCCESS      0
00157
00161 #define NFC_EIO       -1
00162
00166 #define NFC_EINVARG     -2
00167
00171 #define NFC_EDEVNOTSUPP     -3
00172
00176 #define NFC_ENOTSUCHDEV     -4
00177
00181 #define NFC_EOVFLOW     -5
00182
00186 #define NFC_ETIMEOUT      -6
00187
00191 #define NFC_EOPABORTED      -7
00192
00196 #define NFC_ENOTIMPL      -8
00197
00201 #define NFC_ETGRELEASED     -10
00202
00206 #define NFC_ERFTRANS      -20
00207
00211 #define NFC_EMFCAUTHFAIL    -30
00212
00216 #define NFC_ESOFT     -80
00217
00221 #define NFC_ECHIP     -90
(157271147)

出0入0汤圆

发表于 2015-10-31 22:41:11 | 显示全部楼层
cqsrmxxzyx 发表于 2015-10-31 19:04
根据libnfc的代码来看,-20应该是射频通讯错误。不知你直接用nfc-poll工具能不能寻到卡?

...

可能跟天线有关,需要调整寄存器
http://www.amobbs.com/forum.php? ... p;page=1#pid8837627
(157269070)

出0入0汤圆

发表于 2015-10-31 23:15:48 | 显示全部楼层
!!!!!!!!!!!!!!
(156094569)

出0入0汤圆

发表于 2015-11-14 13:30:49 | 显示全部楼层
学习研究
(155930207)

出0入0汤圆

发表于 2015-11-16 11:10:11 | 显示全部楼层
身份证读取ID号,mark
(137006412)

出0入0汤圆

发表于 2016-6-22 11:46:46 | 显示全部楼层
为啥我返回都是-20?
(120214687)

出0入0汤圆

发表于 2017-1-2 20:08:51 | 显示全部楼层
PN532读取二代证UID能否实现,现在正在测试这个,但是05 00 00 71 FF不知到如何发送,直接发送是没有反应的,请赐教,谢谢!
(119856413)

出0入0汤圆

发表于 2017-1-6 23:40:05 | 显示全部楼层
有些身份证可以读,有些读不了。试了几个,也没有搞清楚差别在哪里。
(119817775)

出0入0汤圆

 楼主| 发表于 2017-1-7 10:24:03 | 显示全部楼层
zstein 发表于 2017-1-6 23:40
有些身份证可以读,有些读不了。试了几个,也没有搞清楚差别在哪里。

可能是pn532模块的问题,有些模块读type b的卡信号非常差。
(119811166)

出0入0汤圆

发表于 2017-1-7 12:14:12 | 显示全部楼层
肯定不是天线本身的问题,天线问题只是在不同位置读卡效果差异比较大,稳定性差。
不会出现一直读不到。数据都可以监听到,主要是芯片无法解码。
(112044763)

出0入0汤圆

发表于 2017-4-7 09:34:15 | 显示全部楼层
你好,我想问一下,关于你发的PN532读身份证id的程序。有两个地方,第一,是PN53X_REG_CIU_RxThreshold的值,你写了77,读回来是69,我查了数据手册,有一位是只读的。第二,是ATQB指令,你用InCommunicateThru通讯,我用串口调试模块直接发送,但卡返回的数据不对,我可能用错指令了,你能举个例子吗?
(111585481)

出0入0汤圆

发表于 2017-4-12 17:08:57 | 显示全部楼层
请问大哥,这是直接操作PN532?
(111524095)

出0入0汤圆

发表于 2017-4-13 10:12:03 | 显示全部楼层
可以直接发一下你的可执行文件吗?
(111523762)

出0入0汤圆

发表于 2017-4-13 10:17:36 | 显示全部楼层
可以帮忙编译一下直接在WINdows下运行的吗?谢谢了
(111411137)

出0入0汤圆

 楼主| 发表于 2017-4-14 17:34:41 | 显示全部楼层
chauncey 发表于 2017-4-7 09:34
你好,我想问一下,关于你发的PN532读身份证id的程序。有两个地方,第一,是PN53X_REG_CIU_RxThreshold的值 ...

寄存器配置都是从原来的帖子(文章开头的链接)里面来的,我也不是很懂
(111411113)

出0入0汤圆

 楼主| 发表于 2017-4-14 17:35:05 | 显示全部楼层
cardtech 发表于 2017-4-13 10:17
可以帮忙编译一下直接在WINdows下运行的吗?谢谢了

windows需要移植libnfc,我没有试过
(111394564)

出0入0汤圆

发表于 2017-4-14 22:10:54 | 显示全部楼层
好吧。
那我想问一下,你给的C程序里的nfc_initiator_transceive_bytes(pnd, cmd_atqb, sizeof(cmd_atqb), recv, sizeof(recv), -1);这个函数是对应InCommunicateThru还是InDataExchange指令?这两指令唯一的区别是InCommunicateThru会自动加上两字节CRC检验(就是你程序中的cmd_atqb[]中的0x71, 0xff;cmd_attrib[]中对的0xf3, 0x10;cmd_uid[]中的0x57 , 0x44)。所以,我想请教一下,nfc_initiator_transceive_bytes这个函数实现的功能,是不是实质上你调用的是InDataExchange指令控制PN532发送数据?对应成串口发送的完整数据是不是(00 00 FF 07 F9 D4 40 00 05 00 00 71 FF 77 00)以ATQB指令为例子。谢谢
(111304797)

出0入0汤圆

 楼主| 发表于 2017-4-15 23:07:01 | 显示全部楼层
chauncey 发表于 2017-4-14 22:10
好吧。
那我想问一下,你给的C程序里的nfc_initiator_transceive_bytes(pnd, cmd_atqb, sizeof(cmd_atqb),  ...

我的程序里面把libnfc的easy_frame功能关掉了,所以CRC都是在程序里面自己算的,底层对应的是不自动添加CRC的指令。
(111237194)

出0入0汤圆

发表于 2017-4-16 17:53:44 | 显示全部楼层
好的,我再调试一下吧。
我现在没有用你的程序在linux上跑,我现在是根据你的方法用串口模块发相应的指令,没成功。
你说你把libnfc的easy_frame关了,那是不是我也要再做相应的处理?还是你上面给出的编译命令就已经做处理了,我想先在linux上跑成功,再看看串口发的是什么数据
(111217838)

出0入0汤圆

 楼主| 发表于 2017-4-16 23:16:20 | 显示全部楼层
关掉easy_frame就是不自动计算的CRC的意思,你可以跟一下libnfc的代码就知道了。
(111009427)

出0入0汤圆

发表于 2017-4-19 09:09:51 | 显示全部楼层
好的,非常感谢
(107032694)

出0入0汤圆

发表于 2017-6-4 09:48:44 | 显示全部楼层
楼主,你用的PN532是那种红色正方形的还是那种长方形的。不知道是不是板子的缘故,没弄出来。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
(107027054)

出0入0汤圆

 楼主| 发表于 2017-6-4 11:22:44 | 显示全部楼层
chauncey 发表于 2017-6-4 09:48
楼主,你用的PN532是那种红色正方形的还是那种长方形的。不知道是不是板子的缘故,没弄出来。
...

一般来说天线面积大的信号会好一些,但也要看匹配调得好不好。
之前在某宝买过几次模块,各家的即使看起来差不多的模块,信号也有很大差别,有些信号差可能是抄板的,反正比较碰运气了。
(103481480)

出0入0汤圆

发表于 2017-7-15 12:15:38 | 显示全部楼层
非常感谢分享,学习了。
(103216990)

出0入0汤圆

发表于 2017-7-18 13:43:48 来自手机 | 显示全部楼层
chauncey 发表于 2017-6-4 09:48
楼主,你用的PN532是那种红色正方形的还是那种长方形的。不知道是不是板子的缘故,没弄出来。
...

红色的一般情况是不行,偶尔可以。白色的没问题。同时谢谢楼主。
(101857268)

出0入0汤圆

发表于 2017-8-3 07:25:50 | 显示全部楼层
34480016 发表于 2017-7-18 13:43
红色的一般情况是不行,偶尔可以。白色的没问题。同时谢谢楼主。

感谢,我也试了白色的了,好用。同时,我也分享一个别人软件吧,不用自己配置。
好像串口模块要用cp2102的才行。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
(78958570)

出0入0汤圆

发表于 2018-4-25 08:10:48 | 显示全部楼层
这个帖子很强。值得参考!
(74858991)

出0入0汤圆

发表于 2018-6-11 18:57:07 | 显示全部楼层

谢谢分享,值得参考!
(73467304)

出0入0汤圆

发表于 2018-6-27 21:31:54 | 显示全部楼层
chauncey 发表于 2017-8-3 07:25
感谢,我也试了白色的了,好用。同时,我也分享一个别人软件吧,不用自己配置。
好像串口模块要用cp2102 ...

感谢分享!!!好的上位机
(69873047)

出0入0汤圆

发表于 2018-8-8 11:56:11 | 显示全部楼层
luybpotter 发表于 2018-6-27 21:31
感谢分享!!!好的上位机

资源共享嘛
(69159115)

出0入0汤圆

发表于 2018-8-16 18:15:03 | 显示全部楼层
请教下大神,读取到ID后,能不能做到得知身份证相关信息呢?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号-1 )

GMT+8, 2020-10-25 05:06

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表