OXY NOTES

マスターパスワードを導入したFFFTPでパスワードを復号化する方法

以前と同じ方法でパスワードを復元することができない!

思うところがあり、FFFTPから別ソフトに乗り換え作業をしていました。
ほとんどのサイトはkeePassで管理していたので、スムースにいきましたが、ある問題が…。

あるサーバのパスワードが分からない…


新しいFFFTPでもパスワードを複合できる方法を探す

まず「以前の投稿」で解説した方法でパスワードの復号化をしました。設定をiniファイルに書き出し、変換。…しかし、謎の文字化け。

どうやら新しいバージョンのFFFTPではマスターパスワードの導入により、パスワードの管理方法が刷新されたようです。通常のFFFTPの暗号化と、マスターパスワードによる暗号で二重になっているようです。

なんとか新しいFFFTPのパスワードを復号化できないか検索したところ、「イントフロート スタッフブログ」にて「FFFTPのパスワード解読(マスターパスワード対応版 AES)」という的を射た記事を見つけました。

私の環境では「サクッと実行!」という訳にはいかず、コードを利用するにあたり、いくつか下準備が必要だったので、メモを兼ねて導入方法を解説します。

Parlをコマンドプロンプトに導入する方法

Windowsで上記のコードを実行するにはコマンドプロンプトでParlを実行する必要があります。

そこで必要になるのが以下の2つの作業です

コマンド等に不慣れな方には敷居が高いかもしれませんが、一つ一つの作業は至って簡単です。上から順番に設定していってください。


プロンプトでPerlを使えるようにするためにActivePerlの導入

Perlをコマンドプロンプトで実行するには、「ActivePerl」を利用するのがお手軽です。

ActivePerlのダウンロードとインストール

ActivePerlの公式ダウンロードページ」で環境に合わせたバージョンをダウンロードしてください。
私の場合はwindowsの32bitなので、「Windows (x86)」をダウンロードしました。

ダウンロードしたインストーラーを使ってインストールします。
途中でインストールするディレクトリを聞いてくるのでデフォルトの「C:\Parl」のままインストールします。

また途中で「Add parl to the PATH…」というチェックボックスがありますが、これもデフォルトのチェックが入った状態で次へ進んでください。
これは、どこからでもparlが使えるようにする項目です。もう一つのチェックボックスは「.pl」ファイルとActivePerlを関連付ける項目です。

これでActivePerlの導入は完了です。

ActivePerlの動作確認

スタート > ファイル名を指定して実行」で「cmd」と入力。コマンドプロンプトを立ち上げます。

以下のコマンドを入力してPerlのバージョンをチェックします。

> perl -v

以下の表示が出力されれば、ActivePerlが正しくインストールされています。

This is perl 5, version 16, subversion 3 (v5.16.3) built for MSWin32-x86-multi-t
hread
(with 1 registered patch, see perl -V for more detail)

Copyright 1987-2012, Larry Wall

Binary build 1603 [296746] provided by ActiveState http://www.ActiveState.com
Built Mar 13 2013 11:29:21

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

「CBC」と「Rijndael」モジュールのインストール

今回実行するコードで使う「CBC」と「Rijndael」というモジュールは、デフォルトでインストールされていないため、追加する必要があります。

ActivePerlではモジュールをダウンロード・インストールしてくれる便利なコマンドが用意されています。

以下のコマンドを入力して「Perl Package Manager」を起動します。

> ppm

起動したらまず、メニューにある「View」から「All Packages」を選択。

検索用の窓にインストールしたいモジュールを入力します。今回の例では「CBC」。すると項目が表示されるので目的のモジュールを選択します。

項目を右クリックすると「Install …」と表示されるのでクリック。

するとインストールをクリックした項目に緑色の印が付いているのがわかると思います。その状態で「右矢印のマーク(Run maked actions)」をクリックします。

するとインストールしてよいか尋ねるアラートが表示されるので「OK」をクリック。

インストールが完了すると、灰色だったアイコンがベージュになります。これでインストールできました。

同じ手順で、今度は「Rijndael」もインストールしてください。

必要なモジュールのインストールが終わったら、メニューから「file > exit」でPerl Package Managerを終了させます。

昔はCPANでモジュールを検索して、手動で導入していましたが、便利になりました。
もちろん今でもCPANを使ってインストールすることもできます。


コマンドプロンプトでPerlを実行

それでは「FFFTPのパスワード解読」のページの中程にあるコードをテキストエディタ等にコピー・ペーストしてCドライブ直下の「C:\」に保存します。(もちろん他の場所でも構いませんが、その場合は適宜解説のパスを読み替えてください)

ファイル名は解説に合わせて「decode_ffftp_password.pl」とします。

コマンドプロンプトでディレクトリを移動

> cd C:¥

ファイル名を入力

> decode_ffftp_password.pl

するとFFFTPのパスワードを聞かれるので、iniファイルに記載されたパスワードを入力

FFFTP Password : 0Ca896fcc883f6ec724ab2ef2f7fccd9a4:e13ebcfd1d726f3587d5b79d54dbe53aba601b29f8785902169c90a3f5166040

パスワードの場所は「HostAdrs=example.com」というホスト名で判断すると解りやすいと思います。そのすぐ下にある「Password=」の後に続く文字の羅列が暗号化されたパスワードです。詳しくは「以前の投稿」を参照してください。

今回は「イントフロート スタッフブログ」で提示されているサンプルをそのまま使わせていただきます。

FFFTPを起動するときに入力するマスターパスワード求められるので入力

Master Password : foobar

上記のサイトで解説されているように、特にマスターパスワードを設定していない場合は「DefaultPassword」と入力してください。(この状態での運用は非常に危険なので適切なマスターパスワードを設定することをお勧めします)

すると以下のパスワードが復号化されるはずです。

testpassword

以上でマスターパスワードを導入したFFFTPのパスワードを忘れた場合でも、パスワードを復号化することができるようになりました。

有益な情報を掲載されている「イントフロート スタッフブログ」さんにはこの場を借りてお礼をさせていただきます。