使用shc加密shell指令碼

2021-07-13 23:18:47 字數 2873 閱讀 5316

**:

採用shc工具加密shell指令碼,以提高shell指令碼檔案的安全性。

介紹:當我們寫的shell指令碼,存在有敏感資訊如賬號密碼,於是想加強指令碼的安全性;還有不想讓別人檢視/修改您的shell核心**等等情況。都可使用以下工具進行加密。

shc是乙個指令碼編譯工具, 使用rc4加密演算法, 它能夠把shell程式轉換成二進位制可執行檔案(支援靜態鏈結和動態鏈結)。

shc官網:

安裝shc

wget sources/shc-3.8.7.tgz

tar vxf shc-3.8.7.tgz

cd shc-3.8.7

make test

make strings

make install

若報錯:

***     installing shc and shc.1 on /usr/local

***     ?do you want to continue? y

install -c -s shc /usr/local/bin/

install -c -m 644 shc.1 /usr/local/man/man1/

install: target `/usr/local/man/man1/' is not a directory: no such file or directory

make: *** [install] error 1

請建立 mkdir -p /usr/local/man/man1/  ,然後執行make install

常用引數:

-e date (指定過期日期)

-m message (指定過期提示的資訊)

-f script_name(指定要編譯的shell的路徑及檔名)

-r   relax security. (可以相同作業系統的不同系統中執行)

-v   verbose compilation(編譯的詳細情況)

使用方法:

shc -v -f abc.sh

-v 是現實加密過程

-f 後面跟需要加密的檔案 

執行後會生成兩個檔案:

abc.sh.x 和 abc.sh.x.c

abc.sh.x為二進位制檔案,賦予執行許可權後,可直接執行。更改名字mv abc.sh.x a.sh

abc.sh.x.c 是c原始檔。基本沒用,可以刪除

另shc還提供了一種設定有效執行期限的方法,過期時間,如:

# shc -e 28/01/2012 -m "過期了" -f abc.sh

選項「-e」指定過期時間,格式為「日/月/年」;選項「-m」指定過期後執行此shell程式的提示資訊。

# ./abc.sh.x 

./abc.sh.x: has expired!

過期了

1). 加密指令碼.

# shc -v -r -f mysql_backup.sh

-v: 是verbose模式,輸出更詳細編譯日誌. -f: 指定指令碼的名稱.

上面命令在螢幕上的輸出:

shc shll=sh

shc [-i]=-c

shc [-x]=exec 『%s』 「$@」

shc [-l]=

shc opts=

shc: cc mysql_backup.sh.x.c -o mysql_backup.sh.x

shc: strip mysql_backup.sh.x

shc: chmod go-r mysql_backup.sh.x

我們可以看到生成了動態鏈結可執行二進位制檔案mysql_back.sh.x和c原始檔mysql_backup.sh.x.c, 注意生成的二進位制檔案因為是動態鏈結形式, 所以在其它平台上不能執行:

mysql_backup.sh.x: elf 32-bit lsb executable, intel 80386, version 1 (sysv),

dynamically linked (uses shared libs), for gnu/linux 2.6.9, stripped

2). 生成靜態鏈結的二進位制可執行檔案.

不過, 我們可以通過下面的方法生成乙個靜態鏈結的二進位制可執行檔案:

# cflags=-static shc -r -f mysql_backup.sh

# file mysql_backup.sh.x

mysql_backup.sh.x: elf 32-bit lsb executable, intel 80386, version 1 (sysv),

statically linked, for gnu/linux 2.6.9, stripped

一般來說是安全的, 不過可以使用gdb和其它的除錯工具獲得最初的源**. 如果你需要更加安全的方法, 可以考慮使用

wzshsdk.

另外, sch還可以設定指令碼的執行期限和自定義返回資訊:

shc -e 03/31/2007 -m 「the mysql backup script is now out of date.」 -f mysql_back.sh

-e表示指令碼將在2023年3月31日前失效, 並根據-m定義的資訊返回給終端使用者.

使用該工具有時會遇到生成的指令碼無法執行的情況,提示「operation not permitted」。這時需要對生成的*.c檔案進行修改,再重新編譯。比如有test.sh指令碼需要加密:

1、./shc -v -r -f test.sh,生成test.x、test.x.c檔案

2、修改test.x.c檔案,刪除圖中所示部分。

3、gcc -o test.x test.x.c 重新編譯生成test.x檔案。

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 如果要...

Shell 指令碼加密工具 shc

為什麼要加密shell指令碼呢?當然是為了安全!可能指令碼裡面涉及到密碼之類的就需要進行加密了 要保護自己編寫的shell指令碼程式,方法有很多,最簡單的方法有兩種 1 加密 2 設定過期時間,下面以shc工具為例說明 shc是乙個加密shell指令碼的工具.它的作用是把shell指令碼轉換為乙個可...

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

shc加密 僅僅對shell指令碼加密 shc是乙個專業的加密shell指令碼的工具.它的作用是把shell指令碼轉換為乙個可執行的二進位制檔案,這個辦法很好的解決了指令碼中含有ip 密碼等不希望公開的問題。如果你的shell指令碼包含了敏感的口令或者其它重要資訊,而且你不希望使用者通過ps ef ...