はじめに
デジタル化が進む現代社会において、ファイルのセキュリティは非常に重要です。特に動画ファイル形式の一つであるMatroska(MKV)ファイルは、パスワードによる暗号化機能をサポートしており、重要な映像コンテンツを保護するために利用されることがあります。しかし、時として正当な理由でアクセスが必要なのに、設定したパスワードを忘れてしまうという状況も考えられます。
このような場合に役立つのが、強力なパスワード解析ツールである「John the Ripper」(通称John)です。Johnは様々な形式のパスワードハッシュに対応していますが、MKVファイルのような特定のファイル形式から直接パスワードを解析することはできません。Johnが解析できる形式(パスワードハッシュ)に変換する前処理が必要になります。
ここで登場するのが、John the Ripperスイートに含まれるgenmkvpwd
というツール(多くの場合Pythonスクリプト)です。このツールは、パスワードで暗号化されたMKVファイルから、John the Ripperが解析可能なパスワードハッシュ情報を抽出する役割を担います。この記事では、genmkvpwd
の基本的な使い方、動作原理、そして実際の使用例について、初心者にも分かりやすく解説していきます。パスワードを忘れてしまったMKVファイルへのアクセスを回復するための一助となれば幸いです 😊。
注意: パスワード解析ツールの使用は、自身が所有するファイルや、解析する正当な権限を持つファイルに対してのみ行ってください。他者のファイルやシステムに対して不正にアクセスを試みることは、法律で禁止されており、重大な結果を招く可能性があります。
genmkvpwdとは何か? 🤔
genmkvpwd
は、John the Ripperの配布物に含まれているユーティリティスクリプトの一つです。通常、John the Ripperのソースコードを展開したディレクトリ内のrun
フォルダに配置されています。
その主な機能は、パスワードで保護されたMKVファイルからパスワードハッシュを抽出することです。MKVファイル自体は動画や音声データを含むコンテナフォーマットですが、仕様としてコンテンツ全体または特定のトラックを暗号化する機能を持っています。genmkvpwd
はこの暗号化されたMKVファイルを読み込み、パスワード検証に必要なメタデータ(ソルト、暗号化方式に関する情報など)を抽出し、John the Ripperが理解できる特定のフォーマット(mkvpwd
フォーマット)に整形して出力します。
なぜこのようなツールが必要なのでしょうか? それは、John the Ripperのようなパスワードクラッキングツールが、元のファイル(この場合はMKVファイル)を直接扱えないためです。Johnは、様々なアルゴリズムで生成された「ハッシュ値」と、辞書ファイルやブルートフォース(総当たり)攻撃によって生成されるパスワード候補から計算したハッシュ値とを比較することで、元のパスワードを推測します。したがって、解析対象のファイルから、まずこの「ハッシュ値」とその解析に必要な付随情報を取り出す必要があるのです。genmkvpwd
は、まさにその「取り出す」作業を担当する専門ツールというわけです。
多くの場合、genmkvpwd
はPythonスクリプトとして提供されているため、実行にはPythonインタープリタ(通常はPython 3)が必要となります。
genmkvpwdの基本的な使い方 💻
genmkvpwd
を使用するには、まずJohn the Ripperを入手し、システムに展開またはインストールする必要があります。John the Ripperは公式サイトやGitHubリポジトリからソースコードをダウンロードしてコンパイルするか、お使いのLinuxディストリビューションのパッケージマネージャ(例:apt
, yum
, pacman
)を通じてインストールできます。
John the Ripperが準備できたら、genmkvpwd
スクリプトを見つけます。通常、John the Ripperを展開したディレクトリ内のrun
サブディレクトリにあります。
基本的なコマンドの構文は以下の通りです。
python /path/to/john/run/genmkvpwd.py [対象のMKVファイル名] > [出力するハッシュファイル名]
各部分を解説します。
-
python
: Python 3インタープリタを起動するコマンドです。システムによってはpython3
と明示的に指定する必要があるかもしれません。 -
/path/to/john/run/genmkvpwd.py
:genmkvpwd.py
スクリプトへのフルパスまたは相対パスを指定します。John the Ripperのrun
ディレクトリ内でコマンドを実行する場合は、./genmkvpwd.py
のように指定できます。 -
[対象のMKVファイル名]
: パスワードハッシュを抽出したい、暗号化されたMKVファイルの名前を指定します。 -
> [出力するハッシュファイル名]
: 抽出されたパスワードハッシュ情報を保存するファイル名を指定します。>
は標準出力をファイルにリダイレクトするシェル機能です。これにより、画面に表示されるはずのハッシュ情報が、指定したファイルに書き込まれます。このファイルは後でJohn the Ripper本体に渡すことになります。
コマンド実行例
例えば、John the Ripperが/opt/john
に展開されており、解析したいMKVファイルがカレントディレクトリにあるsecret-video.mkv
だとします。抽出したハッシュをmkv_hash.txt
というファイルに保存したい場合、コマンドは以下のようになります。
python /opt/john/run/genmkvpwd.py secret-video.mkv > mkv_hash.txt
もし、John the Ripperのrun
ディレクトリに移動してから実行する場合は、よりシンプルになります。
cd /opt/john/run
python ./genmkvpwd.py /path/to/your/secret-video.mkv > /path/to/your/mkv_hash.txt
コマンドが正常に実行されると、mkv_hash.txt
ファイルが作成され、その中に以下のような形式の文字列が書き込まれます(実際の値はファイルによって異なります)。
secret-video.mkv:$mkvpwd$1*1*...*...*...*...
この$mkvpwd$
で始まる文字列が、John the Ripperが解析できるMKVファイルのパスワードハッシュ情報です。ファイル名(secret-video.mkv:
の部分)も含まれていることが一般的です。
genmkvpwdのオプション
genmkvpwd
スクリプトは比較的シンプルなツールであり、通常、特別なコマンドラインオプションは必要ありません。基本的な使い方は、前述の通り、対象のMKVファイルを引数として渡すだけです。
ただし、ツールのバージョンやJohn the Ripperのフォーク(派生版)によっては、稀に追加のオプションが存在する可能性もゼロではありません。もし詳細なオプションを知りたい場合は、以下の方法で確認できるかもしれません。
- ヘルプオプションを試す: スクリプトによっては
-h
や--help
オプションが用意されている場合があります。python /path/to/john/run/genmkvpwd.py -h
- スクリプトのソースコードを読む:
genmkvpwd.py
はPythonスクリプトなので、テキストエディタで開いて、引数を処理している部分(argparse
モジュールなどを使用している箇所)を読むことで、利用可能なオプションを確認できます。
しかし、2024年初頭時点でのJohn the Ripperの公式リポジトリに含まれるgenmkvpwd.py
を見る限り、特別なオプションは実装されていないようです。主な機能はMKVファイルを受け取ってハッシュを出力することに特化しています。
ハッシュ抽出後のステップ:John the Ripperでの解析 🗝️
genmkvpwd
を使って無事にパスワードハッシュを抽出できたら、いよいよJohn the Ripper本体の出番です。抽出したハッシュ情報が含まれるファイル(例:mkv_hash.txt
)をJohnに渡して、パスワード解析を開始します。
最も基本的なJohn the Ripperの実行コマンドは以下のようになります。
/path/to/john/run/john [ハッシュファイル名]
先ほどの例でmkv_hash.txt
というファイルにハッシュを保存した場合:
/path/to/john/run/john mkv_hash.txt
John the Ripperを実行すると、デフォルトのモード(シングルクラックモード、辞書モード、インクリメンタルモードの組み合わせ)で解析が開始されます。
- シングルクラックモード (Single Crack Mode): ハッシュファイルに含まれるファイル名やユーザー名などの情報からパスワードを推測しようとします。
- 辞書モード (Wordlist Mode): 指定された辞書ファイル(一般的な単語や過去に漏洩したパスワードのリストなど)に含まれる単語をパスワード候補として試します。Johnにはデフォルトで
password.lst
という基本的な辞書ファイルが付属しています。より強力な辞書ファイル(例えば RockYou リストなど)を別途用意して指定することも可能です。# rockyou.txt を辞書として使用する場合 /path/to/john/run/john --wordlist=/path/to/rockyou.txt mkv_hash.txt
- インクリメンタルモード (Incremental Mode): 設定された文字セット(例:数字のみ、小文字アルファベットのみ、全ASCII文字など)を使って、可能性のある全ての組み合わせを生成して試す、いわゆるブルートフォース(総当たり)攻撃です。非常に時間がかかる可能性があります。
# 数字のみで総当たりする場合 (例) /path/to/john/run/john --incremental=Digits mkv_hash.txt
解析が成功し、パスワードが見つかると、John the Ripperは以下のように結果を表示します。
Loaded 1 password hash (mkvpwd, Matroska container)
Will run 8 processes
Press 'q' or Ctrl-C to abort, almost any other key for status
password123 (secret-video.mkv)
1g 0:00:00:15 DONE (2024-03-31 05:10) 0.0666g/s (12345p/s) Session completed
この例では、secret-video.mkv
のパスワードがpassword123
であることが判明しました。
もし解析を中断した場合や、後で結果を確認したい場合は、--show
オプションを使用します。
/path/to/john/run/john --show mkv_hash.txt
これにより、既に見つかっているパスワードが表示されます。
パスワード解析の時間: パスワードの複雑さ(長さ、文字種、推測しにくさ)や、使用するコンピュータの性能、選択した解析モード(辞書、ブルートフォース)によって、解析にかかる時間は大きく異なります。単純なパスワードなら数秒で見つかることもありますが、複雑なパスワードの場合は数時間、数日、あるいはそれ以上かかることもあります。
注意点とトラブルシューティング
genmkvpwd
やJohn the Ripperを使用する際には、いくつか注意すべき点や、問題が発生した場合の対処法があります。
-
Pythonのバージョン:
genmkvpwd.py
は通常Python 3を要求します。システムにPython 2とPython 3の両方がインストールされている場合、python
コマンドがどちらを指しているか確認が必要です。python3
コマンドで明示的に実行する必要があるかもしれません。エラーメッセージにSyntaxError
などが表示される場合は、Pythonのバージョンが原因である可能性が高いです。 -
ファイルの破損: 対象のMKVファイルが破損している場合、
genmkvpwd
はハッシュを正しく抽出できないことがあります。ファイルが正常に再生できるかなどを確認してみてください。 -
非対応の暗号化方式: MKVの暗号化には複数の方法が存在する可能性があります。
genmkvpwd
やJohn the Ripperが対応していない特定の暗号化方式が使われている場合、解析できないことがあります。John the Ripperのドキュメントやコミュニティで、対応しているフォーマットについて確認すると良いでしょう。 -
権限の問題: スクリプトの実行権限や、対象MKVファイルへの読み取り権限がない場合、エラーが発生します。
chmod +x genmkvpwd.py
で実行権限を付与するか、python
コマンドで直接実行してください。また、ファイルのパーミッションを確認・変更してください。 -
John the Ripper本体のエラー:
genmkvpwd
でハッシュを抽出できても、John the Ripper本体がそのハッシュ形式を認識できない場合があります。これは、Johnのビルド時に特定のフォーマットが無効化されている(または必要なライブラリが不足している)場合に起こりえます。Johnのビルドオプションや依存関係を確認してみてください。 - 偽陽性(False Positives): 極めて稀ですが、John the Ripperが間違ったパスワードを「正解」として報告する可能性(偽陽性)も理論的には存在します。もし見つかったパスワードでMKVファイルを開けない場合は、解析を続行するか、別の方法を試す必要があるかもしれません。
問題が発生した場合は、表示されるエラーメッセージをよく読み、John the Ripperのドキュメントやオンラインコミュニティ(フォーラム、メーリングリストなど)で類似の事例や解決策を探すことが有効です。
まとめ
genmkvpwd
は、John the Ripperスイートの中で、パスワードで保護されたMKVファイルからパスワードハッシュ情報を抽出するという、特定の、しかし重要な役割を担うツールです。このツールによって生成されたハッシュファイルを使うことで、John the Ripper本体はMKVファイルのパスワード解析に取り組むことが可能になります。
この記事では、genmkvpwd
の基本的な使い方、その仕組み、そして抽出したハッシュをJohn the Ripperで解析する流れを解説しました。
- John the Ripperを入手し、
genmkvpwd.py
スクリプトの場所を確認する。 python genmkvpwd.py [MKVファイル] > [ハッシュファイル]
コマンドを実行してハッシュを抽出する。john [ハッシュファイル]
コマンドを実行してパスワード解析を開始する。- 必要に応じて、辞書ファイルや解析モードを指定する。
パスワードを忘れてしまったファイルへのアクセス回復は、時として必要な作業ですが、ツールの使用は常に倫理的かつ法的な範囲内で行う必要があります。genmkvpwd
とJohn the Ripperを正しく理解し、適切に活用してください。
この記事が、genmkvpwd
の利用を検討している方々の一助となれば幸いです。🚀
参考情報
- John the Ripper official website: https://www.openwall.com/john/
- John the Ripper Community Wiki (GitHub): https://github.com/openwall/john/wiki
- Matroska Specifications: https://www.matroska.org/technical/specs/index.html (MKVフォーマットの技術仕様)
コメント