成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何隱藏Shell腳本內容

系統 Linux
shc 是一個通用shell腳本編譯器,它將 shell 腳本編譯 可執行的二進制文件,它的功能以及執行方式和原始腳本沒有區別。

[[408788]]

本文轉載自微信公眾號「Linux開發那些事兒」,作者LinuxThings。轉載本文請聯系Linux開發那些事兒公眾號。

從事 Linux 開發的同學,經常需要編寫 shell 腳本,有時腳本中會涉及到一些敏感內容,比如一些 IP 地址,用戶名以及密碼等,或者腳本中有一些關鍵的代碼, 所有這些內容你都不想別人閱讀或者修改,更進一步,你希望對腳本設置過期時間,超過指定時間時間之后,腳本就無法使用

在不改變腳本內容、功能以及執行方式的情況下,有沒有辦法實現上面的需求呢?

答案是:有的, 在Linux下,我們可以使用 shc 這個工具來實現隱藏shell腳本內容以及設置過期時間的目的

簡介

shc 是一個通用shell腳本編譯器,它將 shell 腳本編譯 可執行的二進制文件,它的功能以及執行方式和原始腳本沒有區別

和 gcc 編譯器不同的是,shc 并沒有把腳本源代碼轉化成機器碼,它只是生成了一份 C 語言代碼,這份 C 語言代碼中包含了加密的原始shell腳本,并為它添加了過期功能,然后,通過gcc編譯器將C代碼編譯成可執行的二進制文件

安裝

目前,大多數的 Linux 發行版的倉庫中都已經包含了 shc, 只需要使用默認的包管理器就可以安裝,具體的安裝命令如下:

  1. yum install shc 

輸入 shc -v 命令,下面的輸出表示安裝成功

  1. [root@ecs-centos-7 shc_test]# shc -v 
  2. shc parse(-f): No source file specified 
  3.  
  4. shc Usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-o outfile] [-rvDSUHCABh] -f script 

常用選項

下面是 shc 常用的一些選項以及選項的描述

選項 描述
-f 待編譯的shell腳本文件
-o 指定編譯生成的二進制文件
-e 設置過期時間,格式 日/月/年
-m 過期之后,執行腳本時的提示信息
-v 輸出編譯shell腳本的過程
-r 編譯生成可再發行的二進制

編譯腳本

sehll 腳本編譯成可執行的二進制文件之后,只需要把二進制文件提供給執行者即可,這樣執行者就無法知道原始腳本代碼了,從而實現別人無法閱讀和修改代碼的目的

