1.根据 “社会保障卡文件结构和数据项(V2.0)”中的说明
社会保障系统环境 SSSE 的应用标识符
#-------------------------------------+------------------------------------------------------------+
|DDF |应用标识符内容 | 应用标识符 |
|SSSE | sx1.sh.社会保障 | 7378312E73682EC9E7BBE1B1A3D5CF |
#-------------------------------------+------------------------------------------------------------+
基本应用数据区文件特性
#----------------------------+-------------------+------------------------+-----------+--------------+------------+-------+
|文件定义 | 文件标识符 | 短文件标识符 |读控制 |写控制 |文件结构 |类别 |
|发卡机构数据文件 |EF05 |05 |无 |UKSSSE | 变长记录 | 启用|
|持卡人的基本信息文件|EF06 |06 |无 |UKSSSE | 变长记录 | 启用|
#----------------------------+-------------------+------------------------+-----------+--------------+------------+-------+
数据项的格式与属性
#----------------------------+-------------------+------------------------+-----------+--------------+------------+
标志 数据项 类型 长度 所属文件 备注
+----------------------------+-------------------+------------------------+-----------+--------------+------------+
01 卡的识别码 cn 10 |
02 卡的类别 an 01 |
03 规范版本 an 04 | SSSE
04 初始化机构编号 cn 0C | "EF05"
05 发卡日期 cn 04 |
06 卡有效期 cn 04 |
07 卡号 an 09 |
+----------------------------+-------------------+------------------------+-----------+--------------+------------+
08 社会保障卡号码 cn 12 |
09 姓名 an 1E |
4E 姓名扩展 an 14 | SSSE
0A 性别 cn 01 | "EF06"
0B 民族 cn 01 |
0C 出生地 cn 03 |
0D 出生日期 cn 04 |
+----------------------------+-------------------+------------------------+-----------+--------------+------------+
可以获知,以上数据,可以直接读出,不需要走加密模块。
---------------------------------------------------------------------------------------------------------------------------
2. 选用接触式读卡器,接触式读卡器可以采用SIM卡读卡器,由于SIM卡读卡器,便宜,易于购买。如果采用带安全模块的接触式读卡器,一般
设备都无法购买到,不卖个人。SIM卡读卡器无安全模块,故适合读取非加密数据。当然可以选用其他接触式读卡器,ACR系列的接触式读卡器
由于不支持发送APDU指令,故不适合读取卡内数据
我购买的SIM卡读卡器,相关信息
符合PC/SCVersion 1.0/2.0标准并通过微软认证,电脑&网路使用安全控制(Access Control), 电子商务(e-Commerce)或会员管理机制(Royal program)
符合财金规范第二代IC晶片金融卡(FISC II)
可读写SLE4418/4428、SLE4432/4442、SLE4436/5536及I2C Memory卡
可读符合ISO7816-3; T=0 and T=1通讯协定之CPU卡
---------------------------------------------------------------------------------------------------------------------------
3. 使用Windows自带的智能卡API开发读取卡内数据,关于CPU卡内数据文件结构和流程,参考我的文章。
windows中调用智能卡,需要包含winscard.h,Winscard.lib,在winscard.h中包含了许多智能卡的API,https://docs.microsoft.com/zh-cn/windows/win32/api/winscard/
主要用到的API有:SCardEstablishContext;SCardListReaders;SCardConnect;SCardStatus;SCardBeginTransaction;SCardTransmit;SCardReconnect;
SCardEndTransaction;SCardDisconnect;SCardFreeMemory。
关于怎么调用这些API,就不在这里重复说了,网上一搜都有。
---------------------------------------------------------------------------------------------------------------------------
4. 发送APDU指令
1】因为上文中,已经说明,社会保障系统环境 SSSE 的应用标识符,所以直接select这个,0x00,0xa4,0x04,0x00,0x0f,0x73,0x78,0x31,0x2E,0x73,0x68,0x2E,0xC9,0xE7,0xBB,0xE1,0xB1,0xA3,0xD5,0xCF
2】继续select,0x00,0xa4,0x02,0x00,0x02,0xEF,0x06,0x00
3】读取数据,0x00,0xb2,0x0a,0x00,0x03;0x00,0xb2,0x0b,0x00,0x03;0x00,0xb2,0x0d,0x00,0x06;
0x00,0xb2,0x09,0x00,0x20;0x00,0xb2,0x08,0x00,0x14
同理,select EF05,读取数据