電話:13691762133
手機:13691762133
郵件:andy@ownlikes.cn
QQ:317779813
地址:深圳市龍華新區(qū)觀瀾大道35號1棟3樓
網址 : greezubamboo.cn
1.RFID高頻標簽存儲結構
S50卡分為16個扇區(qū),每個扇區(qū)由4塊(塊0、塊1、塊2、塊3)組成,我們也將16個扇區(qū)的64個塊按絕對地址編號為0~63,
說明:
● 第0扇區(qū)的塊0(即絕對地址0塊),它用于存放廠商代碼,已經固化,不可更改。
● 每個扇區(qū)的塊0、塊1、塊2為數據塊,可用于存儲數據。
● 每個扇區(qū)的塊 3 為控制塊,包括了密碼 A、存取控制、密碼 B,對該數據塊操作要謹慎。
通信原理。命令由讀寫器發(fā)出,根據相應區(qū)讀寫條件受數字控制單元的控制。
該實驗平臺配備的RFID高頻模塊設有UART通信接口,波特率默認為19200,1位起始位,8位數據位,1位停止位。UART工作在半雙工方式,即模塊接收指令后才會做出應答。
通信命令格式如下:
前導頭:0xAABB,共兩個字節(jié),若數據域中也包含0xAA,那么模塊會自動在它后面插入一個字節(jié)數據0,但是通信長度的值不變。
通信長度:去掉前導頭之外的通訊幀所有字節(jié)數(含通信長度字節(jié)本身)。
命令字:各種用戶可用命令
說明:錢包操作涉及的值都是低字節(jié)在前,值為四字節(jié)有符號數;密鑰標志設為0。
校驗碼:去掉前導頭和校驗碼字節(jié)之外,所有通信幀所含字節(jié)的異或值。
CPU發(fā)送命令幀之后,需要等待讀取返回值,返回值的格式如下:
正確:前導頭+通信長度+上次所發(fā)送的命令字+數據域+校驗碼
錯誤:前導頭+通信長度+上次所發(fā)送的命令字的取反+校驗碼
實踐內容及步驟
1.讀卡器連接
(1)用USB線將RFID高頻讀卡器連接到PC上,讀卡器的紅色電源指示燈亮。若PC彈出“發(fā)現新硬件”對話框,說明該PC未安裝過PL2303驅動(USB轉串口),驅動文件位于“資料/usb_driver.rar”。
(2)運行“RFID測試”軟件,右擊“我的電腦”,在“設備管理器”中查看PL2303驅動對應的串口號
(3)然后在“RFID測試”軟件的操作區(qū)對串口參數進行設置:波特率—19200、數據位—8位、停止位—1奇偶校驗—無,并打開串口。
2.讀卡(標簽)類型
(1)將一張高頻標簽放到RFID高頻讀卡器上面,綠色信號指示燈亮。打開“RFID測試”軟件的“RFID”界面,單擊“讀卡類型”命令,執(zhí)行結果如圖4-40所示。
(2)根據RFID高頻模塊通信協議和指令系統可知,在“發(fā)送區(qū)”的數據串中,“AA BB”為前導頭,“02”為通信長度,“19”為命令字(讀卡的類型),“1B”為“02 19 1B”這3個字節(jié)的校驗碼。
(3)在“接收區(qū)”中收到的數據串中“AA BB”為前導頭,“04”為通信長度,“19”為命令字(與“發(fā)送區(qū)”中的命令字相同,說明剛才的指令執(zhí)行成功),“04 00”為數字域,即S50卡的編號,“19”為“04 19 04 00”這4個字節(jié)的校驗碼。
3.讀卡序列號
4.初始化錢包
(1)在“輸入區(qū)”選擇塊8作為“錢包”(除了進行修改密碼操作以外不要選擇控制塊),“密碼”設為6個字節(jié)的0xFF,數據編輯框輸入100,然后發(fā)送“初始化錢包”命令,
(2)單擊“查看錢包”命令,返回的數據為“64 00 00 00”。錢包操作涉及的值是低字節(jié)在前,因此返回的數據轉換成十進制數為100,說明錢包初始化成功。
5.錢包充值
(1)在“輸入區(qū)”的“數據”第1個編輯框中輸入“300”,然后單擊“錢包充值”命令。
(2)單擊“查看錢包”命令,返回的數據為“90 01 00 00”,轉換成十進制數為400,說明錢包充值成功。
6.錢包扣款
(1)在“輸入區(qū)”的“數據”第1個編輯框中輸入“50”,然后點擊“錢包扣款”命令。
7.讀數據塊
“輸入區(qū)”的塊號不變,“密碼”不變,單擊“讀數據塊”命令,返回的數據為“5E 01 00 00 A1 FE FF FF 5E 01 00 00 00 FF 00 FF”,共16個字節(jié)。如
8.寫數據塊
(1)“輸入區(qū)”的塊號不變,“密碼”不變,“數據”段的 4 個編輯框中輸入 0,然后單擊“寫數據塊”命令。
(2)單擊“讀數據塊”命令,返回的數據為0,說明數據寫操作成功。
9.修改密碼
S50卡的存儲空間是通過扇區(qū)進行管理的,密碼存放在每個扇區(qū)的控制塊。因此我們修改密碼是相對扇區(qū)而言,不是針對某個塊。
(1)在“輸入區(qū)”中選擇扇區(qū)的控制塊塊號。塊號8所在的扇區(qū)編號為2,因此該扇區(qū)的控制塊塊號為11。密碼為默認的6個字節(jié)FF。單擊“讀數據塊”命令
(2)假設密碼要修改為“01 02 03 04 05 06”,用這6個字節(jié)值將上一步讀出的數據串中前6個字節(jié)替換掉,組合成新的16字節(jié)數據串“01 02 03 04 05 06 FF 07 80 69 FF FF FF FF FF FF”。然后把這個數據串填入“輸入區(qū)”的數據編輯框中,最后單擊“修改密碼”命令。
(2)假設密碼要修改為“01 02 03 04 05 06”,用這6個字節(jié)值將上一步讀出的數據串中前6個字節(jié)替換掉,組合成新的16字節(jié)數據串“01 02 03 04 05 06 FF 07 80 69 FF FF FF FF FF FF”。然后把這個數據串填入“輸入區(qū)”的數據編輯框中,最后單擊“修改密碼”命令。
(3)在“輸入區(qū)”中選擇塊8,密碼改為舊密碼“FF FF FF FF FF FF”,然后單擊“讀數據塊”命令,如圖4-51所示。模塊返回的數據為“AA BB 02 DE DC”,命令字變?yōu)?xDE,即“讀數據塊”命令(0x21)的反碼,說明用以前舊的密碼進行讀數據塊操作失敗。
(4)將“輸入區(qū)”中密碼改為新密碼“01 02 03 04 05 06”,然后再單擊“讀數據塊”命令,如圖4-52所示。數據塊8的16個字節(jié)數據被讀取出來,說明用新的密碼進行讀數據塊操作成功。