問題タブ [contactless-smartcard]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
smartcard - カード ID を取得する APDU コマンド
カード ID の 7 バイトを取得する APDU コマンドはどれですか? ISO14443 レイヤーで T=CL (ISO7816) プロトコルを使用します。カードの検出では、カード ID の 4 バイトしか確認できません。これは、カード ID を取得するための APDU コマンドであることがわかりました。たとえば、その:
0xFF, 0xCA, 0x00, 0x00, 0x00
しかし、このコマンドの結果は:6E 00
です。APDU の仕様では、「クラスはサポートされていません」と回答
その後、その APDU コマンドが次のようになる可能性があること
0x00, 0xCA, 0x00, 0x00, 0x00
が6A 88
わかり6A XX
ました。88
あなたはそれについてどう思いますか?
ありがとうございました!
PS すべてのコマンドとして:CLA, INS, P1, P2, LenData, Data
他の私のコマンドは正常に動作します (sellect aplet やそれで動作するなど)、カード ID の取得のみの問題
tags - 安全なICなしでPN532を使用してタグをエミュレートできますか?
PN532でタグをエミュレートしようとしています。APIでタグのみをサポートし、LLCPやその他のP2Pプロトコルをサポートしないデバイスとインターフェイスするには、これが必要です。
ホストコントローラーを使用して読み取り/書き込みを処理したい。エミュレートされたタグタイプ(Mifare、Felicaなど)は問題ありませんが、私のソリューションには安全な要素が含まれていません。
MifareUltralightが理想的だと思います。暗号化(単純な読み取りと書き込みのみ)が含まれていないため、他のどの暗号よりも簡単にエミュレートできる可能性がありますか?
つまり、PN532でセキュアICを使用せずに、イニシエーター/リーダーからの読み取り/書き込みコマンドに応答できるタグをエミュレートすることは可能ですか?
tags - NFC リーダー : ACR122U-A9 はタグを保持していません
NFC リーダーと共に提供される SDK は機能せず、SDK で利用可能なツールを使用してデータ/タグを書き込むことができません。主な問題は、別のツールを使用して書き込まれたデータがデバイスに永続的に保持されないことです。Android デバイスを使用してタグをスキャンすると、リーダーがクリアされ、データを再度書き込む必要があります。https://github.com/fkooman/nfcip-java/blob/master/nfcip-java/doc/ACR122_PN53x.txtの手順を確認して試しましたが、機能しません。
そのため、コンピューターからプラグが抜かれた場合でも、リーダーにデータ (タグ) を保持するために必要なコマンドを理解するための助けが必要です。リーダーはエミュレーション モードで動作している必要があり、タグを提供する必要があります。
android - ソフトウェア NFC によるカード エミュレーション
多くの質問を読んだ後、私はこれを投稿することにしました。Androidのストックバージョンはカードエミュレーション用のAPIをサポートしていないことを読みました。また、google/samsung によって管理されているキーのために、nfc コントローラーに埋め込まれた要素を保護するためのカスタム アプリケーションを作成することはできません。
カードをエミュレートする必要があります (mifare や desfire など)。私が見ることができるオプションは、ソフトウェアを介してそれを行うことです。私は ACR122U リーダーを持っており、私が持っている Nexus-S で NFC P2P モードが正常に動作することをテストしました。
1) nexus s の NFC コントローラー (pn532) が mifare 4k カードをエミュレートできると言うサイトに出会いました。これが本当なら、このエミュレートされたカードに apdu コマンドを書き込んだり読み込んだりできますか? (おそらく、cyanogenmod のような modded rom を使用する場合)
2)リーダーから送信されたapduコマンドを読み取り、適切な応答を生成するAndroidアプリケーションを作成できますか(完全ではない場合は、ある程度まで)。そのためには、nexus s に cynagenmod をパッチする必要があることを調べました。誰かがこの方法でカードをエミュレートしようとしましたか?
アクセス制御会社の製品がモバイル アプリケーションを提供しているため、これが可能であることがわかります。たとえば、http ://www.assaabloy.com/en/com/Products/seos-mobile-access/
android - Samsung Galaxy S4 は CyanogenMod のスマート カード エミュレーション (NFC) と互換性がありますか?
私は Samsung Galaxy S4 と SCM SDI010 カード リーダーを持っています。私の目標は、S4 でスマート カードをエミュレートし、カード リーダーで読み取れるようにすることです。
ここで説明されている PKI アプレットの例を適用しようとしました(CyanogenMod 10.2 をインストールし、S4 で se-emulator を開始し、Linux PC で se-pki-client を開始します)。しかし、接続の確立は、リーダー側で「SCARD_W_UNRESPONSIVE_CARD」または「SCARD_W_UNPOWERED_CARD」例外で失敗します。
- S4 の NFC チップがカード エミュレーション用の CyanogeMod でサポートされているかどうか知っている人はいますか?
- 上記のチュートリアルで直接説明されていない、S4 でカード エミュレーションを明示的に有効にする必要がありますか?
よろしくお願いします
java - javax.smartcardio を介したファントム NFC タグの読み取り
私は tikitag Web サービス用の古い NFC リーダーを持っています (これは後でtouchatagに改名され、2012 年頃に最終的に放棄されました)。Web サイトが利用できなくなったため、元の tikitag/touchatag ドライバーを見つけることができなくなりました。いくつか検索した結果、この NFC リーダーは一般的な ACS ACR122U USB リーダーであることがわかり、ここから適切なドライバーをインストールしました。私のシステムは Windows 7 (64 ビット) です。
まず、NFC タグへの高レベルの読み取りおよび書き込みアクセスのために、 NFC ツール ライブラリを試しました。サポートされていないタグが検出されたというエラーが表示されました。リーダーにはタグが存在せず、遠く離れていてもタグはありませんでした。hereに示すように、他の開発者もこのライブラリで同じエラーに遭遇したようです。このタグは無限に検出されることに注意してください (したがって、一度検出された後に消えるわけではありません)。
必要な低レベル コードを別のクラスにコピーしました (つまり、NFC ツール ライブラリから独立しています)。このコードは以下にあります (同様のコードはチュートリアルにもあります)。
このコードは、NFC ツール ライブラリを使用した場合とまったく同じ「ファントム」タグを検出します。したがって、この問題は NFC ツール ライブラリとは無関係のようです (エラー レポートに対するライブラリ開発者の回答によると)。何か不足しているか、問題がインストールされているドライバー、NFC リーダー ハードウェア、または javax.smartcardio の未修正のバグに関連している (可能性の高い順にリストされています)。
前述のドライバーをアンインストールし、Windows 7 に適切なドライバー (「Microsoft Usbccid Smartcard Reader (WUDF)」と呼ばれる) を独自にインストールさせてみましたが、上記と同じエラーが発生します。私は 1 つしか持っていないので、他のリーダーは試していません。
(注:Windowsデバイスの概要にあるこのNFCリーダーの名前は、「ACS ACR122」または関連するものではなく、「CCID USBリーダー」です。これが重要かどうかはわかりませんが、言及したいと思いました。)
誰かがこの問題に遭遇し、それを解決できましたか?
アップデート
OK、シミュレートされたタグが検出された後、CLF コマンドをリーダーに送信しようとしました。つまり、接続された PICC の ATS を取得します ( ACR122U マニュアルの p. 11 ):
しかし、エラー応答コード (0x63 0x00) が引き続き表示されます。私が間違っている可能性があることについてのアイデアはありますか?
android - Android NFC IsoDep 読み取りファイルの内容
ISO/IEC 14443 タイプ Aカードから情報を読み取ろうとしています。
Android アプリNFC TagInfoでカードを分析した後、アプリケーション (AID: 15845F) に必要な特定のファイル (ファイル ID: 01) があることがわかりました。
私はすでにカードに接続してアプリケーションを選択することができました.
しかし、2 番目のクエリはエラー コード 6A86 (パラメーター P1-P2 が正しくありません) で失敗します。私はすでに多くのことをグーグルで検索し、さまざまなドキュメントを見つけました (例: http://bit.ly/180b6tB )が、 P1とP2の正しい値を実装する方法を理解できませんでした。
編集
NFC TagInfoを使用するカードのタグ タイプ: ISO/IEC 14443-4 スマート カード、Mifare DESFire EV1 (MF3ICD81)
ソース コードで使用されている SELECT コマンドは、実際には失敗しませんでしたが、代わりに 9000 応答を返しました。これが、すべてが正常に機能していると想定した理由です。
あなたは、NFC TagInfoが DF 名などの正しい値を提供しないと述べました。値0x313538343546は正しいですか?どのようにしてそれを見つけましたか?
必要なデータを取得する方法を簡単に説明していただけますか? 正しい DF 名、AID などを読み取るために使用できる他の Android アプリはありますか? 基本的に、1 つのアプリケーションから 1 つのファイルを取得する必要があります。必要に応じて、 NFC TagInfoで収集された情報のスクリーンショットを提供することもできます。
編集2
私はコマンドを書き直しましたが、(あなたが提案したように) それらを APDU ラッパーに保持しました。したがって、アプリケーションの選択用とファイルの選択用の2つの異なるコマンドができました。
ネイティブの Mifire- Desfireコマンドのチュートリアルを検索してもうまくいかなかったので、次のチュートリアルに固執します。
このチュートリアルでは、私が無効にしたカード認証を提供し、また、ネイティブ コマンドを実行するための適切な方法ではないトランシーバーメソッドを使用していますか? ネイティブ コマンドの実行に使用される方法 (コード スニピットを含む) はどれですか? どの Android クラスを使用すればよいですか?
チュートリアルで提供されているクラスを書き直して、pastebinにアップロードしました。クラスを実行した後、次の結果が得られました。
この時点で、私はかなり立ち往生しており、次に何をすべきかわかりません。必要なデータを取得するために、実際にエラーが発生したか、クエリでどのような変更を実行する必要がありますか?
nfc - Mifare 1k 値ブロック操作
Mifare Standard 1k カードに問題があります。アドレス 62 のデータ ブロックに値ブロック ( 00000001FFFFFFFE0000000100FF00FF
- 有効?) を作成しました。値ブロックの値は 1 であると想定され、値ブロックのアドレスは 0 です。
データ ブロック 2 のアクセス ビットを次のように変更しました。
- C1=1
- C2=1
- C3=0
他の 2 つのデータ ブロックには、ファクトリ アクセス ビットがあります。セクター トレーラーのアクセス ビットも変更され、次のようになります。
- C1=0
- C2=1
- C3=1
したがって、対応するセクタ (16 番目のセクタ) のアクセス ビットは3B478C69
(有効?) です。
問題は、そのブロックで値ブロック固有の機能 (インクリメント、デクリメントなど) を実行できないことです。常に6A81
応答として「カードがブロックされているか、コマンドがサポートされていません」というメッセージが表示されます。私が使用している APDU は ですFFF5C13E0400000001
。
android - Mifare DESFire EV1 との Android NFC 通信
Nexus 4 と最新の Android API レベル 18 を使用して Mifare DESFire EV1 AES タグと通信すると、頭が痛くなります。このタイプのタグを読み書きするには、NXP ネイティブ プロトコルに従って、次の手順に従う必要があります。
- アプリケーションを選択
- 認証する
- 書き込みまたは読み取り
そのために、ISO 14443-4プロパティと I/O 操作へのアクセスを提供する Android のIsoDepクラスを使用します。非常に奇妙な点は、select application ネイティブ コマンドを送信すると、予期しない応答が返されることです。私がAIDを持っていると想像してください。F4013D
考えられるすべての応答は、1 バイトの長さ (success0x00
または error_code) である必要があり、2 バイト以上であってはなりません。したがって、0x6E
成功応答の前はまったく予想外です。常に発生するとは限りません。発生せず正常に動作する場合、アプリケーションの選択と認証プロセスは正常に動作します。ただし、一度認証された書き込みコマンドは正しい動作をしません。すべての書き込みコマンド0xAF
は、成功の代わりに PICC からの で終了します0x00
。PICC は、予期しないときに余分なデータを予期しているようです (正しい長さのペイロードを送信します)。他のコマンドを送信すると、0xCA
(Command Aborted) エラー コードが表示されます。
通常、これらのタイプのコマンドを個人用リーダー (非 Android NFC) で送信すると、常に正常に動作します。Android NFC API の何かがおかしくなっているようです。データを解釈したり変更したりしない生のデータ トランスポーターである必要があります。
ISO 7816-4 APDU 構造でも試してみましたが、同じ結果が得られました。興味深いことに、Galaxy Nexus では select アプリケーションの奇妙な応答は発生しませんが、書き込みコマンドは常に 1 つです。