- Magic Wormhole ofrece una biblioteca y la herramienta de línea de comandos
wormholepara mover de forma segura archivos de cualquier tamaño, directorios y textos cortos de una computadora a otra - Ambos extremos de la transferencia se identifican con el mismo wormhole code, y por lo general el dispositivo emisor genera el código, lo muestra y se ingresa en el dispositivo receptor
- El código usa una lista de palabras cortas y fáciles de pronunciar, y el lado receptor ofrece autocompletado con tabulador para las palabras del código, así que normalmente basta con escribir unas pocas letras
- El wormhole code es de un solo uso, no hace falta memorizarlo, y el programa utiliza dos servidores de repositorios separados: mailbox server y transit relay
- Magic Wormhole se distribuye bajo la licencia MIT y es compatible con Python 3.10 o superior, con pruebas hasta la versión 3.12
Funciones que ofrece Magic Wormhole
- Magic Wormhole es un proyecto cuyo objetivo es “llevar de forma segura algo de una computadora a otra”
- El paquete ofrece dos formas
-
Biblioteca
- la herramienta de línea de comandos
wormhole - los elementos que se pueden transferir incluyen lo siguiente
- archivos de cualquier tamaño
- directorios
- fragmentos cortos de texto
- la herramienta de línea de comandos
-
Método de transferencia basado en wormhole code
- Los dos endpoints se identifican usando el mismo wormhole code
- El flujo habitual es el siguiente
- el dispositivo emisor genera el código y lo muestra en pantalla
- en el dispositivo receptor se ingresa ese código
- El código es corto, fácil de pronunciar y usa una lista de palabras fonéticamente distinguibles
- El lado receptor ofrece autocompletado con tabulador para las palabras del código, por lo que normalmente solo hace falta escribir unas pocas letras
- El wormhole code es de un solo uso y no hace falta memorizarlo
Configuración del servidor
- Este programa usa dos servidores, y el código fuente de cada uno está en repositorios separados
Documentación y materiales de presentación
- La documentación completa puede consultarse en la documentación de Magic Wormhole o en el subdirectorio
docs/del repositorio - Se incluyen materiales de la presentación de PyCon 2016
Licencia, compatibilidad e instalación
- Magic Wormhole se distribuye bajo la licencia MIT y los detalles están en el archivo
LICENSE - La biblioteca es compatible con Python 3.10 o superior y ha sido probada hasta la versión 3.12
- El paquete Magic Wormhole está incluido en varios sistemas operativos
- Para instalarlo sin paquetes del sistema operativo, se pueden seguir las Installation docs
1 comentarios
Opiniones en Hacker News
Lo he usado durante años para mover archivos grandes entre sistemas en entornos de red raros, y casi siempre funciona sin problemas.
Como prueba un poco más inusual, pude levantar mi propio relay de Magic Wormhole y ajustarlo para que la copia de archivos muy grandes fuera más rápida y estable.
Todavía odio Google Drive porque se cae demasiado seguido cuando le tiras archivos de decenas de GB.
https://www.jeffgeerling.com/blog/2023/my-own-magic-wormhole...
La última vez que intenté enviar muchos datos con Wormhole, el producto ancho de banda-retardo me limitó a 20 MB/s, y al final usé HTTP común con aria2c y múltiples streams para saturar una línea de 1 Gbps.
No veo por qué las herramientas basadas en PAKE no podrían reemplazar por completo, para transferencias grandes de larga distancia, a herramientas propietarias excesivamente complejas como Globus, pero la realidad sigue anclada en el pasado.
Solo con algunas restricciones de red los datos reales pasarían por el relay; si no fuera así, me pregunto cómo cubren los costos de operar un relay gratuito.
python -m http.serverpara descargas locales.Es una lástima que este cómic de xkcd siga siendo tan vigente como en 2011: https://xkcd.com/949/
Esta es una de esas utilidades de una sola función que hacen una cosa extremadamente bien; funciona tan bien y de forma tan discreta que pasa totalmente desapercibida.
Siento que deberíamos agradecer más este tipo de creaciones excelentes.
Estoy usando croc, un proyecto similar con buenas funciones: https://github.com/schollz/croc
https://redrocket.club/posts/croc/
Una vez transferí un archivo de 70 GB con wormhole. Antes eso habría sido imposible.
Sabía que estaba usando el ancho de banda del servidor relay, así que enseguida doné a Debian. Entendía que Debian operaba el relay de la versión del paquete apt.
Es un CNAME que apunta al mismo lugar que la dirección usada por el código git upstream, con la idea de poder cambiarlo fácilmente si los costos se volvieran una carga.
Hasta ahora no ha sido un problema; mueve alrededor de 10 a 15 TB al mes, pero de todos modos comparte un pool de ancho de banda con otros servidores que tengo alquilados, así que solo una vez tuve que pagar cargos por excedente.
Aunque alguien me donara a mí, honestamente creo que lo enviaría directamente a Debian.
A veces, cuando alguien deja pasar medio terabyte, pienso que debería moverlo a un proveedor más lento pero de tarifa plana, o implementar un mejor código de limitación de velocidad, o por fin implementar una extensión del protocolo para que el cliente indique de antemano cuántos datos va a transferir y el servidor pueda rechazarlo.
Pero todavía no ha subido lo suficiente en la lista de prioridades.
Está claro que la mayor motivación es atravesar NAT a NAT. Si no hubiera barreras de ambos lados, bastaría con usar scp, rsync o sftp.
También me pregunto si se puede configurar el servidor relay. Parecía estar hardcodeado hasta cierto punto.
También encontré esto por casualidad: “Una implementación en Rust de Magic Wormhole con nuevas funciones y mejoras”: https://github.com/magic-wormhole/magic-wormhole.rs
Soy el autor. Si tienen preguntas, puedo responderlas.
¿Eso es paranoico?
También me interesa cómo planean responder a la computación cuántica, y si tienen planes de migrar a criptografía poscuántica para protegerse contra ataques de almacenar ahora y descifrar después.
Quisiera saber también si el protocolo puede ampliarse sobre un proxy más general, como un servidor TURN.
También hay algunas otras herramientas
p2pcopy https://github.com/psantosl/p2pcopy
pcp https://github.com/dennis-tra/pcp
wormhole-william https://github.com/psanford/wormhole-william
https://github.com/mat-sz/filedrop
https://github.com/saljam/webwormhole
https://github.com/schollz/croc
https://github.com/dutchcoders/transfer.sh
https://github.com/timvisee/send
https://github.com/schlagmichdoch/pairdrop
https://github.com/SnapDrop/snapdrop
Tal vez sea una pregunta tonta, pero ¿cuál sería la mejor forma de hacer esto entre un iPhone y una MacBook?
AirDrop está deshabilitado por política, el almacenamiento de iCloud está lleno por mi propia flojera, y uso Syncthing en todos los demás dispositivos, pero no encontré un cliente que pueda usar en el iPhone de la empresa
Me gusta especialmente que no hace falta instalar apps de terceros en ningún dispositivo
En Safari en Mac normalmente no parece funcionar tan bien como en Chrome, pero he transferido de Windows a iOS, de Windows a macOS y de macOS a iOS sin instalar nada
python -m http.serverArtículo relacionado: Magic Wormhole: Get things from one computer to another, safely - https://news.ycombinator.com/item?id=27262193 - mayo de 2021, 178 comentarios
Tailscale ahora también tiene Taildrop: https://tailscale.com/kb/1106/taildrop
Aunque aquí usamos Tailscale en general, todavía suelo enviar archivos con wormhole