Shell script que criptografa arquivos
Publicado por Sandro Marcell 11/07/2008
[ Hits: 9.389 ]
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
Fazer o download de um website completo
Desligando seu PC com controle total e aviso sonoro
Extração do áudio de um DVD - Ogg Vorbis
A combinação de WMs com compositores feitos por fora
Audacious, VLC e QMMP - que saudades do XMMS
SUNO OpenSource: Crie um servidor de gerador de música com IA
Instalação Completa e Configuração Básica do Void Linux
A Fundação da Confiança Digital: A Importância Estratégica de uma PKI CA na Segurança de Dados
Instalar o Microsoft Teams no Ubuntu e Derivados
Script para configurar o DOOM Retro no Linux
Script para organizar janelas em cascata no KDE Plasma 6 (Wayland)
Instalador não reconhece SSD Sata. (7)
Módulo de segurança warsaw CEF (1)









