問題タブ [pcsc]

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.

0 投票する
2 に答える
2379 参照

smartcard - SmartMX ハイブリッド カード - MIFARE Classic へのアクセス方法

smartmx-m3b.03.d3-NX212A私は、MIFARE Classic 4k を含むSmartMX チップ (正確には) を搭載したハイブリッド スマート カードをたくさん持っています。カードの MIFARE 部分にアクセスしようとしましたが、Android でandroid.nfc.tech.MifareClassicタグにアクセスするのはかなり簡単な作業ですが、Windows でアクセスする方法がわかりません。このカードの MIFARE Classic にアクセスするには、PCSC Reader 固有のコマンドを探す必要がありますか? それとも、MIFARE クラシックのコマンドをラップする SmartMX チップ固有の APDU を探す必要がありますか?

0 投票する
1 に答える
634 参照

java - Java smartcardio で相互認証を試行した後に 0x6A88 エラーが発生する

私はJavaで相互認証を行おうとしていますが、これが私がやっていることです:

まず、チャレンジを要求して乱数を取得します。

次に、キー シード、enc、mac のすべてを計算し、相互認証コマンドを送信します。

私は常に 0x6A88 を受け取りますが、インターネットで「参照データまたは参照データが見つかりません」という意味であることがわかりました。

しかし、奇妙なことに、すでに C# で動作しているコードを Java に実装することを得意としており、それを一緒にテストし、キーを使用して同じデータを取得するなどしたところ、相互認証 ( 0x82) コマンドで 0x6A88 エラーが発生しました。

ここにいくつかのソース コードがあります。beginExclusive() と endExclusive() を使用して、または使用せずに試してみましたが、うまくいきませんでした。

相互認証を行うJavaで同じ問題が発生した人はいますか?

誰かが解決策を見つけましたか?

0 投票する
1 に答える
1416 参照

c# - Windows サービスとして実行中の PCSC.InvalidContextException

私は pcsc-sharp ライブラリを使用して小さなスマート カード スキャナ アプリケーションに取り組んできました。コンソール アプリケーションとして実行すると、アプリケーションは正常に動作します。コードは次のとおりです。

ただし、カードをスキャンしてデータベースを更新できるようにするために Windows サービスとして実行しようとすると、イベントが発生せず、サービスの開始時にクラッシュするように見えます。イベント ログに PCSC.InvalidContextException エラーが表示されます。サービスのコードはほぼ同じですが、サンプルは次のとおりです。

正常に動作しているように見える実際のデータベース ロジックを削除しました。コンテキスト変数を解放しようとしたり、モニターをスマート カードに接続しようとすると、クラッシュしていると思われます。

また、何らかのアクセス許可エラーが発生した場合に備えて、サービスを Local System アカウントの使用から Local Service の使用に変更しようとしたことも述べておく必要があります。

誰かが私が間違っている場所に光を当てることができれば、助けていただければ幸いです。私は PC/SC での作業に比較的慣れておらず、今のところこのプロジェクトでレンガの壁にぶつかったようです。

アップデート

問題を解決しました。Windows サービスはステートメントの使用を好まないことがわかりました。変数はブロックの最後に配置されるため、コンテキストが無効になっていました。

using ブロックはコメント アウトされ、変数の宣言はその場所で行われました。OnStart メソッドの新しいコードは次のとおりです。

うまくいけば、この情報は他の誰かに役立ちます。

0 投票する
0 に答える
2170 参照

c - PC/SC: C-API 呼び出しの使用時に「カードが処理されていません」

数週間前、大学のプロジェクトでスマート カードの実験を始めました。この演習は、健康保険証 (ドイツの「eGK」) を使用して保存されているものを見つけ、事前認証なしで読み取ることができる「公開」部分を読み取るのと同じくらい簡単でした。

幸いなことに、カードの構造は十分に文書化されており、文書はインターネットから簡単にダウンロードできます。基本的にやりたいことは、EF(MF / DF.HCA / EF.VD)を選択してデータを読み出すことです。読みたいファイルはバイナリファイルです。ドキュメントによると、最初の 2x4 バイトは、ファイルの 2 つの部分の開始/終了オフセットを表します。各パーツは gzip 圧縮された XML である必要があります。

最初に、pcsc-lite ツールの「スクリプト」を使用していくつかのコマンドを試し、それが機能するかどうか、妥当な結果が得られるかどうかを確認しました。これはすべてかなりうまくいきました:)

