Как запутать скрипт оболочки? - PullRequest
1 голос
/ 14 марта 2012

Я использую Ubuntu 10.04. Я создал сценарий оболочки. После написания скрипта код можно редактировать, если щелкнуть правой кнопкой мыши файл и выбрать Gedit. Я хочу знать, как сделать скрипт нечитаемым в Gedit.

Ответы [ 4 ]

3 голосов
/ 24 октября 2016

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

SHC:

SHC - отличный инструмент для этой цели. и, судя по последнему сообщению в этой теме, ОП уже пробовал его, но на некоторых системах он не работал. Если это так, то вот причина. Способ работы SHC на самом деле довольно прост. Когда вы используете его для обфускации скрипта, вам придется перекомпилировать скрипт для любой операционной системы, на которой вы собираетесь его запускать. Это означает, что вы не можете запустить компилятор SHC на коробке с Ubuntu и ожидать, что созданный скрипт будет работать на коробке с Red Hat / CentOS. Похоже, что последняя версия SHC может быть доступна здесь .

EnScryption:

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

Если вы не хотите вставлять свой код на вышеуказанный сайт или использовать SHC по какой-либо причине, тогда есть еще одно решение. Используйте openssl!

OpenSSL:

Если ваши скрипты действительно очень чувствительны, то Openssl (или аналогичный инструмент), вероятно, является лучшим вариантом для вас. Зачем? Потому что инструмент openssl, в частности, присутствует в большинстве систем Unix ... т.е. Ubuntu, CentOS, Red Hat, Mac, AIX. Он входит в состав установки по умолчанию. Если вы решите пойти по этому пути, обратите внимание, вам нужно будет написать свой сценарий таким образом, чтобы перед его запуском пользователь должен был предоставить пароль.

Шифрование вашего скрипта с помощью OpenSSL:

cat yourscript.sh | openssl aes-128-cbc -a -salt -k (specify-a-password-here) > yourscript.enc.sh

(OR)

openssl aes-128-cbc -a -salt -in yourscript.sh -k (specify-a-password-here) > yourscript.enc.sh

(OR)

openssl aes-128-cbc -a -salt -in yourscript.sh -out yourscript.enc.sh -k (specify-a-password-here)

Расшифровка вашего скрипта с помощью OpenSSL:

cat yourscript.enc.sh | openssl aes-128-cbc -a -d -salt -k (specify-a-password-here) > yourscript.dec.sh

(OR)

openssl aes-128-cbc -a -d -salt -in yourscript.sh -k (specify-a-password-here) > yourscript.dec.sh

(OR)

openssl aes-128-cbc -a -d -salt -in yourscript.sh -out yourscript.enc.sh -k (specify-a-password-here)

Небольшое замечание о механизме шифрования openssl ' aes-128-cbc ':

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

3 голосов
/ 14 марта 2012

Запутывание (это то, что большинство людей имеют в виду, когда говорят, что хотят «бинарный» сценарий оболочки) - это Плохая Идея (TM). Так и было. Он не обеспечивает никакой защиты от определенного программиста (они просто отслеживают сценарий, чтобы выяснить, что он делает), и это делает его действительно очень трудным для отладки (что, возможно, если вы не GreyCat , вам нужно будет сделать. Много.).

3 голосов
/ 14 марта 2012

Вы, наверное, ищете что-то вроде shc.На странице man:

shc создает удаленную двоичную исполняемую версию скрипта, указанного в командной строке -f.

http://freecode.com/projects/shc

Отказ от ответственности: я не имеюпроверено SHC, и я не знаю, насколько хорошо / если это работает

2 голосов
/ 14 марта 2012

То, что вы хотите сделать, не всегда возможно.Скрипты интерпретируются, а не компилируются, поэтому вы видите там текст.

Для выполнения сценария эффективный пользователь должен иметь к нему доступ для чтения.Альтернативой предоставлению разрешения на выполнение или использованию shc (как приятно предложил KillerX), не позволяя пользователю посмотреть на конкурсы сценария, будет использование sudo .Вы бы отредактировали файл sudoers следующим образом (не забудьте использовать visudo для редактирования этого файла!):

username ALL=(ALL) /path/to/your_script.sh

Теперь скрипт будет выполняться под именем пользователя, но он не сможетчитать его содержание.Конечно, вам нужно удалить все разрешения для "username" из этого файла ...

...