2 835 просмотров
Запутывание может быть только препятствием, но никогда полностью не останавливать кого-то от понимания или изменения запутанного кода. Я бы настоятельно не советовал вам запутываться. Но если вы чувствуете себя лучше таким образом, вы можете использовать следующий подход.
Вы можете сжать свой сценарий A и встроить сжатую версию в другой сценарий B. При выполнении B он распаковывается и выполняет A. С точки зрения безопасности этот подход так же плох, как и ваш связанный метод обфускации. Сжатие легко отменить. Однако здесь нет таких недостатков, как коллизии имен и предварительная обработка. Кроме того, запутанные скрипты кажутся двоичными файлами, которые могут помешать некоторым редакторам открыть их.
Вот скрипт для запутывания bash скриптов с помощью сжатия gzip:
obfuscate.sh:
#! /bin/bash
loader='#! /bin/bash
source <(gzip -c -d <(tail -n+"$((LINENO + 2))" "$BASH_SOURCE"));
status="$?"; return "$status" 2> /dev/null || exit "$status"
'
for original; do
obfuscated="$original-obfuscated.sh"
gzip -c "$original" | cat <(printf %s "$loader") - > "$obfuscated"
chmod u+x "$obfuscated"
done
Использование: ./obfuscate.sh myScript.sh создает запутанный скрипт myScript.sh-obfuscated.sh в текущем каталоге.
Если целевая система не поддерживает подстановку процессов <( ) , вы можете использовать следующую альтернативную версию.
#! /bin/bash
loader='#! /bin/bash
tail -n+"$((LINENO + 2))" "$BASH_SOURCE" | gzip -c -d | source /dev/stdin;
status="$?"; return "$status" 2> /dev/null || exit "$status"
'
for original; do
obfuscated="$original-obfuscated.sh"
printf %s "$loader" > "$obfuscated"
gzip -c "$original" >> "$obfuscated"
chmod u+x "$obfuscated"
done
Это должно сработать, если целевая система имеет bash >4.0 и /dev/stdin . Если она не соответствует этим требованиям, замените | source /dev/stdin на bash -s - "$@" . Единственным недостатком этого является то, что запутанный сценарий больше не может быть получен ( . script.sh или source script.sh).
найдено и взято тут
Апр 1 2021
Bash shell обфускатор
Запутывание может быть только препятствием, но никогда полностью не останавливать кого-то от понимания или изменения запутанного кода. Я бы настоятельно не советовал вам запутываться. Но если вы чувствуете себя лучше таким образом, вы можете использовать следующий подход.
Вы можете сжать свой сценарий A и встроить сжатую версию в другой сценарий B. При выполнении B он распаковывается и выполняет A. С точки зрения безопасности этот подход так же плох, как и ваш связанный метод обфускации. Сжатие легко отменить. Однако здесь нет таких недостатков, как коллизии имен и предварительная обработка. Кроме того, запутанные скрипты кажутся двоичными файлами, которые могут помешать некоторым редакторам открыть их.
Вот скрипт для запутывания bash скриптов с помощью сжатия gzip:
obfuscate.sh:
Использование:
./obfuscate.sh myScript.shсоздает запутанный скриптmyScript.sh-obfuscated.shв текущем каталоге.Если целевая система не поддерживает подстановку процессов
<( ), вы можете использовать следующую альтернативную версию.Это должно сработать, если целевая система имеет
bash>4.0 и/dev/stdin. Если она не соответствует этим требованиям, замените| source /dev/stdinнаbash -s - "$@". Единственным недостатком этого является то, что запутанный сценарий больше не может быть получен (. script.shилиsource script.sh).найдено и взято тут
By serg • Kali Linux, Linux, shell 0