shc加密(僅僅對shell指令碼加密)
shc是乙個專業的加密shell指令碼的工具.它的作用是把shell指令碼轉換為乙個可執行的二進位制檔案,這個辦法很好的解決了指令碼中含有ip、
密碼等不希望公開的問題。
如果你的shell指令碼包含了敏感的口令或者其它重要資訊, 而且你不希望使用者通過ps -ef(檢視系統每個程序的狀態)捕獲敏感資訊. 你可以
使用shc工具來給shell指令碼增加一層額外的安全保護. shc是乙個指令碼編譯工具, 使用rc4加密演算法, 它能夠把shell程式轉換成二進位制可執
行檔案(支援靜態鏈結和動態鏈結). 該工具能夠很好的支援: 需要加密, 解密, 或者通過命令引數傳遞口令的環境.
安裝方法:
[root@ipsan-node03 ~]# cd /usr/local/src/
[root@ipsan-node03 src]# wget shc-3.8.9.tgz
[root@ipsan-node03 src]# tar -zvxf shc-3.8.9.tgz
[root@ipsan-node03 src]# cd shc-3.8.9
[root@ipsan-node03 shc-3.8.9]# mkdir -p /usr/local/man/man1
[root@ipsan-node03 shc-3.8.9]# cp shc.readme /usr/local/man/man1/
這步是必須的,不然安裝過程中會報錯,shc將安裝命令到/usr/local/bin/目錄下;
將幫助文件存放在/usr/local/man/man1/目錄下,如果系統中無此目錄,安裝時會報錯,可建立此目錄後再執行安裝
[root@ipsan-node03 shc-3.8.9]# make install
這是要回答yes或者y,不能直接回車,否則會報錯
centos6系統中如果執行報錯cc命令沒有找到
需要安裝gcc : yum -y install gcc
需要注意的是,sch只能對shell指令碼檔案進行加密,其他檔案都不可以!
開頭要寫標準格式:#!/bin/bash
sch加密使用方法:
"-f"選項指定需要加密的程式
[root@ipsan-node03 ~]# ls
text.sh
[root@ipsan-node03 ~]# cat text.sh
#!/bin/bash
echo "hahaha"
[root@ipsan-node03 ~]# shc -r -f text.sh
[root@ipsan-node03 ~]# ls
text.sh text.sh.x text.sh.x.c
注意:要有-r選項, -f 後跟要加密的指令碼名。
執行後會生成兩個檔案,script-name.x 和 script-name.x.c
script-name.x是加密後的可執行的二進位制檔案.
./script-name.x 即可執行.
script-name.x.c是生成script-name.x的原檔案(c語言)
[root@ipsan-node03 ~]# ./text.sh
hahaha
[root@ipsan-node03 ~]# ./text.sh.x
hahaha
通常從安全角度考慮:
使用sch命令對shell指令碼檔案進行加密後,只需保留.x的二進位制檔案即可,其他兩個檔案均可以刪除!
[root@ipsan-node03 ~]# ls
text.sh text.sh.x text.sh.x.c
[root@ipsan-node03 ~]# rm -rf text.sh
[root@ipsan-node03 ~]# rm -rf text.sh.x.c
[root@ipsan-node03 ~]# ls
text.sh.x
[root@ipsan-node03 ~]# ./text.sh.x
hahaha
另外:shc還提供了一種設定有效執行期限的方法,可以首先使用shc將shell程式轉化為二進位制,並加上過期時間,如:
[root@ipsan-node03 ~]# shc -e 28/02/2018 -m "this script file is about to expire" -v -r -f text.sh
shc shll=bash
shc [-i]=-c
shc [-x]=exec '%s' "$@"
shc [-l]=
shc opts=
shc: cc text.sh.x.c -o text.sh.x
shc: strip text.sh.x
shc: chmod go-r text.sh.x
[root@ipsan-node03 ~]# ls
text.sh text.sh.x text.sh.x.c
解釋:-e:指定過期時間為2023年2月28日
-m:過期後列印出的資訊;
-v: verbose
-r: 可在相同作業系統的不同主機上執行
-f: 指定源shell
[root@ipsan-node03 ~]# ./text.sh.x
./text.sh.x: this script file is about to expire
使用以上方法要注意,需防止使用者更改系統時間,可以通過在程式中加入自動更新系統時間的命令來解決此問題!!
sch的幫助命令:
[root@ipsan-node03 ~]# shc -help
shc version 3.8.9, generic script compiler
shc usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-rvdtcah] -f script
-e %s expiration date in dd/mm/yyyy format [none] (指定過期日期)
-m %s message to display upon expiration ["please contact your provider"] (指定過期提示的資訊)
-f %s file name of the script to compile (指定要編譯的shell的路徑及檔名)
-i %s inline option for the shell interpreter i.e: -e
-x %s exec command, as a printf format i.e: exec('%s',@ar**);
-l %s last shell option i.e: --
-r relax security. make a redistributable binary (可以相同作業系統的不同系統中執行)
-v verbose compilation (編譯的詳細情況)
-d switch on debug exec calls [off]
-t allow binary to be traceable [no]
-c display license and exit
-a display abstract and exit
-h display help and exit
environment variables used:
name default usage
cc cc c compiler command
cflags c compiler flags
please consult the shc(1) man page.
說明:經測試,相同在作業系統,shc後的可執行二進位制檔案直接可以移植執行,但不同作業系統可能會出現問題,
比如將上面的test.sh.x的二進位制檔案在centos6.9上加密後移到redhat as5u4上不能執行,出現"floating point exception"錯誤提示,
但移到另一台centos6.9上直接執行沒問題。
副:linux檔案加密:
shc加密shell指令碼
1.加壓shc 3.8.9b.tgz tar xzvf shc 3.8.9b.tgz cd shc 3.8.9b 2.建立幫助文件目錄 mkdir p usr local man man1 3.安裝 make install 4.安裝完,加密test.sh shc r t f test.sh 如果要...
使用shc加密shell指令碼
採用shc工具加密shell指令碼,以提高shell指令碼檔案的安全性。介紹 當我們寫的shell指令碼,存在有敏感資訊如賬號密碼,於是想加強指令碼的安全性 還有不想讓別人檢視 修改您的shell核心 等等情況。都可使用以下工具進行加密。shc是乙個指令碼編譯工具,使用rc4加密演算法,它能夠把sh...
Shell 指令碼加密工具 shc
為什麼要加密shell指令碼呢?當然是為了安全!可能指令碼裡面涉及到密碼之類的就需要進行加密了 要保護自己編寫的shell指令碼程式,方法有很多,最簡單的方法有兩種 1 加密 2 設定過期時間,下面以shc工具為例說明 shc是乙個加密shell指令碼的工具.它的作用是把shell指令碼轉換為乙個可...