Shell script que criptografa arquivos
Publicado por Sandro Marcell 11/07/2008
[ Hits: 9.358 ]
Homepage: http://sanmarcell.wordpress.com
Um simples shell script que cria uma pseudo-criptografação em arquivos. É
bem simples e mostra alguns conceitos do poderoso Sed =)
#!/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
Script para sincronizar dados entre desktop e notebook de maneira 99% automática usando rsync
Combinação de nros (para mega sena)
Configuração do Modem Sony Ericsson MD300 da Claro 3G no Linux
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Instalando COSMIC no Linux Mint
Turbinando o Linux Mint: o poder das Nemo Actions
Inteligência Artificial no desenvolvimento de software: quando começar a usar?
[Resolvido] Algo deu errado ao abrir seu perfil
Usando o VNSTAT para medir o seu consumo de internet
Habilitando clipboard manager no ambiente COSMIC
Problema com som no laptop (5)
Quando vocês pararam de testar distros? (11)
Não estou conseguindo fazer funcionar meu Postfix na versão 2.4 no Deb... (2)









