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

Latest commit

History

History
63 lines (51 loc) 路 2.63 KB

File metadata and controls

63 lines (51 loc) 路 2.63 KB

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