W31T から W43S へメールデータを移動

ケータイ変えました。
今度は W43S です。

まあ、W43S の感じとかは別途機会があれば書くとして... 今回は W31T から W43S へ、メールの送受信履歴をコピーする方法を検証してみることにする。

[ファーストステップ]
W31T にはメールデータを SD カードにバックアップする機能がある。ただ、バックアップしたデータをリストアする方法も閲覧する方法もないように思えるのはどういうことなのか...
#一応、メモリーカード上のメールデータを読込可能な市販ソフトはある。

まあ、とりあえずメールデータを SD カードに保存する。メールデータを保存した SD カードをカードリーダーで読み込むと...

PRIVATE\AU\ML

というフォルダがあり、そこにメールデータは保存されている。

ML フォルダの中は...

M_RE (受信メール)
M_SE (送信メール)

というフォルダがある。受信メールフォルダの中には RE_S_000RE_S_009 という 10 個のサブフォルダが、送信メールフォルダには SE_S_000 というサブフォルダがある。このサブフォルダの中にメールデータが入っているワケですが... まあ、この中身の仕様は W31T と W43S でほぼ同じ。
#実は *.VMG というメール本文が保存されているファイルの仕様が若干違うんだけど、まあ、無視してもいいみたい。

[セカンドステップ]
W43S は ソニーエリクソン。ソニーですので... 当然メモリーカードはメモリースティック。それも Duo 。まあ、最近の僕はすっかりソニー製品に囲まれて生きているので、メモリースティック Pro Duo は余ってるので問題なし。

そして、 W43S にもメールデータを メモリースティック にバックアップする機能がある。しかも、 W31T と違って、 W43S にはバックアップしたメールデータを閲覧する機能がある!とりあえず検証のタメにメールのバックアップを実行。カードリーダーで中身を見てみる。

MOBILE\AU\ML

というフォルダがあり ML フォルダの中身は前筆の通り W31T の ML フォルダと一緒。たぶん、これは最近の機種ならみんな同じなんだと予測。あ、ちなみに W31T の AU\ML フォルダは隠し属性になっていないけど、 W43S の AU\ML フォルダは隠し属性になっているので注意。

ここまで読むと... 単純に SD カード内の ML フォルダを メモリースティック内の ML フォルダに上書きしてやるだけで、 W31T から W43S へのメールデータの移行が完了するかに思える。
# W43S には メモリースティック内のメールデータを閲覧する機能があるし。

ところがこれだけじゃうまくいかない。

[サードステップ]
はてさて、 ML フォルダを上書きしても W43S でメールが閲覧できないのはなんでじゃろ...

実は、 W43S にはメモリースティック内のファイル一覧のインデックスファイルがある。これはメモリースティックを使ったソニーエリクソン製のケータイの独自仕様だと思われる。だって、 ML フォルダの中には au ケータイで標準と思われるインデックスファイルがあるんだもん。ソニーエリクソン製のケータイは面倒なヤツだ。

まあ、いいか。

さて、メモリースティックの中身をもう一度よく見てみる。

MOBILE\SEMC\MAIL\AU

というフォルダがあり、そこに

MAIL.IDX (受信メール用インデックスファイル)
SEND.IDX (送信メール用インデックスファイル)

というファイルがある。どうやらこのファイルをいじってあげないと、 SD カードからメモリースティックにコピーしたメールデータの閲覧ができないようだ。 SEMC ってのは 「ソニーエリクソンメモリーカード」 の略なんだろうか。まあ、いいか。しょうがないのでファイルを解析してみよう。

[フォースステップ]
とりあえず、今回は SEND.IDX ファイル... 送信メール用のインデックスファイルの方を解析する。  MAIL.IDX ファイル... 受信メール用のインデックスファイルも基本的な仕様は同じだと思うが、送信メールはサブフォルダが 1 個だけなのに、受信メールはサブフォルダが 10 個あるので、複数のフォルダにメールデータを保存した場合どうなるのか? 等はまだ調べていない。

