2

カスタム キーで Mifare Classic 1 K タグを書き込むためのソリューションを見つける必要があります。私はそれを書くことができません。私はすべてのオプションを試しましたが、残念ながら常に「IOException: Transceive Failed」というエラーが発生します。

以下は私のコードスニペットです:

byte custom_key[]={
  (byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff
};

// 16 bytes of Data. Otherwise it was throwing IllegalArgumentException .
byte[] data="Hello world of N".getBytes();
getMfc().connect();

if(getMfc().authenticateSectorWithKeyA(4, custom_key)) {
  getMfc().writeBlock(3, data); // Here I receive IOException all the time.
} else {
  getMfc().close();
}

この点で私を助けてください。Mifare Classic 1 K Tag を自分のキーで書き込む必要があります。

4

2 に答える 2

6

セクター 4 に対して認証を行ってから、ブロック 3 への書き込みを試みます。ブロック 3 はセクター 0 にあるため、これは常に失敗します。代わりに、セクター 0 への認証を試してください。

ところで:セクター トレーラー (ブロック 3 など) にランダム データを書き込まないでください。回復する方法がなく、セクターがロックされる可能性があります。

于 2012-10-31T10:00:25.133 に答える
0

私の理解が正しければ、問題はセクター 4 のブロック 3 を編集する方法です。
認証後、ブロック 3 に書き込もうとします。ただし、
ブロック番号はすべてのブロックで 0 から始まるわけではありません。セクター 0 にはブロック 0 ~ 3 があり、セクター 1 にはブロック 4 ~ 7 があります。セクター 4 のブロック オフセットは 4*4=16 です。したがって、書き込みたいブロックはブロック 19 です。

このオフセットを計算する関数が用意されています。
セクター 4 のブロック 3 に書き込むには、次のようにします: getMfc().writeBlock(getMfc(). sectorToBlock
(4)+3, data)

受け入れられた回答は、質問者がセクター0を超えるブロックインデックスを理解できないままにする代替手段を提供するだけです。

于 2015-01-15T08:17:08.520 に答える