はじめに
Electrumは、軽量で使いやすい人気のBitcoinウォレットです。2011年11月にリリースされて以来、多くのユーザーに利用されています。しかし、パスワードを忘れてしまった場合、ウォレットにアクセスできなくなる可能性があります。
そんな時に役立つのが、John the Ripper (JtR) というパスワードクラッキングツールと、その関連ツールである electrum2john
です。
electrum2john
は、ElectrumウォレットファイルからJohn the Ripperが解析できる形式の「ハッシュ」と呼ばれるデータを抽出するためのスクリプトです。このハッシュデータを使用することで、John the Ripperは様々な手法(辞書攻撃、ブルートフォース攻撃など)を用いて元のパスワードを見つけ出す試みを行います。
前提条件
electrum2john
を使用するには、以下の準備が必要です。
-
John the Ripper:
electrum2john
スクリプトは通常、John the Ripperのパッケージに含まれています。JtRをインストールする必要があります。Kali Linuxなどのペネトレーションテスト用OSにはプリインストールされていることが多いですが、そうでない場合は公式サイトからダウンロードしてインストールしてください。electrum2john
スクリプトは、JtRのソースコードを展開したディレクトリ内のrun
フォルダや、インストール後の共有ディレクトリ(例:/usr/share/john/
や/opt/john/run/
)に含まれていることが多いです。 -
Python:
electrum2john
はPythonスクリプトとして提供されていることが多いです。Python 3.8以上が推奨されます。 -
Electrumウォレットファイル:
パスワードを解析したいElectrumウォレットのファイルが必要です。デフォルトでは
default_wallet
という名前で、通常は以下の場所に保存されています(バージョンやOSによって異なる場合があります)。オペレーティングシステム 一般的なウォレットファイルの場所 Windows %APPDATA%\Electrum\wallets\
(例:C:\Users\<ユーザー名>\AppData\Roaming\Electrum\wallets\
)macOS ~/.electrum/wallets/
(Finderで Shift + Cmd + G を押し、~/.electrum
と入力)Linux ~/.electrum/wallets/
注意: ウォレットファイルには通常、拡張子が付いていません。また、Electrumのバージョンによってはファイル形式が異なる場合があります (例: Electrum 2.0以降はJSON形式が使用されています)。
electrum2john
が対応している形式か確認が必要な場合があります。Electrum 2.8以降ではウォレットファイルのディスク暗号化がデフォルトで有効になっています。
electrum2johnの使い方:ハッシュの抽出
準備ができたら、electrum2john
を実行してウォレットファイルからハッシュを抽出します。
-
electrum2john
スクリプトの場所を確認する: John the Ripperのインストールディレクトリ内のrun
フォルダなどを探します。見つからない場合は、find / -name electrum2john.py 2>/dev/null
のようなコマンドで検索できます。 -
コマンドを実行する:
ターミナルまたはコマンドプロンプトを開き、
electrum2john.py
があるディレクトリに移動するか、フルパスを指定して以下のコマンドを実行します。python /path/to/john/run/electrum2john.py /path/to/your/electrum_wallet_file > electrum_hash.txt
/path/to/john/run/electrum2john.py
:electrum2john.py
スクリプトへの実際のパスに置き換えてください。/path/to/your/electrum_wallet_file
: 解析したいElectrumウォレットファイルへの実際のパスに置き換えてください。> electrum_hash.txt
: 抽出されたハッシュをelectrum_hash.txt
というファイルに保存します。ファイル名は任意に変更可能です。
成功すると、ターミナルには何も表示されず、カレントディレクトリに
electrum_hash.txt
ファイルが作成されます。 -
抽出されたハッシュを確認する:
作成された
electrum_hash.txt
ファイルをテキストエディタで開くと、以下のような形式の文字列が記録されています。これがJohn the Ripperが解析するハッシュデータです。$electrum$<salt-type>*<hex_data>*<hex_data>...
<salt-type>
はウォレットの暗号化方式を示しており、Electrumのバージョンによって異なります。このタイプによって、John the RipperやHashcatでの解析モードが変わります。Salt Type 対応するHashcatモード 備考 1, 2, 3 16600
古いバージョンのElectrum 4 21700
比較的新しいバージョン 5 21800
比較的新しいバージョン (よりセキュア) Salt Type 4や5は、以前のバージョンよりもセキュリティが強化されており、解析にはより多くの時間と計算能力が必要になります。
- Pythonの依存関係が不足している可能性があります。
electrum2john.py
スクリプトやウォレットファイルに対する読み取り権限がない可能性があります。- ウォレットファイルの形式が、使用している
electrum2john.py
スクリプトでサポートされていない可能性があります。特に古いバージョンのJtRを使っている場合や、非常に新しいバージョンのElectrumウォレットを対象としている場合に起こりえます。2021年頃には、新しいseed version (例: 18) に対応していない問題が報告されたこともありました。
John the Ripperによるパスワード解析
ハッシュファイル (electrum_hash.txt
) が準備できたら、John the Ripperを使ってパスワードの解析を開始します。
基本的な使い方
最も簡単な方法は、JtRにハッシュファイルを指定して実行することです。JtRはデフォルトのモード(シングルクラックモード、辞書モードなど)を順に試します。
/path/to/john/run/john electrum_hash.txt
パスワードが見つかると、ターミナルに表示されます。
辞書ファイルを使用する
より効率的に解析するために、パスワードの候補リスト(辞書ファイル)を使用することができます。多くの辞書ファイルがオンラインで入手可能です(例: SecLists)。
/path/to/john/run/john --wordlist=/path/to/your/wordlist.txt electrum_hash.txt
--wordlist=/path/to/your/wordlist.txt
: 使用する辞書ファイルへのパスを指定します。
JtRは、辞書ファイル内の単語をそのまま試したり、ルール(数字を追加する、大文字小文字を変えるなど)を適用したりしてパスワードを探索します。
解析の進行状況と結果の確認
- 進行状況: 解析中に任意のキーを押すと、現在の進行状況(試行したパスワード数、速度など)が表示されます。
- 結果の表示: 解析が完了した後や、中断した場合でも、以下のコマンドで既に見つかったパスワードを表示できます。
/path/to/john/run/john --show electrum_hash.txt
計算コストについて ⏳
パスワードの解析には、パスワードの複雑さ(長さ、文字種)や使用するマシンの計算能力によって、数分から数日、あるいはそれ以上かかることがあります。特に、長く複雑なパスワードや、Salt Type 4, 5 のような新しい形式のウォレットの場合は時間がかかります。GPU を活用できるHashcatなどのツールを使用すると、解析速度を向上させることができます。
Hashcatを使用する場合は、electrum2john
で抽出したハッシュと、対応するモード (-m 16600
, -m 21700
, -m 21800
) を指定して実行します。
hashcat -m <mode> electrum_hash.txt -a 3 '?a?a?a?a?a?a'
<mode>
: 上記の表に基づいたモード番号 (例:21700
)-a 3
: ブルートフォース攻撃モードを指定'?a?a?a?a?a?a'
: 試行するパスワードのパターン(この例では6文字の全文字種)
重要な考慮事項 🤔
- Electrumのバージョン互換性: Electrumはバージョンアップに伴い、ウォレットファイルの形式や暗号化方式を変更してきました。例えば、バージョン2.0ではBIP32に対応しファイル形式が変更され、バージョン2.7でもフォーマット変更がありました。古いバージョンの
electrum2john
では、新しいバージョンのウォレットファイルを正しく処理できない可能性があります。常に最新版のJohn the Ripper (Jumbo) を使用することをお勧めします。 - シードフレーズの重要性: Electrumウォレットは通常、12語などのシードフレーズ(リカバリーフレーズ)からも復元できます。パスワードを忘れた場合でも、シードフレーズを安全な場所に保管していれば、それを使ってウォレットを復元し、新しいパスワードを設定するのが最も安全で確実な方法です。パスワード解析は、シードフレーズも紛失した場合などの最終手段と考えるべきです。
- 法的・倫理的側面: 繰り返しになりますが、これらのツールは強力であり、悪用される可能性もあります。必ず、自身が正当なアクセス権を持つウォレットに対してのみ使用してください。
まとめ ✨
electrum2john
は、John the Ripperを使用してElectrumウォレットのパスワード解析を行うための重要なステップとなるツールです。ウォレットファイルから解析可能なハッシュデータを抽出し、その後John the RipperやHashcatなどのツールで実際の解析作業を行います。
パスワードを忘れてしまった際の回復手段となり得ますが、成功は保証されず、時間と計算リソースが必要です。最も重要なのは、ウォレット作成時に設定したパスワードと、特にシードフレーズを安全かつ確実に保管しておくことです。これらのツールは、あくまで補助的な手段、またはセキュリティ監査の目的で、責任を持って利用するようにしましょう。
参考情報
- John the Ripper official website: https://www.openwall.com/john/
- Electrum Bitcoin Wallet official website: https://electrum.org/
- Hashcat official website: https://hashcat.net/hashcat/
コメント