メッセージアーカイブの暗号

普段からYahooメッセンジャーを利用しているのだが、ちょっとメッセージアーカイブを利用したツールを作ってやろうかなと思ったら、これが実は暗号化されている。
なんでこんなん暗号化されてんの?とも思ったがマルチユーザー用なんかなあ…。

ともあれちょっと解読を試みてみると、中身は結構単純であることがわかる。基本的な繰り返しは可変の5バイト+0が7バイト+可変1バイト+0が3バイト+定型37バイト+発言内容+0が4バイト。これが1発言ごとに繰り返されている。しかも発言内容は逐字変換で前後との相互作用はなし、そして何文字かで同じ変換がループしている。なんとかなるかも。
そこでざっと文字コードを全種類送ってみて変換テーブルを作成。これを元に定型37バイト部分を解読すると、font face=" "という感じのであることが判った。そうか自分は顔文字を全然使わないから定型に見えていたのか…。さらに実は空白部分に見えていた0のバイトには自分のIDが埋め込まれていることも判る。つまりは変換テーブル自体自分のID→全部0のバイト列となるような作成のされかたをしているということになる。しかしIDからどう暗号化しているかのアルゴリズムはわからない…テーブルを可視化してみるとかなり規則的に見えるので結構簡単なのかもしれない。あるいは全文字コードを使ったIDを取得してみるという方法も強引だが案外楽な方法かも。

発言内容さえ使えれば自分のツールにはことたりたので解読はここでやめにしたが、どうも完全に解読してあるソフトもあるらしい。
2つ見つけることができて、1つはYahoo Message Archive Decoderというズバリな名前のもの。だがシェアウェアだったので、全く試してない。お値段は$19なり。もひとつはSuper Yahoo Messenger Archive DecoderというなにかSuperらしいもの。こっちはフリーだったので試してみたが、動作せず。なにがSuperかメッセンジャーが英語版だったら動くんだろうなあ…。
どっちにしても今回は解読機能そのものじゃなくてソースが欲しかったので意味はないのだけれど。