Frage:

Kann man seine Shell-Scripte verschlüsseln?
Denn ich habe dort Aufrufe mit Passwörtern (z.B. MySQL-Backup-Script, etc.) drin und möchte nicht, daß die jemand anderes lesen kann.

Antwort:

Ja und es macht manchmal Sinn. Z.B. sind nicht alle Dateien immer mit Hilfe der User-Rechte entsprechend zu schützen. Manchmal soll ein Script auch über einen anderen User ausgeführt werden, etc.

Hierzu gibt es ein nettes Script aus Spanien: http://www.datsi.fi.upm.es/~frosal/
Es übersetzt ein Shell-Script in C, verschlüsselt dabei bereits alle Strings und kompiliert es dann.

Installation:

cd /usr/local/src
wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.6.tgz
tar xzf shc-3.8.6.tgz
cd shc-3.8.6
make
make install

Wer mag, kann bereits das Test-Script übersetzten:

make test
make strings

Anwendung

Wir schreiben ein kleines Test-Script mit Passwort und nennen es z.B. mysql_processlist.sh:

#!/bin/sh
mysql -uroot -pPASSWORD -e 'show processlist;'

Und nun übersetzten wir es und führen es aus:

shc -f mysql_processlist.sh
./mysql_processlist.sh.x

#such das Passwort:
hexdump -C mysql_processlist.sh.x | less

Nettes Feature:

Auf ein wesentlich nettes Feature von shc möchte ich noch eingehen:
Man kann damit eine Art Freeware-/Lizenz-Sicherung anhand des aktuellen Datums einbauen:

shc -e 31/05/2008 -m "Ich will nicht mehr!" -f mysql_processlist.sh
./mysql_processlist.sh.x

Ich will nicht mehr!

Kategorien:

Stichwörter:

bash · script · verschlüsseln · kompilieren · shc · mysql · encrypt ·