Mifare S50和Mifare S70又常被稱為Mifare Standard、Mifare Classic、MF1,是遵守ISO14443A標準的卡片中應用最為廣泛、影響力最大的的一員。而Mifare S70的容量是S50的4倍,S50的容量是1K字節,S70的容量為4K字節。讀寫器對卡片的操作時序和操作命令,二者完全一致。
Mifare S50和Mifare S70的每張卡片都有一個4字節的全球唯一序列號,卡上數據保存期為10年,可改寫10萬次,讀無限次。一般的應用中,不用考慮卡片是否會被讀壞寫壞的問題,當然暴力硬損壞除外。
Mifare S50和Mifare S70的區別主要有兩個方面。一是讀寫器對卡片發出請求命令,二者應答返回的卡類型(ATQA)字節不同。Mifare S50的卡類型(ATQA)是0004H,Mifare S70的卡類型(ATQA)是0002H。另一個區別就是二者的容量和內存結構不同。
Mifare S50把1K字節的容量分為16個扇區(Sector0-Sector15),每個扇區包括4個數據塊(Block0-Block3,我們也將16個扇區的64個塊按絕對地址編號為0~63),每個數據塊包含16個字節(Byte0-Byte15),64*16=1024。
如下表所示:
Mifare S70把4K字節的容量分為40個扇區(Sector0-Sector39),其中前32個扇區(Sector0-Sector31)的結構和Mifare S50完全一樣,每個扇區包括4個數據塊(Block0-Block3),后8個扇區每個扇區包括16個數據塊(Block0-Block15)。我們也將40個扇區的256個塊按絕對地址編號為0~255),每個數據塊包含16個字節(Byte0-Byte15),256*16=4096。如下表所示:
每個扇區都有一組獨立的密碼及訪問控制,放在每個扇區的最后一個Block,這個Block又被稱為區尾塊,S50是每個扇區的Block3,S70的前32個扇區也是Block3,后8個扇區是Block15。
S50和S70的0扇區0塊(即絕對地址0塊)用于存放廠商代碼,已經固化,不可更改,卡片序列號就存放在這里。除了廠商塊和控制塊,卡片中其余的塊都是數據塊,可用于存貯數據。數據塊可作兩種應用:
(1)用作一般的數據保存,可以進行讀、寫操作。
(2)用作數據值,可以進行初始化值、加值、減值、讀值操作。
數據塊和值塊有什么區別呢?無論塊中的內容是什么,你都可以把他看成普通數據,即使它是一個值塊。但是并不是任何數據都可以看成是值,因為值塊有一個比較嚴格的格式要求。值塊中值的長度為4個字節的補碼,其表示的范圍(-2147483648~2147483647),值塊的存儲格式如下:
帶下劃線表示取反。VALUE是值的補碼,addr是塊號(0-63).只有具有上述格式,才被認為是值塊,否則就是普通的數據塊。
每個扇區的區尾塊為控制塊,包括了6字節密碼A、4字節存取控制、6字節密碼B。例如一張新出廠的卡片控制塊內容如下:
A0 A1 A2 A3 A4 A5 FF 07 80 69 B0 B1 B2 B3 B4 B5
密碼A 存取控制 密碼B
新卡的出廠密碼一般是密碼A為A0A1A2A3A4A5,密碼B為B0B1B2B3B4B5,或者密碼A和密碼B都是6個FF。存取控制用以設定扇區中各個塊(包括控制塊本身)的存取條件,這部分有點復雜,后面將專文介紹。
讀寫器與S50和S70的通訊流程如下圖所示:
卡片選擇和三次相互認證在前面已經介紹過。其他操作如下:
(1)讀 (Read):讀取一個塊的內容,包括普通數據塊和值塊;
(2)寫 (Write):寫數據到一個塊,包括普通數據塊和值塊,值塊中寫入了非法格式的數據,值塊就變成了普通數據塊;
(3)加(Increment):對值塊進行加值,只能對值塊操作;
(4)減(Decrement):對值塊進行減值,只能對值塊操作;
(5)中止(Halt):將卡置于睡眠工作狀態,只有使用WAKE-UP命令才能喚醒。
事實上加值和減值操作并不是直接在Mifare的塊中進行的。這兩個命令先把Block中的值讀出來,然后進行加或減,加減后的結果暫時存放在卡上的易失性數據寄存器(RAM)中,然后再利用另一個命令傳輸(Transfer)將數據寄存器中的內容寫入塊中。與傳輸(Transfer)相對應的命令是存儲(Restore),作用是將塊中的內容存到數據寄存器中,不過這個命令很少用到。
審核編輯 黃宇
-
RFID
+關注
關注
388文章
6191瀏覽量
238540 -
射頻識別技術
+關注
關注
0文章
96瀏覽量
16815
發布評論請先 登錄
相關推薦
評論