===== 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_desde_la_terminal_con_tr|cifrado cesar]] sobre caracteres imprimibles, etc.