4
3

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 1 year has passed since last update.

ICカードの種類を識別してみる。

Last updated at Posted at 2023-08-06

はじめに

カードの種類を識別できたら、なんか良いような気がしたので識別してみることにする。

リポジトリはこちら
PaSoRiに対応してます

動機

ICカードのタイプ識別をしたい。
細かい仕様は券面に書いてないので、そういうのを知るために。
脆弱なICカード(Mifare Classic 1K/4K)とかを簡単に識別したかった。

PC/SC

PC/SC仕様に則ってるカードのみが対象になる。
あと、原則として非接触ICカード(Contact Less=CL)を対象とする。
銀行のカードはCLじゃないけどなんか読めた。

ATR(Answer To Reset)

カードを置くと、カードリーダーに対してICカードがATRペイロードを送る。
ATRには、どのようなカードなのか、みたいな簡易的な識別情報が書いてある。
そいつをパースしていい感じに表示する。

パースの補助情報

ここに識別情報がリストされてるので、これを使ってみる。
数が膨大なので7割から8割程度対応できればいい。

パースの方針

原則としてATRを真面目にパースする。
例外として、txtには .. みたいなやつとか [7,8] のような正規表現っぽいものが書かれてるのでそういうのは弾く。

ATRのヘッダ

1バイト目からヘッダ情報に成っていて、ここらへんには興味はない。
必要なのはカードのヒストリカルバイト(履歴バイト・JISX6320-3:2009では管理情報バイト)で識別することにする。

ヒストリカルバイトとカード名だけ抽出したJSON

識別している部分

実行結果

いろんなカードを置いてみる/刺してみる

銀行のICカード

MUFGではないがMUFGと識別された。おそらく共通のものを使っているっぽい。

[Answer to reset(ATR)]
    カード名: MUFG (.jp) (Bank)
    管理情報バイト: 80-73-c6-01-08
確立したプロトコル: T1(ブロック転送モード)
ATS: 読み出し非対応
カード種別: 不明なカード
種別名: 不明
カードID: 不明

免許証

[Answer to reset(ATR)]
    カード名: Driving License card of Japan (NFC type-B) (eID)
    管理情報バイト: 00-00-00-00-91-81-c1-00
確立したプロトコル: T1(ブロック転送モード)
PUPI: 95-bb-b9-c7
ATS: 情報無し(コマンドは成功しました)
カード種別: ISO14443-4B (Infineon / Atmel /ST microelectronics)
カード名: Type B(T=CL)
種別名: Type B(T=CL)
カードID: b4

マイナンバーカード

[Answer to reset(ATR)]
    カード名: ID card issued by Japan government (eID)
https://www.kojinbango-card.go.jp/mynumber/index.html
    管理情報バイト: 00-00-41-e0-b3-81-a1-00
確立したプロトコル: T1(ブロック転送モード)
PUPI: 5b-f7-f3-8b
ATS: 情報無し(コマンドは成功しました)
カード種別: ISO14443-4B (Infineon / Atmel /ST microelectronics)
カード名: Type B(T=CL)
種別名: Type B(T=CL)
カードID: b4

SUICA

[Answer to reset(ATR)]
    カード名: RFID - FeliCa (generic) (as per PCSC std part3)
Suica public transit card (Japan IC system)
(also: Hayakaken, ICOCA, Kitaca, manaca, nimoca, PASMO, PiTaPa, SUGOCA, TOICA)      
https://en.wikipedia.org/wiki/Suica
Octopus, MTR network from Hong Kong, 2014
    管理情報バイト: 80-4f-0c-a0-00-00-03-06-11-00-3b-00-00-00-00
確立したプロトコル: T1(ブロック転送モード)
IDm: **-**-**-**-**-**-**-**
PMm: 10-0b-4b-42-84-85-d0-ff
ROM種別: 10
IC種別: 0b
カード種別: FeliCa
カード名: FeliCa
種別名: FeliCa
カードID: f0

Qurio Lockの施錠・解錠用カード

[Answer to reset(ATR)]
    カード名: RFID - FeliCa (generic) (as per PCSC std part3)
Suica public transit card (Japan IC system)
(also: Hayakaken, ICOCA, Kitaca, manaca, nimoca, PASMO, PiTaPa, SUGOCA, TOICA)      
https://en.wikipedia.org/wiki/Suica
Octopus, MTR network from Hong Kong, 2014
    管理情報バイト: 80-4f-0c-a0-00-00-03-06-11-00-3b-00-00-00-00
確立したプロトコル: T1(ブロック転送モード)
IDm: **-**-**-**-**-**-**-**
PMm: 00-f1-00-00-00-01-43-00
ROM種別: 00
IC種別: f1
カード種別: FeliCa
カード名: FeliCa Lite
種別名: FeliCa
カードID: f2

感想

やったぜ

4
3
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
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?