Crear nuestro propio cifrado Cesar desde la terminal con el comando tr
Comando tr: http://es.wikipedia.org/wiki/Tr_%28Unix%29
Cifrado Cesar: http://es.wikipedia.org/wiki/Cifrado_C%C3%A9sar
Rango habitual de caracteres ordenado a utilizar por tr [!-~]. Se pueden utilizar hasta 256 símbolos. (SBCS)
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Correspondencias mediante el siguiente desplazamiento creado con tr: ! > t, “ > u, # > v, 9 > ., etc.
tr '!-+,-56-JK-ab-~' 't-~!-*+-?@-VW-s'
Ejemplo de cifrado y descifrado.
echo "Recordar que este cifrado no es seguro" | tr '!-+,-56-JK-ab-~' 't-~!-*+-?@-VW-s' GZXdgYVg fjZ ZhiZ X^[gVYd cd Zh hZ\jgd echo "GZXdgYVg fjZ ZhiZ X^[gVYd cd Zh hZ\jgd" | tr 't-~!-*+-?@-VW-s' '!-+,-56-JK-ab-~' Recordar que este cifrado no es seguro
Agregando más caracteres que los típicos imprimibles.
echo "Recordar que este cifrado no es seguro (©§¿)" | tr '!-+,-56-JK-ab-~©§¿' 't-~!-*+-?@-VW-säüö' GZXdgYVg fjZ ZhiZ X^[gVYd cd Zh hZ\jgd {äüö| echo "GZXdgYVg fjZ ZhiZ X^[gVYd cd Zh hZ\jgd {äüö|" | tr 't-~!-*+-?@-VW-säüö' '!-+,-56-JK-ab-~©§¿' Recordar que este cifrado no es seguro (©§¿)
Cifrando ficheros.
$ cat TVenLinux.sh | tr '!-+,-56-JK-ab-~' 't-~!-*+-?@-VW-s' > TV_cifrado $ cat TV_cifrado | tr 't-~!-*+-?@-VW-s' '!-+,-56-JK-ab-~' > TV_descifrado $ md5sum TV* d9e17f816565dd5aa5414a09ef748574 TV_cifrado a8f1c8d9d87f84e29bcca2de1656a3fd TV_descifrado a8f1c8d9d87f84e29bcca2de1656a3fd TVenLinux.sh
Ejecutando un script previamente cifrado.
cat TV_cifrado | tr 't-~!-*+-?@-VW-s' '!-+,-56-JK-ab-~' | bash
Creación de un alias para cifrar y descrifrar.
alias cesar="tr '!-+,-56-JK-ab-~' 't-~!-*+-?@-VW-s'" alias uncesar="tr 't-~!-*+-?@-VW-s' '!-+,-56-JK-ab-~'" # Cifrar: cat fichero | cesar > cifrado # Descifrar: cat cifrado | uncesar > fichero
NOTA: Se pueden agregar otros rangos y caracteres, recordemos que hay hasta 256 caracteres posibles con un 1 byte de información (Límite de tr).
Rango máximo empleando los 256 caracteres: '!-þ'
Ejemplo de uso con tr.
tr '!-þ' 'z-þ!-y'
NOTA: Al hacer uso de caracteres no imprimibles, se recomienda cifrar y descifrar a partir de ficheros (redireccionando la salida estandar).
Introducir código ASCII en Linux. Ctrl+Shift+U: Muestra una u para que se teclee el código en hexadecimal.
Lectura recomendada sobre ofuscación simple: invertir_el_orden_de_lineas_bytes_de_ficheros