Shell script que criptografa arquivos

Publicado por Sandro Marcell 11/07/2008

[ Hits: 9.290 ]

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

Redimensionador automático de imagens

Criar uma imagem ISO

Script de Inventário

Proxy teste

Importar varius Emolticons de uma vez para amsn


  

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