Olá!
Aqui, você verá uma forma simples de “criptografar” um Shell Script que você quer passar a alguém, mas não quer liberar o fonte ou que seja editável por qualquer um.
BÁSICO DE CRIPTOGRAFIA
Bom, um conceito básico sobre criptografia:
Criptografia (do Grego kryptós, “escondido”, e gráphein, “escrita”) é o estudo dos princípios e técnicas pelas quais a informação pode ser transformada da sua forma original para outra ilegível.
Mais sobre isso: Criptografia – Wikipédia, a enciclopédia livre
NECESSÁRIO
Para realizar o procedimento, iremos usar o seguinte:
Acesse: Francisco Rosales, home page
Faça download do arquivo (estava nessa versão ate o momento) shc-3.8.9.tgz.
Descompacte o arquivo, entre no diretório de download e execute:
tar -xzvf shc-3.8.9.tgz
Entre no novo diretório com os arquivos e execute:
make test
Logo após:
make
Obs.: em caso de erro, ignore. Para mim deu erro, mas funcionou.
Será criado um arquivo shc. Se tiver, o arquivo está correto.
Para mais informações o manpage mesmo, diz:
“shc em si não é um compilador, como cc, antes a codifica e criptografa um Shell Script e gera o código fonte C com a capacidade de expiração adicionada. Em seguida, ele usa o sistema compilador para compilar um binário despojado que se comporta exatamente como o script original. Após a execução, o compilado binário irá descriptografar e executar o código com a opção shell -c. Infelizmente, não lhe dará qualquer velocidade ou melhoria como um programa C verdadeiro faria.”
Resumindo, ele pega o fonte do script, gera um arquivo de C e dele, gera um binário.
ENCRIPTANDO SEU SHELL SCRIPT
Com isso, a sintaxe é básica:
./shc -f seu_script.sh
Obs.: a única opção obrigatória é o -f, caso queira, pode colocar o binário shc criado no seu PATH. Daí, não é necessário o ./ na frente.
Com isso, será criado um arquivo com o mesmo nome, mais .x: seu_script.sh.x = binário
E um outro arquivo com o mesmo nome, mais x.c, com o fonte em C: seu_script.sh.x.c = fonte em C
Outras opções válidas:
- -e :: a data de vencimento no formato dd/mm /aaaaa. Ou seja, validade para que o script seja executado, se passar dessa data, uma mensagem será exiba: “Por favor, contacte o seu fornecedor”.
- -m :: mensagem a ser exibida após a expiração. Você informa qual a mensagem que será exibida quando expirar a data (usada no -e).
- -f :: nome do script do arquivo para compilar.
- -v :: verbose.
- -T :: compatibilidade para usar o strace, ptrace, truss, etc.
- -r :: relaxe a segurança. Faça um binário redistribuível que executa em sistemas diferentes executando o mesmo sistema de pacote ( 😀 ).
- -h :: ajuda.
EXECUTANDO
Após criar o binário, você pode executar das seguintes formas:
./seu_script.sh.x
Ou
$ bash -c seu_script.sh.x
Ou ainda, colocar no seu PATH e executar:
seu_script.sh.x
EXTRA: ENCRIPTANDO ARQUIVO DE TEXTO
Dica rápida para criptografar um arquivo de texto, você pode fazer da seguinte forma, usando o Vim (vi):
Opção: -x
vim -x senhas_bla.txt
Processo:
- Irá pedir a “palavra passe” duas vezes, digite a mesma;
- Edite o arquivo e saia (não precisa editar, mas é necessário sair SALVANDO);
- Após isso, ele já está “criptografado”;
- Se tentar editar com o Vim (vi), será solicitado a senha;
- Se der um cat no arquivo, irá aparecer criptografado.
CONCLUSÃO
Era isso pessoal, espero que seja útil!!
Fonte:
- SHC – Compilando seu shell script [Dica]
- Francisco Rosales, home page
- Como encriptar um Shell Script com SHC Elias Praciano
Abraço.