Pull to refresh

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

Reading time 2 min
Views 17K
Очень часто на фрилансе бывает, так что заказчик просит сделать некоторую работу, получив тестовую версию, принимает её и отказывается платить
Я на фрилансе достаточно часто делаю скрипты под заказ, администрирование серверов и тд, автоматизация неких процессов на сервер, уловив основную идею написания, как правило, заказчик пропадает, решив что это все так просто и не за что платить.
Столкнувшись с понятием Обфуска́ция в С, решил поискать аналогичное решение и для своего любимого 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)

О производительности говорить не приходится, так как это неактуально, скрипты пишутся для других задач.
Tags:
Hubs:
+57
Comments 24
Comments Comments 24

Articles