Skip to content
This repository was archived by the owner on Aug 3, 2024. It is now read-only.

Latest commit

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Transferencia de archivos por TCP

Introducci贸n

El objetivo de este proyecto es realizar la transferencia de archivos entre un cliente y un servidor a trav茅s de TCP. El cliente puede enviar archivos encriptados o no encriptados, y el servidor puede desencriptar los archivos encriptados. Para la encriptaci贸n de los archivos se utiliza la librer铆a libsodium.

Requisitos

Los requisitos para poder ejecutar el proyecto son los siguientes:

  • CMake 3.10
  • Make
  • C++ 11
  • Libsodium

Instalaci贸n de Libsodium

En sistemas tipo Debian, es posible instalar libsodium con el siguiente comando:

$ sudo apt-get install libsodium-dev

Por otra parte en basados en Arch, es posible instalar libsodium con el siguiente comando:

$ sudo pacman -S libsodium

Para otros sistemas operativos, consultar la documentaci贸n.

Compilaci贸n

Para instalar y compilar el proyecto es necesario ejecutar los siguientes comandos:

$ mkdir build
$ cd build
$ cmake ..
$ make

Uso

Para iniciar el servidor es necesario especificar el puerto en el que se va a escuchar. El servidor se ejecuta de la siguiente manera:

$ ./server -p <puerto>

Para temas pr谩cticos se trabaja en la misma red local, sin embargo, es posible realizar la transferencia de archivos a trav茅s de internet, siempre y cuando se conozca la direcci贸n IP del servidor y se realicen las modificaciones pertinentes

El cliente puede realizar el env铆o de archivos al servidor de una manera encriptada o no encriptada. Dependiendo de los par谩metros que se le pasen al cliente, se ejecuta de la siguiente manera:

$ ./client -p <puerto> -f <archivo> [-e]

donde -e corresponde a un par谩metro opcional y especifica que el archivo se enviar谩 encriptado.

Se espera que el cliente y el servidor se ejecuten en directorios distintos para evitar conflictos con los archivos generados.

La generaci贸n de clave es autom谩tica y 煤nica para cada solicitud de env铆o de archivo y almacenada en el mismo directorio de ejecuci贸n del cliente, siguiendo el formato <archivo>.key. Es necesario compartir esta clave con el servidor para que este pueda desencriptar el archivo.

Es posible realizar la desencriptaci贸n de un archivo encriptado con el siguiente comando:

$ ./decrypt -f <archivo> -k <clave>

Se almacenar谩 el archivo desencriptado con el mismo nombre que el archivo encriptado.

Tener en cuenta que la encriptaci贸n y desencriptaci贸n es m谩s lenta seg煤n el tama帽o del archivo.

Cr茅ditos

Proyecto realizado por:

  • Francisco Cea
  • Oscar Castillo
  • Mat铆as Gayoso

About

馃寪 Laboratorio Redes de Computadores 2023-1 (503353) | Transferencia de archivos por TCP

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages