C#でNFC(Felica/Mifare)の読み取り – その0 ライブラリ調査編

NFC
スポンサーリンク
スポンサーリンク

したいこと

OfficeでNFC読み取りしたい
C#でNFC読み取りしたい
OfficeでFelica/Mifareカードの読み取りしたい

実践編

本記事のAPI等の下調べをもとに、ライブラリを選定し、実際に PasoriとPCSC(Sharp)でやってみた記事です。

C#でNFC(Felica/Mifare)の読み取り - 実践編 その1 - ATR, IDm/UID, カードタイプの取得
今回の到達点 PCSC-SharpとPSCS.ISO7816を使用して、以下のことができるようになる。 Felica(Suica/ICOCA)のIDmを読み込めるようになる。 Mifare?(T-money)のUIDを読み込...
C#でNFC(Felica/Mifare)の読み取り - 実践編 その2 - Suica/ICOCA履歴情報読み取り
今回の到達点 Suica/ICOCAの履歴情報を読み取れるようになる。 Felicaのどの領域がSuica/ICOCAの履歴情報に当たるかを知る。 基礎知識 Suica/ICOCA等の交通系のカードは、Felicaの技術が用...

Suica/ICOCA読み取りアドインにしてみました。

ExcelとOutlook用の交通系ICカード[Suica・ICOCA・Pasmo等]による旅費精算と交通費精算を簡単にする無料のアドイン
どういったアドインか?エクセル・OUTLOOK上で、交通系カードをPaSoRi(NFCカードリーダー)により読み取り、旅費精算・交通費精算を簡単・便利に行うためのアドインをリリースしました。無料(フリー)のアドインになります。 メリ...
C#でNFC(Felica/Mifare)の読み取り - 実践編 その4 - Mifare Ultra Light(NTAG21x)への読み書き前に仕様をよく読む
Mifare Ultra Lightとは?自分のわかっている範囲でまとめておくと NXP NTAG 213/215/216 ネット通販大手さんでも市販されているNFCのタグです。安価。 比較的管理が簡単で、API等もめんどく...
C#でNFC(Felica/Mifare)の読み取り - 実践編 その5 - Mifare Ultra Light(NTAG21x)の読みこみ
今回やること 前回、Mifare Ultra Light(NTAG21x)の仕様をがっつり読みました。 今回は、以下のような条件で、 言語 : C# ライブラリ: PCSC-Sharp リーダー...

C#のNDEF用ライブラリを作ってみました。

C#でNFC(Felica/Mifare)の読み取り – 実践編 その6 – NDEF用クラスライブラリ
C#でのNDEF用クラスライブラリ Simple Ndef Parser C#のNDEF用クラスライブラリ Simple Ndef Parserを作成しました。適宜ダウンロードしてください。一部Type2 Tag用になっている部分もあ...

