2010-04-09

limechatに設定しているサーバーパスワードを忘れた場合

LimeChatに設定している、サーバーパスワードを忘れてしまった。IRCのサーバーパスワードと言うのは、結局、平文で送らなければならないわけだ。とすれば、LimeChat2は、何らかの方法で、平文のパスワードを保存しているはずである。

LimeChat2の設定ファイルを見てみたところ、それらしき文字列があった。ただし、何らかの方法で暗号化されている。もちろん、結局は、平文でサーバーに送るしかないパスワードなのだから、当然複合できるはずである。見たところ、何らかの方法で暗号化して、HEXにしているだけのようだ。

とはいえ、これだけの理由で、LimeChat2を解析するのは骨が折れる。なにか方法はないものか。

サーバーパスワードを表示するEDITコントロールは、●で埋まっている。これを取得してみるのはどうか。

残念ながら、設定ファイルに使われているのと同じ、HEXが返ってくるだけであった。抜かりはない。

とすると、limechatをデバッガにかけて解析するしかないのか。まてよ、結局、IRCサーバーには、平文でパスワードを送らなければならないわけだ。ならば、IRCサーバーに送るパケットを読めばいいのではないか。

パケットキャプチャをインストールするのも面倒だったので、socketをbindしてlistenしてacceptしてrecvするだけの、簡易なサーバーを書いた。結果として、無事、パスワードはサルベージできた。

しかし、この程度のことに、C++を使うのは、どうも、鶏を割くのに牛刀を用いているような気がしてならない。何か、socketも話せる、スクリプト言語をひとつ覚えるべきか。

しかし、私は好き嫌いが激しいので、世に出回っているスクリプト言語は、あまり気に入っていない。唯一、Javascriptは気に入っている。Javascriptに、明示的に整数やバイト列を扱う機能を付け加え、さらに、ファイルの入出力やソケットなどのライブラリを付け加えれば、結構面白い処理系になりそうなのだが。

No comments:

Post a Comment

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.