FileZilla からパスワードを取り出せ

夏休みが明け、大学に行って気付いた。パスワード忘れた。1つ前のパスワードは思い出せる。夏休みに入る少し前にパスワードを変更していたことが仇となった。パスワードのヒントを書いた紙は無くしてしまったし、先生にパスワードを初期化してもらうのも気が引ける(夏休みさぼりまくっていたから)。

あちこち手元の情報をひっくり返していると、FileZilla に ファイルサーバのパスワードを記憶させていたことに気付いた。試しに研究室の SFTP サーバに接続すると、大丈夫。むむ、この FileZilla は平文のパスワードを知っているのだ! こいつからパスワードを抜き出してやればいいじゃないか。

パスワードはどのファイル、どのレジストリに記憶しとるじゃーとまた、あちこちひっくり返すと、 FileZilla.xml に記憶されていることがわかった。同ファイル中の /FileZilla/Sites/Site#Pass ってのがパスワードっぽいな。当然、何らかの方法で符号化されている。また困った。 FileZilla のソースを調べて、どのような符号化が施されているのか調べるくらいなら、初期化してもらったほうがましだ。まてまて、接続する時に SFTP じゃなくて FTP にすればいいじゃないか。 FTP は平文でパスワードを流すぞ。

というわけで、さっそくFTPの詳細を調べる。 http://www.atmarkit.co.jp/fnetwork/rensai/netpro10/netpro01.html ふーむ。どうも最初にコントロールコネクションでアカウントとパスワードのやり取りをするようだな。それなら簡単だ。FileZilla の接続先を localhostプロトコルFTP にして接続する。そして localhost において人間 FTP サーバを netcat で演じる。

c:\>nc -l -p ftp
220 Please enter your name:
USER ここにユーザー名
331 User name okay, Need password.
PASS ここにパスワード
530 Password not accepted.

おー、パスワードが分かったー。
ちなみに、人間FTPサーバなんかやらなくても、他に適当な FTP サーバを作って、そこに接続しにいく通信をネットワークアナライザーで拾えばいい。