Очень часто на фрилансе бывает, так что заказчик просит сделать некоторую работу, получив тестовую версию, принимает её и отказывается платить
Я на фрилансе достаточно часто делаю скрипты под заказ, администрирование серверов и тд, автоматизация неких процессов на сервер, уловив основную идею написания, как правило, заказчик пропадает, решив что это все так просто и не за что платить.
Столкнувшись с понятием Обфуска́ция в С, решил поискать аналогичное решение и для своего любимого Bash.
Разработчик некто Francisco Javier Rosales García
Решение называется shc — транслятор Bash в C
Из опций особо понравилось
Скачать можно исходники по адресу www.datsi.fi.upm.es/~frosal
Пример работы:
1) Создадим простейший Bash скрипт test.sh
Проверяем
2) Запустим shc и выполним преобразование
3) На выходе получаем
4) Проверка
./test.sh.x test
Hello WORD
test
Теперь по порядку
Создается файл test.sh.x.c — практически нечитаемое содержимое Сишного кода, его в любой момент можно скомпилить вручную используя cc компилятор.
Второй файл test.sh.x — уже бинарный, выполняется на любом практически Линуксе, проверил на 5ти (Gentoo, RHEL, Debian, ALT, OpenSuSE)
О производительности говорить не приходится, так как это неактуально, скрипты пишутся для других задач.
Я на фрилансе достаточно часто делаю скрипты под заказ, администрирование серверов и тд, автоматизация неких процессов на сервер, уловив основную идею написания, как правило, заказчик пропадает, решив что это все так просто и не за что платить.
Столкнувшись с понятием Обфуска́ция в С, решил поискать аналогичное решение и для своего любимого 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)
О производительности говорить не приходится, так как это неактуально, скрипты пишутся для других задач.