Назад | Перейти на главную страницу

Как зашифровать сценарий sh в среде Linux?

У меня небольшой вопрос, как я могу зашифровать свои скрипты? Я имею в виду, например, иногда у меня есть сценарии sh (предоставленные какой-то компанией, такой как VMWare), и когда я использую их, они просто показывают мне зашифрованный файл, а не простой текстовый файл.

Как я могу преобразовать мои сценарии с простым текстом в зашифрованный сценарий?

Если ваша цель состоит в том, чтобы не дать кому-либо увидеть содержимое скрипта (например, код и то, как он работает), а также иметь возможность его запустить, на самом деле нет способа сделать это. Вы можете использовать самораспаковывающийся код и обфускацию кода, но в конце концов тот, кто действительно хочет, сможет увидеть скрипт, приложив лишь немного дополнительных усилий.

Есть и другие причины использовать шифрование, которое может иметь некоторую полезность, но вы не сказали, что вы пытаетесь сделать или почему, поэтому сложно дать рекомендацию, включающую информацию об ограничениях и уязвимостях.

когда я пишу, они просто показывают мне зашифрованный файл, а не простой текстовый файл.

Нет, вы смотрите на сжатый файл, а не на зашифрованный файл.

Похоже, на этом сайте есть сценарий, который сделает то, что вы хотите:

http://megastep.org/makeself/

С сайта:

makeself.sh - это небольшой сценарий оболочки, который генерирует самораспаковывающийся архив tar.gz из каталога. Полученный файл выглядит как сценарий оболочки (многие из них имеют суффикс .run) и может быть запущен как есть. Затем архив распакуется во временный каталог, и будет выполнена дополнительная произвольная команда (например, сценарий установки). Это очень похоже на архивы, созданные с помощью WinZip Self-Extractor в мире Windows. Архивы Makeself также включают контрольные суммы для самопроверки целостности (контрольные суммы CRC и / или MD5).

См. Комментарий о v2.1.5, поддерживающем шифрование через gpg.

Я думаю, что это называется архивом оболочки, оригинал написан Джеймсом Гослингом (изобретателем Java).

http://blogs.oracle.com/jag/entry/shar_a_blast_from_the

Вопрос немного непонятный. Если вы действительно хотите зашифровать файл, вы можете использовать утилиту шифрования, такую ​​как bcrypt. После этого он больше не будет работать как сценарий оболочки, пока вы его не расшифруете.

Возможно, вы видите в vi сжатые данные (которые нужно извлечь и запустить самостоятельно). Есть способы упаковать сценарии оболочки таким образом. Или ... возможно, вы просто смотрите двоичные данные из исполняемого файла (в первую очередь, не из сценария оболочки).

Если вы хотите достичь того, чего, я думаю, вы хотите достичь ... Возможно, вам лучше сделать это с разрешениями пользователя (т.е. разрешить людям выполнять данный исполняемый файл, но не читать его ... или иметь некоторый интерпретатор setuid).

Если целью является сокрытие исходного кода скрипта, вы можете посмотреть shc. Обратите внимание: я никогда не использовал это до сегодняшнего дня. Это работает, по крайней мере, для моего простого однострочного тестового сценария script / 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» из сценария, в результате чего сценарий будет выгружен в стандартный вывод.

Короче говоря, если конечный пользователь может запустить сценарий, можно (при наличии достаточной мотивации и навыков) перепроектировать его. Не помещайте в эти замаскированные сценарии ничего критически важного (например, пароли).

Чтобы зашифровать ваш скрипт и гарантировать, что никто не сможет его просмотреть, у вас есть два варианта:

Первый вариант

  1. Используйте команду openssl, чтобы зашифровать его вручную. А в будущем, когда вы захотите запустить скрипт, вам придется снова запускать openssl вручную и указывать пароль для расшифровки.

Шифрование с помощью 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 будет таким же, как ваш исходный скрипт yourscript.sh

Второй вариант

  1. Используйте сайт вроде www.Enscryption.com для автоматического шифрования вашего скрипта и превращения зашифрованной версии скрипта в исполняемый файл. Этот сайт использует возможности шифрования openssl и некоторые другие методы обфускации, чтобы злоумышленникам было довольно сложно взломать ваш скрипт или раскрыть секреты, которые вы хотите скрыть. С помощью этого сайта вы можете шифровать сценарии оболочки и сценарии командной строки на perl, python, ruby. Я тоже думаю о php.