前段時間公司項目中,需要給我們合作公司一個批量改數據的linux shell腳本,但是shell腳本是明文的代碼,出于安全考慮(其實是不想讓他們知道我們改的哪的數據),不能將明文腳本給合作公司,于是我找了兩種給shell腳本加密的方法,現在分享給大家。

gzexe
linux系統一般自帶一款加密工具gzexe,但是這個工具可以還原出出加密后的shell腳本。(不建議使用)
我們先創建一個簡單的測試腳本test.sh,輸出1-5數字,內容如下:

使用gzexe對腳本加密,我們先看下gzexe的幫助

從幫助可以看出加【-d】參數可以解密,我們先對 test.sh腳本進行加密,在當前目錄會自動備份原來的腳本為 filename.sh~
#gzexe test.sh

因為加密后的腳本會有亂碼,我們用二進制對比下加密前和加密后的腳本,從打印看加密前后已經發生了變化,執行加密后的腳本可以順利打印1-5數字。

我們再還原看下效果:
#gzexe -d test.sh

- 從打印看已經還原了原來的腳本,并執行成功。
shc
shc工具c寫一個腳本加密工具,加密后的腳本會變成二進制可執行程序
首先我們進行下載,并進行編譯安裝
#wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgz #tar -zxvf shc-3.8.9.tgz #cd shc-3.8.9 #make

我們可以看到編譯后在當前目錄生成了shc可執行程序,我們看下shc的幫助

shc的參數還挺多,拷貝shc到test.sh目錄,使用參數顯示shc加密的整個過程,
#cp ./shc-3.8.9 .. #mv .. #./shc ./shc -v -r -T -f test.sh

從加密的過程看到,shc先將test.sh腳本轉換成C代碼test.sh.x.c,然后調用linux的gcc 對test.sh.x.c進行編譯,并生成了 test.sh.x 文件
shc: cc test.sh.x.c -o test.sh.x
我們來對比下原始腳本和編譯后的二級制文件,并執行二進制文件

從上面的輸出結果,可以看出編譯后的test.sh.x程序完全變成二進制,在右側看出跟腳本有關的字符串,執行結果也是正確的。
結論
從以上的兩個工具對比,我還是推薦使用shc來對腳本加密,加密后完全二進制字符,想破解也不是很簡單的。
以上文章是個人原創,如果有不同的見解歡迎批評指正,喜歡我的文章可以關注我。