非接觸式IC卡Mifare S50與Mifare S70的讀寫控制
- 2019-02-13 16:33:00
- 諾塔斯智能科技 原創(chuàng)
- 6077
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é)。讀寫器對(duì)卡片的操作時(shí)序和操作命令,二者完全一致。Mifare S50和S70非接觸式IC卡是目前市面上應(yīng)用較多的智能卡,S50和S70非接觸式IC卡讀寫控制比較簡(jiǎn)單,我們將讀寫控制指令進(jìn)行了封裝。理論上,用戶只需要調(diào)用我們的接口函數(shù)接口。部分客戶也希望對(duì) Mifare S50和Mifare S70卡的讀寫控制進(jìn)行深入了解和學(xué)習(xí)。因此,我們專門對(duì) Mifare S50和Mifare S70的讀寫控制進(jìn)行了詳細(xì)介紹。
S50和S70非接觸式IC卡的塊分為數(shù)據(jù)塊和控制塊,對(duì)數(shù)據(jù)塊的操作有“讀”、“寫”、“加值”、“減值(含傳輸和存儲(chǔ))”四種,對(duì)控制塊的操作只有“讀”和“寫”兩種。
從表中可以看出,
從表中可以看出,
由于出廠時(shí)數(shù)據(jù)塊控制位的默認(rèn)值是C1C2C3=000,控制塊的默認(rèn)值是C1C2C3=001,而Byte9一般是69H,所以出廠白卡的控制字通常是FF078069H.
以上內(nèi)容是非接觸式IC卡Mifare S50與Mifare S70的讀寫控制的詳細(xì)介紹,在開發(fā)過程中可作為參考。
S50和S70非接觸式IC卡的每個(gè)扇區(qū)有兩組密碼KeyA和KeyB,所謂的“條件”就是針對(duì)這兩組密碼而言,包括“驗(yàn)證密碼A可以操作(KeyA)”、“驗(yàn)證密碼B可以操作(KeyB)”、“驗(yàn)證密碼A或密碼B都可以操作(KeyA|B)”、“驗(yàn)證哪個(gè)密碼都不可以操作(Never)”四種條件。
這些“條件”和“操作”的組合被分成8種情況,正好可以用3位二進(jìn)制數(shù)(C1、C2、C3)來表示。
數(shù)據(jù)塊(每個(gè)扇區(qū)除區(qū)尾塊之外的塊)的存取控制如下表所示:
C1C2C3=000(出廠默認(rèn)值)時(shí)最寬松,驗(yàn)證密碼A或密碼B后可以進(jìn)行任何操作;
C1C2C3=111無論驗(yàn)證哪個(gè)密碼都不能進(jìn)行任何操作,相當(dāng)于把對(duì)應(yīng)的塊凍結(jié)了;
C1C2C3=010和C1C2C3=101都是只讀,如果對(duì)應(yīng)的數(shù)據(jù)塊寫入的是一些可以給人看但不能改的基本信息,可以設(shè)為這兩種模式;
C1C2C3=001時(shí)只能讀和減值,電子錢包一般設(shè)為這種模式,比如用S50做的公交電子車票,用戶只能查詢或扣錢,不能加錢,充值的時(shí)候先改變控制位使卡片可以充值,充完值再改回來。
控制塊(每個(gè)扇區(qū)的區(qū)尾塊)的存取控制如下表所示:
密碼A是永遠(yuǎn)也讀不出來的,如果用戶的數(shù)據(jù)塊指定了驗(yàn)證密碼A卻忘了密碼A,也就意味著這個(gè)數(shù)據(jù)塊作廢了,但本扇區(qū)其他數(shù)據(jù)塊和其他扇區(qū)的數(shù)據(jù)塊不受影響;
存取控制總是可以讀出來的,只要?jiǎng)e忘了密碼A或密碼B;
存取控制的寫控制在設(shè)置時(shí)一定要小心,一旦弄成了“Never”,則整個(gè)扇區(qū)的存取條件再也無法改變,后悔都找不到地方,只能仰天長(zhǎng)嘆了;
C1C2C3=001(出廠默認(rèn)值)時(shí)最寬松,除了密碼A不能讀之外,驗(yàn)證了密碼A其他讀寫操作都可以進(jìn)行;
還有一個(gè)有意思的現(xiàn)象是當(dāng)C1C2C3=000、C1C2C3=010和C1C2C3=001時(shí),所有的操作都不使用密碼B,這時(shí)候密碼B占據(jù)的6個(gè)字節(jié)可以提供給用戶作為普通數(shù)據(jù)存儲(chǔ)用,相當(dāng)于每個(gè)扇區(qū)增加了6字節(jié)的用戶可用存儲(chǔ)容量。
由于卡片出廠的默認(rèn)值C1C2C3=001,所以對(duì)于新買來的卡片,不要使用密碼B進(jìn)行認(rèn)證,否則會(huì)導(dǎo)致區(qū)尾塊和數(shù)據(jù)塊都無法進(jìn)行任何操作。我測(cè)試過不同廠家的新卡片,有的驗(yàn)證密碼B后確實(shí)扇區(qū)內(nèi)的所有塊都無法操作,但有的卡片不能操作區(qū)尾塊,卻可以操作數(shù)據(jù)塊,本文以NXP的原裝卡為準(zhǔn)。當(dāng)然用戶可以放心,新卡不讓你驗(yàn)證密碼B而你卻驗(yàn)證了,不會(huì)對(duì)卡照成什么傷害,改回用密碼A驗(yàn)證,卡片還是可以正常使用的。
S50的每個(gè)扇區(qū)有4個(gè)塊,這四個(gè)塊的存取控制是相互獨(dú)立的,每個(gè)塊需要3個(gè)bit,四個(gè)塊共使用12個(gè)bit。在保存的時(shí)候,為了防止控制位出錯(cuò),同時(shí)保存了這12個(gè)bit的反碼,這樣一個(gè)區(qū)的存儲(chǔ)控制位在保存時(shí)共占用24bit的空間,正好是3個(gè)字節(jié)。我們前面說存取控制字有四個(gè)字節(jié)(區(qū)尾塊的Byte6~Byte9),實(shí)際上只使用的Byte6、Byte7和Byte8,Byte9沒有用,用戶可以把Byte9作為普通存儲(chǔ)空間使用。各塊控制位存儲(chǔ)格式如下:
S70的前32個(gè)數(shù)據(jù)塊結(jié)構(gòu)和S50完全一致。后8個(gè)數(shù)據(jù)塊每塊有15個(gè)普通數(shù)據(jù)塊和一個(gè)控制塊。顯然如果每個(gè)數(shù)據(jù)塊塊單獨(dú)控制將需要8字節(jié)的控制字,控制塊中放不下這么多控制字。解決的辦法是這15個(gè)數(shù)據(jù)塊分為三組,塊0~4為第一組,塊5~9為第二組,塊10~15為第三組,每組共享三個(gè)控制位,也就是說每組控制位C1C2C3控制5個(gè)數(shù)據(jù)塊的存取權(quán)限,從而與前32個(gè)扇區(qū)兼容。
聯(lián)系人: | 張經(jīng)理 |
---|---|
電話: | 400-023-6659 |
傳真: | 023-68798110 |
Email: | 843718693@qq.com |
QQ: | 843718693 |
微信: | Lotus-Smart |
微博: | lotusreader |
旺旺: | 諾塔斯智能科技有限公司 |
地址: | 重慶市江北區(qū)宏帆路36號(hào)宏帆天地1棟6樓 |