新建 func.sh 腳本,往其中添加如下內容:

  1. #!/bin/bash 
  2.  
  3. #是否是有效的密碼 
  4. valid_passwd() 
  5.    if [ "$1" == "123" ]; then 
  6.         echo 1 
  7.    else 
  8.         echo 0 
  9.    fi 
  10.  
  11. #獲取最大數量 
  12. max_num() 
  13.   echo 100 
  14.  
  15. #登錄到遠程機器 
  16. login() 
  17.   sshpass -p '123456' ssh test@192.168.70.20 
  18.  
  19. #版本號 
  20. ver() 
  21.    echo "1.0" 
  22.  
  23. if [ $# -ne 0 ]; then 
  24.         name="$1" 
  25.         shift 1 
  26.         ${name"$@" 
  27. fi 

執行下面的命令,編譯 func.sh 腳本

  1. shc -rf func.sh -o func.bin 

編譯完之后,當前目錄下會出現三個文件

  1. [root@ecs-centos-7 shc_test]# ll 
  2. -rwxrwxr-x 1 root root 11640 7月   1 00:24 func.bin 
  3. -rw-r--r-- 1 root root   373 7月   1 00:19 func.sh 
  4. -rw-r--r-- 1 root root 19811 7月   1 00:24 func.sh.x.c 

func.sh 是原始的腳本文件,func.sh.x.c 是生成的 c語言代碼, func.bin 是生成可執行的二進制文件,它的使用方法和原始腳本是一樣的

注意: 編譯出來的二進制文件func.bin,如果想讓它在其他機器也能運行的話,一定要指定 -r 選項

使用 file 命令分別查看 func.bin 、func.sh.x.c,結果如下:

腳本對外提供 valid_passwd、 max_num、 login、 ver 這四個接口,腳本中已經注明了每個接口的作用,使用方法是 ./func.bin 接口名 接口參數列表,下面的兩個實例說明了如何使用腳本

實例1

分別執行 ./func.bin ver 和 ./func.sh ver 命令,結果如下

從上圖可以看出,無論是用腳本還是二進制,最終的結果都是一樣的

實例2

執行 ./func.bin login 命令,結果如下

當傳入 login 參數時,就會執行func.sh腳本中的 login 函數,該函數的作用是使用 SSH 登錄到遠程機器, 函數體中的 sshpass 是一個自動填充SSH登錄密碼的工具

從結果可以知道,執行 ./func.bin login 命令之后,就登錄到 ip 為 192.168.70.20 機器的 /home/test 目錄,后面再輸入 exit 從遠程機器退回到當前機器的目錄

我們把 func.sh 腳本編譯成 func.bin 二進制文件的目的就是要隱藏腳本文件中一些敏感信息,比如:腳本中的SSH用戶 test , IP地址 192.168.70.20 以及密碼 123456

設置過期時間

shc 除了將把腳本編譯成二進制,還能為二進制設置過期時間,下面還是以 func.sh 腳本為例來說明

執行 shc -e 25/6/2021 -m "The script is expired, Please contact test@qq.com" -rf func.sh -o func.bin 命令把腳本的過期時間設置為 2021年6月25日,執行過期后的腳本提示語設置為 "The script is expired, Please contact test@qq.com"

然后,執行 ./func.bin ver 命令進行測試,結果如下

從上圖可以看出,腳本設置過期時間之后,再次執行腳本會提示已經過期了

如何引用二進制腳本

func.sh 編譯成了二進制后,其他腳本引用它的方式也要調整下,原來以 source ./func.sh 的使用方式都需要修改,因為 fun.sh 已經由原來的 ASICII 文件變成了 二進制文件了,下面給出一個shell腳本引用二進制腳本 func.bin 的實例

新建 test_func.sh 腳本,腳本內容如下:

  1. #!/bin/bash 
  2.  
  3. #調用 valid_passwd 函數 
  4. ret=$(./func.bin valid_passwd 123) 
  5. if [ $ret -eq 1 ]; then 
  6.    echo "passwd ok" 
  7. fi 
  8.  
  9. #調用 valid_passwd 函數 
  10. ret=$(./func.bin valid_passwd 124) 
  11. if [ $ret -eq 1 ]; then 
  12.    echo "passwd ok" 
  13. else 
  14.    echo "passwd fail" 
  15. fi 
  16.  
  17. #調用 max_num 函數 
  18. ret=$(./func.bin max_num) 
  19. echo "max_num:"$ret 
  20.  
  21. #調用 ver 函數 
  22. ret=$(./func.bin ver) 
  23. echo "version:"$ret 

執行 ./test_func.sh 命令,結果如下

從上圖可以看出,test_func.sh 腳本分別調用了二進制文件 fun.bin 中的 valid_passwd、max_num、 ver 函數,根據 func.sh 腳本內容,可以確定結果輸出都是正確的

從這個實例可以得出,普通腳本也可以正常使用二進制的腳本

安全性

shc 使用的加密類型是叫做 RC4流密碼的一個變體,目前它已經被證實存在弱點,存在被破解的可能, 尤其在 shc 中,密鑰被攜帶到加密腳本本身中,所以,是存在 通過反匯編破解出密鑰,進而通過密鑰還原原始腳本的可能性

因此,我們不應該依賴 shc 加密的安全性,而是更多的把它當作是shell腳本內容的隱藏或者混淆工具

小結

 

本文主要介紹了隱藏shell腳本內容的工具 shc, 雖然它加密的安全性不高,但是我們平常可以把它作為一個shell腳本代碼隱藏和混淆工具來使用,也能達到我們的目的, 更多關于 shc 的相關知識請參考網上其他資料

 

責任編輯:武曉燕 來源: Linux開發那些事兒
相關推薦

2020-11-02 08:23:36

shell腳本Linux

2023-05-20 17:45:25

LinuxShell

2014-05-16 11:38:27

Shell 腳本監控

2024-11-27 09:19:25

2019-08-09 13:50:08

shellLinux

2021-08-20 10:46:25

Shell腳本文件Linux

2021-04-21 08:03:34

腳本Shell讀取

2020-12-14 06:57:37

shell

2011-09-27 13:52:41

2020-06-17 10:42:54

shellshell腳本Linux

2012-04-26 14:02:58

ibmdw

2022-06-21 09:26:21

Shell腳本JavaScript

2009-11-18 13:52:30

PHP shell腳本

2023-07-31 08:45:10

Shell腳本

2016-12-16 09:23:29

LinuxShell腳本

2016-12-20 09:30:22

shell腳本linux

2021-03-14 09:28:24

Linux Shell腳本

2022-12-22 20:47:01

腳本循環結構

2021-01-08 08:06:19

腳本Shell文件

2022-10-09 10:18:44

LinuxShell腳本
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美在线观看网站 | www.亚洲精品 | 久久久久一区二区 | 天天久久| 大学生a级毛片免费视频 | 日韩免费视频 | 日韩精品一区二区在线观看 | 久久ww| 狠狠干天天干 | 欧美成视频 | 狠狠干av | 日韩三级免费网站 | 成人一区二区三区 | 国产一级免费在线观看 | 天天玩夜夜操 | www四虎com| 精品一区二区观看 | 国产成人精品免费 | 一区二区三区电影在线观看 | 成人精品影院 | av天天看 | 波多野结衣中文字幕一区二区三区 | 亚洲乱码国产乱码精品精98午夜 | 国产日产精品一区二区三区四区 | 欧美日韩国产精品一区 | 久久新 | 亚洲一区中文字幕 | 亚洲一区二区三区免费在线 | 日日摸天天添天天添破 | 性生活毛片 | 日韩久久综合网 | 国产精品一区二区在线 | 久久天堂 | 91在线| 亚洲精品一区二区在线观看 | 精品国产18久久久久久二百 | av网址在线播放 | 国产一区免费视频 | 国产福利一区二区 | 免费三级网 | 久久久久亚洲av毛片大全 |