Как стать автором
Поиск
Написать публикацию
Обновить

Прячем Bash скрипты

Время на прочтение2 мин
Количество просмотров18K
Очень часто на фрилансе бывает, так что заказчик просит сделать некоторую работу, получив тестовую версию, принимает её и отказывается платить
Я на фрилансе достаточно часто делаю скрипты под заказ, администрирование серверов и тд, автоматизация неких процессов на сервер, уловив основную идею написания, как правило, заказчик пропадает, решив что это все так просто и не за что платить.
Столкнувшись с понятием Обфуска́ция в С, решил поискать аналогичное решение и для своего любимого Bash.

Разработчик некто Francisco Javier Rosales García

Решение называется shc — транслятор Bash в C

Из опций особо понравилось
-e date
Expiration date in dd/mm/yyyy format [none]
-m message
message to display upon expiration ["Please contact
your provider"]


Скачать можно исходники по адресу www.datsi.fi.upm.es/~frosal

Пример работы:

1) Создадим простейший Bash скрипт test.sh

#!/bin/bash
echo "Hello WORD" #вывод приветствия
a=$1 #Первая введенная переменная
echo $a #Вывод содержимого переменной


Проверяем
sh test.sh  test
Hello WORD
test


2) Запустим shc и выполним преобразование
[user@server shc-3.8.7]$ ./shc -v -r -T -f test.sh


3) На выходе получаем
shc shll=bash
shc [-i]=-c
shc [-x]=exec '%s' "$@"
shc [-l]=
shc opts=
shc: cc test.sh.x.c -o test.sh.x
shc: strip test.sh.x
shc: chmod go-r test.sh.x


4) Проверка
./test.sh.x test
Hello WORD
test

Теперь по порядку

Создается файл test.sh.x.c — практически нечитаемое содержимое Сишного кода, его в любой момент можно скомпилить вручную используя cc компилятор.

Второй файл test.sh.x — уже бинарный, выполняется на любом практически Линуксе, проверил на 5ти (Gentoo, RHEL, Debian, ALT, OpenSuSE)

О производительности говорить не приходится, так как это неактуально, скрипты пишутся для других задач.
Теги:
Хабы:
Всего голосов 73: ↑65 и ↓8+57
Комментарии24

Публикации

Ближайшие события