So verschlüsseln Sie Ihr Bash Shell-Skript unter Linux mit SHC

F: Wie verschlüssele ich mein Bash-Shell-Skript in einer Linux-Umgebung? Das Shell-Skript enthält ein Kennwort, und ich möchte nicht, dass andere, die Ausführungszugriff haben, das Shell-Skript anzeigen und das Kennwort abrufen. Gibt es eine Möglichkeit, mein Shell-Skript zu verschlüsseln?

A: Erstens sollten Sie als bewährte Methode Ihr Shell-Skript nicht verschlüsseln. Sie sollten Ihr Shell-Skript wirklich richtig dokumentieren, damit jeder, der es ansieht, genau versteht, was es tut. Wenn es vertrauliche Informationen wie das Kennwort enthält, sollten Sie einen anderen Ansatz finden, um das Shell-Skript zu schreiben, ohne es verschlüsseln zu müssen.

Wenn Sie jedoch immer noch darauf bestehen, ein Shell-Skript zu verschlüsseln, können Sie das SHC-Dienstprogramm wie unten beschrieben verwenden. Bitte beachten Sie, dass verschlüsseltes Shell-Skript, das von shc erstellt wurde, für normale Benutzer nicht lesbar ist. Jemand, der versteht, wie dies funktioniert, kann jedoch das ursprüngliche Shell-Skript aus der von shc erstellten verschlüsselten Binärdatei extrahieren.

SHC steht für Shell Script Compiler.

1. Laden Sie shc herunter und installieren Sie es

Laden Sie shc herunter und installieren Sie es wie unten gezeigt.

# wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9b.tgz

# tar xvfz shc-3.8.9b.tgz

# cd shc-3.8.9b

# make

Stellen Sie sicher, dass shc ordnungsgemäß installiert ist.

$ . /shc -v

shc parse(-f): Keine Quelldatei angegeben

shc Verwendung: shc [-e date] [-m addr][-i iopt][-x cmnd][-l lopt][-rvDTCAh]-f script

2. Erstellen eines Beispiel-Shell-Skripts

Erstellen Sie ein Beispiel-Bash-Shell-Skript, das Sie zu Testzwecken mit shc verschlüsseln möchten.

Zu Testzwecken erstellen wir die folgenden random.sh Shell-Skript, das Zufallszahlen generiert. Sie müssen angeben, wie viele Zufallszahlen Sie generieren möchten.

$ vi random.sh

#!/bin/bash

echo -n "How many random numbers do you want to generate? "

read max

for (( start = 1; start <= $max; start++ ))

do

echo -e $RANDOM

done

$ ./random.sh

How many random numbers do you want to generate? 3

24682

1678

491

3. Verschlüsseln Sie das Shell-Skript mit shc

Verschlüsseln Sie die random.sh Shell-Skripting mit shc, wie unten gezeigt.

$ . /shc -f random.sh

Dadurch werden die folgenden beiden Dateien erstellt:

$ ls -ls random.sh*

-rwxrw-r–. 1 ramesh ramesh 149 Mär 27 01:09 random.sh

-rwx-wx–x. 1 ramesh ramesh 11752 Mär 27 01:12 random.sh.x

-rw-rw-r–. 1 ramesh ramesh 10174 Mär 27 01:12 random.sh.x.c

  • random.sh ist das ursprüngliche unverschlüsselte Shell-Skript
  • random.sh.x ist das verschlüsselte Shell-Skript im Binärformat
  • random.sh.x.c ist der C-Quellcode der random.sh-Datei. Dieser C-Quellcode wird kompiliert, um die obige verschlüsselte random.sh.x-Datei zu erstellen. Die ganze Logik hinter dem shc besteht darin, das random.sh-Shell-Skript in das Programm random.sh.x.c C zu konvertieren (und natürlich zu kompilieren, um die ausführbare Datei random.sh.x zu generieren).

