2014

EneFebMarAbr
MayJunJulAgo
SepOctNovDic

2013

EneFebMarAbr
MayJunJulAgo
SepOctNovDic

más...

2011

EneFebMarAbr
MayJunJulAgo
SepOctNovDic

2010

EneFebMarAbr
MayJunJulAgo
SepOctNovDic

2009

EneFebMarAbr
MayJunJulAgo
SepOctNovDic

2008

EneFebMarAbr
MayJunJulAgo
SepOctNovDic

2007

EneFebMarAbr
MayJunJulAgo
SepOctNovDic

2006

EneFebMarAbr
MayJunJulAgo
SepOctNovDic

2005

EneFebMarAbr
MayJunJulAgo
SepOctNovDic

2004

EneFebMarAbr
MayJunJulAgo
SepOctNovDic

2003

EneFebMarAbr
MayJunJulAgo
SepOctNovDic

Fotolog

A través del espejo
2010-10-12: A través del espejo
¡La radio habla en binario!
2010-10-10: ¡La radio habla en binario!
Gigaminx (regalo por mi cumple)
2010-09-16: Gigaminx (regalo por mi cumple)
Trini en bici
2010-09-05: Trini en bici
Valporquero
2010-08-28: Valporquero
Mi bici nueva
2010-08-22: Mi bici nueva
Boda de Mario y Ana
2010-08-13: Boda de Mario y Ana
De cañones en Guara
2010-08-07: De cañones en Guara
Trini y Mari en Marbella
2010-08-05: Trini y Mari en Marbella
Trini y Chelo en Tabarca
2010-08-03: Trini y Chelo en Tabarca
Valid XHTML 1.1
Acceder
Etiquetas: seguridad scripts cómo

Si quieres tener un fichero cifrado, de manera que nadie pueda ver su contenido a no ser que sepa la contraseña, puedes usar "gpg" para cifrarlo y descifrarlo. Sin embardo, su uso es un poco complicado.

Por lo tanto, he escrito un pequeño script, llamado "gpg-vi", que pregunta una contraseña, y permite editar un fichero cifrado simétricamente usando GnuPG con esa contraseña.

El script no permite que nadie más en la máquina pueda ver el contenido del fichero, pero atención: el script escribe el contenido del fichero en claro en un fichero temporal, de manera que alguien más que use tu UID, o root, podría ver el contenido mientras la edición no haya terminado (o incluso después, porque el contenido puede estar aún en algún lugar del disco después de borrar el fichero).


Nuevo comentario

Por favor, escribe tu nombre y lo que quieras decir :-)

Nombre:
Comentario:



Pepa, 23 de enero de 2014

## The product of my hobby, for your entertainment:

# If no filename given, or -h or --help: show usage, exit
[[ "$1" = '-h' ]] || [[ "$1" = '--help' ]] || ! [[ "$1" ]] && { echo "Usage: $0 <filename>" 1>&2; exit 1;}

# Create temporary file, if tempfile is not available: use mktemp
tmp=$(tempfile -p egpg- -s .tmp -d "$HOME" 2>/dev/null || mktemp "$HOME/egpg-XXXXXX.tmp") ||\
{ echo 'temporary file could not be created'; exit 1; }

read -s -u 0 -p 'Please enter passphrase: ' pw
echo -n ' ' # Countering 3 backspacess...

Md5(){
echo $(md5sum "$tmp" 2>/dev/null || md5 "$tmp" 2>/dev/nul) && return
echo "Neither md5sum nor md5 is present"
exit 1
}

if [[ -f "$1" ]]
then # File exists; get password, decrypt if possible, take md5
if ! gpg -q --force-mdc --passphrase-fd 0 -o - "$1" >"$tmp" 2>/dev/null <<<"$pw"
then
rm -f -- "$tmp"
echo "File $1 is not gpg encrypted"
exit 1
fi
MD5OLD=$(Md5)
else # File doesn't exist, see if it can be created
>"$1" || { echo "Can't create file $1"; exit 1;}
fi

# Edit the file (whether it pre-existed or is new), take the md5
"${VISUAL:-${EDITOR:-vi}}" "$tmp"
MD5NEW=$(Md5)

# If no error and the file is changed: encrypt, remove temporary file
! (($?)) && ! [[ "$MD5OLD" = $MD5NEW ]] \
&& gpg -q --force-mdc --passphrase-fd 0 -c -o - "$tmp" >"$1" 2>/dev/null <<<"$pw"
shred -u "$tmp" 2>/dev/null || srm -ll "$tmp" 2>/dev/null || rm -f -- "$tmp"

exit 0