2

この記事に基づいて、Android で APDU を管理する mifare カードをエミュレートしようとしています。

rfidiot.py を使用して、mifare カードを読み取ると、次のようになります。

>  FF CA 00 00 00
<  CD EA 7D 2B 90 0 
    Tag ID: CDEA7D2B
    ATR: 3B8F8001804F0CA000000306030001000000006A

  Setting Mifare Key A: FFFFFFFFFFFF

  Authenticating to sector 00 with Mifare Key A (FFFFFFFFFFFF)

>  FF 82 20 00 06 FF FF FF FF FF FF
<  []  90 0 
>  FF 88 00 00 60 00
<  []  90 0 
    OK

  Dumping data blocks 01 to 01:

>  FF 88 00 01 60 00
<  []  90 0 
>  FF B0 00 01 01
<  []  6C 10
>  FF B0 00 01 10
<  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 0 
    01: 00000000000000000000000000000000 ................

カードをシミュレートする私のアプリでは、私は間違ったコンポートメントを得ました:

>  FF CA 00 00 00
<  08 F0 82 65 90 0 
    Tag ID: 08F08265
    ATR: 3B80800101

  Setting Mifare Key A: FFFFFFFFFFFF

  Authenticating to sector 00 with Mifare Key A (FFFFFFFFFFFF)

>  FF 82 20 00 06 FF FF FF FF FF FF
<  []  90 0 
>  FF 88 00 00 60 00
<  []  90 0 
    OK

  Dumping data blocks 01 to 01:

>  FF 88 00 01 60 00
<  []  90 0 
>  FF B0 00 01 01
<  []  69 81
    Failed: Command incompatible with file structure

FF B0 00 01 01 APDU コマンドでエラーが表示されます。そして、6981 APDUコマンドがどこから来たのかわかりません..

誰かがこの「バグ」について私を助けることができますか?

4

1 に答える 1

2

あなたがしようとしていることは不可能です... @NikolayElenkovが行ったことは、ISO 7816-4準拠のカードをエミュレートすることです。MIFARE Classic は ISO 7816-4 に準拠していません (通信に APDU コマンドと応答を使用しません)。実際、ISO 14443-4 にも準拠していません。ISO 14443-3 に加えて独自の暗号化を使用しています。

通信がリーダー側から APDU のように見えるという事実は、リーダーがデータを渡す前にすべての暗号化を取り除き、そのデータを「仮想」APDU 内にラップするためです。このように、MIFARE カードは、ISO 7816-4 準拠のカードのみを扱うことができるソフトウェアで使用できます。

于 2013-07-12T21:15:56.920 に答える