Shell script que criptografa arquivos

Publicado por Sandro Marcell 11/07/2008

[ Hits: 8.945 ]

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

Script para listar tentativas de acessos

limpeza dos Debian-like

Medidor de bateria de laptop modo texto

Gerador de slack-desc

cambada_oneko - gatinhos coloridos perseguindo o ponteiro do mouse


  

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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts