bash-skript compilieren
Liebe Leute, zu guten alten DOS-Zeiten (man konnte den Rechner abschalten, sobald man ein C:> auf dem Bildschirm hatte), gab es die Möglichkeit ein batch-File zu kompilieren. Es gab also (mindestens) einen Shell-Skript-Compiler. Der Vorteil war, dass - die compilierte Version deutlich schneller lief (musste nicht interpretiert werden) und - die compilierte Version von DAUs nicht "verbessert" werden konnte. Gibt es so etwas auch für die Bash? Also ein Programm, das meine Shellskripte in irgendeinen -ausführbaren- Binärcode übersetzt? Herzliche Grüße Jan -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Fre, 13 Jul 2007, Jan Handwerker schrieb:
Gibt es so etwas auch für die Bash? Also ein Programm, das meine Shellskripte in irgendeinen -ausführbaren- Binärcode übersetzt?
Nein. -dnh -- Windows und seine integrierte Software sind die Rasierklinge des surfenden Selbstmörders. -- Eric Wick -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Freitag, 13. Juli 2007 schrieb David Haller: Hallo,
Am Fre, 13 Jul 2007, Jan Handwerker schrieb:
Gibt es so etwas auch für die Bash? Also ein Programm, das meine Shellskripte in irgendeinen -ausführbaren- Binärcode übersetzt?
Nein.
Upss... http://www.datsi.fi.upm.es/~frosal/frosal.html Allerdings muss dem OP bewusst sein, dass das Binary um einiges groesser ist, als das urspruengliche Script. Schuetzt aber gewaltig vor Fummlern :-) MfG Th. Moritz -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Thomas Moritz wrote:
Am Freitag, 13. Juli 2007 schrieb David Haller:
Hallo,
Am Fre, 13 Jul 2007, Jan Handwerker schrieb:
Gibt es so etwas auch für die Bash? Also ein Programm, das meine Shellskripte in irgendeinen -ausführbaren- Binärcode übersetzt?
Nein.
Upss...
http://www.datsi.fi.upm.es/~frosal/frosal.html
Allerdings muss dem OP bewusst sein, dass das Binary um einiges groesser ist, als das urspruengliche Script. Schuetzt aber gewaltig vor Fummlern :-)
MfG Th. Moritz
Wenn ich das richtig verstehe, handelt es sich dabei aber nicht um einen Compiler. Das Script wird lediglich in einen Container gepackt. An der "Tür" wird eine C-Wrapper gehängt, der es wieder auslesen und in einer Shell ausführt. Uwe -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Samstag, 14. Juli 2007 schrieb Uwe Diederich: Hallo Uwe,
http://www.datsi.fi.upm.es/~frosal/frosal.html
Allerdings muss dem OP bewusst sein, dass das Binary um einiges groesser ist, als das urspruengliche Script. Schuetzt aber gewaltig vor Fummlern :-)
MfG Th. Moritz
Wenn ich das richtig verstehe, handelt es sich dabei aber nicht um einen Compiler. Das Script wird lediglich in einen Container gepackt. An der "Tür" wird eine C-Wrapper gehängt, der es wieder auslesen und in einer Shell ausführt.
Das mit "shc -vrT -f filename" generierte ELF ist aber (egal wie) genau das was der OP wollte. Kein Klartext wegen Fummelei. Der C-Code ist Imho ein nettes Ueberbleibsel vom Compilieren. MfG Th. Moritz -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, hier die Reaktion vom OP :-) Thomas Moritz wrote:#
Am Samstag, 14. Juli 2007 schrieb Uwe Diederich:
http://www.datsi.fi.upm.es/~frosal/frosal.html
Allerdings muss dem OP bewusst sein, dass das Binary um einiges groesser ist, als das urspruengliche Script. Schuetzt aber gewaltig vor Fummlern :-)
MfG Th. Moritz Wenn ich das richtig verstehe, handelt es sich dabei aber nicht um einen Compiler. Das Script wird lediglich in einen Container gepackt. An der "Tür" wird eine C-Wrapper gehängt, der es wieder auslesen und in einer Shell ausführt.
Das mit "shc -vrT -f filename" generierte ELF ist aber (egal wie) genau das was der OP wollte. Kein Klartext wegen Fummelei. Der C-Code ist Imho ein nettes Ueberbleibsel vom Compilieren.
vielen Dank für diesen Hinweis. Damit kann ich das Shellskript wirklich verstecken. In den meisten Fällen dürfte das wieder auspacken den Aufwand für das Selbstschreiben übertreffen. Allerdings steht auf der dazugehörigen Website explizit: shc itself is not a compiler such as cc, it rather encodes and encrypts a shell script and generates C source code with the added expiration capability. It then uses the system compiler to compile a stripped binary which behaves exactly like the original script. Upon execution, the compiled binary will decrypt and execute the code with the shell -c option. Unfortunatelly, it will not give you any speed improvement as a real C program would. shc's main purpose is to protect your shell scripts from modification or inspection. You can use it if you wish to distribute your scripts but don't want them to be easily readable by other people. Also das ausführbare C Programm erzeugt wieder den shell-skript Sourcecode, der aber direkt in einer Shell ausgeführt wird. shc ist kein Compiler. Trotzdem herzlichen Dank für den Link! Herzliche Grüße Jan -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Montag, 16. Juli 2007 schrieb Jan Handwerker:
Hallo,
hier die Reaktion vom OP :-) Thomas Moritz wrote:#
Am Samstag, 14. Juli 2007 schrieb Uwe Diederich:
http://www.datsi.fi.upm.es/~frosal/frosal.html
Allerdings muss dem OP bewusst sein, dass das Binary um einiges groesser ist, als das urspruengliche Script. Schuetzt aber gewaltig vor Fummlern :-)
MfG Th. Moritz
Wenn ich das richtig verstehe, handelt es sich dabei aber nicht um einen Compiler. Das Script wird lediglich in einen Container gepackt. An der "Tür" wird eine C-Wrapper gehängt, der es wieder auslesen und in einer Shell ausführt.
Das mit "shc -vrT -f filename" generierte ELF ist aber (egal wie) genau das was der OP wollte. Kein Klartext wegen Fummelei. Der C-Code ist Imho ein nettes Ueberbleibsel vom Compilieren.
vielen Dank für diesen Hinweis. Damit kann ich das Shellskript wirklich verstecken. In den meisten Fällen dürfte das wieder auspacken den Aufwand für das Selbstschreiben übertreffen. Allerdings steht auf der dazugehörigen Website explizit:
shc itself is not a compiler such as cc, it rather encodes and encrypts a shell script and generates C source code with the added expiration capability. It then uses the system compiler to compile a stripped binary which behaves exactly like the original script. Upon execution, the compiled binary will decrypt and execute the code with the shell -c option. Unfortunatelly, it will not give you any speed improvement as a real C program would.
shc's main purpose is to protect your shell scripts from modification or inspection. You can use it if you wish to distribute your scripts but don't want them to be easily readable by other people.
nun ja, das glaub ich nicht so recht. Was passiert, wenn /bin/sh durch ein eigenes Programm ersetzt, welches die auszuführenden Kommandos zuerst mal in eine Datei schreibt und dann ausführt. Security by obscurity....
Also das ausführbare C Programm erzeugt wieder den shell-skript Sourcecode, der aber direkt in einer Shell ausgeführt wird. shc ist kein Compiler.
Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Dr. Jürgen Vollmer wrote:
shc's main purpose is to protect your shell scripts from modification or inspection. You can use it if you wish to distribute your scripts but don't want them to be easily readable by other people.
nun ja, das glaub ich nicht so recht. Was passiert, wenn /bin/sh durch ein eigenes Programm ersetzt, welches die auszuführenden Kommandos zuerst mal in eine Datei schreibt und dann ausführt.
Security by obscurity....
He he, wenn du einen nicht vertrauenswürdigen User auf deinem Server hast, der die /bin/bash austauschen kann, dann hast du ein ganz anderes Problem. (^-^) Als Schutz vor dem Einsehen in den Programmcode oder Manipulation durch lokale Admins auf deren eigenen Servern ist das natürlich kein angemessener Schutz. -- Sandy Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Montag, 16. Juli 2007 schrieb Sandy Drobic:
Dr. Jürgen Vollmer wrote:
shc's main purpose is to protect your shell scripts from modification or inspection. You can use it if you wish to distribute your scripts but don't want them to be easily readable by other people.
nun ja, das glaub ich nicht so recht. Was passiert, wenn /bin/sh durch ein eigenes Programm ersetzt, welches die auszuführenden Kommandos zuerst mal in eine Datei schreibt und dann ausführt.
Security by obscurity....
He he, wenn du einen nicht vertrauenswürdigen User auf deinem Server hast, der die /bin/bash austauschen kann, dann hast du ein ganz anderes Problem. (^-^)
nun ja, ich glaub' ich vertrau' mir schon einigermassen :-) bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Hallo, Am Mon, 16 Jul 2007, Sandy Drobic schrieb:
Dr. Jürgen Vollmer wrote:
shc's main purpose is to protect your shell scripts from modification or inspection. You can use it if you wish to distribute your scripts but don't want them to be easily readable by other people.
nun ja, das glaub ich nicht so recht. Was passiert, wenn /bin/sh durch ein eigenes Programm ersetzt, welches die auszuführenden Kommandos zuerst mal in eine Datei schreibt und dann ausführt.
Security by obscurity....
He he, wenn du einen nicht vertrauenswürdigen User auf deinem Server hast, der die /bin/bash austauschen kann, dann hast du ein ganz anderes Problem. (^-^)
Nuja, das mit dem "kompilieren von Shell-Scripten" will man ja meist deswegen um Scripte weiterzugeben... Und der Empfänger kann natürlich fröhlich folgendes machen: mv /bin/sh /bin/sh.tmp echo '#!/bin/sh.tmp cat > /tmp/foo.sh' > /bin/sh chmod a+x /bin/sh foo # das ist das 'shc' Ergebnis mv /bin/sh.tmp /bin/sh less /tmp/foo.sh Und schon ist shc ausgehebelt. In de.comp.os.unix.shell wird diese Frage auch öfter gestellt: Bspw: http://groups.google.de/group/de.comp.os.unix.shell/browse_thread/thread/c46... http://groups.google.de/group/de.comp.os.unix.shell/browse_thread/thread/724... http://groups.google.de/group/de.comp.os.unix.shell/browse_thread/thread/f43... Gut finde ich den folgenden Satz als Antwort: "Dieser Mechanismus ist doch in Shell-Scripte bereits eingebaut. Jedes hinreichend große/interessante Script wird automatisch unlesbar. Es ist für Unbedarfte dann nicht mehr zu verstehen." -dnh -- Digital files cannot be made uncopyable, any more than water can be made not wet. --Bruce Schneier on `copy protection' schemes -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Montag, 16. Juli 2007 schrieb David Haller:
Hallo,
Am Mon, 16 Jul 2007, Sandy Drobic schrieb:
Dr. Jürgen Vollmer wrote:
shc's main purpose is to protect your shell scripts from modification or inspection. You can use it if you wish to distribute your scripts but don't want them to be easily readable by other people.
nun ja, das glaub ich nicht so recht. Was passiert, wenn /bin/sh durch ein eigenes Programm ersetzt, welches die auszuführenden Kommandos zuerst mal in eine Datei schreibt und dann ausführt.
Security by obscurity....
He he, wenn du einen nicht vertrauenswürdigen User auf deinem Server hast, der die /bin/bash austauschen kann, dann hast du ein ganz anderes Problem. (^-^)
Nuja, das mit dem "kompilieren von Shell-Scripten" will man ja meist deswegen um Scripte weiterzugeben... Und der Empfänger kann natürlich fröhlich folgendes machen:
mv /bin/sh /bin/sh.tmp echo '#!/bin/sh.tmp cat > /tmp/foo.sh' > /bin/sh chmod a+x /bin/sh foo # das ist das 'shc' Ergebnis mv /bin/sh.tmp /bin/sh less /tmp/foo.sh
Und schon ist shc ausgehebelt.
In de.comp.os.unix.shell wird diese Frage auch öfter gestellt:
Bspw: http://groups.google.de/group/de.comp.os.unix.shell/browse_thread/thread/c4 6c8edce4059640 http://groups.google.de/group/de.comp.os.unix.shell/browse_thread/thread/72 410bae905b9a5e http://groups.google.de/group/de.comp.os.unix.shell/browse_thread/thread/f4 39cfdd03bec3b7
Gut finde ich den folgenden Satz als Antwort:
"Dieser Mechanismus ist doch in Shell-Scripte bereits eingebaut. Jedes hinreichend große/interessante Script wird automatisch unlesbar. Es ist für Unbedarfte dann nicht mehr zu verstehen."
-dnh
-- Digital files cannot be made uncopyable, any more than water can be made not wet. --Bruce Schneier on `copy protection' schemes
wenn schon denn schon: http://de.wikipedia.org/wiki/Whitespace_(Programmiersprache) :-) Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Am Montag, 16. Juli 2007 schrieb David Haller: Auch Hallo,
He he, wenn du einen nicht vertrauenswürdigen User auf deinem Server hast, der die /bin/bash austauschen kann, dann hast du ein ganz anderes Problem. (^-^)
...siehe unten.
Nuja, das mit dem "kompilieren von Shell-Scripten" will man ja meist deswegen um Scripte weiterzugeben... Und der Empfänger kann natürlich fröhlich folgendes machen:
mv /bin/sh /bin/sh.tmp echo '#!/bin/sh.tmp cat > /tmp/foo.sh' > /bin/sh chmod a+x /bin/sh foo # das ist das 'shc' Ergebnis mv /bin/sh.tmp /bin/sh less /tmp/foo.sh
Und schon ist shc ausgehebelt.
Man koennte diese Diskussion auch wieder soweit treiben: "Wenn Du keine Probleme mit Datensicherheit haben willst, dann benutze keine Datentraeger und keine Datenuebertragung!" Wenn jemand Zeit und Lust zum Hacken hat, dann kennt er auch (s)trace, gdb, ddd, ida pro ... usw. MfG Th. Moritz -- Mit einem Computer kannst Du Probleme loesen, die Du ohne ihn nicht haettest :-) -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (6)
-
David Haller
-
Dr. Jürgen Vollmer
-
Jan Handwerker
-
Sandy Drobic
-
Thomas Moritz
-
Uwe Diederich