Mifare l射频卡初始值及其相关说明
Mifare l射頻卡初始值及其相關說明
【本說明是Mifare 1 卡訂貨合同不可缺少的技術性文檔附件】
電氣特性:
容量為8K位EEPrOM;
● 分為16個扇區,每個扇區為4塊,每塊16個字節,以塊為存取單位;
● 每個扇區有獨立的一組密碼及訪問控制;
● 每張卡有唯一序列號,為32位;
● 具有防沖突機制,支持多卡操作;
● 無電源,自帶天線,內含加密控制邏輯和通訊邏輯電路;
● 工作溫度:-20℃~50℃;
● 工作頻率:13.56MHZ;
● 通信速率:106KBPS;
● 讀寫距離:可達10mm(與讀寫器以及卡天線尺寸有關);
● 數據保存期為10年,可改寫10萬次,讀不限次。
?
工作原理:
卡片由一個卷繞天線和特定用途集成電路模塊組成。其中,模塊由一個高速(106KB波特率)的RF接口。一個控制單元和一個8K位E2PROM組成。讀寫器向MF1卡發出一組固定頻率(13.56MHZ)的電磁波,卡片內有一個LC串聯諧振電路,其頻率與讀寫器發射的頻率相同,在電磁波的激勵下,LC諧振電路產生共振,從而使諧振電容內有了電荷,在這個電容的另一端,接有一個單向導通的電子泵,將電容內的電荷送到模塊存儲電容內儲存,當所積累的電荷達到2V以上時,此電容可作為電源向模塊電路提供工作電壓,將卡內數據發射出去或接收讀寫器的數據。
?
存儲結構:
MF1卡分為16個扇區,每區有4塊(塊0~塊3),共64塊,按塊號編址為0~63。第0扇區的塊0(即絕對地址塊0)用于存放芯片商,卡商相關代碼,已經固化不可更改。其他各扇區的塊0,塊1,塊2為數據塊,用于存貯用戶數據;塊3為各扇區控制塊,用于存放密碼A,存取控制條件設置,密碼B。各區控制塊結構相同,如下所示:
| 各區控制塊3 結構 | 字節號 | 0 1 2 3 4 5 | 6 7 8 9 | 10 11 12 13 14 15 |
| 控制值 | FF FF FF FF FF FF FF | 07 80 69 | FF FF FF FF FF FF | |
| 說明 | 密碼A(0~5字節) | 存取控制(6~9字節) | 密碼B(10~15字節) |
?
控制屬性:
每個扇區的用戶密碼和存取控制條件都是獨立設置的,可以根據實際需要設定各自的密碼及存取控制。在存取控制中,每個塊都有三個控制位相對應,用以決定某數據塊或控制塊的讀寫條件,定義為:"CXxy",見表1所示。
其中CX代表每塊控制位號(C1~C3),x代表某塊所屬扇區號(0~15), y代表該扇區內某塊號。例如C1x2 即為x扇區內塊2的第1控制位,余此類推。
注:控制位的設置存放在存取控制字節中,見表2所示。
表1:控制位定義"CXxy"
| 塊0 | C1x0 | C2x0 | C3x0 | 用戶數據塊,(0區0塊除外) |
| 塊1 | C1x1 | C2x1 | C3x1 | 用戶數據塊 |
| 塊2 | C1x2 | C2x2 | C3x2 | 用戶數據塊 |
| 塊3 | C1x3 | C2x3 | C3x3 | 密匙存取控制塊 |
?
表2:三個控制位在存取控制字節中的位置(注:" _b" 表示取反)
| 位號 字節號 ? | bit 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| 字節6 | C2x3_b | C2x2_b | C2x1_b | C2x0_b | C1x3_b | C1x2_b | C1x1_b | C1x0_b |
| 字節7 | C1x3 | C1x2 | C1x1 | C1x0 | C3x3_b | C3x2_b | C3x1_b | C3x0_b |
| 字節8 | C3x3 | C3x2 | C3x1 | C3x0 | C2x3 | C2x2 | C2x1 | C2x0 |
| 字節9 | BX7 | BX6 | BX5 | BX4 | BX3 | BX2 | BX1 | BX0 |
| 所屬塊 | 塊3控制位 | 塊2控制位 | 塊1控制位 | 塊0控制位 | 塊3控制位 | 塊2控制位 | 塊1控制位 | 塊0控制位 |
?
各扇區數據塊0~塊2的三個控制位以正反兩種形式存在于塊3的存取控制字節中,它決定了該塊的訪問權限(例如進行減值及初始化值操作必須驗證KEY A,進行加值操作必須驗證KEY B,等等)。三個控制位在存取控制字節(6~9字節)中的權限如下(陰影區的存取控制為廠商初始值;字節9為備用字節,默認值為69):
注釋:表3中,KeyA|B表示密碼A或密碼B,Never表示沒有條件實現。
表3:數據塊的存取控制權限(x=0~15扇區; y=塊0,塊1,塊2)
| C1xy C2xy C3xy | 讀 | 寫 | 加值 | 減值,初始化 |
| 0 0 0 | KeyA|B | KeyA|B | KeyA|B | KeyA|B |
| 0 1 0 | KeyA|B | Never | Never | Never |
| 1 0 0 | KeyA|B | KeyB | Never | Never |
| 1 0 0 | KeyA|B | KeyB | KeyB | KeyA|B |
| 0 0 1 | KeyA|B | Never | Never | KeyA|B |
| 0 1 1 | KeyB | KeyB | Never | Never |
| 1 0 1 | KeyB | Never | Never | Never |
| 1 1 1 | Never | Never | Never | Never |
??
?例如,某區塊的3個存取控制位C1xy,C2xy,C3xy=000時(廠商預設的初始值,見陰影區),驗證密碼A或密碼B正確后可讀出/可寫入/可加值/減值及初始化操作。該初始值主要供制卡和發卡商檢測心片功能使用,確認所有讀寫/加密功能均正常(存取控制初始值"ff078069",請參考"步驟舉例"自行驗算)后,再依據使用需要和參照表4表5設置新的存取控制權限值,進行用戶數據操作和修改新的用戶密碼。
再如當某區塊0的存取控制位C10,C20,C30的設置均=100時,驗證密碼A或密碼B正確后可讀出其數據;只有驗證密碼B正確后才可允許改寫數據;不能進行加值,減值等操作。
以廠商初始值"FF 07 80 69"為例,說明存取控制條件對數據塊的影響。初始存取控制默認值(C1x0,C2x0,C3x0=000;C1x1,C2x1,C3x1=000;C1x2,C2x2,C3x2=000;C1x3,C2x3,C3x3=001)和KeyA,KeyB默認值(由廠商提供,通常為:ffffffffffff)。那么塊3中,廠商初始的存取控制值如下表所示:
表4:塊3中廠商初始存取控制值(-號表示需要取反)
| Bit# | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| 字節6 | 1- | 1- | 1- | 1- | 1- | 1- | 1- | 1- |
| 字節7 | 0 | 0 | 0 | 0 | 0- | 1- | 1- | 1- |
| 字節8 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| ? | CXx3 | CXx2 | CXx1 | CXx0 | CXx3 | CXx2 | CXx1 | CXx0 |
?
如果用戶要讀到塊1的內容,對照表4和查對表3可知,當存取控制C1x1,C2x1,C3x1=000時,必需正確校驗KEY A或KEY B后才可允許讀取塊1的內容,否則,MF1讀寫器會因校驗某區密碼出錯而無法讀取和傳送數據!以此類推,用戶要進行其它操作時,可根據存取條件,對照表2~4來決定其操作權限。
?? 表5列出了飛利浦公司對MF1卡的8種控制位設置值所對應的存取控制權限表,供發卡商及用戶設置MF1卡使用權限時參考,其釋義如下:
表5:塊3的存取控制權限(供發卡商及用戶設置權限時參考)
| 控制位設置值 | 密碼A權限 | 存取控制權限 | 密碼B權限 | |||||
| C1x3 | C2x3 | C3x3 | 讀 | 寫 | 讀 | 寫 | 讀 | 寫 |
| 0 | 0 | 0 | Never | KeyA | KeyA | Never | KeyA | KeyA |
| 0 | 1 | 0 | Never | Never | KeyA | Never | KeyA | Never |
| 1 | 0 | 0 | Never | KeyB | KeyA|B | Never | Never | KeyB |
| 1 | 1 | 0 | Never | Never | KeyA|B | Never | Never | Never |
| 0 | 0 | 1 | Never | KeyA | KeyA | KeyA | KeyA | KeyA |
| 0 | 1 | 1 | Never | KeyB | KeyA|B | KeyB | Never | KeyB |
| 1 | 0 | 1 | Never | Never | KeyA|B | KeyB | Never | Never |
| 1 | 1 | 1 | Never | Never | KeyA|B | Never | Never | Never |
例如:當塊3的存取控制位C13C23 C33 = 100時,表示:密碼A:不可讀(隱藏),驗證KEYB正確后,可寫(或更改);存取控制:驗證KEYA或KEYB正確后,可讀不可寫(寫保護);密碼B:不可讀,驗證KEYB正確后可寫。
又如:當塊3的存取控制位C13C23 C33 = 110或者111時,除存取控制值需要在驗證KEYA或KEYB正確后僅僅可讀外,其它如存取控制值的改寫,密碼A,密碼B的讀寫權限均被鎖死而無法訪問!
?
?
?
?
?
?
?
?
?
?
?
?
?
?
MF1卡修改各區塊控制位值和數據——舉例
(一),以常用設置"08 77 8F 69"控制條件為例,先搞清楚它――具有的訪問權限。
1、對"08 77 8F 69"值進行計算,該值定位于各區塊3的6,7,8,9四個字節內,字節6=08,字節7=77,
字節8=8F,字節9=69(默認值,不予計算)。
2、例如:字節6=08,對應其二進制值=00001000,則對6,7,8這三個字節進行二進制轉換結果見下表:
| 字節6 = 0 0 0 0 1 0 0 0 | 字節7 = 0 1 1 1 0 1 1 1 | 字節8 = 1 0 0 0 1 1 1 1 |
3、參照表2及表4算法,字節6的全部二進制值取反,字節7的低四位二進制值取反,字節8不變,得到:
| 字節號 | 對應二進制值 | 位置 | 高4位 | 位置 | 低4位 |
| 字節6 | 0 0 0 0 1 0 0 0 | C2Y | 1 1 1 1 | C1Y | 0 1 1 1 |
| 所屬塊位 | 塊3 塊2 塊1 塊0 | ? | 塊3 塊2 塊1 塊0 | ||
?
4、對以上6,7,8字節的存取/控制二進制已取反值,依照表2,表4塊位轉換為各塊控制值,如下表:
| 塊3位 | 字節7,字節6,字節8 = C13,C23,C33 = C1Y,C2Y,C3Y = 0 1 1 |
| 塊2位 | 字節7,字節6,字節8 = C12,C22,C32 = C1Y,C2Y,C3Y = 1 1 0 字節7,字節6,字節8 = C11,C21,C31 = C1Y,C2Y,C3Y = 1 1 0 字節7,字節6,字節8 = C10,C20,C30 = C1Y,C2Y,C3Y = 1 1 0 |
注意:高4位的各塊值=低4位的各塊值時,其值可用。高4位值≠低4位值時,其值不可用!
5、查對訪問權限(數據存取控制依照表3,塊3存取控制依照表5),該例"08 77 8F 69"的訪問權限為:
◆ 塊3 = 011:權限為:KeyA,KeyB均不可讀,驗證KeyB正確后可改寫KeyA和KeyB,驗證KeyA或KeyB正確后可讀"控制位"。在此可見密鑰KeyB的重要性,KeyB不正確是無法看到塊3控制值,更無法修改密鑰。
◆ 塊2 = 塊1 = 塊0 =110:權限為:驗證KeyA或KeyB后可讀該塊數據,減值以及初始化值,只有驗證KeyB 正確后才可改寫該塊數據,在此可以看到密鑰KeyB對改寫數據塊也起著關鍵性作用。
(二)、"08 77 8F 69" 控制條件設置步驟:
由(一)可知:KeyB設置后為不可讀,并且改寫數據和改寫控制位都需要正確驗證它,故KeyB設置后程序
操作員必須妥善保管KeyB值,否則以后改寫數據和控制位時,不正確的KeyB值將無法實現卡的任何操作!!!
1、修改塊3控制位的值:最初的各區塊3內的KeyA,KeyB都是廠商12個"F"默認值(KeyA在任何條件下均為不可讀,大部分讀寫機程序表現KeyA為未知的12個"0" ),在修改控制值時,先不要修改默認密碼KeyA和KeyB,在控制位修改成功后,再去更改新密碼值。即先對塊3的控制位進行修改(默認值FF 07 80 69改為新值08 77 8F 69)并執行寫操作。控制位寫成功后,KeyB亦為12個"0"不可讀了,但仍是隱藏的12個"f"默認值。
2、修改塊3的KeyA和KeyB值:控制位0877 8F 69值寫成功后,驗證KeyB正確后方可改寫KeyA和KeyB新密碼。在密碼操作模式鍵入要改寫區塊之先前密碼B(先前密碼為默認值時,則不需改動和加載),加載后反回數據操作模式,再進行讀值,KeyA和KeyB值的改寫。
3、修改塊0~塊2中數據:由新的控制條件08778F69可知,要修改數據,必須先驗證KeyB,故先設置密碼操作為KeyB認證方式,加載后再返回數據操作模式,對要修改的數據塊進行值的改寫操作。
4、上例中分析了"08 77 8F 69"的訪問條件及其改寫步驟,對用戶的其它控制條件亦可參照應用。
MF1卡常見問題及處理建議
① 盲目操作:造成某些區塊誤操作被鎖死不能再使用。應當仔細參考表3表5的控制權限后,予先得出操作后的結果是否適合使用要求,并且列出操作順序表單再操作。最好授權程序員對塊3的設置作專人操作。
② 丟失密碼:再讀寫時造成密碼認證出錯而不能訪問卡。特別要求在對MF卡進行塊3編程操作時,必須及時記錄相關卡號的控制值,KeyA,KeyB等,而且應當有專人管理密碼檔案。
③錯誤設置:對MF1卡的塊3控制塊了解不透徹,錯誤的理解造成設置造成錯誤的設置。依照表2可知,目前Mf1卡的控制塊僅只有8種數據塊訪問控制權限和8種控制塊設置權限,超出這16種權限的其他代碼組合,將直接引起錯誤設置而使卡片報廢!
④ 極端權限:當塊3的存取控制位C13C23 C33 = 110或者111時,稱為極端權限。除特殊應用外一般不被使用!啟用前認真權衡對密碼讀寫,存取控制的鎖死是否必要,否則,數據加密后即使有密碼也無法讀取被鎖死的數據區塊(看不見)!
⑤ 設備低劣:低劣的設備將直接影響卡的讀寫性能。對MF卡進行塊3編程操作的設備,特別要求其性能必須十分可靠,運行十分穩定!建議選用由飛利浦公司原裝讀寫模塊構建的知名讀寫機具!
⑥編程干擾:在對塊3進行編程操作時,不可以有任何的"IO"中斷或打擾!包括同時運行兩個以上程序干擾甚至PC機不良的開關電源紋波干擾等,否則,不成功的寫操作將造成某個扇區被鎖死的現象,致使該扇區再次訪問時出錯而報廢。
⑦ 數據出錯:在臨界距離點上讀卡和寫卡造成的。通常的讀卡,特別是寫卡,應該避免在臨界狀態(剛能讀卡的距離)讀卡。因為臨界狀態下的數據傳送是很不穩定的!容易引起讀寫出錯!
⑧ 人為失誤:例如,密碼加載操作失誤,誤將KeyA加載為KeyB;或者是誤將其他制卡廠約定的初始密碼值如a0a1a2a3a4a5,b0b1b2b3b4b5加載到本公司生產的MF1卡內;或者在初始狀態下(密碼A=000000000000【隱藏狀態,實際為ffffffffffff】,控制位=FF07 80 69,密碼B=ffffffffffff【可見】)若不經意地將KeyA=000000000000刪除后又重新輸入12個"0",并加載了它!這時無意中已將KeyA原來12個隱藏的"f",修改成了12個"0",其后果可想而知!
⑨ 卡片失效:讀寫均無數據傳送,讀寫器報告"尋卡錯誤"!卡片被超標扭曲,彎曲而造成內電路斷裂。
⑩ 讀寫距離過近:與用戶使用的讀寫器性能有關。標準型MF1卡的讀寫距離可達10cm(在飛利浦公司的標準讀寫機具上測試的最大距離),國產知名品牌讀寫器一般可達5-10cm。尺寸較小的匙扣卡,其讀寫距離當然比標準卡近許多,但只要可靠的讀寫距離≥5~10mm以上,一般不會影響正常使用!
?
制卡廠商責任與義務
1、MF1卡相關控制位的算法與設置,依據于飛利浦公司的《 Mifera 1 IC S50 》的PDF原始文檔,本文檔僅供客戶參考,如有不當之處,應以原始文檔為準!客戶可重點對照參考第12~15頁的原始英文說明;
2、MF1卡芯片電路均采用飛利浦公司原裝產品,品質可靠,性能穩定;
3、MF1卡均經嚴格的測試,保證出廠的正品率≥99。9%;
4、客戶在收到MF1卡的90天內,務必盡快使用廠商默認值對卡的所有區塊進行讀寫檢測,超期恕不受理;
5、如果在廠商默認狀態下(保持控制位存取控制值為FF078069,KeyA=KeyB=FFFFFFFFFFFF)不能正確讀寫數據,屬產品質量問題,請在驗收期內盡快與制卡商聯系!屬制卡工藝引起的,由制卡商負責解決;確屬芯片質量引起的,制卡商有義務聯系飛利浦公司的相關芯片供貨商協調解決;
6、如果客戶已經改寫了控制位的值(例如將默認值FF078069改寫為08778F69),表明客戶已經認可MF1卡質量,而后出現的操作失誤問題(例如丟失KeyB而不能再改寫數據塊等等),屬客戶責任,與供貨商產品質量無關!
7、通常,本廠生產的MF1卡內已具有廠商代碼和保修代碼,客戶返回有問題的MF1卡經檢測若非本廠卡,首次退還不予解決,在退卡登記名冊再次出現非本廠卡,則一律沒收,敬請體諒!
8、制卡商可依據客戶要求,義務提供飛利浦公司相關《 Mifera 1 IC S50 》等原始文檔(英文PDF文檔)。
9、本廠技術性文檔為訂貨合同必須附件,客戶可以廣為散發傳播,但必須同意保證本文檔的完整和不被修改!
南京達華億卡軟件科技有限公司
南京市珠江路88號新世界中心A座3013室
025-84068188、84725266、86871177
總結
以上是生活随笔為你收集整理的Mifare l射频卡初始值及其相关说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文件透明加密,保护重要数据的安全性
- 下一篇: CTS测试流程