68 iso14443读卡入门记录
生活随笔
收集整理的這篇文章主要介紹了
68 iso14443读卡入门记录
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.前言
????????最近項目涉及射頻讀卡,我負責讀卡程序移植以及基于APDU自定義數據收發接口實現。由于第一次參與讀卡項目涉及讀卡相關協議內容,因此特此學習記錄。
2.讀卡分析
基于ISO14443協議讀卡流程分析。
(1)通常讀卡器(專業名稱PCD)會在場域內一直發WUPA或REQA指令進行尋卡。
(2)尋卡的指令基于13.56MHz頻率的電磁波將數據發出,其中WUPA指令是0x52;REQA指令是0x26;
(3)0x52和0x26是直接發出到場里面,卡片靠近場之后,便被喚醒然后處于ready狀態。
(4)當讀卡器發出WUPA或REQA指令后,被卡片捕獲到后會返回一個ATQA數據給讀卡器。
(5)其中ATQA數據只有兩個字節長度,其內容規定如下。
有上述圖片可知,回復的AQTA中,可獲取到卡片的UID長度信息。其解析實例如下圖示。
?(6)當讀卡器喚醒了卡片,并且獲取到卡片返回的AQTA數據后,一般要進行選卡流程。在選卡流程初始前,需要對卡片進行防碰撞檢測,避免多張卡放一起時,讀到的數據有問題。
(7)防碰撞指令是:SEL+NVB(0x93 0x20),發出指令后,卡片便返回了其UID信息(也就是我們所說的物理卡號)。
?
讀卡器發送放碰撞指令,如果存在干擾,可能要多級防碰撞才能把卡片選出來,那么就可能會發0x95 0x20甚至0x97 0x20指令,不過一般而言0x93 0x20已經夠了。
下圖為A卡交互部分示例。
?下圖為放碰撞選卡流程圖。
?對于防碰撞返回的數據,是卡片的UID和其UID的異或,當我們拿到返回的數據之后,我們一般也需要單獨計算一下卡片的UID異或結果,然后做對比,以此判斷數據是否正確。
?
(8)選卡操作。所謂的選卡不是,獲取卡片的UID(即物理卡號),而是告訴卡片你已經被選中了,接下來可能有一系列的操作。其中選卡的指令如下圖示。
?代碼示例如下:
?讀卡器進行選卡操作后,卡片會返回一個SAk對讀卡器進行響應。如果是CPU卡,這個SAK就是0x20。
?
?
(9)如果卡片支持ATS,讀卡器發送了RATS給卡片,卡片回復ATS給讀卡器后,讀卡器便可以進行透傳。其中RATS的指令格式如下圖示。
?
?而讀卡器發了RATS后,卡片會返回數據ATS。
?
?ATS返回結果如下圖示例,長度是不定的。
?
(10)APDU傳輸。APDU傳輸格式如下圖示。
?
?下面這張圖是卡片接收到APDU指令后,要回復讀卡器的示例。其中可以看到,回復中PCB應該要和讀卡器發過來的一樣,如果有CID,那么CID也要按格式回復回去。
?通過上述分析,已理清了相關交互協議。
總結
以上是生活随笔為你收集整理的68 iso14443读卡入门记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对勾函数与双曲线的关系
- 下一篇: 深入理解操作系统——datalab-ha