新版本的一個特點是出現了 FPGA 支援(除了 CPU、GPU 和 Xeon Phi)。 對於板
對於 bcrypt,透過 119^2 次迭代(「$5b$2」)實現了約 05k c/s 的性能,功耗約 27 瓦,顯著超過了每塊板、每硬體價格和每瓦最新 GPU 的結果。 還支持
為了加快工作速度,我們實現了遮罩(「—mask」模式,包括與其他模式的組合)的使用,並將計算出的雜湊值與 FPGA 端載入的雜湊值進行比較。 從實現的角度來看,許多設計(例如
其他重要變化:
- 支援大量其他類型的雜湊、密碼等,包括經典密碼雜湊(例如,來自新版本的 QNX),以及加密貨幣錢包、加密檔案和加密檔案系統(例如 Bitlocker 和FreeBSD geli),以及對先前支援的新型格式的支援(例如,為OpenBSD softraid 新增了對bcrypt-pbkdf 的支援)等等。 CPU 上總共新增了 80 種格式,OpenCL 上總共新增了 47 種格式。 現在,CPU 上的格式總數為 407 種(或 262 種,不包括從設定檔配置的「動態」格式),OpenCL 上的格式總數為 88 種。
- 拒絕支援CUDA 語言,轉而支援OpenCL,這絕不會幹擾NVIDIA GPU 的充分利用(甚至有所幫助,這要歸功於將開發和優化重點放在GPU 每種格式的一種實現上,而不是之前的兩種實作)。
- 支援新的 SIMD 指令集 - AVX2、AVX-512(包括第二代 Xeon Phi)和 MIC(第一代) - 以及在許多格式的實現中更通用和完整地使用 SIMD,包括使用以前在x86(- 64) 上支援的指令集高達AVX 和XOP
分別在 ARM、Aarch64 和 POWER 上運行 NEON、ASIMD 和 AltiVec。 - 對 CPU 和 OpenCL 進行了大量最佳化,以便更有效地同時處理大量哈希(例如,測試了在 GPU 上加載 320 億個 SHA-1 哈希),並提高了哈希計算的速度。 其中一些優化是通用的,一些優化涵蓋不同的格式子集,還有許多是特定於個別格式的。
- (自動)設定 CPU 上已檢查密碼的最佳緩衝(“—tune=auto —verbosity=5”)和 OpenCL 上的最佳作業大小(預設為啟用),包括考慮緩慢上升到全工作頻率NVIDIA GTX 系列GPU 10xx 及更新版本。 使用實際載入的雜湊值和正在檢查的密碼的實際長度(如果事先已知)進行此類自動調整。
- 新增直接在命令列指定的“動態表達式”編譯器,並實作新的混合雜湊類型,例如“-format=dynamic='sha1(md5($p).$s)'”,使用SIMD 在CPU上計算。 作為此類表達式的元件,支援數十種快速雜湊(從常見的MD5 到中等奇異的Whirlpool)、子字串連接、編碼和解碼、字元大小寫轉換、對密碼、鹽、使用者名稱和字串常量的引用。
- 消除與 hashcat 之間不必要的差異,包括支援先前的 hashcat 特定規則(wordlist 規則命令)、從 1 過渡到 OpenCL 裝置編號、預設使用相同的密碼長度(通常長度 7)進行效能測試。
- 產生可驗證密碼的新模式(破解模式),包括hashcat 中的PRINCE(透過以總長度遞增的順序組合幾個單字來形成「短語」)、子集(顯示不同字元數量不足的密碼,即使這些字符出現)來自大量可能的密碼)和混合外部(允許外部模式,在設定檔中以類 C 語言描述,基於從另一種模式接收到的每個基本「單字」產生許多可驗證的密碼)。 此外,還有幾種新的預定義外部模式。
- 同時使用多種模式(一種在另一種之上 - 堆疊)以及使用規則集(單字清單規則堆疊)的附加功能。
- 改進掩碼模式(在指定長度範圍內逐漸拉伸掩碼、在 OpenCL 設備或 FPGA 板側面應用掩碼)和單裂紋(並行計算大量哈希值的設備上的合理行為) ,此前在此模式下沒有足夠的可驗證密碼,並且對記憶體消耗也有限制)。
- 對各個子系統中的 Unicode 和其他編碼的支援進行了許多改進。
- 對 *2john 程序的許多改進(將不同格式的文件轉換為
與 john 一起使用),尤其是 wpapcap2john(處理 WiFi 流量)。 - 有許多新的命令列選項、john.conf 中的設定、配置腳本選項以及對應的新功能,這裡並未全部提及。
- 透過使用AddressSanitizer(以前)和UndefinedBehaviorSanitizer(新增)對偵錯建置的內建支援、新增內建格式模糊器(作為GSoC 2015 的一部分)、使用持續整合(針對數十個作業系統和編譯器進行建置)來提高程式碼品質組合併測試它們是否正確支援所有格式)。
來源: opennet.ru