John the Ripper Jumbo: 安裝與 GPU 加速密碼破解完整教學

探索 John the Ripper Jumbo 的強大功能——這是一款用途廣泛的密碼破解工具。本文提供了詳細的安裝與設定逐步指南,並特別著重於如何善用 GPU 加速,以大幅提升密碼復原與稽核的效率。

免責聲明與法律警示

本技術說明檔僅供合法資安測試使用,僅限於您擁有合法授權或已取得書面測試同意之網路與系統環境。 在台灣,未經授權入侵他人電腦或網路系統屬刑事犯罪,依《刑法》第 360 條可能處三年以下有期徒刑。 請勿將任何教學步驟套用於未經授權的網路或系統。 本內容僅用於企業內部滲透測試、資安稽核與教育訓練,若用於非法用途,一切法律責任與風險由使用者自行承擔。

安裝步驟

步驟 1:確認先決條件

開始安裝前,請先確認系統已安裝所需工具:

  • C 編譯器(GCC)、Make 與 Git
  • NVIDIA GPU 用戶:請安裝 CUDA Toolkit(透過 OpenCL 驅動層)與 nvidia-opencl-dev 套件
  • AMD GPU 用戶:請安裝對應的 ROCm / OpenCL 驅動程式 與 ocl-icd-opencl-dev 套件
# Ubuntu/Debian:安裝基本建置工具與 OpenCL 開發函式庫
sudo apt-get install build-essential git libssl-dev zlib1g-dev ocl-icd-opencl-dev

# NVIDIA GPU 額外套件
sudo apt-get install nvidia-opencl-dev

步驟 2:複製原始碼倉儲

git clone https://github.com/openwall/john-the-ripper.git

步驟 3:進入原始碼目錄

cd john-the-ripper/src

步驟 4:組態設定與編譯

執行 ./configure,讓系統自動偵測環境與硬體功能。JtR Jumbo 可透過 OpenCL 支援 NVIDIA 與 AMD GPU,啟用 OpenCL 亦同時涵蓋 CUDA GPU 支援:

# 標準組態(自動偵測 OpenCL)
./configure

# 或明確啟用 OpenCL 支援
./configure --enable-opencl

完成組態後,使用以下指令編譯(-j4 表示使用 4 個 CPU 核心,加速編譯):

make -s clean && make -sj4

步驟 5:驗證安裝與 GPU 辨識

編譯完成後,john 執行檔會出現在 john-the-ripper/run 目錄中。請先切換至該目錄:

cd ../run

以下兩個指令可用於驗證安裝:

# 列出偵測到的 OpenCL 裝置(確認 GPU 是否正確被識別)
./john --list=opencl-devices

# 執行效能基準測試,觀察各格式的破解速度
./john --test

若 --list=opencl-devices 成功顯示你的 GPU 名稱與規格,代表 GPU 加速環境已準備就緒。


GPU 加速密碼破解(技術說明)

利用 GPU 的平行運算能力,可大幅縮短密碼破解所需時間。以下列出關鍵注意事項與實務範例:

⚠️ 關鍵注意:必須使用 OpenCL 格式後綴

使用 JtR GPU 加速最常見的錯誤是:GPU 加速的格式名稱必須明確包含 -opencl 後綴。若未指定含 -opencl 的格式,JtR 會一律使用 CPU 版本,GPU 將完全閒置。

# ❌ 錯誤:使用 CPU 格式(GPU 不會被啟用)
./john --format=raw-md5 --wordlist=rockyou.txt hashes.txt

# ✅ 正確:使用 OpenCL 格式(啟用 GPU 加速)
./john --format=raw-md5-opencl --wordlist=rockyou.txt hashes.txt

列出所有支援 OpenCL 加速的格式:

./john --list=formats | grep opencl

實務範例:單 GPU 字典攻擊

./john --format=raw-md5-opencl --wordlist=rockyou.txt --rules -dev=0 hashes.txt

參數說明:

參數說明
--format=raw-md5-opencl指定 OpenCL 加速的雜湊格式(務必包含 -opencl 後綴)
--wordlist=rockyou.txt啟用字典攻擊模式,並以 rockyou.txt 作為字典來源
--rules套用常見密碼變形規則(大小寫替換、後加數字等)
-dev=0指定使用 GPU 裝置 #0(注意:單破折號,並且等號後不可加 gpu 字串)

多 GPU 並行加速

若系統有多張 GPU,可同時指定裝置編號與 --fork 參數:

# 使用 GPU 0 與 GPU 1,各別 fork 一個進程(總共 2 個並行進程)
./john --format=sha512crypt-opencl --wordlist=rockyou.txt -dev=0,1 --fork=2 hashes.txt

查詢可用 GPU 裝置編號:

./john --list=opencl-devices

效能優化建議

  • 理解 GPU 加速的效益差異: GPU 的平行運算對 快速雜湊(MD5、SHA‑1、NTLM) 可達到每秒數十億次嘗試,CPU 也已有相當速度;相對而言,慢速雜湊(bcrypt、scrypt、PBKDF2、sha512crypt) 的計算成本較高,GPU 的大量核心才能帶來更明顯的加速倍數。在實務審計中,這類雜湊最能體現 GPU 加速的價值。
  • 保持 GPU 驅動最新版本: 建議維持 NVIDIA/AMD 驅動程式與 CUDA/ROCm 為最新版本,以確保 OpenCL 相容性與最佳效能。
  • 字典與變形規則的權衡: 大型字典搭配 --rules 會耗時較長,但 GPU 加速大致成比例提升,整體仍對大規模字典攻擊具有高度實務價值。
  • 利用會話暫停與恢復: 對於長時間破解任務,可設定 --session=name,中斷後再用 --restore=name 恢復,避免重來從頭開始。
  • 多 GPU 搭配 --fork: 若有多張 GPU,務必同時指定 -dev=0,1,... 與對應的 --fork=N,否則僅會使用單一 GPU。

更多資安新聞