Invertir el orden de las lineas / caracteres en ficheros con terminal (Ofuscación)

Invertir orden de las lineas de texto.

echo -e "Hola\ncaracola" | tac
caracola
Hola
 
# **Otras formas de invertir el orden de lineas de texto**.
echo -e "Hola\ncaracola" | awk '{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--] }'
echo -e "Hola\ncaracola" | perl -e 'print reverse <>'
echo -e "Hola\ncaracola" | sort -r -n | gawk -F : "{ print $2 }"
echo -e "Hola\ncaracola" | sed '1!G;h;$!d'
echo -e "Hola\ncaracola" | sed -n '1!G;h;$p' 
# En Vim: g/^/m0

Invertir orden de caracteres de cada linea.

echo -e "Hola\ncaracola" | rev
aloH
alocarac

Invertir orden de lineas en ficheros binarios (No se recomienda el uso de tac).

# nmap_reverse tendrá el orden de las lineas totalmente invertido.
sed '1!G;h;$!d' /usr/bin/nmap > nmap_reverse
# Al invertir las lineas se debería obtener el fichero original.
sed '1!G;h;$!d' nmap_reverse > nmap_ok
 
# Se comprueba que los dos ficheros tengan el mismo número de bytes iguales.
du -b /usr/bin/nmap nmap_ok
3095752	/usr/bin/nmap
3095753	nmap_ok               # Contiene +1 Byte.
 
truncate --size=-1 nmap_ok    # Se elimina el Byte sobrante para obtener una copia idéntica al original.
 
md5sum /usr/bin/nmap nmap_ok 
90eed6d48bc80b2d025b93d6d86c7bf1  /usr/bin/nmap
90eed6d48bc80b2d025b93d6d86c7bf1  nmap_ok

Invertir orden de caracteres lineas en ficheros binarios

# Revertir.
od -An -vtx1 /usr/bin/nmap > nmap.txt
rev nmap.txt > nmap_rev.txt
LC_ALL=C tr -cd 0-9a-fA-F < nmap_rev.txt | xxd -r -p > nmap_rev
 
# Revertir de nuevo para volver al estado original.
od -An -vtx1 nmap_rev > nmap_rev.txt
rev nmap_rev.txt > nmap.txt
LC_ALL=C tr -cd 0-9a-fA-F < nmap.txt | xxd -r -p > nmap_ok
 
# Comprobación.
md5sum nmap_ok /usr/bin/nmap
90eed6d48bc80b2d025b93d6d86c7bf1  nmap_ok
90eed6d48bc80b2d025b93d6d86c7bf1  /usr/bin/nmap

Invertir orden de las lineas + Invertir orden de caracteres

# Ofuscar: Se invierte el orden de las lineas y después el de los caracteres.
sed '1!G;h;$!d' /usr/bin/nmap > nmap_reverse
od -An -vtx1 nmap_reverse > nmap.txt
rev nmap.txt > nmap_rev.txt
LC_ALL=C tr -cd 0-9a-fA-F < nmap_rev.txt | xxd -r -p > nmap_rev
 
 
# Desofuscar: Se invierte el orden de los caracteres y posteriormente el de las lineas.
od -An -vtx1 nmap_rev > nmap_rev.txt
rev nmap_rev.txt > nmap.txt
LC_ALL=C tr -cd 0-9a-fA-F < nmap.txt | xxd -r -p > nmap_casi_ok
sed '1!G;h;$!d' nmap_casi_ok > nmap_ok
truncate --size=-1 nmap_ok 
 
# Comprobación.
md5sum /usr/bin/nmap nmap_super 
90eed6d48bc80b2d025b93d6d86c7bf1  /usr/bin/nmap
90eed6d48bc80b2d025b93d6d86c7bf1  nmap_super

NOTA: Para seguir ofuscando se puede combinar esto con un particionado del fichero en partes y su posterior ensamblaje en X orden. Aplicar un cifrado cesar sobre caracteres imprimibles, etc.