前段時間公司項目中,需要給我們合作公司一個批量改數(shù)據(jù)的linux shell腳本,但是shell腳本是明文的代碼,出于安全考慮(其實是不想讓他們知道我們改的哪的數(shù)據(jù)),不能將明文腳本給合作公司,于是我找了兩種給shell腳本加密的方法,現(xiàn)在分享給大家。
gzexe
linux系統(tǒng)一般自帶一款加密工具gzexe,但是這個工具可以還原出出加密后的shell腳本。(不建議使用)
我們先創(chuàng)建一個簡單的測試腳本test.sh,輸出1-5數(shù)字,內(nèi)容如下:
使用gzexe對腳本加密,我們先看下gzexe的幫助
從幫助可以看出加【-d】參數(shù)可以解密,我們先對 test.sh腳本進行加密,在當前目錄會自動備份原來的腳本為 filename.sh~
#gzexe test.sh
因為加密后的腳本會有亂碼,我們用二進制對比下加密前和加密后的腳本,從打印看加密前后已經(jīng)發(fā)生了變化,執(zhí)行加密后的腳本可以順利打印1-5數(shù)字。
我們再還原看下效果:
#gzexe -d test.sh
- 從打印看已經(jīng)還原了原來的腳本,并執(zhí)行成功。
shc
shc工具c寫一個腳本加密工具,加密后的腳本會變成二進制可執(zhí)行程序
首先我們進行下載,并進行編譯安裝
#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可執(zhí)行程序,我們看下shc的幫助
shc的參數(shù)還挺多,拷貝shc到test.sh目錄,使用參數(shù)顯示shc加密的整個過程,
#cp ./shc-3.8.9 .. #mv .. #./shc ./shc -v -r -T -f test.sh
從加密的過程看到,shc先將test.sh腳本轉(zhuǎn)換成C代碼test.sh.x.c,然后調(diào)用linux的gcc 對test.sh.x.c進行編譯,并生成了 test.sh.x 文件
shc: cc test.sh.x.c -o test.sh.x
我們來對比下原始腳本和編譯后的二級制文件,并執(zhí)行二進制文件
從上面的輸出結(jié)果,可以看出編譯后的test.sh.x程序完全變成二進制,在右側(cè)看出跟腳本有關(guān)的字符串,執(zhí)行結(jié)果也是正確的。
結(jié)論
從以上的兩個工具對比,我還是推薦使用shc來對腳本加密,加密后完全二進制字符,想破解也不是很簡單的。
以上文章是個人原創(chuàng),如果有不同的見解歡迎批評指正,喜歡我的文章可以關(guān)注我。