Как скрыть или скрыть код в наших сценариях bash

Иногда мы программируем сценарий в Колотить и мы хотим, чтобы этот код НЕ был виден, то есть не был простым текстом. Когда мы говорим о сокрытии кода, правильным термином будет затемнять, в моем случае я хотел запутать код сценарий, который я сделал некоторое время назадя нашел для этого утилиту: shc

shc Это позволяет нам обфускировать код, вот шаги по его использованию:

1. Сначала мы должны его скачать

Скачать SHC v3.8.9

2. После того, как мы его загрузили, мы щелкаем правой кнопкой мыши по сжатому файлу и выбираем вариант с надписью «Извлечь сюда"или что-то подобное. Это заставит нас увидеть папку с именем shc-3.8.9, здесь я показываю вам скриншот его содержания

3. Хорошо, допустим, папка находится в /home/usuario/Downloads/shc-3.8.9 Итак, открываем терминал и идем по этому маршруту (cd "/home/usuario/Downloads/shc-3.8.9"), и здесь начинается установка.

 4. В терминале, находящемся (как я уже сказал) в папке shc-3.8.9, чтобы установить это приложение, нам нужно сделать символическую ссылку на файл shc-3.8.9.c a shc.c поэтому мы выполняем следующее:

ln -s shc-3.8.9.c shc.c

 4. Как только ссылка создана, мы выполняем сделать установку с правами root (мы будем использовать sudo):

 sudo make install

 4. Он спросит у нас наш пароль и будет ждать некоторое время, он будет ждать, когда мы нажмем клавишу [И] и нажмите [Войти], то есть мы подтверждаем, что действительно хотим установить программное обеспечение. Как только это будет сделано, он установится без проблем. Оставляю вам скриншот всего процесса подготовки и установки:

 

Как вы можете видеть в конце, я получаю сообщение об ошибке, ошибка относится к тому факту, что в моей системе не существует определенной папки, если вы видите это, просто не придайте этому важности ... даже в этом случае SHC установлен успешно 😉
Чтобы они могли бежать sudo make install es НЕОБХОДИМО установить пакеты: GCC y сделать

5. Готово, это все для установки 😀

Когда он у нас установлен, нам просто нужно научиться его использовать. Предположим, у нас дома есть сценарий под названием script.sh и что его содержание следующее:

#!/bin/bash
echo "Script de prueba para DesdeLinux.net"
exit

При выполнении этого скрипта он, очевидно, покажет нам сообщение в терминале: «Тестовый скрипт для FromLinux.net" или нет? … Но теперь мы собираемся запутать этот код.

В терминале вводим следующее и нажимаем [Войти]:

shc -v -f $HOME/script.sh

И бинго !! готов 😀

Это создало нам два новых файла вместе с нашим скриптом, теперь у нас есть script.sh.x y script.sh.xc

script.sh.x - » Это наш обфусцированный сценарий bash, когда мы его запускаем, он будет делать то же самое, что и первый, который мы создали, разница между ними в том, что первый, если мы открыли его с помощью текстового редактора (nano, kate, gedit и т. Д.) мы могли бы ясно видеть его содержание, а если бы мы открылись script.sh.x мы четко увидим, что ничего не видим ... ЛОЛ !!!, то есть код 'зашифрован' 🙂

script.sh.xc - » Это наш скрипт, но на языке C ... мы можем удалить его, не беспокоясь, потому что он нам действительно не нужен, ну, по крайней мере, мне он вообще не понадобится

Больше особо нечего добавить с технической стороны, просто чтобы уточнить, что, насколько я знаю, с этим (скрытие или запутывание кода сценария bash) он не нарушает лицензии или что-то в этом роде. Я поясняю это, потому что несколько месяцев назад в Facebook, когда я упомянул, что научился обфускировать код bash, некоторые пользователи предупредили меня, что это нарушает лицензии или что-то в этом роде ... ну, насколько я понимаю, лицензии не нарушаются с этим 😉

Спасибо вам большое, чтобы Матиас Гастон за то, что упомянул мне об этой утилите некоторое время назад

Нечего добавить, любые сомнения или вопросы, жалобы или предложения, дайте мне знать.

Привет 😀


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

