Como criptografar um script sh no Linux Environnement?

2

Eu tenho uma pequena pergunta, como posso criptografar meus scripts? Quero dizer, por exemplo, às vezes eu tenho alguns scripts sh (fornecidos por algumas empresas como VMWare) e quando eu VI é que eles apenas me mostram um arquivo crypted e não um arquivo de texto em texto.

Como posso transformar meus scripts de texto em um script criptografado?

    
por Dr I 03.01.2010 / 18:55

6 respostas

2

Este site parece ter um script que fará o que você deseja:

link

Do site:

makeself.sh é um pequeno script de shell que gera um arquivo tar.gz auto-extraível de um diretório. O arquivo resultante aparece como um script de shell (muitos deles têm um sufixo .run) e pode ser iniciado como está. O arquivo será então descompactado em um diretório temporário e um comando arbitrário opcional será executado (por exemplo, um script de instalação). Isso é muito semelhante aos arquivos gerados com o WinZip Self-Extractor no mundo do Windows. Os arquivos Makeself também incluem somas de verificação para a auto-validação de integridade (checksums CRC e / ou MD5).

Veja o comentário sobre a v2.1.5 suportando criptografia por meio do gpg.

Eu acho que é chamado de um arquivo shell, o original sendo escrito por James Gosling (inventor do Java).

link

    
por 03.01.2010 / 19:20
5

Se o seu objetivo for impedir que alguém veja o conteúdo do script (por exemplo, o código e como ele funciona) e também possa executá-lo, não há realmente uma maneira de fazer isso. Você pode usar auto-extração e ofuscação de código, mas no final, alguém que realmente quer ser capaz de ver o script com apenas um pequeno esforço extra.

Existem outras razões para usar a criptografia que pode ter algum utilitário, mas você não disse o que está tentando fazer ou por que é difícil fazer uma recomendação que inclua informações sobre limitações e vulnerabilidades.

    
por 03.01.2010 / 23:13
2

when I VI's it they just show me a crypted file and not a plained text file.

Não, você está vendo um arquivo compactado, não um arquivo criptografado.

    
por 03.01.2010 / 19:56
2

A questão é um pouco incerta. Se você realmente deseja criptografar um arquivo, você pode usar um utilitário de criptografia, como bcrypt . Ele não funcionará mais como um shell script, até você descriptografá-lo.

Pode ser que o que você vê no vi seja dados compactados (para serem autoextraídos e executados). Existem maneiras de empacotar os scripts de shell dessa maneira. Ou .. talvez você esteja apenas olhando para dados binários de um executável (não um script de shell em primeiro lugar).

Se você quer alcançar o que eu acho que você quer alcançar ... Você pode estar melhor fazendo isso com permissão do usuário (ou seja, permitir que as pessoas executem um determinado executável, mas não o leiam .. ou tenham algum interpretador setuid).

    
por 04.01.2010 / 00:48
2

Se ocultar o código fonte do script é o objetivo, você pode querer olhar para shc . Note, eu nunca usei isso até hoje. Funciona, pelo menos para o meu script de linha simples / script de teste bin / sh.

Caso contrário, você pode tentar usar o gpg para criptografar o script e dar a cada usuário a senha. Basicamente, você pega o seu script de shell finalizado e o criptografa para o formato ASCII blindado:

gpg -ca foo.sh

Em seguida, você pega o arquivo "foo.sh.asc" resultante e o coloca em outro script:

cat <<EOF | gpg -d | /bin/sh                                                 
-----BEGIN PGP MESSAGE-----                                                     
Version: GnuPG v1.4.10 (FreeBSD)                                                

jA0EAwMCN7iZSx7u9fRgySY/QTWgnwhYs0fSdLhwR0xL0Z1VOk6Lm5Jil06U7XtJ                
Yl62Gab6kg==                                                                    
=Yalz                                                                           
-----END PGP MESSAGE-----                                                       
EOF

A senha é "test1". O script criptografado é:

echo "foo!"

Enquanto dou a minha palavra que meu script é seguro, não crie o hábito de executar tais scripts de estranhos, já que você não tem motivos para confiar em mim e eu poderia fazer algo desviante com meu script criptografado. : -)

Infelizmente, um usuário suficientemente experiente será capaz de recuperar o texto simples do script simplesmente removendo a parte "| / bin / sh" do script, o que resultará no script sendo descartado para o stdout.

Em suma, se o usuário final puder executar o script, é possível (com motivação e habilidade suficientes) fazer engenharia reversa. Não coloque nada de importância crítica (como senhas) nesses scripts ofuscados.

    
por 04.01.2010 / 23:53
1

Para criptografar seu script e garantir que ninguém consiga visualizá-lo, você tem duas opções:

Primeira opção

  1. Use o comando openssl para criptografá-lo manualmente. E, no futuro, quando você quiser executar o script, terá que executar o openssl manualmente novamente e fornecer a senha para descriptografar.

Criptografia com openssl:

cat yourscript.sh | openssl aes-128-cbc -a -salt -k yourpassword > yourscript.enc

Descriptografia com o openssl:

cat yourscript.enc | openssl aes-128-cbc -a -d -salt -k yourpassword > yourscript.dec

o yourscript.dec será o mesmo que o seu script original, yourscript.sh

Segunda opção

  1. Use um site como www.Enscryption.com para criptografar automaticamente o script e criar a versão criptografada do o executável do script. Este site usa os recursos de criptografia do openssl e alguns outros métodos de ofuscação para dificultar a intrusão em seu script ou desvendar segredos que você deseja ocultar. Com este site, você pode criptografar scripts de shell e scripts de linha de comando perl, python, ruby. Eu acho que também php.
por 08.06.2016 / 05:52