ガイド . ビットコイン
紛失したビットコインウォレットのパスワードを復元する方法
主要なビットコインウォレットの種類について、実践的なDIYガイド――パスワードハッシュの抽出方法、hashcatの実行方法、そしてよくある落とし穴について解説します。
This is the technical companion to our Bitcoin wallet recovery page. If you’re comfortable on a command line, you can often make real progress yourself; if not, it’ll at least tell you exactly what you have. We’ll cover the common wallet types and the tools that open them yourself.
自分の財布の種類を知ろう
適切な方法は、使用したウォレットの種類によって異なります:
- Bitcoin Core— 暗号化されたwallet.dat。
- Blockchain.info / Blockchain.com— オンラインウォレット。最初のパスワードに加え、オプションで2つ目のパスワードを設定できます。
- MultiBit Classic —.keyおよび.walletファイル。
- Electrum— シードベースのウォレットで、パスワードの設定は任意です。
- ペーパーウォレット— 暗号化されていない、またはBIP38で暗号化された秘密鍵。
まずご自身のタイプを確認してください。以下の抽出手順はタイプごとに異なるためです。
パスワードハッシュの抽出
ウォレットを直接攻撃するのではなく、ツールで検証可能なハッシュを抽出します。John the Ripperプロジェクトには、このためのヘルパースクリプトが付属しています。BitcoinCoreのwallet.dat用にはbitcoin2john.py が、Blockchain.infoのウォレット用にはblockchain2john.pyが用意されています。該当するスクリプトをファイルに対して実行すると、hashcatで処理可能なハッシュ文字列が出力されます。ウォレットファイルは読み取り専用に設定し、作業中は常にコピーを使用して行ってください。
Running hashcat yourself
抽出したハッシュを、お使いのウォレットに適したモードでhashcatに入力してください。Bitcoin Coreはモード11300、Blockchain.info v2~v4は 15200、初期のBlockchain.info v1は 12700です。 MultiBit Classic は22500 です。また、Electrumウォレットはバージョンに応じて 16600/21700/21800 のいずれかのモードを使用します。手探りのブルートフォース攻撃を行うのではなく、覚えている情報(長さ、断片、パターンなど)からマスクやワードリストを作成し、hashcat にその範囲を検索させましょう。有効な手がかりがあれば、解析を完了させることができます。
「Blockchain v1」のhashcatトラップ
多くの人の時間を無駄にしてしまう落とし穴があります。初期のBlockchain.info(v1)ウォレットでは、暗号化の反復回数がさまざまであったため、hashcatの標準モードでは、一部のウォレットにおいて正しいパスワードが見つからないまま、何の報告もなく処理が完了してしまうことがあります。たとえパスワードがリストに含まれていても、実行され、終了し、何も報告されないのです。 古いBlockchainウォレットのパスワードが確実であるにもかかわらず、モード12700で何も見つからない場合は、これが原因である可能性が高いです。このようなケースでは、反復回数の違いを考慮したカスタマイズされたアプローチが必要になりますが、通常、DIYではここが限界となります。
セカンドパスワードとニーモニック
さらに2つの注意点があります。Blockchain.infoのウォレットに(送金用の)2つ目のパスワードが設定されていた場合、それはメインのものとは別のスクリプトであり、検索も別途行う必要があります。 また、バックアップがBlockchain.infoの古い15~21語のフレーズである場合、最新のソフトウェアにはまったくインポートできません。これはレガシーな非BIP39形式であり、hashcatではなく元の導出ロジックが必要となります。どちらの状況に直面しているかを把握することで、それがパスワードの検索問題なのか、それともフレーズの再構築問題なのかが判断できます。
ツールのセットアップ
DIYで取り組む場合、始める前に知っておくべきセットアップコストがあります。*2john.pyの抽出スクリプトを実行するには、Pythonがインストールされている必要があります。HashcatはGPU上で最も高速に動作します。CPUでも動作しますが、十分な性能のグラフィックカードを使えば数倍速くなり、推測処理を意図的に遅くしている場合にはこれが大きな差となります。 また、無作為に文字を総当たりするのではなく、実際のメモリを反映した候補リストやマスクを用意することをお勧めします。なぜなら、高性能なハードウェアであっても、短いパスワード以外を無構造に検索すると、妥当な時間内に処理が完了しないからです。ライブラリのインストールやHashcat用マスクの作成に慣れていないのであれば、それだけでもこの作業を専門家に任せる十分な理由となります。
安全にやってください
作業中のルールは2つあります。1つ目は、ウォレットファイルの唯一のコピーで絶対にこの操作を行わないこと(コピーを作成し、オリジナルはそのままにしておくこと)。2つ目は、wallet.dat、鍵、またはシードをオンラインの「復旧」サイトにアップロードしたり、ウェブサイトに貼り付けたりしないことです。正当な復旧作業は、お客様ご自身が行う場合でも当社が行う場合でも、オフラインでファイルのコピーに対して行われます。ウェブ上でシードの入力を求めるものはすべて罠です。
Electrumとペーパーウォレットに関する補足
2つの特別なケースについて簡単に説明します。Electrumはシードを保存しており、オプションでそのシードに対するパスワードも保存します。シードがあれば直接復元できますし、パスワードだけを紛失した場合は、他のウォレットと同様に(バージョンに適したhashcatモードを使用して)ウォレットファイルを検索することができます。ペーパーウォレットは秘密鍵を直接保持しています。平文の鍵であれば、どのウォレットにもインポートできますが、パスフレーズでBIP38暗号化されている場合は、そのパスフレーズが復元用のパスワードとなります。自分がどちらを持っているかを知っておけば、無駄な手間を大幅に省くことができます。
いつ助けを求めるべきか
ハッシュを抽出し、適切なモードを選択し、妥当な候補空間を構築しても、それでも解決しない場合――特にv1ブロックチェーンのウォレット、特殊文字を含むパスワード、またはレガシーフレーズの場合――は、当社にご依頼ください。当社は専用ハードウェアを用いて大規模な構造化検索を実行し、v1の反復バグやエンコーディングの問題に対処し、お客様のアドレスと照合して結果を確認します。これらはすべてオフラインで、成功報酬制で行われます。詳細については、ビットコイン復旧ページをご覧ください。
よくある質問
wallet.dat からハッシュを抽出するにはどうすればよいですか?
John the Ripper プロジェクトの bitcoin2john.py を、お手持ちの wallet.dat に対して実行してください。これにより、hashcat に渡すハッシュ文字列が出力されます(Bitcoin Core の場合はモード 11300)。必ずファイルのコピーで作業を行ってください。
どのhashcatモードを使えばいいですか?
Bitcoin Core 11300;Blockchain.info v2~v4 15200;Blockchain.info v1 12700;MultiBit Classic ;Electrum 16600/21700/21800(バージョンにより異なる)。お使いのウォレットの種類に合わせてモードを選択してください。
以前使っていたブロックチェーンウォレットのパスワードは正しいのに、hashcatでは何も検出されない――なぜでしょうか?
初期のBlockchain.info(v1)ウォレットでは、反復回数がさまざまであったため、標準のhashcatではパスワードの解読に失敗することがあります。これらに対処するには、こうした差異を考慮したカスタマイズされたアプローチが必要となります。
公開アドレスのみでウォレットを復元することはできますか?
いいえ。ウォレットファイル、暗号化された鍵、またはシードが必要です。公開アドレスのみでは、復号化できるものはありません。
支援にはどれくらいの費用がかかりますか?
成功報酬型:ウォレットを開封できた場合にのみ、回収額の一定割合を受け取り、前払いは一切ありません。
自分一人で壁にぶつかってしまった?
ウォレットファイルと、覚えているパスワードを弊社までお送りください。24時間以内に復元可能かどうかを正直にお伝えします。料金は成功報酬制です。
