M1卡區塊控制位詳解

M1卡區塊控制位詳解
Mifare 1S50/Mifare 1S70
每一個扇區的密碼和存取控制都是獨立的,能夠根據實際須要設定各自的密碼及存取 控制。存取控制爲4個字節,共32位,扇區中的每一個塊(包括數據塊和控制塊)的存取條件是由密碼和存取控制共同決定的,在存取控制中每一個塊都有相應的三個控制位,定義以下:
塊0: C10 C20 C30
塊1: C11 C21 C31
塊2: C12 C22 C32
塊3: C13 C23 C33
三個控制位以正和反兩種形式存在於存取控制字節中,決定了該塊的訪問權限(如 進行減值操做必須驗證KEY A,進行加值操做必須驗證KEY B,等等)。三個控制 位在存取控制字節中的位置,以塊0爲例:
注意高字節和低字節順序不一樣。
 
 
(一),以經常使用設置"08 77 8F 69"控制條件爲例,先搞清楚它――具備的訪問權限。
 
一、對"08 77 8F 69"值進行計算,該值定位於各區塊3的6,7,8,9四個字節內,字節6=08,字節7=77, 字節8=8F,   字節9=69(默認值,不予計算)。
 
二、例如:字節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
三、參照表2及表4算法,字節6的所有二進制值取反,字節7的低四位二進制值取反,字節8不變,
 
獲得:
字節號
對應二進制值
位置
高4位
位置
低4位
字節6
字節7
字節8
0 0 0 0 1 0 0 0
0 1 1 1 0 1 1 1
1 0 0 0 1 1 1 1
C2Y
C1Y
C3Y
1 1 1 1
0 1 1 1
1 0 0 0
C1Y
C3Y
C2Y
0 1 1 1
1 0 0 0
1 1 1 1
所屬塊位
   
塊3塊2塊1塊0
 
塊3塊2塊1塊0
四、對以上6,7,8字節的存取/控制二進制已取反值,依照表2,表4塊位轉換爲各塊控制值,以下表:
塊3位
字節7,字節6,字節8 = C13,C23,C33 = C1Y,C2Y,C3Y = 0 1 1
塊2位
塊1位
塊0位
字節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位值時,其值不可用!
二、高位和低位的順序是不同的。高位從上向下是C2,C1,C3。低位是C1,C3,C2
 
 
 
 
7
6
5
4
3
2
1
0
6
c23_b
c22_b
c21_b
c20_b
c13_b
c12_b
c11_b
c10_b
7
c13
c12
c11
c10
c33_b
c32_b
c31_b
c30_b
8
c33
c32
c31
c30
c23
c22
c21
c20
9
               
 
 
 
五、查對訪問權限(數據存取控制依照表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值將沒法實現卡的任何操做!!!
 
一、修改塊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"默認值。
 
二、修改塊3的KeyA和KeyB值:控制位08 77 8F 69值寫成功後,驗證KeyB正確後方可改寫KeyA和KeyB新密碼。在密碼操做模式鍵入要改寫區塊之先前密碼B(先前密碼爲默認值時,則不需改動和加載),加載後反回數據操做模式,再進行讀值,KeyA和KeyB值的改寫。
 
三、修改塊0~塊2中數據:由新的控制條件08778F69可知,要修改數據,必須先驗證KeyB,故先設置密碼操做爲KeyB認證方式,加載後再返回數據操做模式,對要修改的數據塊進行值的改寫操做。
 
四、上例中分析了"08 77 8F 69"的訪問條件及其改寫步驟,對用戶的其它控制條件亦可參照應用。
 
塊012權限說明:
 
 
塊3權限說明:
復旦微電子文檔中說明以下:
 
比較常見的控制位
FF 07 80 69
默認值
字節6 FF= 1 1 1 1 1 1 1 1
字節7 07= 0 0 0 0 0 1 1 1
字節8 80= 1 0 0 0 0 0 0 0
 
字節號
對應二進制值
位置
高4位
位置
低4位
字節6
字節7
字節8
1 1 1 1 1 1 1 1
0 0 0 0 0 1 1 1
1 0 0 0 0 0 0 0
C2Y
C1Y
C3Y
0 0 0 0
0 0 0 0
1 0 0 0
C1Y
C3Y
C2Y
0 0 0 0
1 0 0 0
0 0 0 0
所屬塊位
   
塊3塊2塊1塊0
 
塊3塊2塊1塊0
 
塊3位
字節7,字節6,字節8 = C13,C23,C33 = C1Y,C2Y,C3Y = 0 0 1
塊2位
塊1位
塊0位
字節7,字節6,字節8 = C12,C22,C32 = C1Y,C2Y,C3Y = 0 0 0
字節7,字節6,字節8 = C11,C21,C31 = C1Y,C2Y,C3Y = 0 0 0
字節7,字節6,字節8 = C10,C20,C30 = C1Y,C2Y,C3Y = 0 0 0
權限解釋:數據塊012的權限爲000,表示keyA和keyB均可讀可寫。權限最高。
 
塊3爲001,密碼A爲任什麼時候候不可讀出,能夠經過AB寫。
密碼B能夠經過AB讀寫。
控制字節能夠經過AB讀寫。
 
-------------------------------------------------------------------------------------------------------------
08 77 8F 69【適合實際使用,權限控制相對較好】
字節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
 
字節號
對應二進制值
位置
高4位
位置
低4位
字節6
字節7
字節8
0 0 0 0 1 0 0 0
0 1 1 1 0 1 1 1
1 0 0 0 1 1 1 1
C2Y
C1Y
C3Y
1 1 1 1
0 1 1 1
1 0 0 0
C1Y
C3Y
C2Y
0 1 1 1
1 0 0 0
1 1 1 1
所屬塊位
   
塊3塊2塊1塊0
 
塊3塊2塊1塊0
 
塊3位
字節7,字節6,字節8 = C13,C23,C33 = C1Y,C2Y,C3Y = 0 1 1
塊2位
塊1位
塊0位
字節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
權限解釋:數據塊012的權限爲110,密碼AB均可讀,只有密碼B可寫。密碼B可增減。好比,可在實際業務中密碼A用於消費,密碼B用於充值。
塊3
011,密碼A和密碼B任什麼時候間不容許讀,只能用密碼B寫。控制字節AB均可讀,只有B可寫。
 
07 8F 0F 69【冰凍,永遠只可讀不可寫】
 
00 F0 FF 69【自殺,永遠不可讀不可寫】自殺模式還有不少,把控制字寫的不認識也沒法使用,在實際中新手常常乾的事,因此必定要控制好。
 
對數據塊的操做
讀 (Read):讀一個塊;
寫 (Write):寫一個塊;
加(Increment):對數值塊進行加值;
減(Decrement):對數值塊進行減值;
存儲(Restore):將塊中的內容存到數據寄存器中;
傳輸(Transfer):將數據寄存器中的內容寫入塊中;
停止(Halt):將卡置於暫停工做狀態;
相關文章
相關標籤/搜索