M1卡介绍
本文整理自網(wǎng)絡(luò)。
M1卡是指菲利浦下屬子公司恩智浦出品的芯片縮寫,全稱為NXP Mifare1系列,常用的有S50及S70兩種型號(hào),目前都有國產(chǎn)芯片與其兼容,屬于非接觸式IC卡。最為重要的優(yōu)點(diǎn)是可讀可寫并且安全性高的多功能卡。這些優(yōu)點(diǎn)與其自身的結(jié)構(gòu)密不可分。
主要指標(biāo)
容量為8K位EEPROM(Electrically Erasable Programmable Read-Only Memory,帶電可擦可編程只讀存儲(chǔ)器)
分為16個(gè)扇區(qū),每個(gè)扇區(qū)為4塊,每塊16個(gè)字節(jié),以塊為存取單位
每個(gè)扇區(qū)有獨(dú)立的一組密碼及訪問控制
每張卡有唯一序列號(hào),為32位
具有防沖突機(jī)制,支持多卡操作
無電源,自帶天線,內(nèi)含加密控制邏輯和通訊邏輯電路
數(shù)據(jù)保存期為10年,可改寫10萬次,讀無限次
工作溫度:-20℃~50℃(溫度為90%)
工作頻率:13.56MHZ
通信速率:106KBPS
讀寫距離:10mm以內(nèi)(與讀寫器有關(guān))
存儲(chǔ)結(jié)構(gòu)
1、M1卡分為16個(gè)扇區(qū),每個(gè)扇區(qū)4塊(塊0~3),共64塊,按塊號(hào)編址為0~63。第0扇區(qū)的塊0(即絕對(duì)地址0塊)用于存放廠商代碼,已經(jīng)固化,不可更改。其他各扇區(qū)的塊0、塊1、塊2為數(shù)據(jù)塊,用于存貯數(shù)據(jù);塊3為控制塊,存放密碼A、存取控制、密碼B。每個(gè)扇區(qū)的密碼和存取控制都是獨(dú)立的,可以根據(jù)實(shí)際需要設(shè)定各自的密碼及存取控制。存貯結(jié)構(gòu)如下表所示:
| 塊0 | IC卡廠家信息 | 數(shù)據(jù)塊 | 0 | |
| 扇區(qū)0 | 塊1 | 數(shù)據(jù)塊 | 1 | |
| 塊2 | 數(shù)據(jù)塊 | 2 | ||
| 塊3 | 密碼A存取控制密碼B | 控制塊 | 3 | |
| 塊0 | 數(shù)據(jù)塊 | 4 | ||
| 扇區(qū)1 | 塊1 | 數(shù)據(jù)塊 | 5 | |
| 塊2 | 數(shù)據(jù)塊 | 6 | ||
| 塊3 | 密碼A存取控制密碼B | 控制塊 | 7 | |
|
∶ ∶ ∶ |
||||
| 0 | 數(shù)據(jù)塊 | 60 | ||
| 扇區(qū)15 | 1 | 數(shù)據(jù)塊 | 61 | |
| 2 | 數(shù)據(jù)塊 | 62 | ||
| 3 | 密碼A存取控制密碼B | 控制塊 | 63 |
2、第0扇區(qū)的塊0(即絕對(duì)地址0塊),它用于存放廠商代碼,已經(jīng)固化,不可更改。
3、每個(gè)扇區(qū)的塊0、塊1、塊2為數(shù)據(jù)塊,可用于存貯數(shù)據(jù)。
數(shù)據(jù)塊可作兩種應(yīng)用:
用作一般的數(shù)據(jù)保存,可以進(jìn)行讀、寫操作。
用作數(shù)據(jù)值,可以進(jìn)行初始化值、加值、減值、讀值操作。
4、每個(gè)扇區(qū)的塊3為控制塊,包括了密碼A、存取控制、密碼B。具體結(jié)構(gòu)如下:
| 各區(qū)控制塊3結(jié)構(gòu) | 字節(jié)號(hào) | 012345 | 6789 | 101112131415 |
| 控制值 | FFFFFFFFFFFF | FF078069 | FFFFFFFFFFFF | |
| 說明 | 密碼A(0~5字節(jié)) | 存取控制(6~9字節(jié)) | 密碼B(10~15字節(jié)) |
密碼A(6字節(jié))存取控制(4字節(jié)) 密碼B(6字節(jié))
5、每個(gè)扇區(qū)的密碼和存取控制都是獨(dú)立的,可以根據(jù)實(shí)際需要設(shè)定各自的密碼及存取控制。存取控制為4個(gè)字節(jié),共32位,扇區(qū)中的每個(gè)塊(包括數(shù)據(jù)塊和控制塊)的存取條件是由密碼和存取控制共同決定的,在存取控制中每個(gè)塊都有相應(yīng)的三個(gè)控制位,定義如下:
表:控制位定義"CXxy"(x=0~15扇區(qū); y=塊0,塊1,塊2)
| 塊0 | C1x0 | C2x0 | C3x0 | 用戶數(shù)據(jù)塊,(0區(qū)0塊除外) |
| 塊1 | C1x1 | C2x1 | C3x1 | 用戶數(shù)據(jù)塊 |
| 塊2 | C1x2 | C2x2 | C3x2 | 用戶數(shù)據(jù)塊 |
| 塊3 | C1x3 | C2x3 | C3x3 | 密匙存取控制塊 |
例如C1x0中的C代碼這是控制位,1代表第一位,0代表是塊0的控制位。
三個(gè)控制位以正和反兩種形式存在于存取控制字節(jié)中,決定了該塊的訪問權(quán)限(如進(jìn)行減值操作必須驗(yàn)證KEY A,進(jìn)行加值操作必須驗(yàn)證KEY B,等等)。三個(gè)控制位在存取控制字節(jié)中的位置
表:三個(gè)控制位在存取控制字節(jié)中的位置(注:"_b"表示取反)
| 字節(jié)號(hào)|位號(hào) | bit 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| 字節(jié)6 | C2x3_b | C2x2_b | C2x1_b | C2x0_b | C1x3_b | C1x2_b | C1x1_b | C1x0_b |
| 字節(jié)7 | C1x3 | C1x2 | C1x1 | C1x0 | C3x3_b | C3x2_b | C3x1_b | C3x0_b |
| 字節(jié)8 | C3x3 | C3x2 | C3x1 | C3x0 | C2x3 | C2x2 | C2x1 | C2x0 |
| 字節(jié)9 | BX7 | BX6 | BX5 | BX4 | BX3 | BX2 | BX1 | BX0 |
| 所屬塊 | 塊3控制位 | 塊2控制位 | 塊1控制位 | 塊0控制位 | 塊3控制位 | 塊2控制位 | 塊1控制位 | 塊0控制位 |
以塊0為例,對(duì)塊0的控制:
|
bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
字節(jié)6 |
C20_b |
C10_b |
||||||
|
字節(jié)7 |
C10 |
C30_b |
||||||
|
字節(jié)8 |
C30 |
C20 |
||||||
|
字節(jié)9 |
(注:C10_b表示C10取反)
存取控制(4字節(jié),其中字節(jié)9為備用字節(jié))結(jié)構(gòu)如下所示:
|
bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
字節(jié)6 |
C23_b |
C22_b |
C21_b |
C20_b |
C13_b |
C12_b |
C11_b |
C10_b |
|
字節(jié)7 |
C13 |
C12 |
C11 |
C10 |
C33_b |
C32_b |
C31_b |
C30_b |
|
字節(jié)8 |
C33 |
C32 |
C31 |
C30 |
C23 |
C22 |
C21 |
C20 |
|
字節(jié)9 |
(注:_b表示取反)
6、數(shù)據(jù)塊(塊0、塊1、塊2)的存取控制如下:
|
控制位(X=0..2) |
訪問條件(對(duì)數(shù)據(jù)塊0、1、2) |
|||||
|
C1X |
C2X |
C3X |
Read |
Write |
Increment |
Decrement, transfer, Restore |
|
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 |
1 |
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 |
(KeyA|B表示密碼A或密碼B,Never表示任何條件下不能實(shí)現(xiàn))
例如:當(dāng)塊0的存取控制位C10 C20 C30=1 00時(shí),驗(yàn)證密碼A或密碼B正確后可讀;驗(yàn)證密碼B正確后可寫;不能進(jìn)行加值、減值操作。
7、控制塊(塊3)的存取控制與數(shù)據(jù)塊(塊0、1、2)不同,它的存取控制如下:
|
密碼A |
存取控制 |
密碼B |
||||||
|
C13 |
C23 |
C33 |
Read |
Write |
Read |
Write |
Read |
Write |
|
0 |
0 |
0 |
Never |
KeyA|B |
KeyA|B |
Never |
KeyA|B |
KeyA|B |
|
0 |
1 |
0 |
Never |
Never |
KeyA|B |
Never |
KeyA|B |
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|B |
KeyA|B |
KeyA|B |
KeyA|B |
KeyA|B |
|
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 |
例如:當(dāng)塊3的存取控制位C13 C23 C33=1 00時(shí),表示:
密碼A: 不可讀,驗(yàn)證KEYB正確后可寫(更改)。
存取控制:不可寫,驗(yàn)證KEYA或KEYB正確后可讀。
密碼B: 不可讀,驗(yàn)證KEYB正確后可寫。
工作原理
卡片的電氣部分只由一個(gè)天線和ASIC(Application Specific Integrated Circuit)組成。
天線:卡片的天線是只有幾組繞線的線圈,很適于封裝到IS0卡片中。
ASIC:卡片的ASIC由一個(gè)高速(106KB波特率)的RF接口,一個(gè)控制單元和一個(gè)8K位EEPROM(Electrically Erasable Programmable Read-Only Memory,帶電可擦可編程只讀存儲(chǔ)器)組成。
工作原理:讀寫器向M1卡發(fā)一組固定頻率的電磁波,卡片內(nèi)有一個(gè)LC串聯(lián)諧振電路,其頻率與訊寫器發(fā)射的頻率相同,在電磁波的激勵(lì)下,LC諧振電路產(chǎn)生共振,從而使電容內(nèi)有了電荷,在這個(gè)電容的另一端,接有一個(gè)單向?qū)ǖ碾娮颖茫瑢㈦娙輧?nèi)的電荷送到另一個(gè)電容內(nèi)儲(chǔ)存,當(dāng)所積累的電荷達(dá)到2V時(shí),此電容可做為電源為其它電路提供工作電壓,將卡內(nèi)數(shù)據(jù)發(fā)射出去或接取讀寫器的數(shù)據(jù)。
復(fù)位應(yīng)答(Answer to request)
M1射頻卡的通訊協(xié)議和通訊波特率是定義好的,當(dāng)有卡片進(jìn)入讀寫器的操作范圍時(shí),讀寫器以特定的協(xié)議與它通訊,從而確定該卡是否為M1射頻卡,即驗(yàn)證卡片的卡型。
防沖突機(jī)制 (Anticollision Loop)
當(dāng)有多張卡進(jìn)入讀寫器操作范圍時(shí),防沖突機(jī)制會(huì)從其中選擇一張進(jìn)行操作,未選中的則處于空閑模式等待下一次選卡,該過程會(huì)返回被選卡的序列號(hào)。
選擇卡片(Select Tag)
選擇被選中的卡的序列號(hào),并同時(shí)返回卡的容量代碼。
三次互相確認(rèn)(3 Pass Authentication)
選定要處理的卡片之后,讀寫器就確定要訪問的扇區(qū)號(hào),并對(duì)該扇區(qū)密碼進(jìn)行密碼校驗(yàn),在三次相互認(rèn)證之后就可以通過加密流進(jìn)行通訊。(在選擇另一扇區(qū)時(shí),則必須進(jìn)行另一扇區(qū)密碼校驗(yàn)。)
對(duì)數(shù)據(jù)塊的操作
讀 (Read):讀一個(gè)塊;
寫 (Write):寫一個(gè)塊;
加(Increment):對(duì)數(shù)值塊進(jìn)行加值;
減(Decrement):對(duì)數(shù)值塊進(jìn)行減值;
存儲(chǔ)(Restore):將塊中的內(nèi)容存到數(shù)據(jù)寄存器中;
傳輸(Transfer):將數(shù)據(jù)寄存器中的內(nèi)容寫入塊中;
中止(Halt):將卡置于暫停工作狀態(tài);
M1卡運(yùn)作機(jī)理
連接讀寫器→尋卡→識(shí)別卡(獲取卡序列號(hào))→從多卡中選一張卡→向卡中緩沖區(qū)裝載密碼→驗(yàn)證密碼→進(jìn)行讀寫→關(guān)閉連接
即(代碼說明)
Open_USB→rf_request→rf_anticoll→rf_select→rf_load_key→rf_authentication→(/a_hex)→rf_read/rf_write→(hex_a)→Close_USB
如果概括來說的話,主要也就四部分:開關(guān)連接、尋卡、驗(yàn)證密碼、讀取。
基本操作規(guī)則
(1)程序開始,調(diào)用rf_init函數(shù)初始化串口。
(2)尋卡,調(diào)用rf_card;
相當(dāng)于連續(xù)調(diào)用三個(gè)函數(shù):
rf_request
rf_anticoll
rf_select
注:調(diào)用高級(jí)函數(shù)對(duì)卡進(jìn)行操作時(shí),無需此步驟。
(3)對(duì)單個(gè)扇區(qū)操作,順次執(zhí)行A~D;
對(duì)多個(gè)扇區(qū)操作,循環(huán)執(zhí)行A~E;
A、選定要操作的扇區(qū);
B、裝載密碼,調(diào)用rf_load_key;
C、驗(yàn)證密碼,調(diào)用rf_authentication;
D、進(jìn)行操作,包括讀寫及值操作。
E、調(diào)用rf_halt。
(4)關(guān)閉串口,調(diào)用rf_exit。程序正常退出或因錯(cuò)誤退出之前,要使用函數(shù);否則再次執(zhí)行初始化串口時(shí)將出錯(cuò)。
M1卡功能模式
1.尋卡模式:
尋卡模式分三種情況:IDLE模式、ALL模式及指定卡模式(0,1,2 均是int類型,是方法參數(shù),下同)。
0——表示IDLE模式,一次只對(duì)一張卡操作;
1——表示ALL模式,一次可對(duì)多張卡操作;
2——表示指定卡模式,只對(duì)序列號(hào)等于snr的卡操作(高級(jí)函數(shù)才有)【不常用】
也就是說,我們一次也可以同時(shí)操作多張卡。
對(duì)于多卡操作,其實(shí)際真正執(zhí)行操作的還是一張卡。讀寫器能識(shí)別多張卡的序列號(hào)(但注意識(shí)別出的順序是不定的,并且最多也就能識(shí)別4張卡,因?yàn)榭ǒB放的厚度太厚,會(huì)超出讀寫器的識(shí)別范圍),并一一進(jìn)行操作。
所以由此看出,多卡操作的意義并不大。但我建議大家還是設(shè)置為1好了。
2.密碼驗(yàn)證模式:
0——KEYSET0的KEYA
4——KEYSET0的KEYB
M1卡可以在驗(yàn)證密碼時(shí)選擇密碼類型(A/B)。【其實(shí)M1卡有3套密碼(KEYSET0、KEYSET1、KEYSET2),共6個(gè)密碼(用0~2、4~6來表示這六個(gè)密碼),目的是為了適應(yīng)不同讀寫器。而這里我們用的是KEYSET0的2個(gè)密碼】
M1卡密碼機(jī)制
這可以說是M1卡的精髓了,也是M1卡最為復(fù)雜的地方,希望大家耐心看完。
(請(qǐng)先看明白M1卡結(jié)構(gòu))如上所說,在存取控制中每個(gè)塊都有相應(yīng)的三個(gè)控制位,它們的定義如下:
塊0:C10C20C30
塊1:C11C21C31
塊2:C12C22C32
塊3:C13C23C33
一個(gè)扇區(qū)的三個(gè)數(shù)據(jù)塊,我們可以利用密碼機(jī)制對(duì)它們分別進(jìn)行權(quán)限控制。數(shù)據(jù)塊(塊0、塊1、塊2)的存取控制如下:
例如:當(dāng)塊0的存取控制位C10 C20 C30=100時(shí),驗(yàn)證密碼A或密碼B正確后可讀;驗(yàn)證密碼B正確后可寫;不能進(jìn)行加值、減值操作。
那么M1卡修改密碼的方法是rf_changeb3
參數(shù):
icdev:通訊設(shè)備標(biāo)識(shí)符
_SecNr:扇區(qū)號(hào)(0~15)
_KeyA:密碼A
_B0:塊0控制字,低3位(D2D1D0)對(duì)應(yīng)C10、C20、C30
_B1:塊1控制字,低3位(D2D1D0)對(duì)應(yīng)C11、C21、C31
_B2:塊2控制字,低3位(D2D1D0)對(duì)應(yīng)C12、C22、C32
_B3:塊3控制字,低3位(D2D1D0)對(duì)應(yīng)C13、C23、C33
_Bk:保留參數(shù),取值為0
_KeyB:密碼B
返回:成功則返回0
由上我們看出_B0、_B1、_B2、_B3分別控制塊0、塊1、塊2、塊3。
由圖我們可知_B0、_B1、_B2的可取值為 0、10、100、110、1、11、101、111。
這里大家一定要注意一點(diǎn):
不能裝載密碼到M1卡某一扇區(qū)后再更改那扇區(qū)的密碼(最好連接完讀寫器后直接更改密碼),否則更改密碼會(huì)失敗而凍結(jié)扇區(qū)。如果不慎這樣了,解決的辦法是完成一次讀寫操作,再更改密碼。
控制塊(塊3)的存取控制與數(shù)據(jù)塊(塊0、1、2)不同,它的存取控制如下:
_B3的取值與_B0相同。
存取控制舉例
例1:塊3的初始化值為:
KeyA=A0、A1、A2、A3、A4、A5
控制塊=FF、07、80、69
KeyB=B0、B1、B2、B3、B4、B5
| 字節(jié) | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 | 權(quán)限 | 二進(jìn)制 |
| Byte6 | C2X3_b | C2X2_b | C2X1_b | C2X0_b | C1X3_b | C1X2_b | C1X1_b | C1X0_b | FF | 1 1 1 1 1 1 1 1 |
| Byte7 | C1X3 | C1X2 | C1X1 | C1X0 | C3X3_b | C3X2_b | C3X1_b | C3X0_b | 07 | 0 0 0 0 0 1 1 1 |
| Byte8 | C3X3 | C3X2 | C3X1 | C3X0 | C2X3 | C2X2 | C2X1 | C2X0 | 80 | 1 0 0 0 0 0 0 0 |
| Byte9 | BX7 | BX6 | BX5 | BX4 | BX3 | BX2 | BX1 | BX0 | 69 | 0 1 1 0 1 0 0 1 |
得出存取控制位如下:
| 塊0 | C1X0 | C2X0 | C3X0 | 0 0 0 |
| 塊1 | C1X1 | C2X1 | C3X1 | 0 0 0 |
| 塊2 | C1X2 | C2X2 | C3X2 | 0 0 0 |
| 塊3 | C1X3 | C2X3 | C3X3 | 0 0 1 |
例2:塊3的初始化值為:
KeyA=A0、A1、A2、A3、A4、A5
控制塊=08、77、8F、00
KeyB=B0、B1、B2、B3、B4、B5
| 字節(jié) | Bit7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 | 權(quán)限 | 二進(jìn)制 |
| Byte6 | C2X3_b | C2X2_b | C2X1_b | C2X0_b | C1X3_b | C1X2_b | C1X1_b | C1X0_b | 08 | 0 0 0 0 1 0 0 0 |
| Byte7 | C1X3 | C1X2 | C1X1 | C1X0 | C3X3_b | C3X2_b | C3X1_b | C3X0_b | 77 | 0 1 1 1 0 1 1 1 |
| Byte8 | C3X3 | C3X2 | C3X1 | C3X0 | C2X3 | C2X2 | C2X1 | C2X0 | 8F | 1 0 0 0 1 1 1 1 |
| Byte9 | BX7 | BX6 | BX5 | BX4 | BX3 | BX2 | BX1 | BX0 | 00 | 0 0 0 0 0 0 0 0 |
得出存取控制位如下:
| 塊0 | C1X0 | C2X0 | C3X0 | 1 1 0 |
| 塊1 | C1X1 | C2X1 | C3X1 | 1 1 0 |
| 塊2 | C1X2 | C2X2 | C3X2 | 1 1 0 |
| 塊3 | C1X3 | C2X3 | C3X3 | 0 1 1 |
M1卡使用注意事項(xiàng)
快速識(shí)別EM卡,HID卡和MF卡
如果是一面平,一面代坡并且底面有一排數(shù)字的為EM卡,剩下兩張應(yīng)該是平的,其中一張應(yīng)該是另一張的二倍厚,那么厚的那張是HID卡,薄的是MF卡。M1卡寫數(shù)據(jù)是直接向控制塊里寫,但能寫的前提是扇區(qū)的密碼已得到確認(rèn).向控制塊中寫數(shù)據(jù)時(shí),首先要理解控制塊中控制位的用途.避免寫入無效數(shù)據(jù)后,扇區(qū)被鎖死。每個(gè)控制塊共16個(gè)字節(jié),前6個(gè)和后6個(gè)字節(jié)是密碼KeyA和KeyB,中間4個(gè)字節(jié)是控制位.如果寫錯(cuò)控制位,即使你知道KeyA/KeyB,也再也不能訪問這個(gè)扇區(qū)了。
所謂三次互相認(rèn)證是只在進(jìn)行真正的數(shù)據(jù)交換前,卡和讀寫器之間會(huì)傳輸一些隨機(jī)產(chǎn)生的密鑰,在確認(rèn)這一次通訊的密鑰后,真正的數(shù)據(jù)才會(huì)使用這些密鑰加密后進(jìn)行通訊.密鑰產(chǎn)生過程就是三次認(rèn)證.由于每一次密鑰不同,所以即使是進(jìn)行相同數(shù)據(jù)的通訊,在卡和讀卡器之間的每次通訊信號(hào)都是不同的,沒法捕捉。這三次認(rèn)證跟密鑰KEYA或KEYB是有關(guān)的。的確需要事先設(shè)定讀卡機(jī)和卡片的密鑰一致才能認(rèn)證。認(rèn)證時(shí)通過隨機(jī)數(shù)和KEYA或KEYB產(chǎn)生一個(gè)后續(xù)通信需要的流加密種子,當(dāng)然讀卡機(jī)和卡片的加密算法和該種子需保持一致。
MF1卡常見問題及處理建議:
① 盲目操作:造成某些區(qū)塊誤操作被鎖死不能再使用。應(yīng)當(dāng)仔細(xì)參考表3表5的控制權(quán)限后,予先得出操作后的結(jié)果是否適合使用要求,并且列出操作順序表單再操作。最好授權(quán)程序員對(duì)塊3的設(shè)置作專人操作。
② 丟失密碼:再讀寫時(shí)造成密碼認(rèn)證出錯(cuò)而不能訪問卡。特別要求在對(duì)MF卡進(jìn)行塊3編程操作時(shí),必須及時(shí)記錄相關(guān)卡號(hào)的控制值,KeyA,KeyB等,而且應(yīng)當(dāng)有專人管理密碼檔案。
③ 錯(cuò)誤設(shè)置:對(duì)MF1卡的塊3控制塊了解不透徹,錯(cuò)誤的理解造成設(shè)置造成錯(cuò)誤的設(shè)置。依照表2可知,目前Mf1卡的控制塊僅只有8種數(shù)據(jù)塊訪問控制權(quán)限和8種控制塊設(shè)置權(quán)限,超出這16種權(quán)限的其他代碼組合,將直接引起錯(cuò)誤設(shè)置而使卡片報(bào)廢!
④ 極端權(quán)限:當(dāng)塊3的存取控制位C13 C23 C33 = 110或者111時(shí),稱為極端權(quán)限。除特殊應(yīng)用外一般不被使用!啟用前認(rèn)真權(quán)衡對(duì)密碼讀寫,存取控制的鎖死是否必要,否則,數(shù)據(jù)加密后即使有密碼也無法讀取被鎖死的數(shù)據(jù)區(qū)塊(看不見)!
⑤ 設(shè)備低劣:低劣的設(shè)備將直接影響卡的讀寫性能。對(duì)MF卡進(jìn)行塊3編程操作的設(shè)備,特別要求其性能必須十分可靠,運(yùn)行十分穩(wěn)定!建議選用由飛利浦公司原裝讀寫模塊構(gòu)建的知名讀寫機(jī)具!
⑥ 編程干擾:在對(duì)塊3進(jìn)行編程操作時(shí),不可以有任何的‘IO‘中斷或打擾!包括同時(shí)運(yùn)行兩個(gè)以上程序干擾甚至PC機(jī)不良的開關(guān)電源紋波干擾等,否則,不成功的寫操作將造成某個(gè)扇區(qū)被鎖死的現(xiàn)象,致使該扇區(qū)再次訪問時(shí)出錯(cuò)而報(bào)廢。
⑦ 數(shù)據(jù)出錯(cuò):在臨界距離點(diǎn)上讀卡和寫卡造成的。通常的讀卡,特別是寫卡,應(yīng)該避免在臨界狀態(tài)(剛能讀卡的距離)讀卡。因?yàn)榕R界狀態(tài)下的數(shù)據(jù)傳送是很不穩(wěn)定的!容易引起讀寫出錯(cuò)!
⑧ 人為失誤:例如,密碼加載操作失誤,誤將KeyA加載為KeyB;或者是誤將其他制卡廠約定的初始密碼值如a0a1a2a3a4a5,b0b1b2b3b4b5加載到本公司生產(chǎn)的MF1卡內(nèi);或者在初始狀態(tài)下(密碼A=000000000000【隱藏狀態(tài),實(shí)際為ffffffffffff】,控制位=FF 07 80 69,密碼B=ffffffffffff【可見】)若不經(jīng)意地將KeyA=000000000000 刪除后又重新輸入12個(gè)‘0‘,并加載了它!這時(shí)無意中已將KeyA原來12個(gè)隱藏的‘f‘,修改成了12個(gè)‘0‘,其后果可想而知!
⑨ 卡片失效:讀寫均無數(shù)據(jù)傳送,讀寫器報(bào)告‘尋卡錯(cuò)誤‘!卡片被超標(biāo)扭曲,彎曲而造成內(nèi)電路斷裂。
⑩ 讀寫距離過近:與用戶使用的讀寫器性能有關(guān)。標(biāo)準(zhǔn)型MF1卡的讀寫距離可達(dá)10cm(在飛利浦公司的標(biāo)準(zhǔn)讀寫機(jī)具上測(cè)試的最大距離),國產(chǎn)知名品牌讀寫器一般可達(dá)5-10cm。尺寸較小的匙扣卡,其讀寫距離當(dāng)然比標(biāo)準(zhǔn)卡近許多,但只要可靠的讀寫距離≥5~10mm以上,一般不會(huì)影響正常使用!
實(shí)際應(yīng)用
M1 卡的格式化方法:
例如,M1 卡的某一扇區(qū)的塊3數(shù)據(jù)為:
KEYA:FFFFFFFFFFFF
控制值:FF078069
KEYB:FFFFFFFFFFFF
現(xiàn)要格式化卡(假如驗(yàn)證密碼A)為:
KEYA 輸入 FFFFFFFFFFFF
KEYB 輸入 123456781234
則可以格式化
KEYA 輸入 123456781234
KEYB 輸入 FFFFFFFFFFFF
也可以格式化
即先用輸入的KEYA與卡中控制塊的KEYA比較,驗(yàn)證失敗再用輸入的KEYB與卡中控制塊的KEYB比較,驗(yàn)證失敗則失敗,否則成功。
總結(jié)
- 上一篇: 什么是事务成功提交的命令
- 下一篇: 漏洞扫描软件OpenVas怎么用