問題タブ [winscard]
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.
apdu - ScardTransmit は常にエラー 16 を返します
Winscard ライブラリを使用して Windows でアプリケーションを構築し、非接触型スマートカード リーダーと通信しようとしています。デバイスに接続できますが、scardtransmit を使用してデータを送信しようとすると、エラー 16 が発生します。以下に使用しているコードを添付しました。
smartcard - HID iClass カードに印刷された番号の読み取り
HID iClass(2ks) カードに印字されている数字を読みたいです。WinScard.dll を使用して、UID と ATR を読み取ることができました。
調査を行った結果、印刷された番号はプログラムされたデータであり、PIN によって保護されている可能性があるという結論に達しました。私はここで正しいですか?もしそうなら、この印刷された数字をどのように読むのですか?
どんな助けでも大歓迎です。前もって感謝します。
c++ - SCardGetStatusChange 初回例外
スレッドで次のコードを使用しています。
どこ:
すべてが正しく動作しますが、この関数は多くのエラーを生成します:
app.exe の 0x7510C42D での初回例外: Microsoft C++ 例外: unsigned long at memory location 0x05A0F3A8.
Visual Studio 2012 と Windows-7 64 ビットを使用しています。
助けてください。
ありがとう!
smartcard - メモリーカードなどの同期専用スマートカードを読み書きする方法
同期インターフェイスのみをサポートする IC メモリ カードを持っています (SLE5532、SLE5542 など)。
メモリの内容を読み取り、PSC (PIN) を確認し、メモリに書き込むアプリケーションの作成方法を知りたいです。
このタイプのカードは、マイクロプロセッサ カードのような通常の APDU を受け入れることができません。データシートでは、バイナリで送信するコマンドを指定します (すべてのコマンドは 3 バイト長)
SCM リーダー (MCSCM.dll に基づく) で動作するように設計されたアプリケーションを見つけましたが、OmniKey リーダーでは動作しません。
Reader の DLL を直接操作しなくても、winsCard API 関数を直接呼び出すアプリケーションを構築できるかどうかを知りたいです。もしそうなら、呼び出す適切な関数は何ですか?
また、それが不可能な場合、OmniKey の API を見つけるにはどうすればよいですか? OmniKey 3121 リーダーと同期カードで動作するサンプルを送ってくれる人はいますか?
前もって感謝します
c# - SCardEstablishContext がリリース モードでコンテキスト ポインタを設定しない
C# から winscard.dll メソッドを呼び出していますが、デバッグ モードではすべて正常に動作しています。私が得ている問題はリリースモードです
コンテキストを確立するための私の呼び出しは
私のテスト アプリでは、これを呼び出すと、pntContext 変数がデバッグ モードで適切に設定されているように見えます。ただし、リリースモードでは設定されません。しかし、奇妙なことに、戻りコードはまだ 0 (成功) です。
だから、これを引き起こす可能性のある状況は何なのか、それとも他に何が間違っているのでしょうか?
PS また、コンパイルプラットフォームが Any CPU に設定されていることを確認します。プラットフォームを変更しようとしましたが、プラットフォームとリリースモードとして x86 を使用すると機能します。なぜデバッグモードで動作するような奇妙な動作ですか?
smartcard - WinScard SCardConnect は SCARD_E_NOT_READY を返します
javax.smartcardio.* を使用して、スマート カード リーダーを備えた Java スマート カードと正常に通信する Java のプログラムがあります。APIモニターを使用すると、java.exeウィッチが実行され、実際にWinSCard winAPIを使用していることがわかりました(通信を開始するとすぐにwinscard.dllがロードされます。実際の呼び出しをまだ見つけることができませんでした)
私の問題は、WinSCard ライブラリを使用して Qt フレームワーク C++ プログラムに同じことを実装しようとしたことです。リーダーが USB に接続されてから 10 秒以内にプログラムを実行すると、すべてがうまく機能しますが、その後、リーダーは省電力状態であると思われる状態になり、数秒後に USB パイプを撃ち落とします。リーダーに接続しようとすると、Java プログラムは自動的にリーダーを「起動」しますが、私が書いた C++ はそうではなく、何が間違っているのかわかりません。
最初にSCardEstablishContext()call でコンテキストを確立し、次にリーダーをSCardListReaders()でリストします。これは実際にリーダーをリストする質問です。最後にSCardConnect()接続するために呼び出しSCARD_E_NOT_READY、スマート カード リーダーがこの「スリープ」状態にある場合はリターンを返します。
スマート カード リーダーがこの「スリープ」モードでない場合、同じコードで問題なくカードと通信できることに注意してください。
winAPI の説明には、この場合に何をすべきかについてのヒントはなく、何をすべきかの痕跡も見つかりませんでした。誰かがこれに対する解決策を知っている場合は、共有してください!
c++ - スマート カードのユーザー データを読み取るには?
まず、私はまだスマート カードを使ったばかりで、データがどのように保存され、どのデータがスマート カード上で保護されているか正確にはわかりません。
PIN で保護された学生証スマート カードを読み取ろうとしています。デフォルトの Windows スマート カード ライブラリ (winscard.lib) を使用して C++ でプログラミングを行っています。
ATR ヘッダーの読み取りに成功しましたが、私の知る限り、ATR ヘッダーにはユーザー情報ではなく、リーダーとの通信方法に関する情報が含まれています。
カードからバイナリを読み取ろうとしましたが、APDU は常に「クラスがサポートされていません」または「間違った命令」を示す 6E 00 を返します。コードは次のとおりです。
cmdRead は次のとおりです。
何が間違っている可能性がありますか?バイナリを読み取るために、最初にカードを検証する必要がありますか? 学籍番号などの基本的なデータを読み取るための読み取りバイナリ権限機能はありますか?
delphi - SCardGetStatusChange からの SCARD_F_INTERNAL_ERROR の結果
Mifare Classic 1K カードと HID Omnikey 5421 (5321 の後継) を使用するアプリケーションを開発しています。カードの取り外し/挿入を検出するためにスレッドを使用しています。Delphi コード (スレッド方式):
SendMessage を使用して、適切な状態を検出しているスマート カード クラスに通知しています。また、カードの挿入を検出すると、自動的にスマート カードに接続してデータを読み取ります。
私のアプリケーションはほとんどの場合正しく動作していますが、たとえば 10000 回のカード挿入で 1回、SCardGetStatusChange. これが発生すると、SCardGetStatusChange の結果は常に SCARD_F_INTERNAL_ERRORのみになり始めます。この状況を検出したとき、スレッドを終了して新しいコンテキストを確立し、この新しいコンテキストで新しいウォッチャー スレッドを作成しようとしましたが、SCardGetStatusChange が SCARD_F_INTERNAL_ERROR を返し続けていたため、これは役に立ちSCardCancelません。アプリケーションを閉じて再度実行すると、問題がなくなります。私にとってはランダムに発生しています。既知のシナリオを使用して再現することはできません。PC ではより多くのリーダーを使用できますが、Omnikey 5421 にのみ接続を確立しています。SCardReleaseContext
誰かがこの問題に遭遇しましたか?