Compilando Bash: mudanças entre as edições

De ISPUP!
Ir para navegação Ir para pesquisar
Sem resumo de edição
Sem resumo de edição
Linha 7: Linha 7:
* Ele não é a prova de '''NSA (National Security Agency)'''. Não possui uma criptografia de alto nível mas ajuda bastante na tarefa.
* Ele não é a prova de '''NSA (National Security Agency)'''. Não possui uma criptografia de alto nível mas ajuda bastante na tarefa.
* Não gera '''binários independentes'''. Você continuará dependendo do shell e de todos os programas que ele chama.
* Não gera '''binários independentes'''. Você continuará dependendo do shell e de todos os programas que ele chama.
* O SHC precisa ter no topo do arquivo o '''shebang''', a informação que aponta o shell que está sendo usado, por exemplo: '''#!/usr/bin/bash''' ou '''#!/usr/bin/sh'''
* O '''[https://neurobin.org/projects/softwares/unix/shc/ SHC (Shell Script Compiler)]''' precisa ter no topo do arquivo o '''shebang''', a informação que aponta o shell que será usado, por exemplo: '''#!/usr/bin/bash''' ou '''#!/usr/bin/sh'''
* O '''SHC''' gera um '''código em fonte C do shell script''', que na sequência é compilado. Sim você precisa ter um compilador C para isso. No processo de execução, o programa é desencriptado e '''executado como um bash normal'''; por isso não é um binário independente.
* Você pode colocar um '''prazo de validade do binário''' e uma mensagem para quem executar o programa após vencer a validade. Ex: '''"Programa expirado contacte fulano"'''.
* O binário fica bem maior que o seu arquivo shell script.
* Não pense que a execução do seu novo binário será muito mais rápido que o seu shell, porque como eu disse, o processo é rodado como shell após ser desencriptado.
 
== Instalação ==
Como é de hábito aqui, faremos isso no Debian, nesse caso a versão 11 (Bullseye). Você pode instalar o SHC em qualquer distribuição GNU/Linux de sua preferência, só precisará checar se já existe um pacote para ele ou se vai precisar compilar o fonte e logicamente ter um compilador C também instalado para isso.
apt install shc build-essential
 
== Utilizando o SHC ==

Edição das 14h07min de 5 de fevereiro de 2023

Introdução

Em algumas situações você pode querer que seu código escrito em shell script seja compilado por diversos motivos como por exemplo: esconder alguma informação sigilosa que está dentro do script, uma credencial de acesso à base de dados, ou porque você não quer que alguém altere o código sem a sua permissão, ou porque você não quer entregar o "ouro" da sua consultoria. Enfim, é uma maneira de esconder o seu código dos olhos alheios. Mas existem algumas coisas que temos que ter em mente quando formos usá-lo:

  • Ele não é a prova de NSA (National Security Agency). Não possui uma criptografia de alto nível mas ajuda bastante na tarefa.
  • Não gera binários independentes. Você continuará dependendo do shell e de todos os programas que ele chama.
  • O SHC (Shell Script Compiler) precisa ter no topo do arquivo o shebang, a informação que aponta o shell que será usado, por exemplo: #!/usr/bin/bash ou #!/usr/bin/sh
  • O SHC gera um código em fonte C do shell script, que na sequência é compilado. Sim você precisa ter um compilador C para isso. No processo de execução, o programa é desencriptado e executado como um bash normal; por isso não é um binário independente.
  • Você pode colocar um prazo de validade do binário e uma mensagem para quem executar o programa após vencer a validade. Ex: "Programa expirado contacte fulano".
  • O binário fica bem maior que o seu arquivo shell script.
  • Não pense que a execução do seu novo binário será muito mais rápido que o seu shell, porque como eu disse, o processo é rodado como shell após ser desencriptado.

Instalação

Como é de hábito aqui, faremos isso no Debian, nesse caso a versão 11 (Bullseye). Você pode instalar o SHC em qualquer distribuição GNU/Linux de sua preferência, só precisará checar se já existe um pacote para ele ou se vai precisar compilar o fonte e logicamente ter um compilador C também instalado para isso.

apt install shc build-essential

Utilizando o SHC