ドコモショップにある端末と隠しコマンドについて

ドコモの FOMA N905i を購入しに行った。
ドコモの IC カード (Felica) 内蔵携帯は電子マネーなどの情報が内部に格納されており、通常の操作では USB ケーブルなどを FOMA 端末に接続してもその内容 (RAW データ) をユーザーが読み出すことも書き込むことも出来ないのだが、ドコモショップの店頭にある「iCお引っこしサービス DOCOPY 端末」という特殊な PC を使用すると、古い FOMA 端末内の IC カードのデータを読み出して、新しい FOMA 端末に書き込むことができるという。(移動するだけで、コピーはできない。内部的には、データを古い端末から読み出して、新しい端末に書き込んで、古い端末から削除するというような手順になっているように見えた。)


早速ドコモショップで以前使っていた N903i (SuicaNanacoEdy などが入っている) から IC カードデータを取り出して新しく購入した N905i に移動してみた。


これがドコモショップの店頭にある「iCお引っこしサービス DOCOPY 端末」という特殊な PC。


店員さんに手伝ってもらってデータ移行を行った。FOMA 端末は、このデータコピー用の PC (ノート PC のように見える) から出ている FOMA USB ケーブルっぽいケーブルで PC に接続するようになっているようだ (ノート PC の周囲にプラスチック製の箱がかぶせてありブラックボックス化されているのでよく見えない)。


nttdocomo.co.jp 上のページ http://www.nttdocomo.co.jp/service/osaifu_shopping/osaifu/ic/ には、以下のように書かれている。

移行可能なデータおサイフケータイ対応サービスのICカード内データ
対応するICアプリのダウンロードサイトURL
おサイフケータイの状態やご契約回線の状況などにより、iCお引っこしサービスをご利用いただけない場合があります。


この移行手続きにおいては、内部的には、必ず元の FOMA 端末の IC カードのデータを読み出し、そのデータをそっくりそのまま転送先の FOMA 端末の IC カードに直接書き込むという、とても楽しそうな処理が行われているはずである (書き込む FOMA 端末は FOMA カードがささっていない状態なので電波で通信をしているということはない。したがって、ローカルな USB ケーブル接続でそのような処理を行わないとデータを移行することはできない)。


ところが FOMA 端末内の IC カードデータを読み出したり、FOMA 端末に IC カードデータを書き込んだりするための API やソフトウェアのようなものは、FOMA ユーザーに対しては公開されておらず、普段は目にすることがない。

このドコモショップ店頭にある「iCお引っこしサービス DOCOPY 端末」はユーザー自らが操作することができる、IC カードデータを生で読み書きすることができる専用の USB 経由の隠しコマンドのようなものを生成・解釈することができる、特殊なソフトウェアが入っているに違いない。


そこで挙動を極めて良く観察してみたところ、どうやら以下のような処理が行われているような感じがした。

  1. 移行元の FOMA 端末には FOMA カードが刺さっていることが前提となっている。まず、「iCお引っこしサービス DOCOPY 端末」(以下「PC」と呼ぶ) は移行元の FOMA 端末の OBEX (Object Exchange) 仮想ポートを USB ケーブル経由で開き、OBEX を用いてアドレス帳のうち最初の 1 件目 (必ず FOMA 端末に刺さっている FOMA カードの電話番号が記録されている) を取得する。
  2. PC は ALADIN (NTT ドコモの顧客情報管理システム) に接続されており、ALADIN を用いて、移行元の FOMA 端末から取得した電話番号が利用停止や解約済みになっていないかどうかを確認する。また、ユーザーが PC の画面に入力した「ネットワーク暗証番号」が ALADIN に登録されているものかどうか確認する。一致しない場合はエラーにして、次の処理に進ませない。
  3. PC は移行元の FOMA 端末に、公開されていない特殊な通信コマンドを用いて USB ケーブル経由でコマンドを発行し、IC カードデータの低レベルモード読み書きが可能なモードに移行させる。N903i の挙動を見ていたところ、端末が一度再起動し、BIOS 画面っぽい特殊な画面 (FOMA のオンラインでのソフトウェア更新を行うときの画面のようなもの) に遷移し、そこでテキストベースのプログレスバーのようなものが表示され、IC カードのデータが PC に吸い出される。
  4. PC は移行先の FOMA 端末に、同様に公開されていない特殊な通信コマンドを用いて、IC カードデータの低レベルモード読み書きが可能なモードに移行させる。この状態で先ほど吸い出した IC カードのデータを書き込む。
  5. PC は移行元の FOMA 端末から IC カードのデータを消去する。


気になる点は 2 点である。

  • PC は移行元 FOMA 端末に挿入されている FOMA カードに登録されている自局電話番号 (自分の番号) を信用している。その電話番号が有効で、かつネットワーク暗証番号が ALADIN に問い合わせた結果一致した場合に、データ移行アプリケーションの起動を許可している。しかし、FOMA カードに登録されている自局電話番号 (自分の番号) は、実は誰でも書き換え可能である。したがって、本来信用してはいけない (認証のために利用してはいけない) データを利用している気がする。(さらに、そういう認証を、ドコモショップへの来店者であれば手に届く範囲の PC で、客自らの操作で操作できるという点については、非常に興味深い。)
  • PC は FOMA 端末に対して非公開の隠しコマンドを用いて IC カードのデータの低レベル読み書きを行っている。このような隠しコマンドによって遷移できる隠し動作モードに関する情報やそのようなモードの存在の記述は、ユーザーに対して開示されていない。

PC にはそういう意味でかなり面白いコマンドを発行できる専用ソフトウェアが入っているに違いない。


一見すると、PC と来客が持ち込んだ FOMA 端末とを接続するケーブルはただの FOMA USB ケーブルのようである。USB 通信をキャプチャするような形で上記の隠しモードに入れる通信コマンドを解析してみようという人も出てくるのではないだろうか。