21
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

WindowsでOpenSCを使ってカードのIDmを確認する方法

Last updated at Posted at 2018-04-22

#はじめに
FelicaなどのICカードの固有ID(IDm)を読みだしてカードリーダーとかICカードの動作確認をするのにOpenSCを使うと便利だったのでメモ

#環境

  • OS=Windows10
  • カードリーダー=今回はPaSoRi RC-S380 をサンプルにしていますが、これ以外も使えます。
    • カードリーダーのドライバはインストールしておくこと
  • ICカード= SUICA(Felica)

#OpenSCとは

  • https://github.com/OpenSC/OpenSC/wiki
  • PC/SCとユーザーPGの間のミドルウェア
  • オープンソースです
  • Linux,Mac,OS X,Windows上で稼動する、汎用的なカード用ライブラリ
  • PKCS#11ライブラリ、ツールなどで構成されてる
  • なんと、マイナンバーカード(JPKI)にも対応している

#OpenSCダウンロード
https://github.com/OpenSC/OpenSC/wiki
からダウンロードしましょう。
今回は、OpenSC-0.17.0-win64_vs12-Release.msi をインストールしました。
https://github.com/OpenSC/OpenSC/releases/tag/0.17.0

  • msc実行 → choose setup type で complete にするだけであとはそのままインストールでOK
  • OpenSCのモジュールは、C:¥Windows¥System32 にインストールされます
    • pensc-pkcs11.dll
    • opensc-minidriver.dll
    • など
  • ツール群がC:¥Program Files¥OpenSC Project にインストールされます
    • opensc-tool.exe
    • opensc-explorer.exe
    • その他たくさん

#ICカードリーダーの情報取得
opensc-tool.exeを使います。

opensc-tool.exe -a

  • ATRを取得する。
  • ATR(Answer To Reset)とは、カードが電気的に活性化した際にカードから送られる初期応答情報。これは最高32バイトであり、転送速度やカードを識別情報が含まれている。各情報はキャラクタ単位で識別され、たとえば1バイト目は開始キャラクタ
    (TS)と呼ばれている。
  • 要するにこのコマンドでカードリーダーを通してICカードが認識されているかどうかを確認することができる。
C:\Program Files\OpenSC Project\OpenSC\tools>opensc-tool -a

Using reader with a card: Sony FeliCa Port/PaSoRi 3.0 0 ← ※1
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx ← ※2
  • ※1 接続しているカードリーダーの情報
  • ※2 ATR値、カードを認識していない場合は Failed to connect to card: Card not present となる

##opensc-tool.exe -s

  • ICカードにAPDUを送信し、応答を得る。
  • カードのIDmを取得するためのGetDataコマンドでIDmを取得することができる。
C:\Program Files\OpenSC Project\OpenSC\tools>opensc-tool -s FF:CA:00:00:00 ← ※1

Using reader with a card: Sony FeliCa Port/PaSoRi 3.0 0 ← ※2
Sending: FF CA 00 00 00
Received (SW1=0x90, SW2=0x00): ← ※3
01 02 03 04 05 06 07 08 ..=$i... ← ※4
  • ※1 FF:CA:00:00:00 GetDataコマンド=IDm(UID)問い合わせ
  • ※2 接続しているカードリーダーの情報
  • ※3 応答 SW1=0x90,SSW2=0x00正常終了という意味
  • ※4 カードのIDm(UID) この例ではFelicaを使ってIDm(8Byte)01 02 03 04 05 06 07 08 が取得された。

##その他

  • opensc-toolでAPDUコマンドを送れば、カード内情報を読み込んだり書き込んだりできるので、プログラムを作らなくても比較的簡単にICカードのHackができます。
  • カードリーダーはPaSoRiに限らず利用できます。
  • カードはFelicaに限らずType-AやType-Bにも対応しています。

##参考

OpenSC
EternalWindows スマートカード
RC-S380

21
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?