ご覧のとおり、これを読み取る (そして後で解凍する) には 400 バイトを超えるため、これを読み取るプログラムを作成する必要があると判断しました。このブログ投稿の助けを借りて: http://ludovicrousseau.blogspot.de/2010/04/pcsc-sample-in-c.html C を使用してカードに最初のコマンドをすぐに送信できました。プログラムは次のとおりです。

  1. コンテキストを確立する
  2. リーダーを取得します (プログラムは使用中のリーダーを出力し、それが唯一の適切なものです ;))
  3. カードを取得する (プロトコルは T=1)
  4. カードをリセットする
  5. PC/SC にトランザクションが必要であることを伝える
  6. コマンドを送信する
  7. 取引終了

SC に送信するフィールドは次のとおりです。

最初の 2 つのコマンドは正常に送信され、常に 0x90 0x00 が返されます。残念ながら、ReadOffsets-Transmit は「トランザクションに失敗しました」というエラーを返します。ログには次のように書かれています。

これが何を意味し、なぜそれが起こるのか誰にも分かりますか? 私は何を間違っていますか?

事前にどうもありがとうございました!

追記:お知らせがあります。towitoko ドライバーのソース コードに、デバッグ用の #ifdef がいくつか見つかりました。これで、より詳細なログ ファイルが作成されました。[[[]]]の部分はエラーログファイルのみです。ご覧のとおり、送信されたバイト数と受信されたバイト数にまったく違いはありません。

では、このエラー メッセージはどこから来たのでしょうか。

私が学んだもう 1 つのことは、このエラーは読者固有のものではないようだということです。このプログラムを友人の内蔵カード リーダー (Windows では Broadcom リーダーと表示されています) で試してみましたが、同じ結果が得られました。考えられる唯一のケースは私の C プログラムのエラーなので、基本的なマクロと接続部分を含むソース コードを次に示します。

Transmit-Part は、すべてのコマンドで同じように見えます。例:

編集: この編集が遅くなって申し訳ありません。この投稿のことをすっかり忘れていました。Javaでプログラムを書き直すことで、最終的に機能するようになりました。この質問に出くわす可能性のある人にとって、これは満足のいく答えではないことはわかっています。少なくとも、エラーが C コード内のどこかにあることを確認できます。プログラムが機能しない理由を誰かが知っている場合は、とにかく気軽に答えてください。私が犯した間違いを知りたいと思っています :) !

0 投票する
1 に答える
544 参照

rfid - APDU FF 88 00 が誤った長さを与える

何千もの MIFARE カードをエンコードした PC/SC コードがあります。HID OMNIKEY 5127 CK リーダーを使用していますが、認証できません。標準の 1K MIFARE カードの場合、トランスポート キーを次のようにロードします。

これは成功し、最初のブロックに対して認証します:

そしてそれは67 00を与えます。他の誰かがこれを見たことがありますか?

0 投票する
1 に答える
641 参照

linux - pcsc-lite : 一意のシリアル番号のない複数の ACR122T デバイス - Linux

複数の ACR122T スマート カード デバイスがあり、(ACS からの) 固有のシリアル番号はありません。pcsc-lite 内から接続されている物理スマート カードを知る必要があります。lsusb を使用して、物理デバイスがどの USB ポートにあるかを知っていますが、その USB ポート情報を SCardGetAttribute(SCARD_ATTR_DEVICE_UNIT) にマップする方法は?

pscs-lite API 内から USB ポート情報 (lsusb の結果) を読み取る方法が見つからないため、マップは OS レベルである必要があるようです。

この投稿では、スマートカード リーダー ACR122U には一意のシリアル番号 がありませんが、「その開発番号を使用して常に適切なリーダーを使用していることを確認する」という方法について言及しています。

どんな助けでも感謝します。ありがとう、フィル

0 投票する
1 に答える
6555 参照

java - pcsc -smartcard は UID を取得します

pcsc Java コードからカード UID / HCE Android デバイス UIDを読み取ろうとしています。しかし、次のエラーが表示されます

UID を取得しようとすると ATS ビットを取得できますが、このエラーが発生します。ここからコードを参照しました

コード

出力

以下参照 済み Mifare Ultralight の UID を SCL010 で取得

助けてください !

ありがとう

0 投票する
1 に答える
6912 参照

nfc - mifare カードのバイナリブロックを読み取るには?

リーダーから NFC カードを読み取るアプリケーションを開発しています。次のようなバイナリ ブロックを読み取るためのコードを知っています。

ブロック 4 の場合は 04、16 バイト データの場合は 10 です。私のカードには「TEST009996」というデータがあります。次のように、4 ~ 8 のバイナリ ブロックを読み取る 5 つのコードを実行します。

次の結果が得られました。

または16進数で:

結果を切り取ってデータを取得するアルゴリズムを作成する必要がありますか? より良い方法はありますか?


ソース:

http://downloads.acs.com.hk/drivers/en/API-ACR122U-2.02.pdf