2015-09-18 76 views
5

我想要實現的是將APDU命令發送到MIFARE Classic 1K卡以更改其A和B鍵。如何發送APDU到Mifare Classic 1k卡?

我能夠與卡建立連接並使用默認密鑰(FFFFFFFFFFFF)讀取塊0和塊1.我使用HID MifareSamples應用程序。

現在,我想將A鍵從默認值更改爲其他值。我發現了一個解決方案在這裏,在計算器(Mifare Change KEY A and B)這表明我要發送此APDU:

新密鑰A = 00 11 22 33 44 55訪問位不被覆蓋密鑰B不 使用(所以FF FF FF FF FF FF)

=>寫入扇區尾00 11 22 33 44 55 FF 0F 00 FF FF FF FF FF FF FF

我找到了一個很好的工具JSmartCard資源管理器,它允許你將APDU發送卡。然後我讀PCSC規範3.2.2.1.4加載密鑰命令章並理解該命令可能應該是這樣的:

FF 82 00 00 18 00 11 22 33 44 55 FF 0F 00 FF FF FF FF FF FF FF 

但不幸的是JSmartCard工具失敗,「命令不被允許(沒有當前EF)」。

我做錯了什麼?我怎樣才能改變鑰匙?

+0

您是否嘗試過使用RFIDIoT庫? – Ellipticat

回答

4

首先,MIFARE Classic卡不使用APDU命令。因此,您不會將APDU發送到卡上,而是發送到讀卡器(將其轉換爲MIFARE Classic命令)。讀卡器處理的APDU命令通常以類字節FF開頭。

在MIFARE Classic卡中,密鑰(A和B)以及每個扇區的訪問條件都存儲在扇區尾部(每個扇區的最後一個塊)中。 MIFARE Classic 1K卡有16個扇區,每個扇區有4個塊。

因此,如果您想要設置扇區0的訪問條件&的密鑰,您需要將它們寫入塊3(扇區0的最後一個塊)。在PC/SC標準存儲卡定義了寫命令(UPDATE BINARY)爲:

FF D6 XXYY 10 ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 

XXYY是塊地址和ZZ...是數據要被寫入到該塊。

扇區尾部的格式(參見this answer for further details):

<key A> | access bits | general purpose byte | <key B> 

所以爲了設置

  • 鍵A = 00 11 22 33 44 55
  • 鍵B = 66 77 88 99 AA BB
  • 存取位= 787788(扇區尾部只能使用密鑰B寫入;訪問位/ GPB可以使用密鑰A或B讀取;數據塊cks只能使用密鑰B寫入;數據塊可以與
  • GPB設置爲69

爲扇區0密鑰A或B)被讀取,將使用下面的寫入命令:

FF D6 0003 10 001122334455 787788 69 66778899AABB 

請注意,可以不部分地更新該部門預告片,你總是必須構建和寫出整個部門預告片。

+0

清晰準確的答案! – ManuelH

相關問題