sch 助shell指令碼加密 02

dbhelper發表於2015-01-17


sch shell指令碼加密 02

一、  簡介

SHC(shell script compiler),即shell指令碼編譯器。透過SHC編譯過的指令碼對普通使用者而言是不可讀的,因此如果你想讓你的程式碼實現加密功能,讓其有效的遮蔽一些敏感資訊,這個時候可以考慮使用SHC;它通常情況下是不太容易被破解的,但是還是有些人可以透過反編譯SHC的方法來實現破解加密過的指令碼。

二、  實驗測試開始
2.1 下載並編譯SHC

  1. [root@woo ~]# wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.3.tgz
  2. [root@woo ~]# ll shc-3.8.3.tgz
  3. -rw-r--r-- 1 root root 19874 Dec 31 20:40 shc-3.8.3.tgz
  4. [root@woo ~]# tar -zxvf shc-3.8.3.tgz
  5. shc-3.8.3/CHANGES
  6. shc-3.8.3/Copying
  7. shc-3.8.3/Makefile
  8. shc-3.8.3/match
  9. shc-3.8.3/pru.sh
  10. shc-3.8.3/shc.1
  11. shc-3.8.3/shc.c
  12. shc-3.8.3/shc.html
  13. shc-3.8.3/shc.README
  14. shc-3.8.3/test.bash
  15. shc-3.8.3/test.csh
  16. [root@woo ~]# cd shc-3.8.3
  17. [root@woo shc-3.8.3]# make && make install
  18. *** ?Do you want to probe shc with a test script?
  19. *** Please try... make test
  20. [root@woo shc-3.8.3]#


2.2 編譯完成之後,我們切換到oracle使用者下編輯一個指令碼

  1. [root@woo ~]# su - oracle
  2. [oracle@woo ~]$ vi sqlscript.sql
  3. #!/bin/sh
  4. sqlplus -S system/oracle << EOF
  5. set pagesize 0 linesize 80 feedback off
  6. select 'The database ' || instance_name ||
  7.         ' has been running since '||
  8. to_char(startup_time, 'HH24:MI MM/DD/YYYY')
  9. from v\$instance;
  10. select 'There are ' || count(status) ||
  11.         ' data files with a status of ' || status
  12. from dba_data_files
  13. group by status
  14. order by status;
  15. exit;
  16. EOF


2.3 執行加密前的指令碼

  1. [oracle@woo ~]$ ./sqlscript.sql
  2. The database woo has been running since 18:17 12/23/2014
  3. There are 4 data files with a status of AVAILABLE


2.4 對指令碼進行加密操作,會在原來的基礎上多出兩個檔案

  1. [root@woo shc-3.8.3]# shc -r -f /home/oracle/sqlscript.sql
  2. [oracle@woo ~]$ ll sqlscript*
  3. -rwxr-xr-x 1 oracle oinstall 365 Dec 31 18:55 sqlscript.sql --執行檔案
  4. -rwx--x--x 1 root root 12048 Dec 31 22:00 sqlscript.sql.x –加密後的二進位制檔案
  5. -rw-r--r-- 1 root root 11416 Dec 31 22:00 sqlscript.sql.x.c --x原始檔(c語言)


2.5 執行加密後的檔案,輸出結果和加密前是一樣的

  1. [oracle@woo ~]$ ./sqlscript.sql.x
  2. The database woo has been running since 18:17 12/23/2014
  3. There are 4 data files with a status of AVAILABLE


2.6 SHC可選引數

  1. [root@woo shc-3.8.3]# ./shc -v
    shc parse(-f): No source file specified
    shc Usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-rvDTCAh] -f script
    [root@woo shc-3.8.3]#
    [root@woo shc-3.8.3]# ./shc --help
    ./shc: invalid option -- '-'
    shc parse: Unknown option
    shc Version 3.8.3, Generic Script Compiler
    shc Copyright (c) 1994-2005 Francisco Rosales
    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
        -i %s  Inline option for the shell interpreter i.e: -e
        -x %s  eXec command, as a printf format i.e: exec('%s',@ARGV);
    -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.



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-1405551/,如需轉載,請註明出處,否則將追究法律責任。

相關文章