1 368 просмотров
Запутывание может быть только препятствием, но никогда полностью не останавливать кого-то от понимания или изменения запутанного кода. Я бы настоятельно не советовал вам запутываться. Но если вы чувствуете себя лучше таким образом, вы можете использовать следующий подход.
Вы можете сжать свой сценарий 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