Como ofuscar ou ocultar o código de nossos scripts bash

Às vezes programamos um script em Bater e queremos que o código deste NÃO seja visível, ou seja, não seja um texto simples. Quando falamos sobre ocultar o código, o termo correto é ofuscar, no meu caso, eu queria ofuscar o código de um script que fiz há algum tempo, o utilitário que encontrei para isso se chama: shc

shc Ele nos permite ofuscar o código, aqui estão as etapas para usá-lo:

1. Primeiro devemos fazer o download

Baixe SHC v3.8.9

2. Depois de fazer o download, clicamos com o botão direito do mouse no arquivo compactado e selecionamos a opção que diz «Extrair aqui"ou algo semelhante. Isso nos fará ver uma pasta chamada shc-3.8.9, aqui eu mostro uma captura de tela de seu conteúdo

3. OK, digamos que a pasta esteja em /home/usuario/Downloads/shc-3.8.9 Bem, abrimos um terminal e vamos para essa rota (cd "/home/usuario/Downloads/shc-3.8.9"), e a instalação começa aqui.

 4. No terminal sendo localizado (como já falei) na pasta shc-3.8.9, para instalar este aplicativo, precisamos fazer um link simbólico do arquivo shc-3.8.9.c a shc.c então executamos o seguinte:

ln -s shc-3.8.9.c shc.c

 4. Uma vez que o link é feito, nós executamos make install com permissões de root (vamos usar sudo):

 sudo make install

 4. Ele nos pedirá nossa senha e esperará um momento, estará esperando que pressionemos a tecla [E] e pressione [Entrar], ou seja, confirmamos que desejamos instalar o software. Feito isso, ele será instalado sem problemas. Deixo-vos uma captura de tela de todo o processo de preparação e instalação:

 


Como você pode ver no final eu recebo um erro, o erro está se referindo ao fato de não existir uma determinada pasta no meu sistema, se você ver isso simplesmente não dê importância ... mesmo assim CHS instalado com sucesso 😉
Para que eles possam correr sudo make install es NECESSÁRIO tenha os pacotes instalados: gcc y fazer

5. Pronto, é só para a instalação 😀

Depois de instalado, só precisamos aprender a usá-lo. Suponha que temos um script em nossa casa chamado script.sh e que seu conteúdo é o seguinte:

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

Ao executar este script, obviamente nos mostrará a mensagem no terminal: «Roteiro de teste para DesdeLinux.net" ou não? … Mas, agora vamos ofuscar esse código.

Em um terminal, colocamos o seguinte e pressionamos [Entrar]:

shc -v -f $HOME/script.sh

E bingo !! pronto 😀

Isso nos criou dois novos arquivos junto com nosso script, agora temos script.sh.x y script.sh.xc

script.sh.x - » Este é o nosso script bash ofuscado, quando o executarmos fará exatamente o mesmo que o primeiro que criamos, a diferença entre estes é que o primeiro se abrimos com um editor de texto (nano, kate, gedit, etc) poderíamos ver claramente seu conteúdo, enquanto se abrirmos para script.sh.x vamos ver claramente que não vemos nada ... rsrs !!!, ou seja, o código está 'criptografado' 🙂

script.sh.xc - » Este é o nosso script, mas em linguagem C ... podemos excluí-lo sem nos preocupar porque realmente não precisamos dele, bem, pelo menos eu não precisaria disso 🙂

Na verdade, não há muito mais a acrescentar no lado técnico, apenas para esclarecer que até onde eu sei (ocultar ou ofuscar o código do script bash) não está violando licenças ou algo parecido. Esclareço isso porque alguns meses atrás no Facebook, quando mencionei que tinha aprendido a ofuscar o código bash, alguns usuários me alertaram que isso estava violando licenças ou algo parecido ... bem, pelo que eu entendo, licenças não são violadas com isso 😉

Muito obrigado a Matias Gaston por ter mencionado este utilitário para mim há algum tempo

Nada mais a acrescentar, qualquer dúvida ou dúvida, reclamação ou sugestão, deixe-me saber.

Saudações 😀


