在網路上下載別人分享的檔案,有時候會下載到被加上壓縮密碼的RAR或是ZIP壓縮檔,但因種種原因而無法取得密碼,而導致好不容易下載回來的壓縮檔根本不能被解壓縮。這時候就可以考慮「破解」該壓縮檔的密碼了,但是要怎麼做呢?



John the Ripper(JtR)

JtR是免費且開放原始碼的密碼破解工具,以下是它的官方網站:

最新的JtR程式可以從他們官方的GitHub上取得:

編譯JtR

取得JtR的原始碼程式專案之後,先在終端機下,將工作目錄移動到程式專案的src目錄下。然後執行以下指令:

./configure

archive-crack

接著再執行以下指令來開始編譯:

make -j$(nproc)

archive-crack

編譯後的執行檔的符號連結,預設會被放置在程式專案的run目錄下。

密碼字典檔產生工具──crunch

使用JtR來破解密碼,由於是採用暴力破解,因此最好根據已知的密碼條件(例如密碼長度、可能會有的字元、哪個位置會是哪種字元等)來產生密碼的字典檔(就是用來自動嘗試解開壓縮檔的密碼表),才能提升破解的效率。在Linux作業系統中,可以使用crunch這個指令工具來產生字典檔。

Debian或是其衍生的Linux發行版,可以直接使用以下指令來安裝crunch

sudo apt install crunch

crunch指令的使用方法

crunch指令的使用方法不難,但是有點雜,直接以實例來說明吧!

crunch 1 5 abcd

以上指令,可以產生出長度為1到5,由a、b、c、d這四個字元所有可能組成的密碼。例如:acba、cdbdc、dbbbd。

crunch 1 5 abcd -s c -e ccccc

以上指令,可以產生出長度為1到5,由a、b、c、d這四個字元所有可能組成的密碼,但是密碼會從c開始產生,到ccccc就結束。例如:acba、ccccc。

crunch 1 5 -p abc de

以上指令,可以產生出長度為1到5,由abc、de這兩種字串所有可能組成的密碼。其實就只有abcde和deabc這兩種可能。

crunch 5 5 -t %@,^A

以上指令,可以產生出長度為5,第一個字元為數字([0-9]),第二個字元為小寫英文字([a-z]),第三個字元為大寫英文字([A-Z]),第四個字元為特殊符號!@#$%^&*()-_=~`[]{}|\:;"'<>,.? /,第五個字元為A之所有可能組成的密碼。例如:0rT]A、2pE|A、9zZ A。

crunch指令與JtR的搭配用法

在開始破解壓縮檔的密碼前,可以先在JtR程式專案的run目錄下,執行以下指令,來查看JtR支援哪些格式的加密檔案。

ls -1 *2hash

archive-crack

rar2john工具可以將有加密的RAR檔案轉成JtR的格式,zip2john工具可以將有加密的ZIP檔案轉成JtR的格式。這種格式在一開始會是以雜湊值來表示密碼,要破解密碼時,只需要這個轉換出來的JtR格式即可,不需用到原先的壓縮檔。例如以下指令,可以將某個RAR檔案轉成JtR格式,並且儲存成檔案:

./rar2john /path/to/rarfile > /path/to/file

接著,使用crunch指令和john工具來破解這個JtR格式檔案中儲存的雜湊後的密碼。指令如下:

crunch 5 5 -t @%^4, | ./john --stdin - /path/to/file

如果密碼破解成功,繼續使用john工具來查看破解出來的密碼。指令如下:

./john --show /path/to/file

archive-crack