認証方法を使用することが可能です。
まず、MifareClassic4kのデータシートは次のとおりです。
http://www.nxp.com/documents/data_sheet/MF1S703x.pdf
あなたにとって重要な章は次のとおりです。
要するに、書き込み保護は次のように機能します。
Mifare Classicは、それぞれ4 * 16バイトのセクターに分割されます(最初の1k程度にのみ適用されます...上位のブロックは少し異なりますが、仕様に記載されています)。これらの64バイトのうち16バイトは認証/保護に使用されます。カードのセクターごとに、次のことを行います。
- KeyAを使用してセクターを認証する
- セクターの予告編を読んでください。
- セクタートレーラーのアクセスビットを変更します。
- セクタートレーラーをカードに書き戻します。
MifareClassicsのKeyA値は次のとおりです。
byte [] KEY_DEFAULT = {(byte)0xFF、(byte)0xFF、(byte)0xFF、(byte)0xFF、(byte)0xFF、(byte)0xFF};
フォーマットされていない、工場出荷時の新しいカードの場合。
byte [] KEY_MIFARE_APPLICATION_DIRECTORY = {(byte)0xA0、(byte)0xA1、(byte)0xA2、(byte)0xA3、(byte)0xA4、(byte)0xA5};
カードの最初のセクター用
byte [] KEY_NFC_FORUM =
{(byte)0xD3、(byte)0xF7、(byte)0xD3、(byte)0xF7、(byte)0xD3、(byte)0xF7};
他のすべてのセクターの場合。
重要:元のKeyAキーをカードに書き戻す必要があります。これらが上記のキーと異なる場合、カードはNdefに準拠しなくなります。
変更されたアクセスビットには、2つの選択肢があります。
KeyAの読み取りのみを有効にします。これにより、取り消すことのできない100%の書き込み保護が提供されます。
KeyAの読み取りとKeyBの読み取り/書き込みを有効にします。また、KeyBに秘密鍵を保存します。これにより、秘密のKeyBを使用して書き込み保護されたセクターを認証し、カードの保護を解除できます。
背景:Androidは、上記のKeyA値を使用してのみNdef形式のタグを認証します。Ndef検出コードがKeyBを単独で試行することはないため、KeyBを独自の目的に使用できます。