44 comentários, deixe o seu

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   xykyz dito

    Não é que as licenças sejam violadas, é que deixa de ser software livre ...

    1.    KZKG ^ Gaara dito

      Sim, obvio. A questão é que existem certos scripts pessoais meus que não quero que outras pessoas vejam, por exemplo, porque um desses scripts tem uma senha em texto simples do meu MySQL local ou algo semelhante.

        1.    KZKG ^ Gaara dito

          Na verdade, eu mantenho minhas senhas 'ocultas' usando SHA (https://blog.desdelinux.net/como-saber-la-suma-md5-o-sha-de-una-palabra-oracion-o-archivo/), então no script mantenho o hash da senha e o que faço é comparar a senha que o usuário digita (salvo com read), pego a soma SHA e comparo as duas no final 🙂

          De qualquer forma, muito obrigado pelo link, já estou revisando 😀

          lembranças

        2.    Vamos usar Linux dito

          Exato! Um prompt de shell solicitando a senha é uma boa alternativa.
          Felicidades! Paulo.

          1.    msx dito

            Mas não fornece uma execução automática e autônoma como faz de outra maneira. 🙂

      1.    Willians vivanco dito

        Colocar senhas e outros dados de acesso ou comprometimento no script é um grande erro. Essas informações devem ser salvas em outro arquivo, com as permissões adequadas, para que você não tenha que ofuscar seu script bash. Fácil né?

        1.    KZKG ^ Gaara dito

          O problema de ter os dados (variáveis ​​de login, confs, etc) em outro arquivo é que então o 'sistema' ou 'aplicativo' precisa de 2 arquivos para funcionar, enquanto se eu armazenar o mais 'seguro' possível tudo em um único arquivo, bem, eu só precisaria disso ... um único arquivo.

          1.    Morfeu dito

            É uma boa prática separar o aplicativo dos dados.
            Ou melhor, é uma prática terrível codificar os dados!
            http://es.wikipedia.org/wiki/Hard_code
            Não tem nada a ver com segurança colocar código e dados no mesmo arquivo. E mais ainda, pelo contrário, se você tiver suas senhas lá !!

          2.    Willians vivanco dito

            O custo da leitura de informações confidenciais de outro arquivo é insignificante próximo ao custo do processador necessário para "desobstruir" seu código.

            Por outro lado, você está demolindo todo um paradigma de desenvolvimento modular, apostando em um modelo monolítico que, mais do que comprovado, há mais problemas do que soluções.

          3.    msx dito

            E também que se você usar permissões que necessariamente envolverão outros grupos / usuários, você ainda precisará de uma senha inicial para executar o primeiro script.

          4.    msx dito

            @KZKG o comentário acima é uma resposta ao seu comentário
            @morpheus: é absolutamente relativo à necessidade particular.

    2.    Morfeu dito

      Mas existe software livre compilado em binário (o que é mais do que ofuscar). O fato de ser gratuito implica que ele também tem o código-fonte, mas não tem nada a ver com ofuscar (ou compilar, que é essencial se eu quiser executar um programa C, por exemplo)

      1.    Willians vivanco dito

        No caso de software livre compilado, é uma questão de requisito da linguagem utilizada (se você programa em C, tem que compilar para que sua aplicação funcione). E o mesmo, sempre, se for realmente Software Livre, o código-fonte estará disponível.

  2.   Hyuuga_Neji dito

    humm eu denoto um certo grau de apatia em compartilhar código rsrs para ver quantos acabam começando a "ofuscar seus códigos" para nos tornar mais dependentes de suas soluções ...

    1.    KZKG ^ Gaara dito

      Não estou dizendo que o código deva ser ofuscado ou não ... Dou as ferramentas, cada uma para utilizá-las de acordo com suas necessidades.

      1.    comentarista dito

        Ofuscar o código nesta página?

        Acho que é uma boa ideia distanciar os leitores, pois considero que muitas das pessoas que visitam este blog são seguidores de software livre e, portanto, não compartilhamos a prática de ofuscar código.

        1.    msx dito

          Obviamente, você não leu o motivo pelo qual KZKG argumenta e por que ele explica sua necessidade de ofuscar seu script.

          Obrigado KZKG por compartilhar sua descoberta!

  3.   Gabriel dito

    E então os vírus começam a circular no Linux ...

    Pessoalmente, eu NUNCA usaria scripts ofuscados. Não apenas por causa dos riscos de segurança envolvidos, mas porque se o seu script é muito precioso para ser compartilhado, é melhor colocá-lo no * ulo; Certamente posso encontrar alguém que queira compartilhar seus conhecimentos.

    1.    KZKG ^ Gaara dito

      Você usaria um script ofuscado? Bem, MUITO bom para você, eu NUNCA usaria um script ofuscado ... o detalhe é que, NUNCA compartilhei um script ofuscado, longe disso, e aí, querido amigo, é onde o erro está presente presente

      Sempre que faço algo no Bash divido sem me pesar ou incomodar, o que já fiz em muitos artigos aqui 😀

      Bem-vindo ao blog, é um prazer ler você 😉

  4.   Percaff_TI99 dito

    Gabriel, KZKG ^ Gaara já está compartilhando conhecimento, não está criando nenhum pacote linux com scripts ofuscados o que poderia ser uma violação de licença, apenas revela aplicativos que se podem usar ou não para uso próprio, não é necessário seja rude, pois para vírus no linux não é assim tão simples, aqui está um bom artigo sobre isso https://blog.desdelinux.net/virus-en-gnulinux-realidad-o-mito/.
    KZKG ^ Gaara Gostaria que você escrevesse um post sobre encfs e criptografia usando imagens, é um assunto que eu gosto muito.
    Felicidades !!!

    1.    KZKG ^ Gaara dito

      Obrigado
      Na verdade, não é que eu tenha conhecimento suficiente sobre encfs e criptografia, pelo menos não me sinto confiante o suficiente para fazer uma postagem e assumir as dúvidas que os usuários possam ter 😀
      Neste tópico, não sou um usuário avançado ...
      O máximo que fiz foi usar GPG para criptografar arquivos e, quanto às imagens, o máximo que fiz foi 'inserir' ou ocultar um arquivo dentro de uma imagem, tornando óbvio que quando a imagem é aberta com um visualizador de imagens, tudo certo, é isso que você quer dizer?

      Mais uma vez, muito obrigado pelo seu comentário 🙂

  5.   Ratakruel dito

    Se bem me lembro, existem campeonatos C ofuscados, mas não vale a pena usar um "ofuscador", mas eles têm que ofuscar suas fontes em pêlo.

    Quanto ao shc e seus scripts com senhas ... péssimo jeito de trabalhar!

    Artigo interessante, como sempre.

    1.    KZKG ^ Gaara dito

      Sim, mais de um já me disseram LOL !!
      Obrigado pelo seu comentário 🙂

  6.   sempre dito

    Basicamente, se você compartilhar o aplicativo sem compartilhar o script visível, estará violando a GPL, que exige que qualquer coisa gerada com um aplicativo GPL seja GPL. É por isso que o SHC gera o C, porque esse é o código que você pode compartilhar.

    lembranças

  7.   Vamos usar Linux dito

    Concordo com os comentários de outros leitores: além de não ser uma boa prática armazenar dados e script juntos, também não é favorável ao desenvolvimento de software livre.
    Um abraço forte! Paulo.

    1.    KZKG ^ Gaara dito

      Olá pablo 🙂
      Yo tengo algún que otro script ofuscado que funciona internamente en mi laptop, lo ofusco porque simplemente no deseo que si alguien por algún motivo lograse copiar mi script hacia otro ordenador, simplemente no deseo que pueda ver lo que contiene, es una medida de 'seguridad ' o que tomo.

      Porém, aqui em DesdeLinux Divulgo tudo ou quase tudo que programo no Bash que possa ser interessante.

      Em suma, não é que agora eu seja um detrator do SWL por ofuscar um script pessoal, por fazer isso para fins pessoais 😀

      Saudações amigo

  8.   codelab dito

    Boa informação. Além das polêmicas que estão sendo geradas nos comentários, parece-me informação para continuar investigando um pouco mais.

    Acho que o autor em nenhum momento do artigo nos diz se é bom ou ruim ou se devemos ou não devemos fazê-lo, ele simplesmente nos diz a ferramenta com a qual isso pode ser feito caso seja benéfico para alguém.

    Uma saudação.

    codelab

    1.    f3niX dito

      Nos blogs do Linuxeros tudo é polêmico, haha ​​sempre foi assim.

      1.    msx dito

        @ F3niX Vou fazer uma captura de tela com o seu comentário para colocar toda vez que alguém fizer uma menção estúpida do assunto.

        Nota: vamos ver quando posso encontrar você nos fóruns irc e Chakra 😉

    2.    KZKG ^ Gaara dito

      EXATO!!
      Simplesmente mostro / ensino / explico algo novo que aprendi, cabe a você usar ou não esse conhecimento, não te forço para longe disso.

      Pelo que eu sei, compartilhar conhecimento é uma coisa positiva, certo? 0_oU

      Obrigado pelo seu comentário, é bom saber que há mais de um ou dois que entendem o verdadeiro propósito deste artigo.

  9.   Percaff_TI99 dito

    Aí você me colocou em uma posição apertada xD, há algumas semanas venho preparando um post que ia se intitular «Instalação e teste do Crux» e apesar de a instalação ter sido realizada com sucesso, sou um usuário normal e não sei se conseguirei tirar as dúvidas de terceiros, a intenção é que sirva de instrumento de discussão sobre as virtudes e defeitos desta distro e as possíveis soluções para problemas que possam surgir nos ajudando entre todos os usuários e leitores. Quando eu terminar e enviar para revisão, você (Administradores) decidirá. Quanto à questão da criptografia em imagens, foi a mesma, obrigado KZKG ^ Gaara pela resposta.

    Saudações !!!

    1.    KZKG ^ Gaara dito

      Ok, com prazer farei um post sobre isso 😉

  10.   makubex uchiha dito

    excelente tuto mano achei muito útil: 3
    para quem deseja instalá-lo no manjaro linux e derivados do archlinux o pacote está em aur com o nome: shc

    lembranças

  11.   quadros dito

    Com licença, amigo, eu tinha um pequeno script que convertia LETRAS MAIÚSCULAS EM letras minúsculas que estavam na área de transferência (xclip)

    o script funciona normal quando não ofuscado

    #! / Bin / bash
    xclip -o> R1.txt
    cat R1.txt | tr [: superior:] [: inferior:]
    jogou fora ""
    rm R1.txt

    mas quando eu quero executar o script ofuscado
    eu corto

    ./M2m.sh: Operação não permitida
    Concluído (morto)

    Por favor ajude

    1.    KZKG ^ Gaara dito

      Você tem o xclip instalado?

  12.   SinFlag dito

    Deve-se notar que na verdade é um compilador bash, pois existem compiladores .bat ou .php.
    Não sei se o código que produz está criptografado e ofuscado e não resiste a um descompilador, seria preciso tentar, já que não é minha área não digo sim ou não, mas o que vejo que faz é compilar um bash, no .c está Você pode ver o código, que, dentro do ofuscado, vejo que está em linhas que parecem um exploit shell, não sei se estão realmente ofuscadas, pois, nenhuma senha é solicitado ou um não sei, master.config onde uma palavra-chave anterior.

  13.   Juan David dito

    amigos acontece que quando eu ofusco meu script ele cria o novo script com final ex, eu executo e aí fica perfeito. Mas quando levo para outro computador com o linuz ele não roda, já tem todas as permissões, crio um inicializador e digo que é um aplicativo de terminal, mas não funciona, aguarde uma resposta imediata

    1.    KZKG ^ Gaara dito

      Você o compilou e está executando em um sistema com a mesma arquitetura? Ou seja, ele apresentará um erro se você compilá-lo para ofuscá-lo em um sistema de 32 bits e, em seguida, tentar executá-lo em um sistema de 64 bits, ou vice-versa. Você entende?

      1.    Juan David dito

        Não, mas já providenciei a formatação do mesmo computador, com o mesmo sistema operacional e ele não roda, nem manda erro.
        Eu chamo de console assim: sudo /home/operations/script.x e recebo este erro

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

        um caso inteiro

        1.    KZKG ^ Gaara dito

          Tente executá-lo SEM compilar para ver se é um erro no código

    2.    entalhe dito

      Para executar o script ofuscado em outros computadores, você deve compilá-lo com a opção «-r Relaxe a segurança. Faça um binário redistribuível ', caso contrário, ele só será executado na máquina onde o script foi ofuscado com SHC.
      Exemplo:

      shc -r -f script.sh

  14.   william dito

    Olá, tenho uma dúvida, o shc pode ser instalado em qualquer tipo de distribuição Linux?, Por exemplo red hat, como seria a instalação para esta?
    Thanks!

  15.   Ruyzz dito

    Olá a todos, seus comentários me ajudaram muito, mas estou com o seguinte problema, quando a ofuscação não funciona para mim no mesmo sistema mas com arquitetura diferente, ou seja, se eu faço em 32 bits não pode rodar em 64 bits . Alguém sabe se ele realmente pode ser executado em diferentes arquiteturas (32 e 64 bits)?