Shell script que criptografa arquivos

Publicado por Sandro Marcell 11/07/2008

[ Hits: 7.994 ]

Homepage: http://sanmarcell.wordpress.com

Download cripta.sh




Um simples shell script que cria uma pseudo-criptografação em arquivos. É
bem simples e mostra alguns conceitos do poderoso Sed =)

  



Esconder código-fonte

#!/bin/zsh
#
# Cripta.sh - Criptografador tosco de arquivos
#
# Sandro Marcell P. Barbosa (Boa Vista - Roraima)
# E-mail: sandro_marcell@yahoo.com.br
#
# Ao descriptografar, as regras gramaticais irão pro saco :(

# Chaves usadas para 'criptografação'
CHAVE_A="zMAnyLBoxKCpwJDqvIEruHFstG"
CHAVE_N="9081726354" 

# Realçando a saída do comando 'print':
Print () print '\e[1m'"\n$*\n" ; tput sgr0 

# Testando os parâmetros passados:
while getopts 'ac:d:' PRM 2> /dev/null ; do 
   case $PRM {
      
a) Print "Uso: $(basename $0) -a [-c arquivo] [-d arquivo]
   Onde:
   -a = Mostra está mensagem
   -c = Criptografa arquivo
   -d = Descriptografa arquivo" ;;

# ---------------------------------------------------------------- #
c) ARQ=$OPTARG 

# O arquivo existe?
[[ ! -a $ARQ ]] && Print "-> Arquivo não encontrado!" && bye

# E se for um diretório?
[[ -d $ARQ ]] && Print "-> Diretórios não são válidos!" && bye
   
# O usuário pode acessá-lo?
[[ ! -w $ARQ ]] && Print "-> Sem permissão para acessar arquivo!" && bye
      
# 'Criptografando' o arquivo:
sed "{
y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/
y/ÃãÁáÀàÂâÉéÊêÍíÓóÕõÔôÚúÜüÇç/AAAAAAAAEEEEIIOOOOOOUUUUCC/
y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/$CHAVE_A/
s/^$/\[~]/g
s/[* ]/\*|-/g
1!G;h;\$!d
/[0-9]/b Números
b Final
:Números
y/1234567890/$CHAVE_N/
:Final
}" < $ARQ > $ARQ.cpt \
&& Print "-> Arquivo criptografado." \
|| Print "-> Erro ao criptografar arquivo!" ;;

# ---------------------------------------------------------------- #
d) ARQ_CPT=$OPTARG 

# O arquivo existe?
[[ ! -a $ARQ_CPT ]] && Print "-> Arquivo não encontrado!" && bye

# O usuário pode acessá-lo?
[[ ! -w $ARQ_CPT ]] && Print "-> Sem permissão para acessar arquivo!" && bye

# O arquivo está criptografado? (checando a extensão .cpt):
[ ${ARQ_CPT##*.} != cpt ] && Print "-> Arquivo não criptografado!" && bye

# 'Descriptografando' o arquivo:
sed "{
y/$CHAVE_A/ABCDEFGHIJKLMNOPQRSTUVWXYZ/
y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
s/\[~]/ /g
s/\*|-/ /g
1!G;h;\$!d
/[0-9]/b Números
b Final
:Números
y/$CHAVE_N/1234567890/
:Final
}" < $ARQ_CPT > $ARQ_CPT.dpt \
&& Print "-> Arquivo descriptografado." \
|| Print "-> Erro ao descriptografar arquivo!" ;;

*) Print "Ops!!! Faça \'$(basename $0) -a\' para obter ajuda."  ;;

}
done


Scripts recomendados

OH MY ALIAS - Crie seu alias facilmente

Teste de velocidade de conexão via FTP e registro em log

Testador de portas usando nmap

Inversor de Links com YAD

Duelo das Cartas Mágicas


  

Comentários
[1] Comentário enviado por SMarcell em 11/07/2008 - 09:11h

Este script fiz quando ainda estava me aprimorando em "programação" shell. Tá bem "tosquinho" ele!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts