NFC 读取公交卡信息

原创 2016年01月22日 19:27:35

读了读杭州通 通用卡,记录一下子

参考资料
公共交通IC卡技术规范

公交卡的结构
这里写图片描述

1.SELECT 选择MF (可不选)

可以不选默认也会被选中,但是可以通过这个指令获得文件控制信息FCI
发送 00A4 0000 02 3F00
接收 6f 12 84 0e 31 50 55 42 2e 53 59 53 2e 44 44 46 30 31 a5 00
6F:文件控制信息模板,84:DF名称 ,A5:文件控制信息专用数据
88:短文件标识符(SFI)
所以DF名称 315055422e5356532e4444463031
即:1PUB.SYS.DDF01

2.READ RECORD 读目录文件

发送 00B2 01 0C 00
返回 70 11 61 0f 4f 09 a00000000386980701 50 02 3f01
这里 01是记录号,接下来我读了02 03都有返回,读04的时候提示记录未找到。
响应是电子存折/钱包规范中的SELECT ADF 的响应
这里一共读到3条记录
4F 是 应用标识符AID a00000000386980701
a00000000386980702
a00000000386980703
50 是应用标签 3F01
3F02
3F03

3.SELECT 选择应用 3F01

发送 00A0 0000 02 3F01
返回6f 2e (FCI模板)
84 09 a00000000386980701 (84 DF名)
a5 21 (a5 FCI专用模板)
9f0c 1e (9FOC :发卡机构自定义数据,JT/T xxx手册上写的是BF0C)
84753100000000000000 发卡机构代码
31 应用类型标识
00 发卡机构应用版本号
3100000020915087 应用帐户(卡号)
20151010 应用启用日期
20651010 应用有效日期
0000 发卡机构自定义代码

4.GET BALANCE 读取余额

发送 805C 00 02 04
返回 00 00 16 c8
我这张卡余额是 16C8
16C8 换算成10进制就是5832,再除与100,余额就是58.32

5.READ RECORD 读交易明细 (0x18)

发送 00B2 01 C4 00
返回 0018 000000 00000111 09 310001050306 20160109164459
发送参数 P2 = 0xC4(11000 100) 11000 是0x18 即 交易明细文件
切割一下返回的数据
data[0:1] 交易编号
data[2,4] 不清楚
data[5,8] 交易金额(和上一步算余额的方法一样)
data[9] 交易类型(充值(0x06)还是刷卡(0x09)
data[10,15] 终端机器编号
data[16,22] 交易日期,最后一次交易日期是 2016-01-09 16:44:59

继续发送命令依次读取记录
00B2 01 C4 00
00B2 02 C4 00
00B2 03 C4 00

00B2 0A C4 00
测试发现最多可以读取10条交易记录,大于10条就会返回记录未找到(6A83)

6.READ BINARY读公用应用基本数据文件(0x15)

发送 00B0 95 001E
返回 8475310000000000 00 00 31003100000020915087 20151010 20651010 00
00
发送参数 P2 = 0x95= 100 10101 ,10101=0x15即公共应用基本文件
拆分一下数据

data[0:7] 8475310000000000:发卡方标识
data[8] 00 :应用标识(表示保留)
data[9] 00 :发卡方应用版本
data[10:19] 31003100000020915087:卡片序列号(与卡片上的编号一致)
data[20:23] 20151010 : 起始日期
data[24:27] 20651010 : 有效日期
data[28:29] 0000 : 发卡方自定义的FCI数据

7.其他文件

尝试了读取IC卡文件结构中的其他文件
持卡人基本信息文件0x16
发送 00B0 9700 00
返回 不满足安全状态(6982)

管理信息文件 0x17
P2 = 0xBC(10111 100)
发送 00B2 01 BC 00
00B2 02 BC 00

00B2 0A BC 00
测试可以读到9条记录(到 0x09)
数据是变长记录,有全0的也有非全0的,不知道是些什么东西,没仔细研究

Python-抓取股票信息

学习利用抓取股票信息
  • 1970年01月01日 08:00

android使用NFC的读模式

NFC读模式工作流程:NFC芯片轮询执行读模式、点对点和卡模式,当把卡片靠近手机的NFC天线的时候,NFC会识别到卡,然后把卡对象装到intent里面,并发送广播NfcAdapter.ACTION_T...
  • menghnhhuan
  • menghnhhuan
  • 2013-11-26 18:03:07
  • 11831

android通过NFC读取公交卡的余额和交易记录

通过NFC的读模式,读取公交卡的余额和交易记录。这是一个开源的工程,可以读取深圳通、羊城通、北京卡、八达通、武汉通等等...
  • menghnhhuan
  • menghnhhuan
  • 2013-11-25 17:16:14
  • 33500

Android NFC的初次使用——公交卡信息读取

通过NFC的读模式,读取公交卡的余额和交易记录。这是一个开源的工程,可以读取深圳通、羊城通、北京卡、八达通、武汉通等等。 1.首先要在AndroidManifest.xml中声明如下配置信息:...
  • bbenskye
  • bbenskye
  • 2017-05-18 09:49:59
  • 1306

Android之NFC手机读取银行卡信息

自支付宝钱包8.0推出了NFC新功能,只要将支持NFC功能的手机靠近公交卡、银行卡等带有芯片的IC卡上,可迅速读取卡内余额、卡的信息,还可以给卡进行充值,非常贴心实用。          ...
  • LVXIANGAN
  • LVXIANGAN
  • 2016-03-03 12:22:17
  • 9283

NFC读取公交卡信息示例

  • 2013年11月21日 14:11
  • 427KB
  • 下载

Android -- 读取NFC卡号

Android -- 读取NFC卡号
  • csharp25
  • csharp25
  • 2016-11-17 22:23:29
  • 3442

android NFC (读取M1卡内容)

  • 2012年06月14日 11:12
  • 76KB
  • 下载

Android NFC卡实例详解

公司最近在做一个NFC卡片的工程,经过几天的时间,终于写了一个Demo出来,在此记录下在此过程中遇到的问题。由于之前本人是做iOS的,Android写起来并不是那么的顺手,其中有一些比较基础的问题也会...
  • jianin45
  • jianin45
  • 2016-07-08 11:08:01
  • 8975

利用Android手机的NFC功能读取银行卡信息

利用Android手机的NFC功能读取银行卡信息,获取银行卡账户
  • a447095304
  • a447095304
  • 2015-12-31 10:12:04
  • 7044
收藏助手
不良信息举报
您举报文章:NFC 读取公交卡信息
举报原因:
原因补充:

(最多只允许输入30个字)