2011/09/11

MIFARE Classicのコマンドは、FeilCaとは違うシーケンス

とうとうmifareというタグが追加されてしまった。
FeliCaはfelicaで、MIFAREはnfcだと不公平というものだ。


さて、今はMIFARE Classic 1Kの読み書きをしようとしている。
読む方は、会社の社員証を使ってできることはわかった(中身と一致しているかどうかは知らんが)。

どうやって当時コマンドを調べたかというと、ACR122というR/W仕様がネットでダウンロードできたので、それをまねしたのだ。
なお、ACR122はPN532内蔵だ。

 

それではなんなので、自分で調べようとしたお話だ。
FeliCa Liteのときと同じように、カードコマンドがわかれば、それをInDataExchangeを使って投げればいいだろうと思っていた。

http://www.nxp.com/documents/data_sheet/MF1S50YYX.pdf

このドキュメントのp.22からがコマンドになっている。
見てみるとわかると、AuthenticationとWriteは2シーケンスに分かれている。
ACR122のドキュメントでは、これらも1コマンドで動作させているので、FeliCa Liteのようにシーケンスとコマンドが1対1になっていないようなのだ。

うーん、コマンドを見てもわからんということか。


PN533のドキュメントを見ると、InDataExchangeのところにMIFARE cardの説明があった。
渡すのは、コマンド、アドレス、最大16byteのデータ部、となっている。
これを渡すと、R/W側がうまいことシーケンスを作ってくれるのだろう。
Writeの場合は1ブロック分のデータだし、Authenticationの場合は6byteが鍵で、4byteがカードのシリアルナンバー。

 

シリアルナンバー?
UIDではないのか?
ACR122ではUIDになっているので、UIDが入るんだと思う。

思うが、4byte限定というのが気になる。
UIDには、7byteと10byteもあるのだ。
PN533のドキュメントには、そこ以外でSerial Numberを指すものは無かった。
やはりUIDなのだろうか。

 

厳密に言えば、4byteのUIDは、ユニークではない。
MIFARE 1Kのドキュメントでは、NUID(Non-Unique ID)と書いている。
Ultralightのドキュメントでは、unique 7byte serial number(UID)、って書いてある。
うーん・・・。
どうでもよくなってきた。

0 件のコメント:

コメントを投稿

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