En el siguiente artículo vamos a echar un vistazo a un la aplicación de la línea de comandos llamada Magic Wormhole. Esta es una aplicación basada en “CLI” con la que vamos a poder enviar de forma segura texto, archivos e incluso carpetas (que se comprimirán automáticamente) a prácticamente cualquier persona desde nuestra terminal.
Hoy en día es de conocimiento público que si se desea obtener la mayoría de las cosas de forma rápida y segura lo recomendable es utilizar la línea de comandos. La aplicación que nos ocupa es rápida y fácil de utilizar. No hay de qué preocuparse por los conocimientos necesarios para utilizar programas de terminal. Su uso es sumamente minimalista y no requiere de conocimientos previos sobre protocolos ni nada parecido.
La lógica de la aplicación se reduce a saber qué archivo queremos enviar y ejecutar el único comando para proceder con su envío. No existe ningún límite a la hora de realizar el envío. Se pueden enviar documentos de forma individual o bien archivos comprimidos.
Vamos a imaginar un escenario muy probable. Queremos enviar un archivo a un amigo, que se encuentra a miles de kilómetros de distancia conectado a internet con su equipo. La solución a este posible caso es tan sencilla como, iniciar una nueva ventana de terminal, abrir un Wormhole y después de introducir un par de palabras, pulsar Intro y espera por la otra parte.
Tu amigo en el otro extremo lanzará su terminal, abrirá también un Wormhole e introducirá un código para autenticar su acceso a los archivos. Una vez introducido el código solo tendrá que esperar a que termine la descarga a su equipo.
Es cierto que en el caso de los archivos, no se produce un almacenamiento en ningún punto intermedio como tal, siendo el envío entre los dos extremos involucrados. Aunque podría ser un servicio extremo a extremo, no lo es. Para ser más exactos, la comunicación en algún momento debe pasar por un servidor proxy.
Características generales de Magic Wormhole
Magic Wormhole hace uso de PAKE (del inglés Password-Authenticated Key Exchange) para cifrar la información que se envía entre los extremos. Esta aplicación utiliza el algoritmo SPAKE2.
Antes mencioné que en algún momento, la comunicación se tiene que gestionar por parte de algún servidor. Este va a ser el que se encargue de crear un túnel TCP entre los extremos. Con ello se conseguirá que se produzca el envío de la información.
La biblioteca de Magic Wormhole requiere un «Rendezvous Server«. Este es un simple relé basado en WebSocket que entrega mensajes de un cliente a otro. Esto permite que los códigos de Magic Wormhole omitan direcciones IP y números de puertos.
Los comandos de transferencia de archivos utilizan un «Transit Relay». Este es otro simple servidor que reúne dos conexiones TCP entrantes y transfiere los datos entre ambas.
El usuario que envía el archivo, tendrá que hacer llegar la clave vía chat/mensaje/llamada que generará Magic Wormhole al usuario receptor.
Si alguien necesita saber más acerca de lo seguro que puede ser utilizar Magic Wormhole o de sus características, la página de GitHub puede solucionar muchas dudas.
Instalar Magic Wormhole
En Debian 9 y Ubuntu 17.04+ vamos a poder instalar Magic Wormhole. Para ello utilizaremos la terminal (Ctrl+Alt+T) y el comando apt que se muestra a continuación.
sudo apt install magic-wormhole
En las versiones anteriores de Debian / Ubuntu, es necesario instalar los siguientes paquetes antes que el programa. Abrimos la terminal (Ctrl+Alt+T) y escribimos en ella.
sudo apt-get install python-pip build-essential python-dev libffi-dev libssl-dev pip install magic-wormhole
Utilizar Magic Wormhole
Antes de nada, he de decir que a mi me ha reportado errores en mi red local. Esto sucedía si la ruta del directorio desde donde pretendo enviar el archivo contenía acentos o cosas parecidas en algún punto de la ruta indicada. El código necesario para el envío se genera en este punto. Este se lo tendremos que pasar al destinatario. Una vez aclarado esto, para enviar un archivo solo hay que abrir la terminal (Ctrl+Alt+T) y escribir lo siguiente.
wormhole send “nombre del archivo”
Para recibir el archivo, solo tienes que utilizar el siguiente comando en la terminal. Me parece evidente, pero que nadie se olvide de que el receptor también tiene que tener instalado Magic Wormhole. El programa pedirá que el receptor introduzca el código que ha recibido del emisor.
wormhole receive
Tanto el remitente como el receptor recibirán notificaciones indicando el progreso de la transferencia de archivos. También nos informará si el proceso encuentra algún error en el camino.
Esta es evidentemente una aplicación para aquellos que se sientan cómodos utilizando la terminal.