はかますたいる!きょろの技的雑記

井上恭輔(@kyoro353)の私的かつ技的な日記です。米国サンフランシスコで暮らすエンジニアです。

モバイルFelicaでIDm!

ふとモバイルFeliCaがやりたくなったので、
サンプルコードを書いてみた。

初めてのiアプリ、これはなかなか面白い!!!
が、どうしても上手くいかない部分が1点だけ。

たとえば、アプリ側でFelicaIDmを取得すると

11 1A 00 FF FF FF FF FF 

なんだけど、これをカードリーダで読み込むと

01 1A 00 FF FF FF FF FF 

みたいに先頭の1バイトだけ違いが出る。
しかも、どの機種も同じ現象が出て再現性もある。

簡易認証に使う場合は、IDmがユニークであることが保障できないといけないのだけど、この謎仕様にずっと悩まされていた。

そんな時、次のような書き込みを2chで発見!!!

63 名前:dotera : 06/01/28 08:52 id:SP8LQg1s
    モバイルSuica入れるとFelica製造番号が変化してるようにみえます.
    Edyで表示したときと、Suica/ICOCA/PiTapaで表示した時では
    製造番号先頭1桁が変化する.
    論理的に2枚のFelicaが入っているかようにしたのかな.


    でんのすけ♪◆634yAHuzIo
64 名前:でんのすけ♪◆634yAHuzIo : 06/01/28 09:53 id:vrV2aDlg
    >>63
    よく気が付かれましたね。
    NTT DoCoMoおサイフケータイの場合、元々、FeliCa共通領域とフリー領域の2つに
    論理分割されています。「鉄道・バス設定アプリ」を入れると、さらにサイバネ領域
    として論理分割され、論理的に3枚のFeliCaが入っているような状態になります。
    IDmの先頭は、FeliCa共通領域が"0"、フリー領域が"1"、サイバネ領域が"2"になります。 

なーるほど、超納得!!

またコード晒します。