$ file random.sh

random.sh: Bourne-Again shell script text executable

$ file random.sh.x

random.sh.x: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

$ file random.sh.x.c

random.sh.x.c: ASCII C program text

4. Führen Sie das verschlüsselte Shell-Skript aus

Lassen Sie uns nun das verschlüsselte Shell-Skript ausführen, um sicherzustellen, dass es wie erwartet funktioniert.

$ ./random.sh.x

How many random numbers do you want to generate? 3

7489

10494

29627

Bitte beachten Sie, dass die Binärdatei selbst immer noch von der Shell abhängig ist (die erste Zeile im random.sh /bin/bash), um für die Ausführung des Skripts zur Verfügung zu stehen.

5. Angeben des Ablaufdatums für Ihr Shell-Skript

Mit shc können Sie auch ein Ablaufdatum angeben. d.h. nach diesem Ablaufdatum, wenn jemand versucht, das Shell-Skript auszuführen, erhält er eine Fehlermeldung.

Nehmen wir an, Sie möchten nicht, dass jemand die random.sh.x nach dem 31-Dez-2011 ausführt (ich habe das Datum des letzten Jahres zu Testzwecken verwendet).

Erstellen Sie ein neues verschlüsseltes Shell-Skript mit der Option"shc -e", um das Ablaufdatum anzugeben. Das Ablaufdatum wird im Format TT/MM/YYYANGEGEBEN.

$ . /shc -e 31/12/2011 -f random.sh

Wenn in diesem Beispiel jemand versucht, die random.sh.xnach dem 31. Dezember 2011 auszuführen, erhält er eine Standardablaufmeldung, wie unten gezeigt.

$ ./random.sh.x

./random.sh.x: has expired!

Please contact your provider

Wenn Sie Ihre eigene benutzerdefinierte Ablaufnachricht angeben möchten, verwenden Sie die Option -m (zusammen mit der Option -e, wie unten gezeigt).

$ . /shc -e 31/12/2011 -m "Contact admin@thegeekstuff.com for new version of this script" -f random.sh

$ ./random.sh.x

./random.sh.x: has expired!

Contact admin@thegeekstuff.com for new version of this script

6. Erstellen Sie verteilbare verschlüsselte Shell-Skripte

Neben -e und -m (für Ablauf) können Sie auch die folgenden Optionen verwenden:

  • -r lockert die Sicherheit, um eine verteilbare Binärdatei zu erstellen, die auf anderen Systemen ausgeführt wird, auf denen dasselbe Betriebssystem ausgeführt wird wie das, auf dem sie kompiliert wurde.
  • -T ermöglicht es, die erstellten Binärdateien mit Programmen wie strace, ltrace usw. nachvollziehbar zumachen.
  • -v steht für ausführlich

In der Regel möchten Sie möglicherweise sowohl die Option -r als auch die Option -T verwenden, um ein verteilbares und rückverfolgbares Shell-verschlüsseltes Shell-Skript wie unten gezeigt zu erstellen.

$ ./shc -v -r -T -f random.sh

shc shll=bash

shc [-i]=-c

shc [-x]=exec '%s' "$@"

shc [-l]=

shc opts=

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

shc: strip random.sh.x

shc: chmod go-r random.sh.x

$ ./random.sh.x

How many random numbers do you want to generate? 3

28954

1410

15234

Abschließend lohnt es sich, noch einmal zu wiederholen: Sie sollten Ihr Shell-Skript gar nicht erst verschlüsseln. Wenn Sie sich jedoch entschieden haben, Ihr Shell-Skript mit shc zu verschlüsseln, denken Sie bitte daran, dass eine intelligente Person immer noch das ursprüngliche Shell-Skript aus der verschlüsselten Binärdatei generieren kann, die von shc erstellt wurde.

Dieser Beitrag wurde unter LINUX veröffentlicht. Setze ein Lesezeichen auf den Permalink.