shc加密(僅僅對shell指令碼加密)

2021-10-01 13:51:39 字數 3985 閱讀 4752

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指令碼轉換為乙個可...