Shell script que criptografa arquivos
Publicado por Sandro Marcell 11/07/2008
[ Hits: 9.360 ]
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
Trocar senha no primeiro login em PDC SAMBA
Script para módulo de bateria do GKrellm
Trabalhando Nativamente com Logs no Linux
Jogando Daikatana (Steam) com Patch 1.3 via Luxtorpeda no Linux
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Linux Mint: Zram + Swapfile em Btrfs
O widget do Plasma 6 Área de Notificação
Pendrive do Ubuntu 24.04 travando ao tentar fazer a instalação dual bo... (0)
Instalar Dual Boot, Linux+Windows. (13)
tentei instalar o steam pelo terminal, agora ele não abre (3)









