0

各セクターのトレーラーを次のようにプリエンコードするサプライヤーから Mifare 4k カードを受け取ります。

FFFFFFFFFFFFFF078069FFFFFFFFFFFF

その際、サプライヤはアクセス ビットを に設定しFF0780、読み取りキー (キー A) と書き込みキー (キー B) は工場出荷時のデフォルトのままです。FFFFFFFFFFFF

pyscard とエンコーダ ACR1252 を使用して、新しい読み取りキー (キー A) と書き込みキー (キー B) とアクセス ビットを書き込もうとすると、文書化されていないエラー コードである応答コード "99" が返されます。これは、工場出荷時のブランク カードではこのエラーが発生しないため、アクセス ビットが変更されているために発生していると思われます。

この例では、キー A とキー B がFFFFFFFFFFFFあり、アクセス ビットが であるようにトレーラー ブロックを更新し787788ます。

write_data = [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x78, 0x77, 0x88, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
write_key = [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
# load write key
_, response_code, _ = cardservice.connection.transmit([0xFF, 0x82, 0x00, 0x01, 0x06, *write_key])
# authenticate write key
_, response_code, _ = cardservice.connection.transmit([0xFF, 0x86, 0x00, 0x00, 0x05, 0x01, 0x00, block, 0x61, 0x01])
# write data
_, response_code, _ = cardservice.connection.transmit([0xFF, 0xD6, 0x00, block, 0x10, *write_data])

サプライヤがアクセス ビットを設定したカードに対して応答コード 99 が返される理由は何ですか?

注: 認証は正常に機能します。失敗するのは書き込み手順だけです。

4

1 に答える 1