通过PSAM读CPU卡号流程小结

news/2024/11/17 23:54:41/

PSAM卡与CPU卡交互流程===》》》

1 读CPU卡设备对CPU卡进行复位操作

2 打开CPU卡用户文件夹DF,COS命令:00 A4 00 00 02 12 00

3 从CPU卡获取4位随机数,COS命令:00 84 00 00 04

4 对PSAM卡进行复位

5 打开PSAM卡用户文件夹DF,COS命令:00 A4 00 00 02 13 00

6 对获取的CPU 4位随机数+补4位0x00做内部认证,COS命令:00 88 00 00 08 4位随机数+4位0x00

7 发送取响应指令,获取8位DES加密结果,COS命令:00 C0 00 00 08

8 将获得的加密结果数据发给CPU做外部认证,COS命令:00 82 00 00 08 8位加密后的数据

9 读取CPU卡二进制文件,获得卡号,COS命令:00 B0 83 00 00 (二进制文件00 03)

 

 

如下是做GPIO模拟交互时的一些记录:

/*

* A 类卡:1-5MHz 时钟、VCC-5V、

* B 类卡:1-4MHz 时钟、VCC-3V、

*通过 pwm 产生 50% 占空比的方波(协议规定 ISO-7816 时钟信号的工作周期应在稳定操作期间周期的40% 60%)

*clk 电压最小值为 0.7*VCC,最大值为 VCC

*单总线I/O数据持续时间(电压min 0.7 Vcc,max Vcc):

在数据 I/O 上,一位数据所持续的时间叫做“基本时间单位”,简写为 etu。

etu是由F和D共同决定的,这两个值是在复位应答中给出的,F 为时钟分频因子,D为波特率调整因子。

其大小为 F/D 个时钟周期,这里的时钟指的是 CLK 触点上的时钟,即

1etu =(F/D) * (1/f)   

卡上电时默认F = 372, D = 1,所以1etu = 372/3.579Mhz= 103us,也就是每一位是103us,对应波特率为9600

帧格式:

每帧数据采用Byte字符方式,一个Byte由8比特组成。

每帧的传输由起始位、字符数据(8位)、校验位和停止位组成

其中

起始位为一个ETU(Elementary Time Unit)的低电平

数据位占用8个ETU的时间 (psam卡从最低位开始发送)

校验位占用一个ETU的时间 偶校验

停止位比特为高电平,占用2个ETU的时间

*操作:

热复位:当VCC和CLK保持稳定时,接口设备置RST为状态L至少400时钟周期(时间te)后,接口设备启动热复位,该code 时钟周期为278ns

应答:I/O的应答在RST上信号上升沿之后的400-40000个时钟周期(tf)之前开始(时间tf在Td之后);

在RST处于状态H时,如果应答信号未在40000个周期之后开始,RST上的信号将返回状态L

两个连续字符上升沿之间的延迟至少 12etu

在复位应答期间,卡发出的两个连续字符的上升沿间的延迟应不超过9600etu,这个最大值被称为 “初始等待时间”

应答值:TS 为 0x3b 时表示正向约定解码,先传低位;TS为 0x3f 时表示反向约定,先传高位

*注:

状态Z:传号或高电平

状态A:空号或低电平

*/

参考资料:

http://www.doc88.com/p-7982900155813.html PSAM卡应用交易指令

https://www.stmcu.org.cn/article/id-325648 STM32单片机的PSAM卡驱动模块设计

SmartCOS-PSAM1.3用户手册.pdf

eetop.cn_STM32智能卡接口笔记.pdf

 


http://www.ppmy.cn/news/527421.html

相关文章

java apdu读取社保卡_读取社保卡信息

08 社会保障卡号码 cn 12 | 09 姓名 an 1E | 4E 姓名扩展 an …

AK9528 - IS07816转UART智能读卡控制器芯片

在这个IOT的时代,数据加密已经四处被提及了。安全性需求也日益增高。但是我们的linux主机的芯片,自身却没有带ISO7816接口。这次由于客户的需求,必须要加加密芯片,因此只能找寻类似于USB转ISO7816, UART/SPI转7816接口…

实验一. RFID自动读卡实验

实验一. RFID自动读卡实验 实验目的实验环境实验内容实验步骤实验代码1) 初始化MFRC5312) 寻卡 硬件连接编译、烧录并测试 实验结果串口设置 实验目的 了解RFID相关知识。掌握RFID模块自动识别IC卡工作原理。 实验环境 软件:IAR SWSTM8 1.30。硬件:RF…

智能卡操作(非接触CPU卡又称智能卡) 总结

1-数据传输格式和初始化 对于刚接触智能卡的工程师来说,在阅读7816-3规范的时候,常常被其中的一些术语迷惑,读起来会觉得有些别扭。尤其是在看到复位应答中的F和D设置以及对应的etu的时候,会觉得有些复杂和难以理解。 其实从本质上…

java智能卡接口_java – 尝试使用智能卡I / O API读取和写入智能卡的字符串

我正在使用ACS AET65读卡器尝试将字符串存储到智能卡中,然后将其读回.我正在使用智能卡IO API,我可以获得终端并与卡连接.但是,我一直在阅读ISO 7816规范,我真的迷路了. 我需要做的就是给卡写一个3K字符串,然后再读回来.而已.根据我的研究,看起来这些卡应该安装了applet,但我确…

Arduino与RC522读卡测试代码

RC522与Arduino读卡代码 做了Arduino作品集4年多了,让我印象比较深刻的是每当有人用RC522的时候都会遇到同样一个问题,就是为什么我的卡读取不了卡号,我明明是用网上的教程啊?在这里我声明一点,网上的教程不一定是正确…

分享一组开关按钮

先看效果&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>豆子开关</title><style>* {margin: 0;padding: 0;box-sizing: border-box;-webkit-tap-hi…

Endnote中字体大小怎么改变?

Endnote中看文献字体太小&#xff0c;可以通过以下步骤来放大 1.找到上方工具栏“Edit”下的“Preference” 2.如下图&#xff0c;在“Display Fonts”中点击右侧的“Change Font”就可以改字体啦&#xff01; PS&#xff1a;“Library”只是改变参考文献字体大小&#xff1b;“…