Этот сайт, кажется, имеет сценарий, который сделает то, что Вы хотите:
От сайта:
makeself.sh является маленьким сценарием оболочки, который генерирует самоизвлекаемый архив tar.gz из каталога. Получающийся файл появляется как сценарий оболочки (у многих из тех есть суффикс .run), и может быть запущен, как. Архив затем распакует себя к временному каталогу, и дополнительная произвольная команда будет выполняться (например, сценарий установки). Это довольно подобно архивам, сгенерированным с Архиватором WinZip в мире Windows. Архивы Makeself также включают контрольные суммы для самопроверки целостности (CRC и/или контрольные суммы MD5).
См. комментарий о шифровании поддержки v2.1.5 через gpg.
Я думаю, что это назвало архив оболочки, оригинал, записанный James Gosling (изобретатель Java).
Если Ваша цель состоит в том, чтобы помешать кому-то видеть содержание сценария (например, код и как это работает), и также смогите выполнить его, нет действительно способа сделать это. Можно использовать автоматическую экстракцию и запутанность кода, но в конце кто-то, кто действительно хочет, сможет видеть сценарий только с небольшим дополнительным усилием.
Существуют другие причины использовать шифрование, которое может иметь некоторую утилиту, но Вы не сказали, что Вы пытаетесь сделать или почему, таким образом, трудно предоставить рекомендацию, которая включает информацию об ограничениях и уязвимостях.
когда я VI's это они просто показывают мне crypted файл и не plained текстовый файл.
Нет, Вы смотрите на сжатый файл, не зашифрованный файл.
Вопрос немного неясен. Если Вы на самом деле хотите зашифровать файл, Вы могли бы использовать утилиту шифрования, такую как bcrypt. Это больше не будет затем работать сценарием оболочки, пока Вы не дешифруете его.
Может случиться так, что то, что Вы видите в vi, является сжатыми данными (чтобы быть самораспакованным и выполненным). Существуют способы упаковать сценарии оболочки таким образом. Или.. возможно, Вы просто смотрите на двоичные данные от исполняемого файла (не сценарий оболочки во-первых).
Если Вы хотите достигнуть того, что я думаю, что Вы хотите достигнуть.. Вы могли бы быть более обеспеченным выполнением этого с пользовательским управлением правами (т.е. позволить людям выполнять данный исполняемый файл, но не читать его.. или имейте некоторый setuid интерпретатор).
Если сокрытие исходного кода сценария является целью, можно хотеть посмотреть на shc. Отметьте, я на самом деле никогда не использовал это до сих пор. Это работает, по крайней мере, для моего простого один сценарий строки/bin/sh сценарий тестирования.
Иначе можно попытаться использовать gpg, чтобы зашифровать сценарий и дать каждому пользователю пароль. В основном Вы берете свой законченный сценарий оболочки, затем шифруете его к бронированному формату ASCII:
gpg -ca foo.sh
Затем Вы берете получающийся "foo.sh.asc" файл, затем переносите его в другой сценарий:
cat <<EOF | gpg -d | /bin/sh
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.10 (FreeBSD)
jA0EAwMCN7iZSx7u9fRgySY/QTWgnwhYs0fSdLhwR0xL0Z1VOk6Lm5Jil06U7XtJ
Yl62Gab6kg==
=Yalz
-----END PGP MESSAGE-----
EOF
Пароль является "test1". Зашифрованный сценарий:
echo "foo!"
В то время как я даю Вам свое слово, что мой сценарий безопасен, не делайте привычку к запущению таких скриптов от незнакомцев, так как у Вас нет причины доверять мне, и я мог потенциально сделать что-то окольное со своим зашифрованным сценарием.:-)
К сожалению, достаточно опытный пользователь сможет восстановить простой текст сценария путем простого удаления "|/bin/sh" часть из сценария, который приведет к сценарию, выводимому к stdout.
Короче говоря, если конечный пользователь может запустить скрипт, возможно (с достаточным количеством мотивации и навыка) перепроектировать его. Не помещайте ничего жизненной важности (такой как пароли) в эти запутываемые сценарии.
Чтобы зашифровать ваш скрипт и убедиться, что никто не сможет его просмотреть, у вас есть два варианта:
First Option
Шифрование openssl:
cat yourscript.sh | openssl aes-128-cbc -a -salt -k yourpassword > yourscript.enc
Расшифровка openssl:
cat yourscript.enc | openssl aes-128-cbc -a -d -salt -k yourpassword > yourscript.dec
yourscript.dec будет такой же, как и ваш оригинальный скрипт yourcript.sh
Second Option