Modo ninja en la terminal

por | 13 agosto, 2024

Creo que existen muchos significados distintos para «modo ninja», a lo que me refiero es evitar que se escriba en el historial de bash el comando que utilizamos

Existen ciertas distribuciones donde basta escribir el comando precedido por un espacio para que este no se guarde en el historial, este es el método más simple pero no funciona en todas las distribuciones por defecto, tal como lo comentan en este post tenemos un comando que nos permite evitar que un comando se guarde en el historial y que sirve en todas las distribuciones, aunque es un poco largo el comando es el siguiente:

history -d $HISTCMD && comando_a_ejecutar

Vamos a explicarlo por partes

history -d <número>

Este comando elimina la entrada <número> del historial, como recordaran cuando usamos el comando history este nos muestra un número seguido del comando, y al usar la opción -d <número> borraremos el comando que use la posición indicada, por ejemplo tengo este historial

#history | tail -n 3
  504  history | tail -n 3
  505  sudo pacman -Syu
  506  history | tail -n 3

Si quisiera eliminar el comando 505, o sea «sudo pacman -Syu» haría un

history -d 505

y ya con eso se elimina el comando

$ history | tail -n 3
  505  history | tail -n 3
  506  history -d 505
  507  history | tail -n 3

Sin embargo queda en el histórico que borramos una linea y eso puede levantar sospechas, ya veremos como atacar este punto

Luego tenemos una variable llamada HISTCMD, esta variable nos muestra cual será el número que se asignó al comando que ejecutamos como pueden ver en este ejemplo

$ echo $HISTCMD
510
$ history | tail -n 2
  510  echo $HISTCMD
  511  history | tail -n 2

y ya el resto, es historia

con el doble ampersand (&&) podemos hacer que se ejecute un comando después de un primer comando, por ejemplo

$ echo "1" && echo "2"
1
2
$

si se fijan, en la primera linea coloque 2 comandos que se ejecutaron en cadena, si quisiera hacer lo mismo sin el doble ampersand tendría que ser algo así

$ echo "1"
1
$ echo "2"
2
$

pero esto nos guardaría ambos comandos en el registro histórico. como pueden ver en este ejemplo

history | tail -3                                                                              ✔ 
  447  history | tail -n 2
  448  echo "1"
  449  echo "2"

Y es por eso que ejecutamos nuestro comando ninja con doble ampersand

history -d $HISTCMD && comando_a_ejecutar

Existen varias formas de «ocultar» la ejecución de comandos, esta en lo particular me ha gustado bastante, incluso podemos evitar escribir tanto simplemente asignándole un alias que se elimina al cerrar la sesión de terminal, obviamente este alias lo usamos en conjunto a este truco para evitar dejar rastro en el historial.

Comenten cuales son sus técnicas ninjas para ocultar comandos, o que comandos han ejecutado

fuente:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *