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