USBカードリーダーを使ってNFCカードを読む方法

USBカードリーダーを使ってNFCカードを読む方法

Linaro / Debianオペレーティングシステムでは、USBカードリーダーを介していくつかのNFCカードを読む必要があります。
USBカードリーダーにはHIDプロファイルがあります。
13.56MHzカードが提示されると、キーパッドはコードを返します。

デバイスにコマンドを送信する方法について読みましたが(仮想)キーボードなので、コマンドを送信できませんでした。どのデバイスにコマンドを送信する必要がありますか?
カードのメモリをダンプする方法は?

ありがとう

答え1

Marcus Müllerの回答に対するコメントで、読者はElatec TWN4 Multitech 2と言いました。

Elatec DevKitの文書によると、さまざまなインターフェースをサポートするさまざまなファームウェアパッケージがあり、現在リーダーは他のファームウェアパッケージと比較して非常に制限された機能のみを提供するUSB​​キーボードインターフェースファームウェアを使用してプログラムされているようです。

さまざまな種類のインターフェイスを有効にするには(残念ながら、WindowsアプリElatec AppBlasterを使用して)、カードリーダーにさまざまなファームウェアをインストールする必要があります。

私が正しく理解した場合、読者の現在のファームウェアはまたはですTWN4_CK*.bixTWN4_NK*.bixここで、KはUSBキーボードインタフェースを表します。

代わりに、仮想COMポートインターフェイス(Linuxなど)を提供する1つ以上のファームウェアバージョン、またはTWN4_CC*.bixLinux PCSCliteでサポートされているUSB CCID準拠のスマートカードリーダーインターフェイスを提供する1つ以上のファームウェアバージョンが必要になる場合があります。 +ほとんどのUSBスマートカードリーダーと同様にlibccidです(libccidバージョン1.4.28以降が必要です)。TWN4_NC*.bix/dev/ttyACMxTWN4_CP*.bixTWN4_NP*.bix

お好みのプログラミングインターフェイスの種類によっては、ファームウェアの選択が必要になる場合があります。仮想COMポートインターフェイスはテストするのが最も簡単ですが、より広範なアプリケーションを開発したい場合は、CCID準拠のインターフェイスが賢明な選択かもしれません。

DevKitには、さまざまなリーダーとアプリケーション用のさまざまなファームウェアバリアントが含まれています。 Elatecカードリーダーにはファームウェアにいくつかのアプリケーションコードスペースがあるため、組み込みシステムの一部として使用されている場合はアプリケーション固有のファームウェアを持つことができます。


NFCカードのメモリを捨てています... NFCカードの種類によって異なります。

単純なメモリーカードであれば、カードメモリーを捨てることは容易だろう。ただし、暗号化キーやその他の秘密を保持するように設計されたスマートカードの場合、カードは暗号化キーを読み取れないように設計されている可能性があります。代わりに、データを暗号化/復号化したいものと一緒にカードにコマンドを送信するだけです。カードプロセッサは、実際の鍵を公開せずに操作を実行します。

これらのスマートカードのプロセッサは、カードリーダーを介して厳密に制限されたAPIを提供するハードコードされたプログラムを実行します。適切に設計され初期化されたスマートカードは、内部メモリから秘密をダンプする方法はまったくありません。

答え2

USB HIDを介してNFCカードと通信するための標準化されたプロファイルがないと思います。 (私にはわかりません。NFCは実際にはキーボードよりもシリアルリンクに近いです。)これはいくつかの特定のカードタイプによって異なります。 FIDO U2Fが好きです。 U2F-over-USB-HID仕様があります。

したがって、私が知っている限り、使用している特定のリーダーデバイスに100%依存します。幸いなことに、この分野の主要プレイヤーは通常、少なくともWindowsドライバAPIドキュメント、さらには低レベルのUSB記述も公開します(例:HID フルキー)。

関連情報