Magic Wormhole: get things from one computer to another, safely
Magic Wormhole is a secure file transfer tool using single-use codes, compatible with Python 3.8+, with comprehensive documentation available online, and released under the MIT license for broad usage.
Read original articleMagic Wormhole is a library and command-line tool available on GitHub that facilitates secure file and directory transfers between computers, as well as the transfer of short text snippets. The system operates using "wormhole codes," which are short, human-readable, and single-use codes generated by the sending machine. The recipient must enter this code to complete the transfer, ensuring a user-friendly experience. The library is compatible with Python versions 3.8 and higher, and comprehensive documentation is provided for users, including installation instructions available on the official documentation site. Magic Wormhole can be installed on various operating systems or directly from the source. It is released under the MIT license, allowing for broad usage and modification.
- Magic Wormhole enables secure file transfers using short, single-use codes.
- It is compatible with Python 3.8 and higher.
- Comprehensive documentation and installation instructions are available online.
- The tool is open-source and released under the MIT license.
Related
Nvidia Warp (a Python framework for writing high-performance code)
Warp is a Python framework for high-performance simulation and graphics, compiling functions for CPU or GPU. It supports spatial computing, differentiable kernels, PyTorch, JAX, and USD file generation. Installation options include PyPI and CUDA.
Show HN: Magic-cli – A copilot for your command line
The GitHub repository for Magic CLI enhances command line operations using LLMs. It includes command suggestions, task command generation, installation methods, configuration options, roadmap, security protocols, and contribution guidelines. Inquiries welcome.
Greaseweazle: Tools for accessing a floppy drive at the raw flux level
Greaseweazle is an open-source USB device for reading and writing floppy disks. It supports Windows, macOS, and Linux installations, with resources available for help, downloads, and firmware access.
Shortwire: The smallest VPN that connects two computers via the Internet
shortwire is a minimal VPN daemon for Linux that enables secure peer-to-peer connections by creating a virtual NIC, requiring installation of `libwebsockets` and a 16-byte encryption key.
WireGuard-rs – Official Rust implementation of WireGuard
wireguard-rs is a Rust implementation of the WireGuard VPN protocol, featuring updates for performance, sticky sockets for Linux, and ongoing maintenance, with the code available under the MIT license.
- Many users praise Magic Wormhole for its reliability and effectiveness in transferring large files, especially in challenging network environments.
- Several comments suggest alternative tools and projects, indicating a broader interest in file transfer solutions.
- Users express a desire for additional features, such as a GUI or web-based options for easier file sharing.
- Concerns about security and the usability of the code generation process are raised, highlighting the need for clarity in its implementation.
- Some users share personal anecdotes about how Magic Wormhole has been beneficial in specific scenarios, such as transferring files to locked-down corporate machines.
For some more exotic testing, I was able to run my own magic wormhole relay[1], which let me tweak some things for faster/more reliable huge file copies. I still hate how often Google Drive will fall over when you throw a 10s-of-GB file at it.
[1] https://www.jeffgeerling.com/blog/2023/my-own-magic-wormhole...
"Rust implementation of Magic Wormhole, with new features and enhancements": https://github.com/magic-wormhole/magic-wormhole.rs
p2pcopy https://github.com/psantosl/p2pcopy
pcp https://github.com/dennis-tra/pcp
wormhole-william https://github.com/psanford/wormhole-william
Magic Wormhole: Get things from one computer to another, safely - https://news.ycombinator.com/item?id=27262193 - May 2021 (178 comments)
https://zynk.it is a new project I've been working on together with a small team aimed at delivering a truly easy, fast, efficient, unlimited, privacy-respecting and pain free file-sharing experience. It’s peer-to-peer, E2EE and avoids centralized storage, aligning with the ethos of control and transparency we often discuss here. It allows users to send and receive any file(s) or folder(s) without any limits whatsoever between any device/OS and any device/OS, send and forget, Zynk takes care of all the heavy lifting.
What I hope sets Zynk apart is that it is built to literally be used by anyone, be it a power user, or my mom.
One of my main goals with this project is to remove any pains associated with data transfer once and for all, for any use case.
I'm curious if this resonates with you—would you use it? What would make it indispensable for your workflows?
I'd be happy to discuss it more if anyone is interested. Feel free to sign up for early access on the site.
I put it on npm primarily so I could send things to other JS developers an absolute minimum of fuss: one command, total, instead of installing a tool and then running the command.
Why aren't people who know about this and hold important positions doing something about the ecosystem? What can people with no experience but care do to ensure the longevity of open source tools like this?
How about Warpinator [1]?
It's the application that I use simply because it came by default with my choice of Linux distro, and it works fine. Main use case for me is sending recently taken photos from my phone to the computer.
How does this work from a security perspective? Given the lack of apparent entropy can’t a malicious actor conceivably enter the correct phrase before the good actor?
You should not need HTTP, FTP, etc. You should be able to use something which can work on any computers, such as just TCP/IP. Unfortunately, some systems (especially some Windows systems) will make that difficult. Using the more complicated such as Magic Wormhole and other programs means you will need two computers that support such a thing. I did once try to transfer a file from Windows to Linux, and had to install ncat to do so but Windows deletes it by default if you try to do that, but I was able to make it to not to do that.
What about using Onionshare to solve NAT'ing or at least Topr for handshaking?
On every *nix platform I would just install the `syncthing` package and use it quite easily. I've experimented with some wormhole stuff before and looked at this package some, but there would be a lot of extra steps involved right because of the packaging choices.
The package was removed from Fedora in 37 with the "replacement" being use a Snap instead [1]. That doesn't make any sense because that platform is heavily invested in Flatpak and it's very "against the grain." There are some other "Wormhole" apps on Flathub that are verified, but none of them are the same as this. Are they compatible protocol wise or just named similar things? That's assuming you want to enter the game of "is this app safe or made by the same entity?"
I want to enjoy this project and others like it, but it's very confusing. The goal of these tools is to simplify transfer of files and to take most of the "pain" in doing that away. Yet, to actually use most of these tools in any meaningful way between two computers you would need to invest more time into getting this to run on those systems. My brain tells me to make this work you need a big button on the homepage for each well supported platform that just says "Download for Windows" along with a one-click solutions for various Linux platforms (one line command, Flatpak, AppImage, etc.)
[1]: https://magic-wormhole.readthedocs.io/en/latest/welcome.html...
The first thing I install on any new computer.
I have a pal where we want this kind of auto accept style behavior.
> The receiving side offers tab-completion on the codewords, so usually only a few characters must be typed.
Setting this up on a PC and Mac to transfer files back and forth.
There’s an XKCD for this, too: https://xkcd.com/949/
- Generate a short code
- Use the code as the seed to deterministically generate a Syncthing device key + config
Since the Syncthing device key could be generated deterministically, sharing the code with both sides would be enough to complete a dir/file transfer and then discard the keys.
Related
Nvidia Warp (a Python framework for writing high-performance code)
Warp is a Python framework for high-performance simulation and graphics, compiling functions for CPU or GPU. It supports spatial computing, differentiable kernels, PyTorch, JAX, and USD file generation. Installation options include PyPI and CUDA.
Show HN: Magic-cli – A copilot for your command line
The GitHub repository for Magic CLI enhances command line operations using LLMs. It includes command suggestions, task command generation, installation methods, configuration options, roadmap, security protocols, and contribution guidelines. Inquiries welcome.
Greaseweazle: Tools for accessing a floppy drive at the raw flux level
Greaseweazle is an open-source USB device for reading and writing floppy disks. It supports Windows, macOS, and Linux installations, with resources available for help, downloads, and firmware access.
Shortwire: The smallest VPN that connects two computers via the Internet
shortwire is a minimal VPN daemon for Linux that enables secure peer-to-peer connections by creating a virtual NIC, requiring installation of `libwebsockets` and a 16-byte encryption key.
WireGuard-rs – Official Rust implementation of WireGuard
wireguard-rs is a Rust implementation of the WireGuard VPN protocol, featuring updates for performance, sticky sockets for Linux, and ongoing maintenance, with the code available under the MIT license.