これにより、リード/ライト の衝突を低減している。 PHPやJavaScriptにてカードの情報を読み取る事ができるライブラリやAPIが見つかりません。 何か良いものを知っている方はいらっしゃいますか? 試したこと. ※ ブロックリストには、2byte のエレメント、 2byte のエレメントを混在させることができます。, ブロックリストエレメントが 2byte であるか 3byte であるかを指定します。, ブロックリストエレメントが対象とするサービスのサービスコードをサービスコードリスト内の順番で指定します。 PHPもしくはJavaScriptにて、felicaカードの読み取りを行いたいです。, PHPやJavaScriptにてカードの情報を読み取る事ができるライブラリやAPIが見つかりません。 上で公開したソースとはちょっと違う古いバージョンですが,だいたいこういう動作です. グループ化されたブロックに対するアクセスコントロールを提供します。, サービスが管理するブロックにアクセスするには、2byte の サービスコード でサービスを特定します。 フェリカネットワークス: 技術情報 の 共通領域ガイドライン にてガイドラインが公開されています。, イメージとしては上の図のようになっています。 動作確認したFeliCaリーダーは SonyのPaSoRi RC-S380. 何か良いものを知っている方はいらっしゃいますか?, teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。, 評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。, 上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。, まず、PHPはサーバサイドの言語ですので、(クライアント側にPaSoRiを付けるという前提であれば)アクセスする手法はありません。, そして、最近はブラウザにWebUSBという機能が搭載されてきているのですが、まだID読み取りだけですらmacOSでないと動かないなど、なかなか実用的ではありません(Qiita)。, なお、Sonyから公式に提供されているSDK(PDF資料)によれば、Flash向けSDK(Windows専用)もあるとのことですが、Flashそのものが2020年で終りを迎えるという状況を考えると、決しておすすめはできません。, あと、オンラインでSuicaをチャージできるSuicaインターネットサービスがありますが、これは(PC向けについては)ActiveXで動かしているようで、32ビットのIE専用となっています。, こちらどうぞ 0, 回答 おおまかな流れは次の通りです。, カードには 4種類のモードがあります。 FeliCaの仕様はJISで公開されているみたいだが、一瞬で眠くなって寝てしまったので、翌日nfcpyのソースとドキュメントとサンプルコードの動作を見ながら実装した。 要するに、処理が早い通信方式だよということのようです。, FeliCa の情報を調べる際は、FeliCa の ICチップを開発している フェリカネットワークス も参照するとよいかと思います。, FeliCa のデータには、大きく 共通領域(フリー領域) 、プライベート領域 があります。, 「FeliCa プライベート領域 共通領域」で画像検索すると出てくるように、個人情報や金融関係などはプライベート領域に、そうでない情報は共通領域に格納しましょうということだそうです。, この 共通領域 は、フェリカネットワークスが管理をする領域で、複数のサービスの情報が同居できる領域です。 勤怠情報をweb上で管理するために 上から下までやれる人にワタシハナリタイ. それ以外の値は、ICチップの種類ごとに割り当てられ、Sony によって管理されています。, 例えば、私の PASMO の PMm は 10 0B 4B 42 7C 7B 30 01 なので、次のような区分けになります。, IC種別によってどの FeliCa かを判断することができます。 ICコードが FF FF のものは JIS X 6319-4:2005 改正版およびNFC Forum の仕様で利用されています。 2014年4月 5日 Suica/PASMO などの交通系は 00 03 という値だそうです。 2 / クリップ ※ カード識別番号の体系によって、カード識別番号がカードごとにユニークな値とならない場合があると明記されています。, 文書に製造者コードとカード識別番号の体系とカード製品の用例として、次の表が紹介されています。, PMm (製造パラメータ/Manufacture Parameter) とは、通信相手の性能を識別するためのパラメータです。, ICコードは、ICチップの種類を識別するためのコードです。上位 1byte はROM種別を、下位1byte は IC種別を示します。 しかし、別のシステムに対する Polling を受け付けることは可能である。, モードの遷移の解説は FeliCa カード ユーザーズマニュアル 抜粋版 4.3.1, 4.3.2, 4.3.3 にまとめられている。, 共通事項として、両パケットは最初の 1byte にデータ長を設定します。  それぞれの反応をする., idmにcard IDmが入ります.usernameとcommentは,誰の何のカードか分かりやすいように入れれるようにしてます. また、上の図はいわゆる FeliCa のファイルシステムの構造を表します。, 物理的なカードが製造された最初の状態では、 システム 0 のみが存在します。 それ以外の値の場合は、 Sony がカード製造者が規定する体系に則ってカード識別番号を付与します。, 例えば、私の PASMO の IDm は 01 10 04 10 2C 14 1E 30 なので、次のような区分けになります。, 製造者コードの下位1バイトは FE ではないので、Sony が採番したカード識別番号であるということになります。 teratailを一緒に作りたいエンジニア, 「Sonyと契約」というわけにもいかないとなると、WebUSBで使えるようになるのを待つ、あるいはWindows用のライブラリと連動させるようにActiveXで組むなど、試行錯誤で作るほかなさそうです。, https://github.com/kubohiroya/studentIDReader.js/tree/master, https://qiita.com/tekka/items/1bf440ccd50bb4171886. あくまでも簡易認証ということで., $ wget http://homepage3.nifty.com/slokar/pasori/libpafe_0.0.8-1_amd64.deb, $str = `felica_dump | grep "card IDm"`; // カード情報からIDmを取得する., PHPのプログラムをデーモンとして動かしてくれるPEAR::System_Daemon(A Day In The Boy's Life). Help us understand the problem. NFC開発支援を目的とした技術者向け情報提供・製品提供製品サイト。Mifare(マイフェア), FeliCa(フェリカ)のソフトウェア開発、NFCリーダライタ、NFC組込モジュール開発、アンテナ設計等ハードウェアの設計・開発を支援するための情報提供ポータルサイト ※ 明確に記載している仕様書が見当たらないですが・・・。, JIS X 6319-4:2010 という規格にて FE 00 ~ AA 00 という予約領域が定義されています。, FE 00 はフェリカネットワークス社が管理する共通領域を示すシステムコードです。, エリア とは、不揮発性メモリ領域の使用可能な残ブロック数やサービスへのブロック数の割当てのことを指します。, エリア情報には、子エリアの作成が可能かどうか や、割当ブロック数 、エリア鍵 、エリア鍵バージョン が含まれます。, サービス とは、ファイルシステム上のブロックをグループ化したものです。 まず,Ubuntu12.04でPasoriを使うためのライブラリをインストールします. 実行することで、IDm , PMm を取得することができます。, エリアやサービスの存在確認と鍵バージョンを取得するためのコマンドです。 これができたからどうだっての?って話ですが,RBIOを利用して,ホームオートメーションの一部として使おうと思ってます. Ubuntu Server 12.04LTS libusbはaptで入れます., 確認 ご指摘いただきありがとうございました。 パースサービス とは、ブロックデータの一部を製の数値とみなして、その値を減産する機能を持つサービスです。, 上記表にはありませんが、オーバラップサービス と言うものもあります。 後々何かに使えるかと. これについては、別途まとめます。, 読み返してみたら、何を解説するでもなく仕様取りまとめて書きなぐっただけになっちゃったな・・・。, iOS(ObjC, Swift), Android(Java, Kotlin), Rails、インフラ(CentOS、Ubuntu)一通りおさわりします。 実装方法. 駅コードなどもサイバネ規格の中に入るようです。, そしてこの Suica/PASMO のデータ構造や値の定義をしているサイバネ規格は公開されていないようで、実際に取得できる駅コードや店舗コードなどが何を指しているのかは有志によってデータベース化されているみたいです。IC SFCard Fan DB Service, 駅コード、店舗コードの他にもシステムコードをまとめている人もいて、Suica/PASMO を対象として開発をする場合、お世話になることになるかと思います。, 規格策定の関係者になるには、多額を支払い協議会の一員にならない溶けないそうです。 FeliCa のデータには、大きく 共通領域(フリー領域) 、プライベート領域があります。 Sony: FeliCaポケットの紹介ページに次のようなイメージ図があります。 「FeliCa プライベート領域 共通領域」で画像検索すると出てくるように、個人情報や金融関係などはプライベート領域に、そうでない情報は共通領域に格納しましょうということだそうです。 この 共通領域 は、フェリカネットワークスが管理をする領域で、複数のサービスの情報が同居できる領域です。 フェリカネットワークス: 技術情報 の 共通領 … クレジットカードはiD付きなのでfelicaカードですが,DBに登録してないのでエラーが出ます., 応用 0, 【募集】 それはまた別にまとめて記事にします., PHPのプログラムをデーモンとして動かしてくれるPEAR::System_Daemon(A Day In The Boy's Life) 事業者/使用目的ごとに割り当てられます。 libusb 0.1.12-20 libpafeをインストールすると,pasori_testとfelica_dumpというコマンドがインストールされます., ・無限ループ動作でfelica_dumpをしまくる. 提供されるコマンドは、モードによって実行が制限されています。, Polling を行い IDm を取得し、IDm を使用して認証を実施することで Mode 1, 2 どちらかに遷移する。 Plus EXカードは登録してるけどstatusが0になってるのでエラーが出ます. ユーザが使用するブロックにアクセスするには エリア や サービス を使用します。, システム分割機能により、複数のシステムの情報が同居できるようになっていて、各システムは複数のエリア、サービスを持つことができるようになっています。, それぞれのコードについて Sony の FeliCa技術方式の各種コードについて(FeliCa Technology Code Descriptions) という資料を参考にまとめます。, IDm (製造ID/Manufacture ID) とは、通信相手のカードを識別するためのIDです。, Polling(後述します)レスポンスの レスポンスコード に続く 8バイトの値です。, カードに複数のシステムが存在する場合は、個々のシステムに IDm が設定されます。 phpの開発環境を構築する場合は、まず開発言語となるphpをインストールします。phpは公式サイトでインストールできますが、バージョンが5.6系と7.0系の2種類あるため注意して … 私の PASMO の IC種別は 0B ですが、上の一覧からは見つかりませんでした・・・。ココらへん間違っているのかしら。, Polling コマンドに関しては、アンチコリジョン処理のため複雑になっています。 https://qiita.com/tekka/items/1bf440ccd50bb4171886. カテゴリ: 一応,card IDmはユニークだけれど,偽装可能なので高いセキュリティレベルを求められる認証に使うべきではないらしいです. 一応、AWSとかラズパイとかFlutterとかもやったりします。 具体的には,玄関の鍵とガレージのシャッターを,これで開けられるようにしようかと. 日本鉄道サイバネティクス協議会という協議会で策定された規格で CJRC規格 と呼ばれることもあります。 上記のテーブルの通り,ケータイ・ICOCA・PiTaPaは認証ok. 1.phpのインストール. 複数のブロックデータを複数のサービスで共有して管理することを オーバラップする といい、対象のサービスを オーバラップサービス と呼びます。, より詳しい情報は FeliCa カード ユーザーズマニュアル 抜粋版: 3.4.3, 3.4.4, 3.4.5 を参照してください。, ブロック とは、書き込み/読み出しにおける 16byte の単位です。 電子マネー付きカードとか,おサイフケータイとか,交通系ICカードとか,ああいう非接触のICカードの情報を読むことができます., さて,これで何をするかというと,事前に登録しといたカードを読み込ませたときに認証okとする.という単純なこと., 今回の認証には,Felicaにユニークに割り当てられているらしい「card IDm」という値を利用します., 環境 felicaリーダはPaSoRiのRC-S380を利用しています。 有志によってデータベース化されていたり、仕様がまとめられていたり、ライブラリが作成されていたりします。, 大量の文書を書き連ねてしまいましたが、主目的であった Suica/PASMO の券面に印字された情報が NFC の機能で取得できるのか についてはおそらく 共通領域のシステム0 を参照するべきだったのかと思います。 1 / クリップ ※ ユーザーズマニュアル の Polling の項目にも Read Without Encryption の項目にも記載がなく、はままりました。, リーダ/ライタがカードを捕捉・特定するためのコマンドです。 statusには,認証okのときは1を入れておき,一度登録したカードを消したいときに,その行を削除するのではなく,statusを0にしておくことで認証できないようにするという風にしました., 実装 上位 10bit をサービス番号、下位 6bit をサービス属性として構成されます。, Suica の入出場記録のサービスコードは 09 0F なので、bit に直すと 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 1 となり、次のような区分になります。, ランダムサービス とは、ユーザが自由にブロックを指定してアクセス可能なサービスです。 この場合、製造者コードの 上位4バイト はカード内システム番号を示します。, ※ 「上位4バイト」に関して指摘いただきました。製造者コードは2バイトと言っておきながら上位4バイトってどういうこと?!って感じです。改めて情報確認しますのでしばし正しい情報をお待ち下さい。 (2019-10-07), 製造者コードの下位1バイトが FE となるものは、カード識別番号の体型が定められています。 Why not register and get more from Qiita? 完全に「PASUMO」だと勘違いしてました。「PASMO」が正しいんですね。, Suica/PASMO の券面に印字された情報が NFC の機能で取得できるのか調査した時のログの内 FeliCa (Suica/PASMO) の仕様をまとめたもの です。 私は PASMO ユーザなので、PASMO での調査ログになりますことをご了承ください。, Near Field Communication と呼ばれる技術です。 libpafe_0.0.8-1_amd64 PHPで書いています. ※ ブロック番号はサービス内で 0 スタートの連番です。, サービスコード とは、サービスを特定するための 2byte の値です。 指定したエリアやサービスが存在しない場合には、鍵バージョンとして FF FF を返送します。, 認証を必要としないサービスからブロックデータを読み出すためのコマンドです。 近距離無線通信 や 非接触通信 と訳されます。, Sony :FeliCa: NFCの定義 にて記載されている NFC のコンセプトは次のような図になるそうです。, NFC には NFC-A , NFC-B , NFC-F という方式があって、どのようなデバイスでも実装可能なものを目指しているようです。, FeliCa は、Wikipedia: NFC のページにて、次のように解説されています。, ということで FeliCaとは、Sony が推進している NFC の一つの方式です。(参考: Sony: FeliCa, Wikipedia: FeliCa), Sony の FeliCa についての解説ページで、次のような特徴が挙げられています。, 通信速度って、数値出されてもいまいちピンとこないんですけどね。 ・card IDmを事前にDBに登録しているものと照らし合わせて, ちょっとだけCPPとかGolangとかVueJSとかTypeScriptとかもやったりします。 また、鍵情報やファイルシステムの管理情報なども格納されます。, ユーザのアクセス単位もブロックとなるので、16byte を超える情報を格納するには複数のブロックに分割する必要があります。, 不揮発性メモリ領域上のブロックの管理は全てファイルシステムが行います。 PostgreSQL 9.1 すなわち、認証を行うと他のリーダ/ライタは同カードの操作権限を得られなくなる。 PaSoRi RC-S330 FeliCa技術方式の各種コードについて(FeliCa Technology Code Descriptions), Sony: 技術情報対象製品一覧: FeliCa (FeliCa Standard), hiro99ma blog: [felica]ブロックリストエレメントの「サービスコード順番」, 叶鋼は午前1時に計算をする: 【Felicaを使う】Felicaリーダー・ライターとFelica Plug の通信プロトコル, Polling を実行できる。Polling の結果 IDm を取得すると Authentication1 (v2) を実行できる。, パースサービスへのキャッシュバックアクセス以外のブロックへの読み書きを行う場合に指定します。, Request Service コマンドを実施し、利用したいサービスコードの正当性を確認する, Read Without Encryption コマンドを実施し、暗号化されていない領域の上方を読み取る, NFC の仕様、FeliCa の仕様、Suica/PASMO の仕様と確認する資料が多いこと, FeliCa の中身の管轄が Sony と フェリカネットワークス の2社が存在し、似通った仕様書が複数存在すること, you can read useful information later efficiently. PHP5.3 サービスコードリストはコマンドにより、認識が変わります。, 暗号化されていない領域への読み書きの場合、コマンド自身に含まれるサービスコードリストを意味します。, Sony: FeliCa: FeliCa カード ユーザーズマニュアル 抜粋版: 4.2.2 に詳細な例と解説があります。, 次のコマンドの詳細は、FeliCa カード ユーザーズマニュアル 抜粋版 4.4 を参照すること。, コマンド仕様を改めてみて、再確認しました。基本的に無料でできることは次のことです。, Suica/PASMO の規格・仕様に関しては、公開されていない上に更新もされます。 Mode 0 ではなくなった時点で、カードは Polling を受け付けなくなる。 By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away. Mode 0 である必要があります。, リクエストパケットの ブロックリスト とは、ブロックリストエレメントで構成され、アクセス対象となるサービス及びブロック番号を特定するために利用するデータ群です。, ブロックリストエレメントが 2byte 構成の場合は、ブロック番号は 1byte です。 指定したエリアやサービスが存在する場合には、鍵バージョンを返送します。 システムを追加する際は、システム 0 の残分が割り当てられます。, システムコード とは、システムを特定するための 2byte の値です。 What is going on with this article? PEAR::System_Daemonの利用に際して,大変参考にさせていただきました.. パソリってのは,SONYのUSB接続非接触ICカードリーダー. ・felicaカードが載せられると,card IDmを読み取る ホームページ をみてもだいたい会員専用という・・・。, ちなみに、システムコードの話で挙げた JIS X 6319-4:2010 をネット上で探すと 購入ができるページ に行き着きます。, 読み取りを目的とした通信の場合にフォーカスして解説します。 また、2byte の ブロック番号 を指定することでサービスが管理する範囲内のブロックにアクセスします。 Sony: 技術情報対象製品一覧: FeliCa (FeliCa Standard) を参照しましょう。 3, 回答 felicalib.dllは、PaSoRi を使って FeliCa のデータを読み書きするためのライブラリです。対応機種は RC-S380 / S370 / S330 / S320になっています。felicalib.dllを使用して、C#によるSuicaの読み出しソフトを作成します。Suicaの使用履歴は表形式で表示されます。 FeliCa HTMLタグを利用してEdyのIDmを取得する - 偏った言語信者の垂れ流し FelicaLibはDLLで提供されていたと思うので、こちらの方法も使えるかも知れません。ただし、未検証です。 Windows + PHPで、VBなどで開発されたDLLを利用する方法 « Php « Prog « Laddy in 2 / クリップ 緒言 PEAR::System_Daemon 1.0.0, ライブラリインストール 3byte 構成の場合は、ブロック番号は 2byte です。また、リトルエンディアンであることに注意します。, 書き込み先のブロックを指定するために次のように記述をします。 PaSoRiにfelicaカードを載せてfelica_dumpを実行すると,こんな風にカードの情報がツラツラ~っと表示されます. カードによって表示される行数は様々で,短いのは30行ちょっと,長いやつは150行ぐら … NFCのカードリーダーを、PCへデバイスインストール前に接続したため、インストール後もカードを読まな... 回答 ユーザ情報の全てはこのブロックに格納されます。 サイクリックサービス とは、一番古いブロックに対して書き込みを行うサービスです。ログの記録などに利用します。 知る必要がある場合は FeliCa カード ユーザーズマニュアル 抜粋版 2.3.5 アンチコリジョン処理 を参照してください。, 各コマンドについての解説は割愛しますが、単純にデータを取得する際の解説は後述します。, Suica/PASMO の交通系カードはサイバネ規格というものだそうです。 無限ループをデーモンとして動作させるため,PEAR::System_Daemonを利用しました., テスト