banner
毅种循环

毅种循环

请将那贻笑罪过以逐字吟咏 如对冰川投以游丝般倾诉

Johnの暴力的な方法で忘れたExcelパスワードを解除する

私の友人が非常に重要な Excel ファイルのパスワードを忘れてしまったと尋ねてきました。彼にとって非常に重要なことです。昔、hashcat で解読できることを覚えていたので、ついでに調べて、使い方を記録しておきます。

強力なパスワード解読ツール John the Ripper (JtR) を使用して、忘れたパスワードの XLSX ファイルを復元する方法を簡単に説明し、John のいくつかのコア解読モードをカバーします。

前提条件#

  1. John the Ripper: John the Ripper をダウンロードして解凍していることを確認してください。コミュニティの拡張版 "Jumbo John" を強く推奨します。なぜなら、より多くのハッシュタイプと GPU アクセラレーションをサポートしているからです。https://github.com/openwall/john
  2. 対象ファイル: パスワードを解読する必要がある .xlsx ファイル。

第一步:XLSX ファイルからハッシュを抽出#

John the Ripper は直接.xlsxファイルを処理できません。特別な形式の「ハッシュ」文字列が必要です。office2john.pyスクリプトを使用して抽出します。

  1. ターミナル(Windows の PowerShell または CMD)を開きます。
  2. cdコマンドを使用して John the Ripper のrunディレクトリに移動します。
  3. 次のコマンドを実行します:
# "C:\path\to\your\file.xlsx"をあなたのExcelファイルの完全なパスに置き換えます
python .\office2john.py "C:\path\to\your\file.xlsx" > hash.txt

image

このコマンドは、John the Ripper が必要とする暗号情報を含むhash.txtという名前のファイルを生成します。

image


第二步:解読モードを選択して実行#

John the Ripper にはさまざまな解読モードがあり、異なるシナリオに応じて適切なモードを選択することが成功の鍵です。

John のコア解読モード#

1. 辞書モード (Wordlist Mode)#

最も一般的なモードです。一般的なパスワードを含む辞書ファイル(wordlist)を提供すると、John はそれを一つずつ試します。ルール(Rules)を組み合わせて辞書の単語を変形することもでき(例:pass -> P@ss123)、成功率が大幅に向上します。

# --wordlist=の後にあなたの辞書ファイルのパスを続けます
john --wordlist=password.lst hash.txt

2. 増分モード (Incremental Mode)#

純粋なブルートフォース解読です。すべての可能な文字の組み合わせを試みます。理論的には、時間が十分であれば必ず解読できますが、少し長いパスワードの場合は非常に非常に遅くなります。

# 8文字以内の小文字の組み合わせをすべて試します
john --incremental=Lower --max-len=8 hash.txt

3. マスクモード (Mask Mode) - 今回使用するモード#

