Earlier quoted context omitted.
I (Electrical + Software Engineer) once worked for a physicist who believed that anything less than an order of magnitude was merely an engineering problem. He was usually correct.
An order of magnitude isn't a defined quantity, it depends on what base you're working in.
Magic Wormhole: get things from one computer to another, safely
251–260 of 262 posts
Re: Magic Wormhole: get things from one computer to another, safely
#252Earlier quoted context omitted.
> if you want a non-Python runtime for some reason [...] Magic Wormhole project has its own alternate implementation https://github.com/magic-wormhole/magic-wormhole.rs , which is also used by delightfully designed GNOME and Android apps; [Warp]( https://apps.gnome.org/Warp/ ), and [Wormhole]( https://play.google.com/store/apps/details?id=eu.heili.wormh... ), respectively.
There's also a Haskell implementation (besides the Go one pointed out above). They all interoperate.
Re: Magic Wormhole: get things from one computer to another, safely
#253I don't recall where I saw it (either the Python or Rust implementation, most likely), but there was talk about trying to turn this into a browser plugin. I would love to be able to use my browser to send files to someone else (via their browser, if they so choose).
Re: Magic Wormhole: get things from one computer to another, safely
#254I realize this is a dumb question, but what's a good way to do this between an iPhone and a MacBook? Airdrop is disabled (by policy), iCloud storage is full (because I'm lazy), and I use syncthing on every other device, but I haven't found a client I can use on my work iPhone.
Use Signal. If you install the desktop client Signal has a special "Note to Self" address you can use to transfer message attachments between devices.
Re: Magic Wormhole: get things from one computer to another, safely
#255Earlier quoted context omitted.
It took this far down in the comments to get to some inkling of the meat of this. It relys on some singular or small set of donated servers? NAT NAT traversal is obviously the biggest motivator, since otherwise you just scp or rsync or sftp if you don't have the dual barrier. Is the relay server configurable? Seemed to be implied it is somewhat hardcoded.
Yes, it relies on two servers, both of which I run. All connections use the "mailbox server", to exchange short messages, which are used to do the cryptographic negotiation, and then trade instructions like "I want to send you a file, please tell me what IP addresses to try". Then, to send the bulk data, if the two sides can't establish a direct connection, they fall back to the "transit relay helper" server. You onl…
I would have thought NAT hole punching was a basic requirement for something like this...
Re: Magic Wormhole: get things from one computer to another, safely
#256Earlier quoted context omitted.
I overall agree, but "reliable holpunching" is an oxymoron. Hole punching is by definition an exploit of undefined behavior, and I don't see the specs getting updated to support it. UPnP IGD was supposed to be that, but well...
Well, with v6 you're down from NAT-hole-punching to Firewall-hole-punching, which in principle should be as simple as arranging the IP:Port pairs of both ends via the setup channel, and then sending a "SYN" packet in both directions at once. Then, trying to use e.g. TCP Prague (or, I guess, it's congestion control with UDP-native QUIC) as a scalable congestion controller, to take care of the throughout restrictions c…
Might be a totally dumb question but how does this work? Wouldn’t you already have to have communication to set a time?
Re: Magic Wormhole: get things from one computer to another, safely
#257Earlier quoted context omitted.
Reliability is fine, performance is, depending on your demands, not. F the coordination server is not up to task of matching throughput of the two servers, and a lot of bytes need to be transferred, then it's noticable. But the tech at large works, depending on the implementation you choose to use. (I'm partial to Tailscale, although that's a different service, it lets me transfer files between computers (with additi…
I'm sorry but was your reply meant for me? and if so was the reliable way DERP as you mentioned?
Re: Magic Wormhole: get things from one computer to another, safely
#258Earlier quoted context omitted.
It was useless for large files when I tried it, at least on Firefox. It seemed to be trying to pull the entire file into RAM.
As someone who's been working on a file upload service for a while, this is the only real way to download very large files on Firefox. The file system access API is a great way to write chunks of a file at a gime, but for now Firefox doesn't support it https://wicg.github.io/file-system-access/ https://mozilla.github.io/standards-positions/#native-file-s...
The server sends an application/octet-stream response and a few other headers and it works.
Re: Magic Wormhole: get things from one computer to another, safely
#259Earlier quoted context omitted.
Well, with v6 you're down from NAT-hole-punching to Firewall-hole-punching, which in principle should be as simple as arranging the IP:Port pairs of both ends via the setup channel, and then sending a "SYN" packet in both directions at once. Then, trying to use e.g. TCP Prague (or, I guess, it's congestion control with UDP-native QUIC) as a scalable congestion controller, to take care of the throughout restrictions c…
>> sending a "SYN" packet in both directions at once. Might be a totally dumb question but how does this work? Wouldn’t you already have to have communication to set a time?
Re: Magic Wormhole: get things from one computer to another, safely
#260Earlier quoted context omitted.
There are two servers. The "mailbox server" helps with handshakes and metadata transfers, and is super-low bandwidth, a few hundred bytes per connection. The "transit relay helper" is the one that handles the bulk data transfer iff the two sides were unable to establish a direct connection. I've been meaning to find the time to add NAT-hole-punching for years, but haven't managed it yet. We'd use the mailbox server m…
The folks on the wormhole-rs fork (who appear to share your Github organization? [1]) already have NAT punching working 95+% of the time in my testing, so maybe what they're doing could be ported over to the Python implementation. [1] https://github.com/magic-wormhole