44 комментариев, оставьте свой

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Xykyz сказал

    Дело не в том, что лицензии нарушаются, дело в том, что программное обеспечение перестает быть свободным ...

    1.    КЗКГ ^ Гаара сказал

      Да, конечно. Дело в том, что есть определенные мои личные скрипты, которые я не хочу, чтобы другие видели, например, потому что один из этих скриптов имеет пароль в виде обычного текста моего локального MySQL или что-то подобное.

      1.    Морфеус сказал

        НЕТ! Не сохраняйте пароли в скриптах!
        http://technosophos.com/content/dont-script-your-password-add-simple-prompts-shell-scripts

        1.    КЗКГ ^ Гаара сказал

          На самом деле я скрываю свои пароли с помощью SHA (https://blog.desdelinux.net/como-saber-la-suma-md5-o-sha-de-una-palabra-oracion-o-archivo/), то в скрипте я сохраняю хэш пароля и сравниваю пароль, который вводит пользователь (я сохраняю его с помощью read), я получаю сумму SHA и сравниваю оба в конце 🙂

          В любом случае, спасибо большое за ссылку, уже просматриваю 😀

          привет

        2.    Давайте использовать Linux сказал

          Точно! Приглашение оболочки с запросом пароля - хорошая альтернатива.
          Ура! Павел.

          1.    MSX сказал

            Но он не обеспечивает автоматическое и автоматическое выполнение, как в противном случае. 🙂

      2.    Виллианс Виванко сказал

        Ввод паролей и других данных доступа или компрометации в скрипт - большая ошибка. Эта информация должна быть сохранена в другом файле с соответствующими разрешениями, поэтому вам не придется запутывать свой сценарий bash. Легко, да?

        1.    КЗКГ ^ Гаара сказал

          Проблема с наличием данных (переменных входа, confs и т. Д.) В другом файле заключается в том, что тогда «системе» или «приложению» для работы требуются 2 файла, тогда как если я сохраню все «безопасным» способом, как возможно, единственный файл , ну, мне понадобится только это ... один файл.

          1.    Морфеус сказал

            Рекомендуется отделить приложение от данных.
            Или, скорее, жесткое кодирование данных - ужасная практика!
            http://es.wikipedia.org/wiki/Hard_code
            Это не имеет ничего общего с безопасностью размещения кода и данных в одном файле. И даже более того, совсем наоборот, если у вас там есть пароли !!

          2.    Виллианс Виванко сказал

            Стоимость чтения конфиденциальной информации из другого файла ничтожно мала по сравнению со стоимостью процессора, необходимой для «получения» вашего кода.

            С другой стороны, вы отбрасываете целую парадигму модульной разработки, делая ставку на монолитную модель, которая, более чем доказанная, дает больше проблем, чем решений.

          3.    MSX сказал

            А также, если вы используете разрешения, которые обязательно будут включать другие группы / пользователей, вам также понадобится начальный пароль для выполнения первого скрипта.

          4.    MSX сказал

            @KZKG комментарий выше является ответом на ваш комментарий
            @morpheus: это абсолютно соответствует конкретной потребности.

    2.    Морфеус сказал

      Но есть бесплатное программное обеспечение, скомпилированное в двоичном формате (которое более чем запутывается). Тот факт, что он бесплатный, означает, что у него также есть исходный код, но он не имеет ничего общего с обфускацией (или компиляцией, что важно, например, если я хочу запустить программу на C)

      1.    Виллианс Виванко сказал

        В случае скомпилированного бесплатного программного обеспечения это вопрос требований к используемому языку (если вы программируете на C, вам нужно скомпилировать, чтобы ваше приложение работало). И то же самое, всегда, если это действительно бесплатное программное обеспечение, исходный код будет доступен.

  2.   Hyuuga_Neji сказал

    humm обозначают определенную степень апатии, чтобы поделиться кодом, хе-хе-хе, чтобы увидеть, сколько людей в конечном итоге начинают «запутывать свои коды», чтобы сделать нас более зависимыми от их решений ...

    1.    КЗКГ ^ Гаара сказал

      Я не говорю, что код должен быть запутанным или нет ... Я даю инструменты, каждый из которых может использовать их в соответствии со своими потребностями.

      1.    комментатор сказал

        Скрыть код на этой странице?

        Я думаю, что это хорошая идея для читателей на расстоянии, так как я считаю, что многие из людей, которые посещают этот блог, являются последователями свободных программ, и поэтому мы не разделяем практику обфускации кода.

        1.    MSX сказал

          Вы, очевидно, не читали причину, по которой KZKG объясняют необходимость обфускации своего сценария.

          Спасибо KZKG за то, что поделились своей находкой!

  3.   Габриель сказал

    И вот в Linux начали циркулировать вирусы ...

    Лично я НИКОГДА не буду использовать какие-либо запутанные скрипты. Не только из-за рисков, связанных с безопасностью, но и потому, что если ваш сценарий слишком важен, чтобы делиться им, лучше поместить его в * ulo; Я обязательно найду кого-нибудь, кто захочет поделиться своими знаниями.

    1.    КЗКГ ^ Гаара сказал

      Вы бы когда-нибудь использовали обфусцированный сценарий? Что ж, ОЧЕНЬ хорошо для вас, я бы НИКОГДА не использовал обфусцированный сценарий ... деталь в том, что я НИКОГДА не делился обфусцированным сценарием, далеко не так, и вот, дорогой друг, где ошибка присутствует

      Всякий раз, когда я делаю что-то в Bash, я делюсь этим, не взвешивая и не беспокоя меня, что я уже делал во многих статьях здесь 😀

      Добро пожаловать в блог, приятно вас читать 😉

  4.   Percaff_TI99 сказал

    Габриэль, KZKG ^ Гаара уже делится знаниями, он не создает никаких пакетов linux с обфусцированными скриптами, которые, если это может быть нарушением лицензии, только показывают приложения, которые можно использовать или нет для собственного использования, это не обязательно быть грубым , насчет вирусов в linux не все так просто, вот хорошая статья об этом https://blog.desdelinux.net/virus-en-gnulinux-realidad-o-mito/.
    KZKG ^ Gaara Я бы хотел, чтобы вы написали пост о encfs и криптографии с использованием изображений, это тема, которая мне очень нравится.
    Ура !!!

    1.    КЗКГ ^ Гаара сказал

      Благодарю вас!
      На самом деле, дело не в том, что у меня достаточно знаний о encfs и криптографии, по крайней мере, я не чувствую себя достаточно уверенно, чтобы сделать сообщение и предположить сомнения, которые могут возникнуть у пользователей 😀
      В этой теме я не продвинутый пользователь ...
      Самое большее, что я сделал, - это использование GPG для шифрования файлов, а что касается изображений, то самое большее, что я сделал, это «вставил» или скрыл файл внутри изображения, что сделало очевидным, что когда изображение открывается в средстве просмотра изображений, все отображается правильно, это вы имеете в виду?

      Еще раз большое спасибо за ваш комментарий 🙂

  5.   ратакруэль сказал

    Если я правильно помню, есть запутанные чемпионаты C, но не стоит использовать «обфускатор», но они должны запутывать свои исходные коды без поддержки.

    Что касается shc и вашего скрипта с паролями… очень плохой способ работы!

    Интересная статья, как всегда.

    1.    КЗКГ ^ Гаара сказал

      Да, больше одного мне уже сказали LOL !!
      Спасибо за комментарий 🙂

  6.   Когда-либо сказал

    По сути, если вы поделитесь приложением без совместного использования видимого сценария, вы нарушите GPL, которая требует, чтобы все, что сгенерировано с помощью приложения GPL, было GPL. Вот почему SHC генерирует C, потому что это код, которым вы можете поделиться.

    привет

  7.   Давайте использовать Linux сказал

    Я согласен с комментариями других читателей: не только не рекомендуется хранить данные и скрипты вместе, но и не способствует развитию свободных программ.
    Объятья! Павел.

    1.    КЗКГ ^ Гаара сказал

      Привет Пабло
      У меня есть другой запутанный сценарий, который работает внутри моего ноутбука, я запутываю его, потому что я просто не хочу, чтобы если кому-то по какой-то причине удалось скопировать мой сценарий на другой компьютер, я просто не хочу, чтобы они могли видеть, что это содержит, это «мера безопасности», которую я принимаю.

      Однако здесь, в DesdeLinux, я публикую все или почти все, что я программирую в Bash, что может быть интересно.

      Короче говоря, дело не в том, что я теперь хулитель SWL за обфускацию личного сценария, за то, что делаю это в личных целях 😀

      Привет друг

  8.   Codelab сказал

    Хорошая информация. Помимо разногласий, возникающих в комментариях, мне кажется, что нужно продолжить расследование еще немного.

    Я думаю, что автор ни разу в статье не говорит нам, хорошо это или плохо сделано, или нужно или не нужно это делать, он просто говорит нам, с помощью чего это можно сделать, если это кому-то полезно. .

    Приветствие.

    Codelab

    1.    F3niX сказал

      В Linuxeros БЛОГИ все спорно, ха-ха это всегда было так.

      1.    MSX сказал

        @ F3niX Я собираюсь вырезать скриншот с вашим комментарием, чтобы помещать его каждый раз, когда кто-то глупо упоминает тему.

        Примечание: посмотрим, когда я смогу найти вас на форумах irc и Chakra 😉

    2.    КЗКГ ^ Гаара сказал

      ТОЧНО !!
      Я просто показываю / преподаю / объясняю что-то новое, чему я научился, использовать эти знания или нет, решать вам, я не заставляю вас далеко от этого.

      Насколько я знаю, делиться знаниями - это хорошо, правда? 0_oU

      Спасибо за ваш комментарий, приятно знать, что есть более одного или двух, кто понимает истинную цель этой статьи.

  9.   Percaff_TI99 сказал

    Здесь вы поставили меня в затруднительное положение xD, несколько недель назад я готовил пост под названием «Установка и тестирование Crux» и, несмотря на то, что установка прошла успешно, я обычный пользователь и я не знаю, смогу ли я справиться с сомнениями третьих лиц, намерение состоит в том, чтобы он служил инструментом обсуждения достоинств и недостатков этого дистрибутива и возможных решений проблем, которые могут возникнуть, помогая нам среди всех пользователей и читателей. Когда я его закончу и отправлю на рассмотрение, вы (администраторы) будете решать. Что касается проблемы с криптографией в изображениях, то она была такой же, спасибо KZKG ^ Gaara за ответ.

    Привет!

    1.    КЗКГ ^ Гаара сказал

      Хорошо, с удовольствием сделаю пост об этом

  10.   Макубекс Учиха сказал

    отличный туто братан я нашел это очень полезным: 3
    для тех, кто хочет установить его в manjaro linux и производных от archlinux, пакет находится в aur с именем: shc

    привет

  11.   рамки сказал

    Извините, друг, у меня был небольшой скрипт, который преобразовывал ЗАГЛАВНЫЕ БУКВЫ в строчные буквы, которые были в буфере обмена (xclip)

    скрипт работает нормально, когда не запутан

    #! / Bin / Баш
    xclip -o> R1.txt
    кот R1.txt | tr [: верхний:] [: нижний:]
    выбросил ""
    rm R1.txt

    но когда я хочу запустить обфусцированный скрипт
    говорит мне

    ./M2m.sh: операция запрещена
    Завершено (убито)

    Пожалуйста помоги

    1.    КЗКГ ^ Гаара сказал

      У вас установлен xclip?

  12.   SynFlag сказал

    Следует отметить, что на самом деле это компилятор bash, так как существуют компиляторы .bat или .php.
    Я не знаю, зашифрован ли и запутан ли код, который производит, и не сопротивляется декомпилятору, мне нужно попробовать, так как это не мое поле, я не говорю да или нет, но то, что я вижу, это компилирует bash , в .c это Вы можете увидеть код, который внутри обфусцированного, я вижу, что он находится в строках, которые выглядят как оболочка эксплойта, я не знаю, действительно ли они запутаны, так как пароль не запрашивается или Не знаю, где в master.config предыдущее ключевое слово.

  13.   Juan David сказал

    друзья, бывает, что когда я запутываю свой сценарий, он создает новый сценарий с окончанием ex, я выполняю его, и он даже идеально. Но когда я беру его на другой компьютер с linuz, он не запускается, у него уже есть все разрешения, я создаю пусковую установку и сообщаю ему, что это терминальное приложение, но оно не работает, пожалуйста, дождитесь быстрого ответа

    1.    КЗКГ ^ Гаара сказал

      Вы его скомпилировали и запускаете ли вы в системе с такой же архитектурой? Другими словами, он выдаст вам ошибку, если вы скомпилировали его для обфускации в 32-битной системе, а затем попытаетесь запустить его в 64-битной системе, или наоборот. Вы понимаете?

      1.    Juan David сказал

        Нет, но я уже отформатировал тот же компьютер, с той же операционной системой, и он не запускается, он даже не отправляет ошибку.
        Я вызываю это с консоли так: sudo /home/operations/script.x и получаю эту ошибку

        /home/operaciones/script.x: e } 8- q , K

        целый случай

        1.    КЗКГ ^ Гаара сказал

          Попробуйте запустить его БЕЗ компиляции, чтобы убедиться, что это ошибка в коде

    2.    Ник сказал

      Чтобы запустить запутанный сценарий на других компьютерах, вам необходимо скомпилировать его с опцией «-r Ослабить безопасность. Сделайте распространяемый двоичный файл », иначе он будет работать только на той машине, где сценарий был обфусцирован с помощью SHC.
      пример:

      shc -r -f script.sh

  14.   Уильям сказал

    Здравствуйте, у меня есть вопрос, shc можно установить в любом типе дистрибутива Linux? Например Red Hat, как бы была установка для этого?
    Спасибо!

  15.   Ruyzz сказал

    Всем привет, ваши комментарии мне очень помогли, но у меня есть следующая проблема, когда обфускация не работает у меня в той же системе, но с другой архитектурой, то есть, если я делаю это в 32 битах, она не может работать в 64 битах . Кто-нибудь знает, действительно ли его можно запустить на разных архитектурах (32 и 64 бит)?