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 a 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

這個命令會生成一個名為 hash.txt 的文件,裡面包含了 John a Ripper 需要的加密信息。

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: 代表一位數字 (0-9)
  • ?l: 代表一位小寫字母 (a-z)
  • ?u: 代表一位大寫字母 (A-Z)
  • ?s: 代表一位特殊符號 (!@#$)

示例: 破解一個 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

簡單來說:

? 符號本身不是一個字符,而是一個 “特殊指令” 或 “前綴”,它告訴 John:“請注意,跟在我後面的那個字母不是普通字母,而是一個代表特定字符集的佔位符。”

把它想像成一個填空題:

__ __ __ __ __ __

?d?d?d?d?d?d 這個掩碼就等於在說:

  • 在第一個空 __ 裡,填一個數字(digit) (?d)
  • 在第二個空 __ 裡,填一個數字(digit) (?d)
  • ... 依此類推,填滿六個空。

詳細分解#

讓我們來深入看一下 ? 和它後面字母的組合。

1. 內置的標準佔位符#

John the Ripper 預定義了一些字母,當它們跟在 ? 後面時,就代表了特定的字符集。最常用的有:

佔位符代表的字符集解釋示例字符
?dDigits數字0, 1, 2, ... 9
?lLower小寫字母a, b, c, ... z
?uUpper大寫字母A, B, C, ... Z
?sSpecial特殊符號(ASCII)!, @, #, $ ...
?aAll所有可打印的字符(?l+?u+?d+?sa, A, 1, ! ...
?hHex, lower小寫的十六進制字符0-9, a-f
?HHex, upper大寫的十六進制字符0-9, A-F
?bAll 8-bit所有可能的 ASCII 字符 (0-255)(所有字符)

2. 如何組合它們?#

你可以自由地組合這些佔位符來構建你認為可能的密碼結構。

示例 1:一個首字母大寫,後跟 7 個小寫字母的密碼 (例如 Password)

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

示例 2:一個 4 位數字的 ATM 密碼,後面跟著兩個大寫字母 (例如 1234AB)

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

3. 如果密碼裡就包含一個普通字母怎麼辦?#

任何沒有 ? 前綴的字符都會被當作普通(或 “字面”)字符來處理。John a Ripper 會認為這個位置的字符是固定不變的。

示例 3:你知道密碼以 pass- 開頭,後面是 4 個數字 (例如 pass-1234)

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

在這個例子裡,p, a, s, s, - 都是固定不變的,只有後面的四個 ?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 a 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-8ASCII
  • 解決方案:
    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。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。