さて、 SEND.IDX ファイルをバイナリエディタで開いて解析していこう。 SEND.IDX ファイルには、 28 byte のファイルヘッダ部分と、20 byte のメールファイル数分のアイテム部分がある。

28 byte のファイルヘッダ部分は以下の構成。

16byte
 VERSION 2.0_____
 58:45:52:53:49:4F:4E:20:32:2E:30:00:00:00:00:00
 ファイルバージョン情報だろう

4byte
 フォルダ内のファイル数

4byte
 今までメモリースティックにコピーした累計ファイル数 + 100,000,000
 ここの累計ファイル数は W43S 上でメモリースティック内のファイルを、
 すべて削除してもリセットされない。
 ※なぜ + 100,000,000 するのか?
 ※なぜメールファイルを削除してもリセットされないのか? は不明

4byte
 空 00:00:00:00

そして、メールファイル数分のアイテム部分は以下の構成。

4byte
 自身が追加されたときの累計ファイル数 + 100,000,000
 最後に追加されたアイテムは、ファイルヘッダ部分の同項目と同じ値になる

2byte
 48
 30:00

 なんの意味があるのか分からないが、常にこの値だった
 ASCII コードで 30 は 数字の 0 のことなので、
 もしかしたらフォルダのインデックス番号かも?
 その場合、なぜわざわざ ASCII コードで保存してるのかが謎

2byte
 ファイルインデックス番号
 例えば、 E2__0014.VMG というファイルをさす場合は 14 = 0E:00

4byte
 メールの日付時刻
 どうやら 1999年10月16日 00時00分00秒からの経過秒のようだ
 なぜ 1999/10/16 00:00:00 なのかは謎だが、
 4byte... 32bit なので、 UNIX タイムスタンプは採用できなかったんだろう
 ファイルのソートにここの値を使っているのだと思われる

4byte
 空 00:00:00:00

4byte
 空 00:00:00:00

とりあえずこんな感じ。このファイルの構造体を Delphi で作ると以下の感じになる。

type
  TSEMCItem = record
    Total: Longword;
    Folder: array[0..1] of Char;
    Index: Word;
    DateTime: Longword;
    Free1: Longword;
    Free2: Longword;
  end;

  TSEMC = record
    Version: array[0..15] of Char;
    Count: Longword;
    Total: Longword;
    Free1: Longword;
    Items: array of TSEMCItem;
  end;

さて、後はこのファイルを生成するソフトを作るだけだ。

[フィフスステップ]
気が向いたら作ります(汗)

※注意
ここに書いてある内容のすべてを検証したワケではないので、間違ってたらごめんなさいとしておきます。ってゆうか情報持ってる人いたら教えてください。

| | コメント (3) | トラックバック (0)

ケータイ買った

ケータイ新しく買ってみた。なんか、前の機種33ヶ月も使ってたみたい。auポイント貯まりまくりでしたよ!

買ったのは写真の通りW31T。初めての東芝ケータイだ!ってか、このココログもケータイから投稿してます。写真は自分撮れないから箱( ̄ー ̄)

えと、一応、最新機種になるのかな?前の機種からかなり時間たってるから違いにびっくりしてますよ!

何これ!薄い!サクサク動く!液晶デカイ!そしてキレイ!さらにアンチエリアスされた文字がウツクシイ(´▽`)

んー、このくらい機種変えてないと感動が大きくていいかも(´▽`) 最近のケータイはゲームも結構すごいのねぇ。ただし、新しい機種だから対応したゲーム少ないけど。

で、待ち受けFlash。これイイね!ただアニメーションするだけじゃなくて、時間によって背景が変わったりするやつとかあるのね!なんかすげえ!

んー、満足度高いですよ。auポイント貯まってたから驚くほど安く買えたしね!050818_010501.JPG

| | コメント (2) | トラックバック (0)