2

NFC を介して RFID カードを読み取りたいのですが、このカードはコロンビアのボゴタの地方交通システムからのものです。これが可能であることはわかっています。これを行う Android アプリをダウンロードしたからです。

これまでの進捗状況...電話をカードの上に置くと、ACTION_TECH_DISCOVERED インテントでアプリが起動し、カードの UID などを読み取ることができますが、必要な情報、特にカードにお金。

私はスタックオーバーフローで、アクセスしたいアプリケーションを見つけてADPUコマンドを送信する必要があることを読んでいますが、Androidアプリでカードを探索しているため、カードにはアプリケーションがないようです。 0 件のアプリケーションが見つかりました。そのため、どこでこの情報を入手すればよいかわかりません。

私のカードの技術情報は次のとおりです。

  • タグ ID: 08 8B E2 D1 RF
  • 技術: タイプ A (ISO/IEC 14443 タイプ A)
  • タグタイプ: ISO/IEC 14443-4 スマートカード
  • ATQA: 0004
  • サク: 20
  • 履歴バイト: 01112003
  • 技術クラス: android.nfc.tech.IsoDep、android.nfc.tech.NfcA

ありがとう!

4

1 に答える 1

3

私がしなければならないことは、アクセスしたいアプリケーションを見つけてADPUコマンドを送信することであるとスタックオーバーフローで[読んだ]。

正しい、それはまさにあなたがする必要があることです。この情報 (つまり、カードの通信プロトコルの仕様) を取得したら、次のようにします。

Tag tag = ... // TODO: get tag handle from intent
IsoDep isoDep = IsoDep.get(tag);
if (isoDep != null) {
    isoDep.connect();

    byte[] response = isoDep.transceive(SELECT_APDU); // SELECT_APDU = 00 A4 0400 <Lc> <APPLICATION ID>

    // TODO: send further APDU commands according to the protocol specification
    //response = isoDep.transceive(APDU);

    isoDep.close();
}

[...]しかし、Androidアプリでカードを探索すると、常にFound 0 Applicationsと表示されるため、私のカードにはアプリケーションがないようです。

これは通常、**スキャナー アプリに認識されている**カードにアプリケーションがないことを意味するだけです。多くの ISO-DEP カードには、カード上で利用可能なアプリケーションの公的に読み取り可能なディレクトリがありません。(一部のカードには EF.DIR または類似のものがある場合があります。)

そのため、どこでこの情報を入手すればよいかわかりません。

そうです、それは通常トリッキーな部分です。これにはいくつかのアプローチがあります。

  1. 仕様については、搬送システムのオペレーターにお問い合わせください。
  2. カードに EF.DIR (または同様のもの) があり、そこに何かがリストされているかどうかを確認します (ただし、カードのプロトコルはまだ明らかにされていないため、これは出発点にすぎません)。
  3. カードに GlobalPlatform セキュリティ ドメイン/カード マネージャーがあるかどうか、およびそのカード マネージャーがデフォルトのキーでアクセスできるかどうかを確認します (Google が詳しい情報を見つけるのに役立ちます)。存在する場合、GP は、インストールされているアプリケーションを一覧表示するコマンドを提供します。プロトコルについては、2.に同じ。
  4. カードにアクセスできることがわかっているアプリをリバース エンジニアリングします。(これはあなたの国では違法であるか、アプリのライセンス契約で禁止されている可能性があることに注意してください。)
于 2014-04-15T15:32:55.503 に答える