2014/06/21

[felica]FeliCa Lite-Sカードを読んでみる

では、さっそくFeliCa Lite-Sカードを読んでみよう。

コマンドとしては、以前と同じく3つをサポートしている。

  • Polling
  • Read without Encryption
  • Write without Encryption

 

では、まずPollingから。
と行きたいところだが、手元にSDK for NFC Starter Kitしかないので、明確に「このコマンドを動かした」という確認ができない。
まずはStarter Kitで作っていたツールを使って、新しく増えたブロックを読むことにする。


WCNT

4B-FE-FF-00-00-00-00-00-00-00-00-00-00-00-00-00

WCNTはライトカウンタ値が入っている。
先頭3byteが有効でエンディアンはリトル。ReadOnly。
デフォルト値は「00 FE FF」だそうなんだけど・・・・???

どういうタイミングでカウントされる勝とうと、S_PAD0~13、REG、ID、SER_C、CKV、CK、MC、STATEブロックへの書き込みでインクリメントとのこと。

デフォルト値、というのは0次発行のときらしいが、出荷試験などで書き込んだと言うことかな?
次は、MC=0x00を書き込んだとき、つまりシステムブロックの書き込み禁止をしたときに、カウント値が0になる。
それ以降はリセットできない。

WCNTが0xfffe00になると、MACつき書き込みができなくなる。
えっ、と思ったが、回数としては16,776,704。1677万回だ。毎秒書き込んだとしても194日かかる。
達する前にWrite withoute Encryptionでエラーになるかもね。

 

MAC_A

エラー

ReadOnlyではないらしいのだが、エラーになった。
なんだろう?
MACブロックと同時に読み込んではいけないとはあるんだけど・・・。
えーっと、ステータスフラグ2が0xB2ってことで「MAC_Aブロック読み出し時にRCブロックへの書き込みがない」と。

では、とりあえずRCブロックに適当な値を書き込んでから・・・同じく0xB2になった。
なんだなんだ?

 

STATE

00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00

意味を持つのは、0番目と8番目。

[0]EXT_AUTH
認証前か後か。
まだやってないけど、新しく追加された認証(片側認証じゃない方)の前か後かだろうかね。

[8]POLL_DIS
Pollingに応答するかどうか。
へー、そんな機能があるんだ。

で、これはReadOnlyではなく、R/Wとのこと。
起動時はどちらも0(認証前、Polling応答する)になるらしいから、Polling未応答にしたまま忘れるという心配はしなくてよさそうだ。

POLL_DISは、他にカードがあるかどうかのチェックに使えるそうだ。
複数あるときは、対象以外を応答しないようにするのか?と思ったが、POLL_DISが設定できるということは捕捉したということになるので、意味がないか。 
テクニカルノートには「複数枚のカードがかざされていた場合に1枚のカードを特定するための手段の1つ」とある。
うーむ。

Pollingして応答が返ってきている時点で、カードは捕捉できてると思う。
おそらく、R/Wは最初に返ってきた応答の結果を渡していると思う。
複数枚のカードがあって、異なるタイムスロットで応答を返した場合は、無視された形になる。
しかし、最初に返ってきたカードに対してPOLL_DISすると、次にPollingしたときには別のカードが応答を返すことになる、という考え方で良いのかな。

PaSoRiで複数枚カードはきついような気はするが、試してみたいところではあるな。

 

CRC_CHECK

00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00

0番目だけ有効。
0x00はCRC一致、0xFFはCRC不一致。

これは不正アクセスというよりは、衝撃によるデータ破壊なんかを検出する目的なのかな。


なお、FeliCa Liteで上記レジスタを読もうとしても、ブロックが存在しないのでエラーになる。
LiteとLite-Sの見分けは、とりあえずそれでつければよいのかな。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。