天天看點

M1卡修改各區塊控制位值和資料

(一),以常用設定"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 

位元組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

所 屬 塊 位 塊3 塊2 塊1 塊0

4、對以上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位值時,其值不可用!

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值:控制位08 77 8F 69值寫成功後,驗證KeyB正确後方可改寫KeyA和KeyB新密碼。在密碼操作模式鍵入要改寫區塊之先前密碼B(先前密碼為預設值時,則不需改動和加載),加載後反回資料操作模式,再進行讀值,KeyA和KeyB值的改寫。

3、修改塊0~塊2中資料:由新的控制條件08778F69可知,要修改資料,必須先驗證KeyB,故先設定密碼操作為KeyB認證方式,加載後再傳回資料操作模式,對要修改的資料塊進行值的改寫操作。

4、上例中分析了"08 77 8F 69"的通路條件及其改寫步驟,對使用者的其它控制條件亦可參照應用。