« ワインの日々 | メイン | サブカテゴリリストの折りたたみ »
2006年04月09日
成分解析
最近(といっても、既に時代遅れの感もありますが)、ミクシィ上で流行っている成分解析とやらをやってみました。適当な文字列を入力してボタンを押すと、その単語の成分を解析してくれるというものです。
さしあたって、自分の姓名の解析結果。。。
****の成分解析結果 :
****の91%は黒インクで出来ています。
****の4%はやましさで出来ています。
****の4%は記憶で出来ています。
****の1%は野望で出来ています。
・・・あんまり面白くないですね。(笑)
黒インクっていうのは、どういうことなんだろう。
ところで、この解析ソフト、どういう仕組みでできているんだろうと思って、いろいろと試してみました。
この解析ソフト、名前を入れて解析するだけ(←少し失礼な物言いですみません)なのに、ソフトをダウンロードさせるんですね。どうして、わざわざダウンロードさせるんだ、というのが最初の疑問。わざわざそういう手間をかけさせないでも、ウェブ上のサービスとしてやればいいんじゃないの。
成分解析といわれたとき、誰でも自分の名前を入れたくなるもの。。。もし、解析をローカルで行っていると見せかけて、サーバに問い合わせに行っていたとしたら、名前とIPアドレスのマッピング表が作者の元に行ってしまうぞ。。。簡単な、スパイウェアとして働くのではないか。。。
ということで、横取り丸とInetSpyを用いてHTTPの通信をしてるかだけは調べてみました。その結果、HTTP通信はしてないことがわかりました。ただ、本当は、ethereal的なもので、変なパケットが飛んでないかまで調べたほうがいいんでしょうね。
ウェブ上でサービスを展開したら、問答無用で解析ワードとIPアドレスのマッピングができてしまいますから、その点、ローカルに落とさせるというのは親切なのかもしれませんね。
次に、この解析結果はどういうロジックで導き出されているんだ、ということについて何か手がかりが得られないものかということで、実験してみました。
苗字と名前をつなげて解析したものとスペースを入れて解析したものを比較したり、『石』といった単一の漢字だけの解析と『石石石石』といった単一漢字が連続したものを解析した結果を比較したりした結果、何かと何かが同じ結果になるという組み合わせがありませんでした。
また、ある意味当たり前の話ですが、同じワードを解析した場合、いつも同じ解析結果が出てくるということから、現在時刻など、時々刻々変化する値は用いていないということが予想されました。
そのことから、この解析はおそらく、解析ワードの文字コードを見ているに違いないという当たりをつけました。
文字の持つ意味を見ているのではなく、文字一つ一つに割り当てられたコードをある一定の法則に基づいて操作しているに違いないということです。
よって、最初のアプローチとして、Windowsが用いているシフトJISコード表上、連続している文字を一字ずつ解析し、同じ解析結果が出てくるものはないかを調べてみることにしました。
結果、
ある漢字(どの漢字だったかは忘れました)の前後60文字くらいを一つ一つ調べましたが、解析結果が同じになるものは見当たりませんでした。
この成分解析、定性的情報と定量的情報に分けて考える必要があるのかもしれませんが、少なくとも、ある漢字の前後60文字には、定性的情報と定量的情報が完全に一致する解析結果となるものはありませんでした。。。
たぶん、どこかの掲示板とかではこのロジックが解明されていたりするのかもしれませんが、今のところ、どういう仕組みで解析が行われているのかよくわかりませんでした。
ちなみに、これって、逆解析できるんですかね。。。
そう考えると、いくら****で解析ワードを隠していたとしても、作者(あるいは、ロジックを解明した人)にとっては、バレバレですね。。。
投稿者 zackie : 2006年04月09日 02:45
From:ナガオヒトミ
From:ZAKI
そうですよね~。
ダウンロードするっていうのでずーっと引っかかってたんですよ。
たいした物じゃないのに、一々ダウンロードさせるってなんか変じゃない?って思ってました。
触らぬ神にたたりなしですね♪
From:yasty89
とりあえず、起動時やキーワード入力時に、妙なパケットは一つも発生してない模様。
From:ミナッチョ
自分も怪しく思い手を出しませんでした。
実験するとはザっキーさんらしい!
From:yasty89
http://seibun.nosv.org/
成分解析 on WEB
成分解析メイカーなるものまであります。
From:Yashiromann
ご無沙汰してます。興味を持ったので、私もちょっとだけ見てみました。
本当は、nmでシンボルテーブルを拾って、対応するロケーションを
逆アセンブルして読もうと思ったのですが、stripされている
ようで、なかなか手強そうです。Windowsが手元にないので、
これ以上の解析は私には無理そうです。
# もしよろしければデバッガを使ってその辺も見てみるといいかもです。
## ちなみに、strings -e S buffalin.exe | nkf -S -e | less
## あたりで、少し面白いものが読めるかもです(謎)。
From:ざっきー
知らぬ間に、たくさんのコメントがついていて、ビックリです。。。
何がビックリって、私と接点があった時期のバラエティさ。中学からお付き合いしているミナッチョさんがいるかと思えば、会社に入ってからお知り合いになったyastyさんもいらっしゃる。某基金の後輩もいれば、大学生のときにお世話させていただいた方も。
この幅の広さに、素直に驚きました。
>ナガオヒトミさん
やっぱりって、やっぱり私、そう思われてました?(苦笑)
まあ、ある意味自分が暇なんだと思いますが、就職活動でもなんでも、手持ちのコマでどこまでトコトン考え抜くことができるかどうかっていうのはどこに行っても肝だと思うんですよ。昔、行った就職活動のセミナーで、胡散臭いおじさんが、「本質はディテールにあり」なんてことを言っていて、そのときは「はぁ?」って感じだったんですが、たかが成分解析一つとっても、いろいろと議論できるんだってことが今回わかりました。プログラマーとかネットワークの専門家とかいろいろな人から斬新な意見をいただいて、僕も学ぶことができました。
いろいろな会社を見ないといけない中、大変だと思いますが、手持ちのコマを有効活用して、乗り切っていってください。
>ZAKIさん
お久しぶりですね!
僕も最初、ダウンロードさせるという点に、胡散臭さを感じました。それがきっかけとなって、いろいろ調べ始めたという経緯があります。
yastyさんに調査いただいた結果、起動時やキーワード入力時に変なパケットが飛んでいるようなことはない模様で、ある程度一安心ではあるんですが、仕組みがいまだにブラックボックスなんで、すんなり納得できないモヤモヤ感は依然として残っています。
>yastyさん
いろいろ調査いただき、ありがとうございます。
yastyさんなら、僕がいろいろ書いたら、パケット調査してもらえるのでは、と内心期待をしていたのですが、期待に応えていただきウレシイです。
ちなみに、さっきまで、略称がお宅の部署と同じになるシートを先ほどまで書いてました(爆)。
>ミナッチョさん
結構、手を出さなかった方がいらして、びっくりしました。
僕は、最初何も抵抗なく、ダウンロードしてしまった人間です。。。
実験は大学時代よくやってましたが、久しぶりに(似非)実験報告書的な文章を書いて、疲れました。。。
連休中、鹿児島に帰るのは難しいかもしれませんが、またタイミングを見つけて飲みましょう!
>Yashiromannさん
そのコマンド、VirtualPCの中のRedhatさんに実行してもらいました。結果、意味のありそうな単語がいくつか出てきたのですが、ロジックを決定付けるこれといったキーワードは残念ながら見当たりませんでした。
一つわかったのは、週の名前とか月の名前がいろいろと出てきていたこと。でも、解析日時を変えても出てくる解析結果が変わらないので、それは解析結果には関係ないんでしょうね。
あと、Visual C++で作られているプログラムであるということ(爆)。
・・・わかったのは、それぐらいです。
でも、コンパイルしたプログラムでも、stringsコマンドを使う、こういう分析手法を用いて手がかりを掴む方法があるんだということを学べたことは有意義でした。
またコメントください。
このエントリーのトラックバックURL:
http://www.zackie.biz/blog/mt-tb.cgi/1141

す、、、すごい分析ですね。骨折れますね。
ざっきーさんってやっぱり面白い人ですね。
私も成分分析やってみます。