Shell script que criptografa arquivos

Publicado por Sandro Marcell 11/07/2008

[ Hits: 8.374 ]

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: [email protected]
#
# 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

Instalando a última versão do Adobe Flashplayer automaticamente

Script para excluir tudo de um local menos uma pasta ou arquivo selecionado

Regula o horário de uso do computador pelos filhos - Versão 2.0

Linux Mint 20 Pós Instalação

Coleta de Performance com SAR (systat package)


  

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