問題タブ [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.
c++ - C ++でJavaカードへのAPDUコマンドの時間を測定する最良の方法
Java Card に対してある種のタイミング攻撃を試みています。コマンドを送信してから応答を得るまでの経過時間を測定する方法が必要です。winscard.hインターフェイスを使用しており、言語はc++です。winscard.h.作業を簡単にするために、インターフェイスへのラッパーを作成しました。たとえば、送信するために、APDU今私はこのコードを使用していますが、これはうまくいくようです。この回答に基づいて、コードを更新しました
};
私のコードはエラーで失敗しますThe value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.。私の推測では、rdtsc私のインテル プロセッサーでは命令がサポートされていません。私はインテル ブロードウェル 5500U を持っています。この種の測定を行い、最終的により正確な応答を得る適切な方法を探しています。
smartcard - PCSC は複数のスマートカードを検出します
WinSCard API を使用して、スマートカード リーダーに複数のスマートカードがあることを検出することはできますか? カードIDを読んでいるのですが、カードが複数あるとどれを返せばいいのか曖昧になってしまいます。そのような場合は禁止し、エラーメッセージを返したいと思います。
c++ - WinSCard SCARD_E_PROTO_MISMATCH (エストニアの ID カードに接続する場合)
エストニアの ID カードの個人ファイルを読み取ろうとしています。
個人ファイルからレコードを読み取るために、次のデータをカードに送信する必要があります ( ここから) (つまり、ID 番号、名前など)。
ただし、raw バイトは T=0 プロトコルにあり、カードは T=0 を受け入れる前に不当に長い時間 T=1 でスタックします。イベントのシーケンスは次のとおりです。
- カードがリーダーに取り付けられている
- プログラムから戻り、
SCardStatusChangeカードの処理を開始します SCardConnectカード (または)に接続しようとすると、約 5 秒間、何度もSCardReconnectエラーが表示されます。SCARD_E_SHARING_VIOLATION- 次に、接続しようとすると、エラー
SCARD_E_PROTO_MISMATCHが 3 秒から 30 秒の間、場合によってはそれ以上受信されます。 - その後、カードは正常に接続され、データが読み取られます。
T=0 プロトコルでどうにかしてより速く接続できますか?
ソースコードの簡略版は次のとおりです。
smartcard - エラー コード sw=6D04 は何を意味しますか?
ISO/IEC 7816によると、6DXX以外のコードはありませんがXX=00、6D04取得しているものです。誰かが知っているか、より最新のバージョンが利用可能ですか?
ABコマンドが有効であるように見えるため、「命令コードがサポートされていないか無効です」のようなものにAなる9000とは思いませBん6D04。実行するBAと、Bリターン9000してAリターンします6D04。
何か問題があるかもしれません... :(
vb.net - SCardGetStatusChange Winscard の不明なリーダー
私は .net を初めて使用し、winscard の SCardGetStatusChange を使用してカードが検出または削除されたかどうかを特定したいと考えています。しかし、retcode = -2146435063 を返しています。これを 16 進数に変換すると、0x80100009 = SCARD_E_UNKNOWN_READER が返されます。私はpinvoke.netからコードをベースにしました
ここに私のコードのサンプルがあります
そして私の形で。
出力は
Ret=-2146435063 リーダー:ACS ACR1222 3S PICC リーダー PICC 0 失敗
smartcard - スマート カード インターフェイスのデータ単位が一致しません
学生証からデータを読み取るコードを書いています。カードの初期化後、カード上のディレクトリとファイルを選択し、READ BINARY (B0) でデータの読み取りを開始します。
ISO 7816-4によると: Interchange の Interindustry Commands :
P1 の bit8=0 の場合、P1||P2 は、ファイルの先頭からデータ単位で読み取られる最初のバイトのオフセットです。
各 16 バイトのチャンクでデータを読み取っています。最初のループで読み取りたいoffset = 0ので、設定するP1 = 0x00とP2 = 0x00すべて正常に動作し、最初の 16 バイトがカードから送信されます。
問題は 2 番目のループで始まります。次の 16 バイトを から読み取る必要があるoffset = 16ため、 を設定P1 = 0x00しP2 = 0x10ますが、 からデータを受信しますoffset = 64。
P1||P2いくつかのテストの後、常に4バイトのオフセットとして解釈されることがわかりました。
私のカードは、それぞれ DWORD のサイズのデータ ユニット(ISO 7816-4 に言及) を使用しているようです。
Web のすべての例は、データ単位をバイトとして扱い、すべてが作成者/ユーザーに対して機能するようです。 私の質問は次のとおりです。アプリケーションの実行時にデータユニットのサイズを決定するにはどうすればよいですか?