パスワードの構造についてある程度の理解がある場合、これは最も効率的なモードです。パスワードの形式を定義することで、検索範囲を大幅に縮小できます。

  • ?d: 1 桁の数字を表します (0-9)
  • ?l: 1 桁の小文字を表します (a-z)
  • ?u: 1 桁の大文字を表します (A-Z)
  • ?s: 1 桁の特殊記号を表します (!@#$)

: 6 桁の純数字のパスワードを解読します。

参考にすることができます:https://in.security/2022/06/20/hashcat-pssw0rd-cracking-brute-force-mask-hybrid/

https://github.com/openwall/john/blob/bleeding-jumbo/doc/RULES

(非常に複雑なので、AI に直接尋ねることをお勧めします)

john --mask=?d?d?d?d?d?d hash.txt

簡単に言うと:

? 記号自体は 1 文字ではなく、「特別な命令」または「プレフィックス」であり、John に「私の後に続く文字は普通の文字ではなく、特定の文字セットを表すプレースホルダーである」と伝えます。

これを空欄の問題として考えてみてください:

__ __ __ __ __ __

?d?d?d?d?d?d このマスクは次のように言っているのと同じです:

  • 最初の空欄 __ には、数字(digit) (?d)
  • 2 番目の空欄 __ には、数字(digit) (?d)
  • ... このようにして、6 つの空欄を埋めます。

詳細な分解#

次に、 ? とその後の文字の組み合わせを詳しく見てみましょう。

1. 内蔵の標準プレースホルダー#

John the Ripper は、特定の文字セットを表す文字を定義しています。これらの文字が ? の後に続くとき、特定の文字セットを表します。最も一般的なものは:

プレースホルダー表す文字セット説明例の文字
?d数字数字0, 1, 2, ... 9
?l小文字小文字a, b, c, ... z
?u大文字大文字A, B, C, ... Z
?s特殊特殊記号(ASCII)!, @, #, $ ...
?aすべてすべての印刷可能な文字(?l+?u+?d+?sa, A, 1, ! ...
?h小文字の 16 進数小文字の 16 進数文字0-9, a-f
?H大文字の 16 進数大文字の 16 進数文字0-9, A-F
?bすべての 8 ビットすべての可能な ASCII 文字 (0-255)(すべての文字)

2. それらをどう組み合わせるか?#

これらのプレースホルダーを自由に組み合わせて、あなたが考える可能性のあるパスワード構造を構築できます。

例 1:最初の文字が大文字で、後に 7 つの小文字が続くパスワード (例: Password)

--mask=?u?l?l?l?l?l?l?l

例 2:4 桁の数字の ATM パスワードの後に 2 つの大文字が続く (例: 1234AB)

--mask=?d?d?d?d?u?u

3. パスワードに普通の文字が含まれている場合はどうするか?#

すべてのない ? プレフィックスのない文字は、普通(または「リテラル」)文字として処理されます。John the Ripper は、この位置の文字が固定されていると考えます。

例 3:パスワードが pass-で始まり、後に 4 つの数字が続くことを知っている (例: pass-1234)

--mask=pass-?d?d?d?d

この例では、p, a, s, s, - はすべて固定されており、後ろの 4 つの ?d 位置だけが John によってブルートフォース解読されます。これにより、検索空間が大幅に減少します!

4. より高度な使用法:カスタム文字セット#

自分自身のプレースホルダー ?1, ?2, ?3 などを定義することもできます。

例 4:パスワードが 8 桁で、a, b, c, 1, 2, 3の文字だけを含むことを知っている。
カスタム文字セット?1を定義し、それを 8 回繰り返すことができます。

john --mask='?1?1?1?1?1?1?1?1' --mask-char-?1='abc123' hash.txt
- <font style="color:rgb(26, 28, 30);">--mask-char-?1='abc123'</font><font style="color:rgb(26, 28, 30);">:この部分は、</font><font style="color:rgb(26, 28, 30);"> </font><font style="color:rgb(26, 28, 30);">?1</font><font style="color:rgb(26, 28, 30);"> </font><font style="color:rgb(26, 28, 30);">このプレースホルダーが表す文字セットは</font><font style="color:rgb(26, 28, 30);"> </font><font style="color:rgb(26, 28, 30);">'abc123'</font><font style="color:rgb(26, 28, 30);">であることを定義します。</font>
- <font style="color:rgb(26, 28, 30);">--mask='?1?1?1?1?1?1?1?1'</font><font style="color:rgb(26, 28, 30);">: この部分は、John the Ripperにパスワードが8つの</font><font style="color:rgb(26, 28, 30);"> </font><font style="color:rgb(26, 28, 30);">?1</font><font style="color:rgb(26, 28, 30);"> </font><font style="color:rgb(26, 28, 30);">文字セットからの文字で構成されていることを伝えます。</font>

? 記号自体には意味はありませんが、その後に続く文字に特別な意味を与えます。これにより、「すべての可能性を盲目的にブルートフォースする」から「特定の形式を戦略的にブルートフォースする」へと変わり、解読時間を数年から数秒に短縮します。

4. 単一解読モード (Single Crack Mode)#

John が最初に試みるモードで、非常に速いです。ハッシュファイル内のユーザー名などの情報を利用して簡単な変換や推測を行います。

# 何のモードパラメータも加えず、デフォルトで有効になります
john hash.txt

実践演習:6 桁の数字パスワードの XLSX ファイルを解読#

image

私たちの実践では、パスワードが 6 桁の数字であることがわかっているので、マスクモードを選択します。

理想的なコマンドは:

.\john --mask=?d?d?d?d?d?d hash.txt

よくある質問と解決策#

エラー : Error: UTF-16 BOM seen in input file.#

  • 問題: John はhash.txtのファイルエンコーディングを認識できません。
  • 原因: Windows PowerShell の>リダイレクト記号を使用してファイルを作成すると、デフォルトのエンコーディングはUTF-16であり、John はUTF-8またはASCIIを必要とします。
  • 解決策:
    1. メモ帳hash.txtファイルを開きます。
    2. 「ファイル」->「名前を付けて保存」を選択します。
    3. ポップアップウィンドウの下部で、「エンコーディング」をUTF-16 LEからUTF-8に変更します。
    4. 保存して元のファイルを上書きします。

第三步:解読結果を確認#

コマンドが成功裏に実行されると、次のような出力が表示されます:

Warning: detected hash type "Office", but the string is also recognized as "office-opencl"
Use the "--format=office-opencl" option to force loading these as that type instead
Using default input encoding: UTF-8
Loaded 1 password hash (Office, 2007/2010/2013 [SHA1 256/256 AVX2 8x / SHA512 256/256 AVX2 4x AES])
Cost 1 (MS Office version) is 2007 for all loaded hashes
Cost 2 (iteration count) is 50000 for all loaded hashes
Will run 32 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
933728           (微信登记1 (1).xlsx)
1g 0:00:00:29 DONE (2025-09-05 19:45) 0.03344g/s 20067p/s 20067c/s 20067C/s 616778..351115

結果の解釈:

  • 解読されたパスワード: 933728
  • 所要時間: 0:00:00:29、つまり 29 秒

その後、再度解読されたパスワードを確認したい場合は、次のコマンドを実行します:

.\john --show hash.txt

これで終了です。

PS:

外部のサードパーティソフトウェアはたくさんありますが、調べたところ、Passper for Excel.exe というソフトウェアを見つけました。おそらく John を呼び出しているもので、GUI グラフィカルをサポートしているので、必要があれば直接使用することをお勧めします。関連する Passper for Excel crack を検索してください。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。