NFC 读取公交卡信息(APDU 协议)

6 条回复
38 次浏览

安卓手机 NFC 可以直接读公交卡、银行卡、门禁卡等,都是用的 APDU(Application Protocol Data Unit)依据 ISO/IEC 7816-4 制定。

比如读取卡号:00B08A0020

命令结构:
必选:CLA INS P1 P2
可选:Lc Data Le 说明
CLA 指令类型
INS 指令操作
P1、P2 参数
Lc 传入数据长度
Data 数据
Le 期望返回数据长度根据标准文件的定义,那么这个命令的含义就是 00 ISO-DEP 标准命令,B0 读取二进制,8A 00 为 P1、P2 参数,20 期望返回数据长度,转为十进制为 32 字节
image
总共 34 字节,去掉标志位 90 00 代表成功,正好 32 字节。 再去掉 FF 填充,最终卡号(打印卡号)就是:8885810567
image

更多详见:《手机自定义 NFC 命令读取公交卡信息》 https://mp.weixin.qq.com/s/cqc459Ns28ScFxe51mOIBw

种子用户

所以是不是可以把手机交通卡 NFC 信息写入一个实体卡以完成一账户多终端...

种子用户
OP

一般一张卡只能存一种同类信息,不同的可以共存,比如我的银行卡带公交卡功能,说明里面有两个 PSF 或者 AID,所以可以根据不同的命令读取不同的信息。有兴趣可以试试,有些操作是需要 PIN 的,还有些需要鉴权,可以看看上文中的参考链接部分。

都听我说!

这种卡能实现跟实体公交卡一样的冲次数吗?

现在手机上领的官方 NFC 公交卡,只能刷电子钱包,没法冲次数。

种子用户
OP

充次数什么意思,目前常见的都是预存金额进去,次数的只有老年卡之类的,不是很明白你说的哪种,不过圈存是要 PIN 的,而且刷卡的时候应该会从闸机走后台联网校验,不能随便充卡,我只是想克隆一张卡,目前还没时间和精力去测试。

都听我说!

成都的公交卡可以两种形式同时充值,一种就是电子钱包,充值余额,花费余额,公交地铁都可以坐。另外一种就是充次数,5 毛钱一次,当月有效,只能坐公交。

如果只能克隆卡,没法充值和刷卡消费的话,那公交卡克隆出来好像也没多大用啊。

种子用户
OP

@2Libre 充值当然只能官方,自己克隆和充值有点违法了,和以前破解 IC 水卡一样了。我这里主要是实现自己读取卡号余额信息,次要的是想克隆卡数据到异形卡上,毕竟官方的异形卡有点贵。

发表一个评论

R保持