かつて人気を博したビットコインウォレット「MultiBit Classic」。しかし、2017年に開発が終了し、サポートも停止されました。もしあなたがMultiBit Classicのウォレットを持っていて、パスワードを忘れてしまった場合、中にあるビットコインにアクセスできなくなってしまいます。😱 そんな時に役立つのが、パスワード解析ツール「John the Ripper」とその補助スクリプト「multibit2john」です。
このブログ記事では、multibit2johnを使ってMultiBit Classicウォレットのパスワードハッシュを抽出し、John the Ripperで解析する方法を詳しく解説します。この記事を読むことで、忘れられたウォレットへのアクセスを取り戻す手助けができれば幸いです。
MultiBit Classic とは?
MultiBit Classicは、2011年に登場した初期のデスクトップ型ビットコインウォレットの一つです。当時としては使いやすく、日本語にも対応していたため、日本でも利用者がいました。しかし、技術の進化とユーザーの要求の変化により、開発は2017年頃に終了しました。後継のMultiBit HDも同様に開発が終了しています。
MultiBit Classicは、ウォレットの秘密鍵をローカル(自分のコンピュータ)に保存します。ウォレットファイルには主に以下の2種類があります。
- .key ファイル: 単一の秘密鍵を保存するファイル。
- .wallet ファイル: 複数のアドレスやトランザクション履歴を含む、より包括的なウォレットファイル。
これらのファイルは通常、パスワードで暗号化されています。パスワードを忘れると、ファイルがあってもビットコインを取り出すことができません。
John the Ripper と multibit2john
John the Ripper (JtR) は、非常に有名で強力なパスワード解析(クラッキング)ツールです。元々はUNIX系OS向けに開発されましたが、現在ではWindows、macOS、Linuxなど多くのプラットフォームで動作します。様々な種類のパスワードハッシュに対応しており、辞書攻撃、総当たり攻撃(ブルートフォースアタック)、ルールベース攻撃など、多彩な解析手法を実行できます。
multibit2john は、John the Ripperの「Jumbo」バージョンに含まれるPythonスクリプトの一つです。このスクリプトの役割は、MultiBit Classic(および一部のMultiBit HD)のウォレットファイル(.key または .wallet)から、John the Ripperが解析できる形式の「ハッシュ」を抽出することです。John the Ripper本体はウォレットファイルを直接扱えないため、この前処理が必要になります。
multibit2johnは、ウォレットファイルの種類や暗号化方式に応じて、特定のフォーマットでハッシュを出力します。
ハッシュ形式プレフィックス | 対応するウォレット/暗号化 | 備考 |
---|---|---|
$multibit$1*... |
MultiBit Classic (.key ファイル) | 比較的解析が高速なMD5ベースの暗号化が使われていることが多い。 |
$multibit$2*... |
MultiBit HD (.aes ファイルなど) | scryptベースの暗号化が使われており、解析に時間がかかる。 |
$multibit$3*... |
MultiBit Classic (.wallet ファイル) | scryptベースの暗号化が使われており、解析に非常に時間がかかる。可能であれば.keyファイルを使う方が良い。 |
準備:John the Ripper のインストール
multibit2johnを使用するには、まずJohn the Ripper(Jumboバージョン)をインストールする必要があります。Jumboバージョンには、multibit2johnを含む多くの追加ツールやハッシュ形式サポートが含まれています。
インストール方法はOSによって異なりますが、一般的な方法をいくつか紹介します。
Linux (Debian/Ubuntu系)
aptパッケージマネージャを使ってインストールできます。
sudo apt update
sudo apt install john
Linux (Fedora/CentOS/RHEL系)
dnfまたはyumパッケージマネージャを使用します。
sudo dnf install john
または
sudo yum install john
macOS
Homebrewを使うのが簡単です。
brew update
brew install john-jumbo
Windows
公式ウェブサイト (https://www.openwall.com/john/) からWindows向けのバイナリ(通常はZIPファイル)をダウンロードし、適当なフォルダに展開します。コマンドプロンプトやPowerShellからjohn.exe
を実行できるように、パスを通しておくと便利です。
ソースコードからビルド
最新版を使いたい場合や、特定のカスタマイズが必要な場合は、GitHubリポジトリ (https://github.com/openwall/john) からソースコードをクローンしてビルドすることも可能です。手順はリポジトリ内のドキュメント (doc/INSTALL
など) を参照してください。ビルドには開発ツール(gcc, makeなど)や依存ライブラリ(OpenSSLなど)が必要です。
Pythonの確認
multibit2johnはPythonスクリプトなので、Python(通常はPython 2またはPython 3)がインストールされている必要があります。多くのLinuxディストリビューションやmacOSにはデフォルトでインストールされています。Windowsの場合は別途インストールが必要かもしれません。
python --version
# または
python3 --version
でバージョンを確認できます。
インストール後、john
コマンドが実行できること、そしてmultibit2john.py
スクリプトが存在することを確認してください。スクリプトの場所はインストール方法によって異なりますが、Linuxでは /usr/share/john/
や /usr/lib/john/
、ソースからビルドした場合は展開したディレクトリ内の run
ディレクトリにあることが多いです。
# スクリプトの場所を探す例 (Linux)
find /usr -name multibit2john.py 2>/dev/null
multibit2john の使い方:ハッシュの抽出
John the Ripperをインストールしたら、次はmultibit2john.py
を使ってMultiBit Classicのウォレットファイルからパスワードハッシュを抽出します。
1. ウォレットファイルの特定
まず、解析対象のMultiBit Classicウォレットファイル(.key
または .wallet
)を見つけます。これらのファイルは、MultiBit Classicをインストールした際にデータディレクトリとして指定した場所に保存されています。一般的な場所は以下の通りです(ユーザー名は適宜読み替えてください)。
- Windows:
C:\Users\ユーザー名\AppData\Roaming\MultiBit
- macOS:
~/Library/Application Support/MultiBit
- Linux:
~/.multibit
データディレクトリ内には、key-backup
、wallet-backup
などのサブディレクトリがある場合があります。特に.key
ファイルはkey-backup
フォルダ内にあることが多いです。ファイル名は <ウォレット名>-<日時>.key
や multibit.wallet
のような形式になっています。
.key
ファイルが見つかる場合は、そちらを使うことを強くお勧めします。.wallet
ファイルの解析 ($multibit$3*
形式) は、scryptという計算コストの高いハッシュ関数を使用しているため、.key
ファイル (多くはMD5ベース、$multibit$1*
形式) の解析よりも格段に時間がかかります。
2. multibit2john.py の実行
ターミナル(コマンドプロンプト)を開き、multibit2john.py
スクリプトを実行します。引数として、解析したいウォレットファイルのパスを指定します。
スクリプトの場所がパスに含まれていない場合は、フルパスで指定するか、スクリプトのあるディレクトリに移動してから実行します。
# スクリプトのパスを指定する場合 (例)
python /path/to/john/run/multibit2john.py /path/to/your/multibit-wallet.key
# スクリプトのあるディレクトリに移動してから実行する場合 (例)
cd /path/to/john/run/
python multibit2john.py /path/to/your/multibit-wallet.key
.wallet
ファイルを指定した場合、以下のような警告が表示されることがあります。これは、解析に時間がかかることを示しています。
[WARNING] Cracking .wallet files is a very slow process, try cracking the associated .key file instead!
3. ハッシュの保存
スクリプトが正常に実行されると、以下のような形式でハッシュが出力されます。
.key ファイルの場合 (例):
my-wallet-2014-08-15.key:$multibit$1*e5912fe5c84af3d5*5f0391c219e8ef62c06505b1f6232858f5bcaa739c2b471d45dd0bd8345334de
.wallet ファイルの場合 (例):
multibit.wallet:$multibit$3*16384*8*1*5a1fb287949f1e1f*5e394a739c7e40e1cf04b54acd6aa2115850ea67fffceef25e31844717ed5f87
この出力全体(ファイル名:ハッシュ の部分)をコピーし、テキストファイルに保存します。例えば、multibit_hash.txt
という名前で保存しましょう。このファイルが、次にJohn the Ripperで解析する対象となります。
# 出力をファイルにリダイレクトする例
python /path/to/john/run/multibit2john.py /path/to/your/multibit-wallet.key > multibit_hash.txt
これで、John the Ripperでパスワード解析を行う準備が整いました。🎉
John the Ripper でのパスワード解析
multibit2johnで抽出したハッシュを保存したファイル(例: multibit_hash.txt
)を使って、いよいよJohn the Ripperによるパスワード解析を実行します。John the Ripperにはいくつかの解析モードがあります。
1. シングルクラックモード (Single Crack Mode)
最初に試すべきモードです。ユーザー名(ハッシュファイルのファイル名部分)や GECOS 情報(もしあれば)など、ターゲットに関する情報から派生したパスワード候補を試します。非常に単純なパスワードであれば、これで短時間で見つかる可能性があります。
john multibit_hash.txt
オプションを指定しない場合、John the Ripperはデフォルトでシングルクラックモード、辞書モード、インクリメンタルモードの順に試行します。
2. 辞書モード (Wordlist Mode)
パスワードに使われそうな単語を集めた「辞書ファイル(ワードリスト)」を使って解析するモードです。強力なワードリストと、それらを変化させる「ルール」を組み合わせることで、より複雑なパスワードも見つけられる可能性があります。
John the Ripperにはデフォルトの辞書ファイル (password.lst
) が付属していますが、より大規模な辞書ファイルをインターネットからダウンロードして使用することもできます (例: RockYouリストなど)。
# デフォルトの辞書とルールを使用
john --wordlist --rules multibit_hash.txt
# カスタム辞書を使用
john --wordlist=/path/to/your/dictionary.txt --rules multibit_hash.txt
# 辞書ファイルのみを使用 (ルールなし)
john --wordlist=/path/to/your/dictionary.txt multibit_hash.txt
--rules
オプションを付けると、辞書の単語を大文字小文字変換したり、数字や記号を付加したりするルールが適用され、試行するパスワード候補が増えます。
3. インクリメンタルモード (Incremental Mode)
可能な文字の組み合わせをすべて試す、いわゆる総当たり(ブルートフォース)攻撃です。単純なものから複雑なものへと順番に試します。非常に時間がかかりますが、辞書に載っていないランダムなパスワードでも、原理的にはいつか見つけることができます。
john --incremental multibit_hash.txt
# 使用する文字種を指定する場合 (例: すべてのASCII文字)
john --incremental=All multibit_hash.txt
特に $multibit$3*
形式のハッシュ (.wallet ファイル) の場合、scryptの計算コストが高いため、インクリメンタルモードでの解析は現実的な時間内に終わらない可能性が高いです。
解析の実行と中断・再開
- 解析中は、何かキーを押すと現在の状況(試行速度、経過時間、現在の候補など)が表示されます。
q
キーまたはCtrl+C
を押すと、現在の状態を保存して中断できます。- 中断したセッションを再開するには、
--restore
オプションを使用します。
# 中断したセッションを再開
john --restore
解析結果の確認
パスワードが見つかると、ターミナルに表示され、john.pot
というファイル(John the Ripperのホームディレクトリ内、通常はrun
ディレクトリと同じ場所か~/.john/
)に記録されます。
解析が完了した後や、解析中に見つかったパスワードを確認するには、--show
オプションを使います。
john --show multibit_hash.txt
成功していれば、以下のように表示されます。
my-wallet-2014-08-15.key:CorrectPassword123:...(他の情報)...
1 password hash cracked, 0 left
CorrectPassword123
の部分が、解析されたパスワードです。🙌
効果的なパスワード解析のためのヒント💡
- 心当たりのあるパスワードを試す: もしパスワードについて何か覚えていること(使っていそうな単語、数字、パターンなど)があれば、それらを元にしたカスタムワードリストを作成して辞書モードで試すのが効果的です。
- ハードウェアの活用: John the RipperはCPUだけでなく、GPUを使った解析もサポートしています(OpenCLやCUDAが必要)。GPUはパスワード解析のような並列計算に非常に強く、CPUのみの場合よりも大幅に高速化できます。設定方法はJohn the Ripperのドキュメントを参照してください。
- .key ファイルを探す: 再度強調しますが、
.wallet
ファイルしか見つからない場合でも、バックアップなどをよく探し、.key
ファイルがないか確認してください。解析速度が桁違いに速くなる可能性があります。 - クラウドサービスの利用: 高性能な計算リソースを時間単位で借りられるクラウドコンピューティングサービスを利用して、解析を高速化するという選択肢もあります。ただし、コストがかかる点と、ウォレットファイルやハッシュの取り扱いに関するセキュリティリスクに注意が必要です。
- 専門サービスの検討: 自分での解析が難しい場合、仮想通貨ウォレットのパスワード回復を専門に行うサービスも存在します。依頼する際は、信頼できる業者か、費用、成功率などを十分に調査・確認してください。
まとめ
multibit2johnとJohn the Ripperは、開発が終了したMultiBit Classicウォレットのパスワードを忘れてしまった場合に、アクセスを取り戻すための強力なツールです。
- John the Ripper (Jumbo) をインストールする。
multibit2john.py
を使ってウォレットファイル (.key または .wallet) からハッシュを抽出する。- 抽出したハッシュをファイルに保存する。
- John the Ripper を使って、シングルクラック、辞書、インクリメンタルの各モードでハッシュファイルを解析する。
--show
オプションで解析結果を確認する。
パスワード解析は時間と計算リソースが必要な作業ですが、諦めずに試す価値はあります。特に、.key
ファイルが見つかれば、成功の可能性は高まります。この記事が、忘れられたMultiBit Classicウォレットに眠る資産を取り戻すための一助となれば幸いです。💰
繰り返しになりますが、これらのツールは倫理的に、そして法的に許可された範囲でのみ使用してください。
コメント