NFCカード読み取りAPI/SDK(C#)

日本語で検索して、C#で使用できるAPI/SDKには以下のようなものがあります。Windows.Devices.SmartCardsとProximityAPIとの違いがいまいち把握できませんでしたが、こちらで少し言及がありました。

  • Felica Library(Felicalib)
  • winscard.dll
  • Proximity API
  • Windows.Devices.SmartCards(UWP)
  • SDK for NFC Starter Kit
  • NFC開発キット for Windows(有料)
  • PCSC-sharp

それぞれのAPI/SDKの概要

Felica Library

有志の方が作られたライブラリです。フリーソフト(BSD ライセンス)。
0.4.2 (2008年6月より更新はされておられません。)
無償

サンプルコードは色々ありますが、C#で Felica Library「felicalib.dll」を使用するが分かりやすかったです。C#による Felicaカードのデータダンプもわかりやすいかもしれません。

winscard.dll

Windows7以降には標準に添付されているDLLです。もちろん無償。

TipsZoneさんのNFC入門、言語はRubyですが、参考になります。

TomoSoftさんのPC/SC APIを用いてSuicaカードの利用履歴情報の読み取り、まさに求めていたもの。

Proximity API

Proximity APIでタグへのデータ読み書き

Windowsストアアプリ入門 vol87:NFCを利用する

NFC を使った最先端のアプリの開発、MSのブログより。

Windows.Devices.SmartCards(UWP)

UWPアプリ開発で標準に添付されているDLLです。もちろん無償。

うさ☆うさ日記さんの、Windows.Devices.SmartCards名前空間のクラスとPaSoRiでFeliCaカードを使う、導入部分だけですが、解説されており参考になるかと。

NFC Smart Card Reader PC/SC Libraryの使用例、Windows 10 MobileでFelicaカードの読み取り~Edy・Suica編

SDK for NFC Starter Kit

SONYさんが用意されているSDKです。
Starter Kitは無償。有償版もあり。

NFCまたはFeliCaを利用する多彩なアプリケーションソフトウェアを、パソコン上で効率的に開発できるツールです。 開発・評価用の無償版「Starter Kit」もお試しいただけます。

サンプルコード:
SDK for NFC Starter Kitサンプルのまとめが有用かと思います。

NFC開発キット for Windows(有料)

Orange TagsさんのNFC開発スタートキット。個人で開発するには高いかもしれませんが、会社の経費・開発費で落ちるなら納得のいく価格かと思います。

PCSC-sharp

Nugetからダウンロードできます。PCSC-sharp、かなり期待がもてそうなライブラリです。ライセンスは2条項BSDライセンスのようです。コーディングサンプルもあるので、優先で少しずつ試してみたいと思います。

その他別の言語ですが、有用な記事

C言語

PC/SCでFelica LiteにC言語でアクセスする

C++

LazyPCSCFelicaLite (C++でPC/SCを使ってFelica Liteにアクセスするライブラリ)

VB

VB.netでPC/SC(NFC通信)してFelicaやMifareを読み取るサンプル

VB.NET で felicalib.dll を使ってみる

ラズパイ(言語くくりでもありませんが。。)

raspberry piでSuicaの履歴の表示

カード側

全般的

全般的にまとまっているのは、Sonyさんの NFCについて – NFCの定義, NFCフォーラム仕様, NFCとFeliCaの関係あたりでしょうか。

また、NDEFという規格がありますが、【NFC】NDEFについて理解するに記載のあるように、URLなどの共通で使用できるものは符号化しちゃって、データを圧縮しようという考えのようです。仕様書もこちらから http://archive.eet-china.com/www.eet-china.com/ARTICLES/2006AUG/PDF/NFCForum-TS-NDEF.pdf?SOURCES=DOWNLOAD ダウンロードできるようですので、そんなに長くないですし、読めると思います。(後日談 2019/03/22→この時思っていたのと少し違って、そんなに圧縮はしてない。むしろ、データの区切りとタイプをハッキリさせるための規格です。仕様は意外に歴史の積み重ねがあり厄介です。特にType2 Tagの歴史を知る必要あります。これを参照。たまにはまります。)

C#のNDEFライブラリも探せばすぐ見つかるので、併せて使ってみたい。(後日談 2019/03/22→あまり、思っていたのとライブラリも違い自分でちゃんと読むことになりました。)

Felica/Felica Lite-sについて

Felica 概説

NFCとFeliCaの関係にも書かれていましたが、Felicaでオープン規格になっている部分(Suicaの履歴部分のような領域)は、暗号化等の対応なしに、読み取り可能です。オープンになっていない部分はたぶんSonyさんとかにお金を払って、規格を教えてもらったり、APIそのものやAPIの使用方法を提供してもらうんでしょうか。こちらのイーガルドさんの記事も参考になるかと思います。

FeliCa Standard 仕様

FeliCa Lite-S 概説

Felica Lite-Sは、以下のように、フルオープンで簡単にカードを使用できるようにしたものですね。軽い暗号化は可能なため、セキュアにも使用可能です。

FeliCaとは異なる通信暗号化機能とファイルシステムを採用することで、低コスト化を実現しています。 FeliCaと同様のインフラの利用が可能です。またアンテナの小型化により、カード形状以外の様々な製品化が可能です。富士フィルムさんより

こちらのイーガルドさんの記事も参考になるかと思います。

Felia Lite-S仕様

Mifare 1k/Ultra lightについて

Ultra Lightについて自分で仕様書を読んで、解説してます。

C#でNFC(Felica/Mifare)の読み取り - 実践編 その4 - Mifare Ultra Light(NTAG21x)への読み書き前に仕様をよく読む
Mifare Ultra Lightとは?自分のわかっている範囲でまとめておくと NXP NTAG 213/215/216 ネット通販大手さんでも市販されているNFCのタグです。安価。 比較的管理が簡単で、API等もめんどく...

(編集中)

まとめて

これ以降の記事でまとめていく・実験していく予定の詳細としては、

  1. C#のPCSC-Sharpの使い方をマスターする。
  2. C#のPCSC-SharpでIDmを読み取れるようになるとカードの種類を識別できる。(2018/10/12ここまで達成以下のリンク先参照。)
  3. C#でNFC(Felica/Mifare)の読み取り - 実践編 その1 - ATR, IDm/UID, カードタイプの取得
    今回の到達点 PCSC-SharpとPSCS.ISO7816を使用して、以下のことができるようになる。 Felica(Suica/ICOCA)のIDmを読み込めるようになる。 Mifare?(T-money)のUIDを読み込...
  4. Suica/icocaの履歴領域をC#のPCSC-Sharpで読み取る。
  5. 読み取ったデータをサイバネ規格と比較しながら正しいかどうかを確認する。
  6. C#でNFC(Felica/Mifare)の読み取り - 実践編 その2 - Suica/ICOCA履歴情報読み取り
    今回の到達点 Suica/ICOCAの履歴情報を読み取れるようになる。 Felicaのどの領域がSuica/ICOCAの履歴情報に当たるかを知る。 基礎知識 Suica/ICOCA等の交通系のカードは、Felicaの技術が用...
  7. サイバネ規格までいけたら、VSTOでOutlookのアドインとしてまとめてみる。(できたが長かった。。)
  8. ExcelとOutlook用の交通系ICカード[Suica・ICOCA・Pasmo等]による旅費精算と交通費精算を簡単にする無料のアドイン
    どういったアドインか?エクセル・OUTLOOK上で、交通系カードをPaSoRi(NFCカードリーダー)により読み取り、旅費精算・交通費精算を簡単・便利に行うためのアドインをリリースしました。無料(フリー)のアドインになります。 メリ...
  9. C#のPCSC-Sharpを用いて、Mifare Ultra Lightを購入して、書き込んだり、読み取ったりしてみる。
  10. C#でNFC(Felica/Mifare)の読み取り - 実践編 その4 - Mifare Ultra Light(NTAG21x)への読み書き前に仕様をよく読む
    Mifare Ultra Lightとは?自分のわかっている範囲でまとめておくと NXP NTAG 213/215/216 ネット通販大手さんでも市販されているNFCのタグです。安価。 比較的管理が簡単で、API等もめんどく...
    C#でNFC(Felica/Mifare)の読み取り - 実践編 その5 - Mifare Ultra Light(NTAG21x)の読みこみ
    今回やること 前回、Mifare Ultra Light(NTAG21x)の仕様をがっつり読みました。 今回は、以下のような条件で、 言語 : C# ライブラリ: PCSC-Sharp リーダー...
  11. C#のNDEFライブラリを作ることになるとは(2019/04/09 項目追記)
  12. C#でNFC(Felica/Mifare)の読み取り – 実践編 その6 – NDEF用クラスライブラリ
    C#でのNDEF用クラスライブラリ Simple Ndef Parser C#のNDEF用クラスライブラリ Simple Ndef Parserを作成しました。適宜ダウンロードしてください。一部Type2 Tag用になっている部分もあ...
  13. 当初は以降もやる予定でしたが、これ以降の項目はゆっくり時間をかけてひまなときにやります。
  14. C#のライブラリ(onovotny/MiFare)で用いて、Mifare 1K/4Kを購入して、書き込んだり、読み取ったりしてみる。この方の記事を参考。
  15. Felica Lite-Sの書き込みで使われている3DESについて調査してみる。
  16. C#のPCSC-Sharpを用いて、Felica Lite-Sを購入して、書き込んだり、読み取ったりしてみる。C言語ではあるがこの方の記事を参考。C++の記事も参考。PCSCなのでかなり参考になるはず。こちらも良いかと思われます。
  17. エクセルのVSTOアドインとして、連続での書き込みをできるようにしてみる。
  18. Androidのソフトを作成して、Felica/Mifareを読み取ったり、書き込んだりしてみる。。

その他

探しているとOutlookでPaymentなんていう記事も出ていました。支払い等に使用できるのでしょうが、思っているものとは違う気もしますので、引き続きFelica/Mifareカードの読み取りの調査をしていきたいと思います。

Nマーク使用上のガイドラインも念のため、メモ。アイコンとかも、ライセンサーとの契約が必要のようです。

有用と思えるような情報があれば、また追加します。

タイトルとURLをコピーしました