問題タブ [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.
smartcard - OmniKey を介した非接触カード、「UID」の取得方法
非接触型 OmniKey 5321 カード リーダーを使用して、スマート カードから情報を読み取ろうとしています。
編集:賞金を追加しました。
私は .NET 3.5 プログラムで C# 3 を書いているので、これは Windows アプリケーションです。
カードにはいくつかの情報が刻印されており、何らかの形でカード データに存在すると思われます (下にカードとリーダーの写真があります)。
カードには以下の情報が刻印されています。
OmniKey カード リーダーに付属の診断アプリケーションを使用すると、次の情報が表示されます。
さて、ここに私が検討したいくつかの変換があります:
- 447 10 進数 = 1BF 16 進数 (見つかりません)
- 8 進 447 = 10 進 295 (BCD タイプのエンコーディングとしては見つかりません)
- 8 進数 447 = 16 進数 127 (見つかりません)
- 447 16 進数が見つかりません
ここに私の質問があります:
- 「UID」番号は信頼できる一意の番号ですか? 447 番号はあまり気にしません。知っておく必要があるのは、このカードから取得した情報によって後で一意に識別されるため、カードの所有者に関連付けることができるということだけです。
- UID 番号を読み取る方法を教えてください。Windows で WINSCARD.DLL を使用すると、"ATR" データを 1 バイトごとに取得できますが、UID は明らかにその部分に存在しません。
これが写真です、それがあなたに何か情報を与えるなら。
smartcard - Omnikey 5325 スマートカード リーダーがカードを認識しないのはなぜですか?
スマートカード リーダー (OMNIKEY 5325 CL USB Prox) を購入し、すべてのドライバーをインストールしましたが、カード (1386 ISOProx II カード) を読み取れません。診断ツールはそれを認識していないようで、SCardTransmit を呼び出すと ERROR_GEN_FAILURE が返されます。このツールは、リソース マネージャーが開始されて実行中であることを示していますが、scardsvr.dll のバージョン番号は示していません。ただN / A。私のカードは間違いなく機能しますが、これには完全に困惑しています。すべてのドライバーとすべてをアンインストールしようとしました。Windows 7 を実行しています。アイデアはありますか?
windows - Windows SmartCard フレームワークで拡張 APDU を使用する方法
WinSCard を使用して、ISO 7816 準拠のスマート カード (具体的には PIV カード) を読み取っています。カードには、約 12 KB の画像があります。現在、T=1 モードで接続し、SCardTransmit 関数を使用して GET DATA APDU コマンドを送信し、その後に一連の GET RESPONSE APDU コマンドを送信しています。カードからすべてのデータを取得することになりますが、1 回の呼び出しで 256 バイトしか取得できないため、SCardTransmit を 40 回以上呼び出す必要があります。各呼び出しが完了するまでに約 0.5 秒かかるため、12 KB のデータを読み取るのに約 20 秒かかることになります。
私はこれをより速く行うことができると思います。NIST 仕様では、「リーダーの接触インターフェイスを介した 12.5 キロバイト (KB) のデータの取得時間は 2.0 秒を超えてはならない」と規定されています。仕様では拡張長の APDU が参照されているため、サポートされていると思いますが、その使用法は文書化されていません。私はそれを理解しようとしましたが、うまくいきません。
これは現在のコマンドで、ステータスが 0x61 0x00 の 256 バイトを返します。これは、取得するデータがまだあることを意味します。
ISO-7815-4 仕様のパート 5.3.2 は、Le のエンコーディングについて次のように述べています。
ケース 4E - L= 5 + (B2||B3),(B1)=0 および (B2||B3)=0
- Lc フィールドは最初の 3 バイトで構成され、B2 と B3 は 1 ~ 65535 の値の Lc (!=0) をコードします。
- B4 から Bl-2 は、データ フィールドの Lc バイトです。
- Le フィールドは、最後の 2 バイトの Bl-1 と Bl で構成され、1 ~ 65536 の値の Le をコード化します。
これは、コマンドが次のようになることを意味すると考えました。
しかし、これはうまくいきません。応答コード 0x67 0x00 を受け取ります。これは「長さが間違っています」という意味で、カードからデータが取得されません。アイデア?
c# - .NET または COM HID iCLASS スマート カード リーダー
Omnikey RFID CardMan 5321 スマート カードでほぼ常に使用しているコーディングがあります。問題は、「HID iCLASS GL」とマークされた新しいカードを本日受け取りましたが、コーディングではうまく機能していないようです。
ソース全体を調べずに、基本的にデータの長さを示す次の行を呼び出しているときに問題が発生しています: lResult = SCardTransmit(hCard, 0, bytCommand, lLen, 0, byReadBuffer, iReturnlength)
データが「x69 x86」としてマークされている長さ 2 のみを返します。255 chr をすべて読み取るように指示しても、残りは null としてマークされます。
OMNIKEY 診断ツールが次のように表示しているため、リーダーがこれらのカードを読み取ることができることがわかりました。 (パート 2) PICCtoPCD: 26,48 kbps PCDtoPICC: 26,48 kbps 周波数: 13.56 MHz
前に説明したように、「x69 x86」以外のカードにデータが返されないことを除いて、コーディングではすべて正常に機能していますが、これは正しくありません。
HID iCLASS カードから読み取った経験のある方がいらっしゃいましたら、方法に関するフィードバックをいただければ幸いです。ソフトウェアのライセンスが必要な場合でも、問題ありません。
前もって感謝します!
windows - WinSCard で PCSC リーダーのシリアル番号を取得する
カードがリーダーに存在しない場合、PCSC リーダーのシリアル番号を取得する際に問題があります。winscard.dll と c++ を使用しています。
次のコードは、カードがリーダーに存在する場合にのみ機能します。それ以外の場合、SCardHandle は取得されません。SCardHandle を取得する他の方法は見つかりませんでした。
カードに接続せずにリーダーのシリアル番号を取得する方法はありますか?
c# - O2Micro リーダーの WINSCARD.DLL メソッド SCardTransmit からの不明な応答と応答長情報
スマートカードとの通信には、WINSCARD.DLL を API として使用して APDU コマンドをスマートカードに送信します。いくつかのカードリーダーでは、これは期待どおりに機能していますが、送信するとメソッドから不明な戻り値が返されます ( http://msdn.microsoft.com/en-us/library/ms936965.aspxSCardTransmit
にはありません)。コマンドを O2Micro リーダーに送信します。
何が機能していますか: コマンド (16 進数の値) を送信した場合:
私は応答を得るSW1: 61. SW2: 1F
応答は、0x1F
使用可能なバイトがあることを示しています。だから私はコマンドを送ります:
しかし、そのコマンドでは、データを取得せず、 value を返します0x57
。
0x57
私の質問は、戻り値が何を伝えているのか、そしておそらくそれを解決または回避する方法を誰かが知っているかどうかです。
c# - さまざまな WinSCard API が期待する HEX 値が必要
スマート カードを使用して、Windows 7 マシンで実行されているアプリケーションにユーザーを認証しようとしています。DLLを使用していますが、さまざまな APIなどに渡すWinSCard
正確な値がわかりません。HEX
SCardDisconnect
必要な HEX 値のリスト、または で作業する際に役立つ可能性のあるその他のフォーラム/リンクを参照していただけますWinSCard.dll
か?
.net - winscard.dll を使用した .NET アプリでの ERROR_INVALID_HANDLE
スマート カード リーダーと通信する .NET Windows サービスを作成しています。メインコンポーネントは、.NET コードの DLLImport 属性で使用している winscard.dll という Windows DLL です。Windows XP 32 ビットではすべて正常に動作しますが、Windows 7 x64で実行すると、 SCardTransmit を呼び出すときに 0x6 ERROR_INVALID_HANDLEの結果が返されます。アプリケーション (コマンド ライン アプリとしてのサービス) はカード リーダーに接続できますが、カードから何も読み取ることができません。
何か案が?
c# - ミステリー:4バイトは日付を表す必要がありますが、どのように?
そのため、ドイツの公式スマートカードからセキュリティで保護されていない値を読み取ることができました。数値と文字列には問題なく機能しますが、日付の解釈方法に頭を悩ませることはできません。
私が読みたい日付は、仕様に見られるように4バイトの日付として指定されています:http://imgur.com/3jU8k
私が読んだ4バイトは次のとおりです。
この日付を表す必要があります:2012年2月20日バイナリ:
もう1つ:
表す必要があります:19.02.2017
このエンコーディングの謎を解くのを手伝ってください
カードからのデータは商用ソフトウェアで読み取ることができるので、取得した生データはどのようにでも使えると思います。
興味のある方へ:ベンダーには、私が何度も検索した非常に大きな仕様があります(http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=CELEX:32002R1360:DE:NOT複数で利用可能言語)カードの構造は、119ページで最初に言及されています
c# - PCSCスマートカードリーダーの「わかりやすい名前」はどのように構成されていますか?
WinSCardを使用してすべてのリーダーを一覧表示します。これにより、次のような一覧が表示されます。
これは素晴らしいことですが、どの名前がどのカードリーダーに属しているのかわかりません。
これらの名前はどこから来たのですか?それらはどのように構築されますか?
私が今までに見つけたもの:レジストリには、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
キーがあります。このキーの下に、カードリーダーの「サービス」(WMIレジストリを照会して見つけた)に一致するサブキーを見つけることができます。例:SCM Microsystems Inc. SCR3320 USB Smart Card Reader
読者向けのサービスはですSCR3XX2K
。
このサブキー( )には、複数の興味深い値をSCR3XX2K
持つ別のサブキーがあります。Enum
Count
:DWORD、接続されているリーダーの数0
、、:STRING、ハードウェアデバイス1
ID2
これらは「わかりやすい名前」に付けられた数字だと思いますが、名前の文字列がどのように構成されているのかわかりません。これは、ハードウェアデバイスID(WMIを介して取得)をわかりやすい名前にマップするために必要です。
では、スマートカードリーダーの「わかりやすい名前」を作成するために使用されるパターンは何ですか。また、値はどこから来るのでしょうか。