この記事では、John the Ripper (JtR) スイートに含まれるツールの一つである bitshares2john
の使い方について詳しく解説します。BitShares は分散型取引所プラットフォームであり、そのウォレットファイル (通常 wallet.json
) はユーザーの秘密鍵を保護するためにパスワードで暗号化されています。万が一、このパスワードを忘れてしまった場合、bitshares2john
と John the Ripper を使うことで、パスワードの回復を試みることができます。
1. bitshares2john とは? 🧩
bitshares2john
は、John the Ripper スイートに含まれるユーティリティスクリプト(通常は Python スクリプト)です。その主な目的は、BitShares のウォレットファイル (wallet.json
) からパスワードハッシュ情報を抽出し、John the Ripper が解析できる形式に変換することです。
BitShares の wallet.json
ファイルには、秘密鍵が暗号化されて保存されています。この暗号化を解く鍵がユーザーの設定したパスワードです。bitshares2john
は、このファイル構造を解析し、パスワードの検証に必要なデータ(ソルトや暗号化されたデータの一部など)を特定のフォーマットで出力します。この出力されたハッシュ文字列を John the Ripper に入力することで、様々な手法(辞書攻撃、ブルートフォース攻撃など)を用いて元のパスワードの特定を試みます。
John the Ripper は、非常に多くの種類のハッシュ形式に対応した強力なパスワード回復ツールであり、*2john
という命名規則を持つ多くのヘルパースクリプトが、様々なアプリケーションやファイル形式に対応するために開発されています。bitshares2john
もその一つです。
2. 準備するもの 🛠️
bitshares2john
を使用するには、以下のものが必要です。
-
John the Ripper (Jumbo バージョン推奨):
bitshares2john
は John the Ripper の一部として配布されています。特に、多くのフォーマットに対応している「Jumbo」バージョンをインストールすることをお勧めします。- 公式サイト: https://www.openwall.com/john/
- GitHub リポジトリ (Jumbo): https://github.com/openwall/john
- 多くの Linux ディストリビューションでは、パッケージマネージャ (
apt
,yum
,pacman
など) を通じてインストールできます。例 (Debian/Ubuntu):sudo apt update sudo apt install john
- Kali Linux などのペネトレーションテスト用ディストリビューションには、デフォルトでインストールされていることが多いです。
-
BitShares ウォレットファイル (
wallet.json
): パスワードを回復したい BitShares ウォレットのwallet.json
ファイルが必要です。このファイルは通常、BitShares クライアントのデータディレクトリ内にあります。場所は使用しているクライアントや OS によって異なります。 -
Python (通常は不要):
bitshares2john.py
は Python スクリプトですが、John the Ripper の実行環境には通常、必要なバージョンの Python が含まれているか、依存関係としてインストールされます。もしスクリプトが直接実行できない場合は、Python 3 がインストールされていることを確認してください。
3. bitshares2john の使い方 ⚙️
bitshares2john
の使用方法は非常にシンプルです。基本的な構文は以下の通りです。
path/to/bitshares2john.py path/to/wallet.json > output_hash.txt
具体的には、以下の手順で実行します。
-
John the Ripper のディレクトリに移動 (推奨): 通常、
*2john
スクリプトは John the Ripper のrun
ディレクトリ内にあります。まず、そのディレクトリに移動すると、コマンドが簡潔になります。# John the Ripper をソースからコンパイルした場合や、 # 特定の場所に展開した場合の例 cd /path/to/john/run
システムにインストールした場合、
bitshares2john.py
が/usr/share/john/
や/usr/lib/john/
などにある場合もあります。その場合は、スクリプトへのフルパスを指定するか、run
ディレクトリから実行します。Kali Linux などでは/usr/sbin/
ディレクトリに*2john
系のツールへのシンボリックリンクや実体がある場合もあります。 -
bitshares2john.py
を実行:wallet.json
ファイルを指定してスクリプトを実行し、出力をファイルにリダイレクトします。./bitshares2john.py /path/to/your/wallet.json > bitshares_hash.txt
/path/to/your/wallet.json
は実際のwallet.json
ファイルのパスに置き換えてください。bitshares_hash.txt
は、抽出されたハッシュを保存するファイル名で、任意の名前に変更できます。 -
出力の確認 (任意): 生成された
bitshares_hash.txt
ファイルの中身を確認します。以下のような形式の文字列が含まれているはずです (実際のハッシュ値は異なります)。wallet.json:$bitshares$*0*encrypted_data_hex*salt_hex
この文字列が、John the Ripper がパスワード解析に使用するデータです。ファイル名 (
wallet.json:
の部分) も含まれることがあります。$bitshares$
はハッシュのタイプを示し、その後に続く*
区切りのデータが実際の暗号化情報やソルトです。
4. John the Ripper でハッシュを解析する 🔓
bitshares2john
でハッシュファイル (例: bitshares_hash.txt
) を生成したら、いよいよ John the Ripper を使ってパスワードの解析を試みます。John the Ripper はいくつかの攻撃モードを持っています。
4.1. デフォルトモード (複合攻撃)
最も簡単な方法は、ハッシュファイルを指定して John を実行することです。John は自動的に複数の攻撃モード(シングルクラックモード、辞書モード、インクリメンタルモード)を組み合わせて試行します。
john bitshares_hash.txt
John the Ripper は解析を開始し、進捗状況をターミナルに表示します。パスワードが見つかると、そのパスワードと関連情報が表示されます。解析には時間がかかる場合があります。特にパスワードが複雑な場合は数時間から数日、あるいはそれ以上かかることもあります。
4.2. 辞書攻撃モード (Wordlist Mode)
特定の単語リスト(辞書ファイル)を使ってパスワードを試すモードです。一般的な単語やよく使われるパスワードを集めたリストを使用すると効率的な場合があります。
john --wordlist=/path/to/your/wordlist.txt bitshares_hash.txt
/path/to/your/wordlist.txt
は使用したい辞書ファイルのパスに置き換えます。John the Ripper にはデフォルトの辞書 (password.lst
) が付属していることが多いです。また、インターネット上には様々な言語やテーマの辞書ファイルが公開されています (例: RockYou)。
さらに、--rules
オプションを使うことで、辞書の単語に特定のルール(大文字小文字変換、数字や記号の追加など)を適用し、より多くのバリエーションを試すことができます。
john --wordlist=/path/to/wordlist.txt --rules bitshares_hash.txt
4.3. インクリメンタルモード (Incremental Mode)
辞書を使わず、指定された文字セット(例: すべての英数字記号)の組み合わせを総当たりで試すモードです。単純なパスワードなら早く見つかる可能性がありますが、パスワードが長くて複雑な場合は非常に時間がかかります(現実的でない時間になることも多いです)。
john --incremental bitshares_hash.txt
特定の文字種(例: 数字のみ)を指定することも可能です。
# 数字のみを試す例
john --incremental=Digits bitshares_hash.txt
4.4. 解析結果の確認
John the Ripper はクラックに成功したパスワードを john.pot
というファイル (通常は John の run
ディレクトリ内) に記録します。解析が完了した後や、途中で中断した場合でも、以下のコマンドで既に見つかったパスワードを確認できます。
john --show bitshares_hash.txt
成功していれば、wallet.json:PASSWORD
のような形式で表示されます。
解析セッションは john.rec
ファイルに保存されるため、中断した場合は john --restore
で再開できます。
5. 重要な考慮事項と倫理 ⚖️
繰り返しになりますが、bitshares2john
や John the Ripper のようなパスワード回復ツールを使用する際には、以下の点を強く意識してください。
- 合法性: 自分が所有し、アクセス権を持つデータに対してのみ使用してください。他者のデータやシステムに対して許可なくこれらのツールを使用することは、不正アクセス行為として法的に罰せられる可能性があります。
- 倫理: 技術的な好奇心や学習目的であっても、許可なく他者のセキュリティを試す行為は倫理的に問題があります。
- パスワード強度: このプロセスを通じて、弱いパスワードがいかに簡単に解読される可能性があるかを理解することができます。自身のパスワードは、長く、複雑で、推測されにくいものに設定することが非常に重要です。パスワードマネージャーの使用も推奨されます。💪
- 時間とリソース: パスワードの複雑さや長さによっては、解析に膨大な時間と計算リソースが必要になる場合があります。必ずしもパスワードが見つかるとは限りません。
6. トラブルシューティング 🤔
-
John がハッシュを認識しない:
bitshares2john
が正しく実行され、有効なハッシュが生成されたか確認してください。- John the Ripper のバージョンが古い可能性があります。特に Jumbo バージョンの最新版を試してください。
john --list=formats
コマンドで、bitshares
フォーマットがサポートされているか確認できます。
-
解析が非常に遅い:
- パスワードが非常に複雑である可能性があります。
- CPU パワーが不足している場合、解析には時間がかかります。
- 可能であれば、GPU を活用できる John the Ripper のビルドや設定を試すと、特定の種類のハッシュでは大幅に高速化されることがあります(ただし、
bitshares
フォーマットが GPU に対応しているかは確認が必要です)。 - より的を絞った辞書を使ったり、ルールを調整したりすることで効率が上がる場合もあります。
7. まとめ ✨
bitshares2john
は、BitShares ウォレットのパスワードを忘れてしまった場合に、John the Ripper を使って回復を試みるための重要なユーティリティです。wallet.json
からハッシュを抽出し、John the Ripper に渡すことで、様々な攻撃手法を用いたパスワード解析が可能になります。
このプロセスは技術的に興味深いものですが、常に法と倫理を遵守し、自身のデータに対してのみ責任ある形で使用することが不可欠です。また、この経験を通じて、強力なパスワードを設定し、適切に管理することの重要性を再認識する機会にもなります。
パスワード回復作業が成功することを願っています! 🍀
参考情報
- John the Ripper 公式サイト: https://www.openwall.com/john/
- John the Ripper (Jumbo) GitHub: https://github.com/openwall/john
- BitShares 公式サイト: https://bitshares.org/ (関連情報を探す起点として)
コメント