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

本文上広告1



したいこと

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

実践編

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

今回の到達点 PCSC-SharpとPSCS.ISO7816を使用して、以下のことができるようになる。 Felica(Suica...
今回の到達点 Suica/ICOCAの履歴情報を読み取れるようになる。 Felicaのどの領域がSuica/ICOCAの履歴情報に当たる...

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

どういったアドインか? エクセル・OUTLOOK上で、交通系カードをPaSoRi(NFCカードリーダー)により読み取り、旅費精算・交通...
Mifare Ultra Lightとは? 自分のわかっている範囲でまとめておくと NXP NTAG 213/215/216 ...
今回やること 前回、Mifare Ultra Light(NTAG21x)の仕様をがっつり読みました。 今回は、以下のよ...

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 ダウンロードできるようですので、そんなに長くないですし、読めると思います。

C#のNDEFライブラリも探せばすぐ見つかるので、併せて使ってみたい。

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について自分で仕様書を読んで、解説してます。

Mifare Ultra Lightとは? 自分のわかっている範囲でまとめておくと NXP NTAG 213/215/216 ...

(編集中)

まとめて

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

  1. C#のPCSC-Sharpの使い方をマスターする。
  2. C#のPCSC-SharpでIDmを読み取れるようになるとカードの種類を識別できる。(2018/10/12ここまで達成以下のリンク先参照。)
  3. 今回の到達点 PCSC-SharpとPSCS.ISO7816を使用して、以下のことができるようになる。 Felica(Suica...
  4. Suica/icocaの履歴領域をC#のPCSC-Sharpで読み取る。
  5. 読み取ったデータをサイバネ規格と比較しながら正しいかどうかを確認する。
  6. 今回の到達点 Suica/ICOCAの履歴情報を読み取れるようになる。 Felicaのどの領域がSuica/ICOCAの履歴情報に当たる...
  7. サイバネ規格までいけたら、VSTOでOutlookのアドインとしてまとめてみる。(できたが長かった。。)
  8. どういったアドインか? エクセル・OUTLOOK上で、交通系カードをPaSoRi(NFCカードリーダー)により読み取り、旅費精算・交通...
  9. C#のPCSC-Sharpを用いて、Mifare Ultra Lightを購入して、書き込んだり、読み取ったりしてみる。
  10. Mifare Ultra Lightとは? 自分のわかっている範囲でまとめておくと NXP NTAG 213/215/216 ...
    今回やること 前回、Mifare Ultra Light(NTAG21x)の仕様をがっつり読みました。 今回は、以下のよ...
  11. 当初は以降もやる予定でしたが、これ以降の項目はゆっくり時間をかけてひまなときにやります。
  12. C#のライブラリ(onovotny/MiFare)で用いて、Mifare 1K/4Kを購入して、書き込んだり、読み取ったりしてみる。この方の記事を参考。
  13. Felica Lite-Sの書き込みで使われている3DESについて調査してみる。
  14. C#のPCSC-Sharpを用いて、Felica Lite-Sを購入して、書き込んだり、読み取ったりしてみる。C言語ではあるがこの方の記事を参考。C++の記事も参考。PCSCなのでかなり参考になるはず。こちらも良いかと思われます。
  15. エクセルのVSTOアドインとして、連続での書き込みをできるようにしてみる。
  16. Androidのソフトを作成して、Felica/Mifareを読み取ったり、書き込んだりしてみる。。

その他

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

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

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

シェアする

  • このエントリーをはてなブックマークに追加

フォローする