Magic Wormhole: Get things from one computer to another, safely
github.com
github.com
Straight from the README:
> croc is a tool that allows any two computers to simply and securely transfer files and folders. AFAIK, croc is the only CLI file-transfer tool that does all of the following:
- allows any two computers to transfer data (using a relay)
- provides end-to-end encryption (using PAKE)
- enables easy cross-platform transfers (Windows, Linux, Mac)
- allows multiple file transfers
- allows resuming transfers that are interrupted
- local server or port-forwarding not needed
- ipv6-first with ipv4 fallback
- can use proxy, like tor
refs:
""" wormhole ssh --help Usage: wormhole ssh [OPTIONS] COMMAND [ARGS]...
Facilitate sending/receiving SSH public keys
Options:
--help Show this message and exit.Commands: accept Send your SSH public-key In response to a 'wormhole ssh invite'... invite Add a public-key to a ~/.ssh/authorized_keys file """
Anyways, croc is pretty similar to wormhole except that it allows resuming files (which wormhole does not yet [3]) and has some peer discovery for local network transfers. I've been using croc everyday for over three years and I'm still very happy with it. But, you should totally use magic-wormhole if that floats your boat - its a great tool, along with psanford's Go version. That may help me actually as I think croc has too many users on the public relay and the cost of bandwidth is becoming too high to keep the public relay available after this year.
[1]: https://redrocket.club/posts/croc/
[2]: https://schollz.com/blog/croc9/
[3]: https://github.com/magic-wormhole/magic-wormhole/issues/88
[1] https://news.ycombinator.com/item?id=27054885
[2] https://twitter.com/Sc00bzT/status/1396199915638992896
Magic Wormhole has a good implementation in Go, which is compatible with the original Python implementation (croc is not compatible with magic wormhole). It has windows binary and binaries for most of the popular OS.
https://github.com/psanford/wormhole-william
Binaries: https://github.com/psanford/wormhole-william/releases
There's GUI: https://github.com/Jacalz/wormhole-gui
Android app too: https://github.com/psanford/wormhole-william-mobile
Support for resuming transfers is planned I think.
https://news.ycombinator.com/item?id=9953767
https://news.ycombinator.com/item?id=14649727
Magic-Wormhole: Get Things from One Computer to Another, Safely - https://news.ycombinator.com/item?id=27237536 - May 2021 (4 comments)
Magic-Wormhole: Get Things from One Computer to Another, Safely - https://news.ycombinator.com/item?id=24702975 - Oct 2020 (9 comments)
Ask HN: What is your favorite method of sending large files? - https://news.ycombinator.com/item?id=24351111 - Sept 2020 (354 comments)
Ask HN: A more convinient Magic Wormhole alternative? - https://news.ycombinator.com/item?id=21352217 - Oct 2019 (3 comments)
Magic-Wormhole – Get things from one computer to another, safely - https://news.ycombinator.com/item?id=14649727 - June 2017 (179 comments)
Get things from one computer to another, safely - https://news.ycombinator.com/item?id=9953767 - July 2015 (15 comments)
EDIT: how will it be done? As another link or as some kind of expandable thread, or with a bot maybe?
I can see such a list being incredibly polarizing, but also something the community could rally behind.
I'm still looking for a solution I could use to share pictures and PDF files from Android phones to iPads and Laptops using the "share" modal and completely self-hosted...
The ideal situation would be some universal airdrop which will never happen. The next easiest solution is to use cloud storage and send a link to the other person.
https://f-droid.org/en/packages/be.ppareit.swiftp_free/
I guess you can install in on multiple devices (Android phones and tablets), then use a file explorer that supports ftp or use a dedicated ftp client, to then transfer between each other. But accessing my phone from my computers via ftp (Fedora and Windows 10) is a piece of cake and reliable - don't even need anything like filezilla.
To stop changing ip's: I recommend having a static ip range in your router instead of using dhcp (or some routers/dhcp server can allocate the same ip address to the same mac address), so all of your devices ip's stay stable (on newer phones, you have to disable the random mac address feature though).
1. gpl and apple appstore don't go along
2. ios apps cannot run in the background in ways that kde connect needs
3. ios does not permit 99% of things that make kde connect interesting and useful
blame apple for this, not the kde connect devs.
I see kdeconnectd.exe and kdeconnect-indicator.exe running in the task manager but nothing else. Nothing in the tray either.
I've seen similar complaints on googling but none has ever been resolved.
Does anyone else have it working on Windows?
The primary use case is for me to share PDF scans made with my iPad/phone with my laptop. The second use case is for sharing screenshots of my laptop with others on my favorite messenger.
> This tool requires a total number of 7 actions to get the work done
What the hell?!
I use this for cross-family backup and sharing. My main use-case is getting my photos from my phone to my desktop.
Everyone has UltraPhones with 4k videos they can't share with anyone.
No host in their right mind would accept such large messages.
Most EMail servers do not accept more than 10MB, and considering the file sizes of your typical PDF, Word Document or photo, that seems sensible.
https://gitlab.com/timvisee/send (a fork of the original code)
It auto-detects when you enter a link, otherwise treats text inputs as a pastebin, you can ctrl+v an image, and it has file uploads up to a few gigabytes. Code is on github (https://github.com/lgommans/dro.pm/) though I still have to change the license to be more permissive (I've decided that I won't pursue this as a commercial thing, just open a ticket if you want me to change the license sooner than whenever I work on this next). Viewing uploaded files instead of downloading is also possible for image/audio/video mime-types by adding /preview to any link.
You can also use it from the command line if you're on a keyboard+terminal-only machine, e.g. just `wget -L dro.pm/h.txt` to download the uploaded file (the links accept an arbitrary .extension) or for uploading from the command line there is a bash one-liner contained in the page source itself, see: `curl https://dro.pm | head`
Made a mistake and uploaded something private or want to edit the link? Just click delete on the website, or on the command line you can use the token that you get when creating a new link.
I guess magic wormhole is the wrong context to be making this argument in since everyone's primed for peer to peer now, but in general, yeah when using dro.pm it will put your data on dro.pm, similar to how pastebin stores your data when you use pastebin. It otherwise (and that's why I made this design decision) couldn't work after you close the tab, making it much less suitable for most of the intended use-cases. If you want peer to peer file transfer, you could have a look at https://file.pizza (not made by me)
This appears to me much more like blantant self promotion rather than attempt to participate in the discussion. Your tool has none of the requested features (self hosted file transfer using the native share dialog.)
> though I still have to change the license to be more permissive (I've decided that I won't pursue this as a commercial thing, just open a ticket if you want me to change the license sooner than whenever I work on this next).
Guess that'll have to be now then. Getting this sort of crap is what makes me wonder why I bother putting this work out there in the first place.
> Your tool has none of the requested features
The main premise was a way to have file sharing between tablets, phones, and computers. This does that. It is open source (as of now) and has an Android share app to boot[1]. Anything else you're very welcome to make yourself, it's not a commercial plug, I'm obviously disclosing my affiliation, I host this on my personal machine at home, you're just welcome to make use of this or not if you don't like it.
[1] https://github.com/lgommans/dro.pm/tree/master/android/dropm...
Neither your initial comment, nor the project readme discuss the Android App. You have to browse the project dirextory to find out that it exists. The Android app has the dro.pm url hardcorded as a string and generally does not appear setup to work with a self-hosted solution.
All of this is fixable, but it very much belies a project that is immature. I would personally be uncomfortable promoting this as a solution without being very clear about the limitations and work required to fit the specidies use case.
I definitely never intended to say that you shouldn't ever run an open source project. My earlier wording was not done well. My point is that if you are burning out this early in open sourcing this project, then maybe this particular project is not meaningful or valuable enough to be worth it to you.
You were just given carte blanche to host it, by the author in public. If that isn't a legal exception, I really, really do not know what is.
Also, if you do self-host it, who is going to find out and sue you? Software licenses are not magical. The hammer of god is only going to come down on you if the person:
a) sees you do it
b) has the power to stop you
And if they're outside of the GNU project or the Linux foundation, they very likely do not! And regardless, that only matters if:
c) you have the money to pay for the damages
Which unless you're rich (I dunno, maybe you are rich), you probably don't!
and if you run a business, it's automatically a no-go.
however, what really matters for FOSS is that suggesting the license does not matter only reduces the strength of FOSS licenses. you are effectually suggesting that licenses can be ignored.
note that i am not suggesting that the author of the product should change their license, or clarify it with regards to self-hosting, just that your advice to ignore the actual license is dangerous.
Now with my point in general,
> however, what really matters for FOSS is that suggesting the license does not matter only reduces the strength of FOSS licenses. you are effectually suggesting that licenses can be ignored.
Right, but if they are ignored by large companies, there's no chance in hell that we're ever going to find out about it. The fact of the matter is that big companies really do not have to give a shit, at this point, because even if someone challenges them, it's unlikely that any one person is going to have the financing to win the war of attrition that will follow.
Likewise, if you take someone's code and it's not open source, and you don't actually distribute it, but instead just host it, and you're small enough, then the license itself does not matter.
The claim that pointing out that the rules only matter as far as the rules can be enforced, actually damages the rules, is utterly absurd. The people who will want to ignore the rules and do whatever, and bank on not getting caught are already doing that.
that may be the case, but that makes it a custum exemption that is not vetted by lawyers. for my personal use that my be ok, but for my company it is not, no matter how small my company is, i just can't take the risk. not only the risk getting sued, which indeed may be minimal, if non-existant, but also the risk that any of my current or worse future business partners, investors or clients have less trust in an unvetted license than me.
and from a client perspective, i do not want to deal with a business that doesn't take licensing seriously.
the difference between a big company ignoring licenses and me is, that a big business can afford to deal with getting caught, but if i am wrong, i am ruined.
> Should I package it as a .deb, or what makes something self-hosted? The code is already on github: https://github.com/lgommans/dro.pm/ (link was buried in the text - I had a hard time prioritizing what people would want to read first, since that depends on your use-case).
As for no mobile app: how much faster is it going to get than opening the browser that's already on everyone's homescreen and typing a 7-8 character link? Or if you self-host it, you can host it on your own TLD like https://me/. It being an app was also never mentioned as a requirement and I don't see how it helps, but I guess I don't need to understand. As a bonus tip, though: you can add browser bookmarks to your homescreen. Since you'll need internet to share things in the first place, it should behave roughly the same (aside from a share menu, but...).
And there is a share modal for Android, actually. See the github link.
Dropbox is centralized (with some p2p for performance gains on local networks) whereas this is entirely p2p
https://play.google.com/store/apps/details?id=pl.solidexplor...
Although top comment here suggests a combination: https://www.reddit.com/r/Syncthing/comments/ese82l/ios_users...
Top comment snippet: "I use FE file explorer PRO (paid ) on iOS to connect connect to my VPS vis SFTP where my main syncthing pool is"
The two apps I linked do exactly that. You don't need an iOS app because you're sending files only from Android.
Works great, see my other comment for explanation.
I'm really looking for a "universal airdrop", but I would settle even for a pale copy of it.
Let's say a user encrypts a file outside of Dropbox, using a program of the user's choice, then she transfers the encrypted blob to Dropbox.
Is the author suggesting this is "not secure against the Dropbox server". I am not a Dropbox user. I know it was originally for syncing folders and they orginally used an rsync library and that is about all I know. Pardon the ignorance.
Magic Wormhole by default uses hardcoded host:port for a rendezvous server and a transit server operated by [undisclosed].
"The URL of a public server is baked into the library for use as a default, and will be freely available until volume or abuse makes it infeasible to support."
This Github page is only for the client, not the servers.
In the section titled "Dilation", we are reminded that MW is store and forward by default, not direct connection.
How are messages stored on the default public MW server operated by [undisclosed] "secure against [undisclosed]" in a way that messages stored with Dropbox are not "secure against Dropbox". Maybe the author only uses MW with private MW servers, not public ones run by other people. Then his comment about Dropbox would make sense. However I have to wonder, how many new MW users are running their own servers.
With MW you share a weak key (vs a strong key in Dropbox case). Dropbox also provides access to all data.
On the other hand, you have to hope there is no vulnerability in MW. With Dropbox, you have much more control over crypto.
But to let your recipient decrypt your pre-encrypted data, you have to communicate your strong (>=128 bit) key to them, as well as enough information to point at the ciphertext (hostname, port, file ID if the server handles more than one at a time). That's a UX challenge, because 128 bits aren't very humane, no matter how you encode them. Dropbox has a feature to let you upload a file and then get a URL you can give to someone else, but it's long and random and hard to read, and still doesn't include any cryptographic protection.
Some secure file-transfer systems deal with this by using fewer bits and then applying a "key stretching" algorithm like bcrypt or Argon2. That forces the attacker to do more work for each guess, which maybe lets you get away with.. 80 bits? 60 bits?. But whoever holds the ciphertext (like the server) can remember it forever, so they can just keep trying for as long as they like, so it's hard to have confidence that you've picked parameters that are strong enough, and the attack resistance is directly at odds with the usability.
Magic-wormhole is using PAKE to bring the necessary cryptographic data down to a safe minimum (16 bits or so), baking in knowledge of a server (plus allocating the shortest distinct file identifier it can, usually just one digit) to minimize the non-cryptographic data, and using a phonetically-distinct wordlist to maximize the usability / transcribability of the whole thing. It lets you say just "use magic-wormhole and the code is 4-purple-sausages" and you're done. But it's a trick, of course: we can only get aware with codes that short by pointing everybody at the same servers. You can easily self-host, but then you must either recite a lot more information to your recipient ("use magic-wormhole with --relay-url=ws://myserver.example.net:4000/v1 and a code of 4-purple-sausages"), or pre-stage that information by giving them a config file ahead of time.
As for the servers, I run them. Their source code is in repos next to that of the client, namely https://github.com/magic-wormhole/magic-wormhole-mailbox-ser... and https://github.com/magic-wormhole/magic-wormhole-transit-rel... . But the client is designed so that you don't have to rely upon the servers or the people running them to still get confidentiality and integrity of your transferred data. Those properties depend just upon the implementation of the client, and of course the computer that you run it on.
The initial low-bandwidth data (a few hundred bytes) goes through the "mailbox server". That phase is store-and-forward, and is used both to perform the PAKE protocol (to get a strong shared key), and to use the now-encrypted connection to negotiate whatever else you want to do (like establish a direct connection for file transfer). The bulk data transfer happens over a direct connection if one can be made, else it goes through the "transit relay", but in neither case does large amounts of data get stored on a server.
This means magic-wormhole lacks an important feature that many of its competitors have: the ability to close your computer before your recipient has finished (or even started) retrieving the data. I decided to use an approach that was more sustainable by me (the servers use just a tiny DB for the store-and-forward part), and leave the features that start to look like a file-hosting service to other projects.
Most people won't encrypt before transfer to Dropbox.
Even if they do, all security usually relies on a password set by the user. Normal users are known to set easy to crack passwords.
So two unusual things need to happen for things to be secure.
The security of Magic Wormhole doesn't rely on the relay server, as explained elsewhere in this thread.
I think I'm probably missing something.
> PAKE effectively trades off interaction against offline attacks. The only way for a network attacker to learn the shared key is to perform a man-in-the-middle attack during the initial connection attempt, and to correctly guess the code being used by both sides. Their chance of doing this is inversely proportional to the entropy of the wormhole code. The default is to use a 16-bit code (use –code-length= to change this), so for each use of the tool, an attacker gets a 1-in-65536 chance of success. As such, users can expect to see many error messages before the attacker has a reasonable chance of success.
(It does strike me, however, that if a 'mailbox server' becomes heavily used, with many pending-but-incompleted wormholes, then an attacker making random guesses might manage to receive someone's random file, instead of the real intended-recipient. Perhaps the sending-side should optionally require an interactive sender-ack, after showing for confirmation a receiver-generated unique secret? In any case: using a longer code, and/or using a private mailbox, could each help eradicate such risks.)
Check out the `--verify` flag for `wormhole send` and `wormhole receive`
You are sending the file runs
wormhole send myfile
I, the attacker run wormhole receive __guess_code__
If my code is right, I get the file. If not, you cannot know, surely? There's no identification here other than the code. I can guess repeatedly as many times as I want. If lots of people are using the same server, the chance I start getting someones files is quite high.~~In addition, with generating the code, either the sender has a way of checking if codes are in use (and so the attacker can more easily find current open valid codes) or there is the chance of a clash.~~ Edit - looking at the code I don't think this side is an issue. It'll ask for a connection then generate a code for that connection I think.
So - how do I only get one guess?
The words are secret. There's a special cryptographic protocol named PAKE ("Password Authenticated Key Exchange") that tells you what messages to put into the mailbox. The protocol has a lock-step part in the middle, where you don't generate your second message until you've seen the other person's first message (and vice versa).
When the protocol is done, if the two people used the same secret words, they'll wind up with the same secret encryption key, and nobody else will know the key. If they used different words, they'll wind up with random strings. The file transfer uses the shared key to encrypt the bulk data.
Your client will generate a random wormhole code (random words plus server-allocated mailbox number) and run the protocol exactly once. It will generate and send its first message, wait for the partner's first message, then generate and send the second message, wait for the partner's second message, compute the shared key, do a test to see if it matches the other side (send a hash of the key), negotiate a direct connection if possible, then encrypt and transmit the file data.
If an attacker is trying to guess your code, their only option is to pretend to be your intended recipient and follow the same protocol. They watch the server and learn the mailbox number: that part isn't secret. But then, to send their first message, they have to commit to some particular secret words. And they don't get to find out if they were right or not until they see your second message, by which point your client knows that this "one shot" has been used up, and it's either correct (the key-verification hash matches) or it's not (or the attacker disconnects and runs away, in the hopes of getting you to blame a flaky network instead of suspecting an attacker).
If it fails, the client tells you that fact and quits, and you have to re-run the program (getting a brand new random wormhole code) to try again. Which means the attacker is back to square one: they know their first guess was wrong, but now the code is different, so their second guess has exactly the same chances of being right as the first guess.
Thanks for the clear explanation.
https://www.youtube.com/watch?v=oFrTqQw0_3c&t=1775s
Hope it helps, it's a good question.
I personally love the idea of using Diceware words (specifically, the EFF shortlist version). Fairly high security can be achieved with 3 only or 4 words (at 10 bits of entropy per word, you get a billion possibilities with just 3 words).
Maybe Magic Wormhole already has that option, I haven't checked. In any case, I would like whatever is the default to be raised to at least 20 bits of entropy.
see also https://wormhole.app/
It uses a pair of helper servers (that I run), for which the source is also on github. But the protocol (implemented in the client, not the server) is carefully designed to be resistant against server misbehavior.
So you can either study the client and convince yourself the protocol is indeed secure, or rely upon my claims that my code is working as advertised. But you don't need to rely upon my claims that my servers are not snooping or interfering: that's protected by the protocol.
This is what I could find for wormhole.app source: https://github.com/SocketDev/wormhole-crypto
aww, thanks :)
BTW for anyone reading, https://wormhole.app/ is awesome and serves a very similar purpose, but uses entirely different technology (no PAKE) and has a different security model.
In my (https://magic-wormhole.io) world, we've kicked around ways to make a good browser-based client (and I've tried to prepare the protocols to work well there), but I haven't had time to pursue any of them. The tasks include 1: port everything to JS (or take the core of the Rust port and compile it to WASM, then write an IO layer in JS), 2: glue it to the browser's file/blob upload/download APIs, 3: settle on a trusted-application security model.
To make it work in a vanilla browser with no setup phase, you're pretty much limited to relying upon the webserver from which you get the page, which is the model wormhole.app provides. Other options include using an addon (which shifts the reliance set slightly), or running some sort of Electron thing (making it not really a browser app) that you get from some distribution channel (debian, homebrew, etc) which shifts the reliance set in a better direction.. at least you're probably getting the same application as everybody else using that distribution, vs a webserver that could conceivably serve up a different version each time.
There is a world of difference between what Magic Wormhole can promise and what Wormhole.app can promise. Magic Wormhole relies entirely on clientside cryptography; once you have it installed, you can trust that it's doing what it says on the tin. Which means you can reasonably use it operationally.
"Wormhole.app" --- which has a frustrating name, given the distinction --- demands that you trust the server, since the server can on every transaction defeat the cryptography you're using.
If someone owns up a Magic Wormhole relay server, there's not much they can plausibly do to intercept the files you send. But if someone owns up Wormhole.app, they can, I believe, quietly pick up and store people's files.
Incidentally, apropos none of this: I've been using the Golang https://github.com/psanford/wormhole-william port on some of my machines for a year now, interoperating with the standard Python Magic Wormhole, and it works great.
Magic Wormhole is an achievement. I wrote a blog post about modern cryptographic tools, and what I have to say about Magic Wormhole is that everyone I've introduced to it immediately starts wormholing all sorts of stuff; it's kind of addictive. Thanks for designing it!
I'm Brian Warner.
The standard criticism of web-based apps is that you have no guarantee that the code you receive will be the same as that which you received on your previous visit. (This ignores problems with self-updating desktop apps, but let's pretend users make informed decisions about every new version published).
Fortunately there is, at least in principal, a way of achieving TOFU for web apps. It relies on the bookmarklet/SRI trick[0], which lets the user store the hash of a script which bootloads the rest of the application. The major downside with this is that the browser's address bar shows a Data URI rather than the domain of your app. That limitation wouldn't exist, though, if browsers supported Hashlinks[1].
[0] https://news.ycombinator.com/item?id=17776456
[1] https://datatracker.ietf.org/doc/html/draft-sporny-hashlink-...
For a small number of files, I currently just email them. If the file is too big, Google Drive or MS OneDrive can be used to send a link. This works across any OS and form factor.
For bulk downloads (e.g. downloading all photos/videos I took on a certain day), I plug my phone into my PC via USB. Navigation and selection using the file browser on the PC is much nicer than selecting files on the phone.
Does Wormhole and Croc enable use cases not covered here?
* You're sitting next to someone at a conference (remember those?) and want to hand them a file: fewer steps than email, the wormhole code is easier to transcribe than most email addresses, the file lands where you want it to rather than in a spam folder somewhere, and neither of your email providers or the network in between them can snoop on or modify the data in transit.
* You're ssh'ed into a remote machine, via two layers of proxy servers, deep in a directory structure with lots of spaces and quotes and backslashes and other shell metacharacters in the path, and you want to transfer a file from there back to your desktop. You have no idea how to quote everything properly. So you wormhole it to yourself.
* I'm on zoom or the phone with a friend and want to send something from my desktop machine to their laptop. I can read the wormhole code off the sending machine, speak it to them over the phone, they can type it into their machine. The codes are optimized for spoken clarity.
* I'm debugging something on the little computer attached to my television and want to copy a logfile off to a real machine. I've got a terminal window open on the screen, and a shell, but that account doesn't have an email address, nor is it listening on SSH. I could write a python one-liner that listens on an HTTP port, but there's no security to that. I can 'wormhole send LOGFILE' and read the code from the screen, and type it into my laptop.
By "safely" I mean: confidentiality against anything outside your two computers (eavesdropper only learns the length of the data, as is true for most networks), and integrity (nobody in the middle can modify the file, or cause you to receive something different than what your partner sent). The security of most common file transfer methods depends upon some intermediate server, or two, or a dozen (in the case of email).
If by "untrusted computers" you're making a distinction between distributing files to computers that you already know about, vs to computers that you've just met, then yes, that's exactly right. If your laptop and your desktop already know about each other, there are a bunch of tools that work better for a lot of cases, like a shared network filesystem or AirDrop. Magic-wormhole is kinda aimed at how to introduce two machines that don't already have a connection. The wormhole code is a way to leverage the connection between the humans who control those computers, into a secure shared encryption key between the computers themselves.
I know nothing about computers. If the clients successfully connect, the file goes from A -> B, but if the connection fails, it goes from A -> relay server -> B? What conditions might cause the connection to fail?
Specifically if the clients are behind NATs, having a third party server coordinate can help.
I need to build some better stats dashboards, but at a glance it looks like maybe a third of the connections wind up using that relay. I'd like to add better hole-punching code (using WebRTC sounds like the right approach), but haven't had the time or found the right library yet.
> You want to provide your users with a relay that fails at different times than the official one
What are your costs for running the official relay server? Do you have plans for if/when they significantly increase?
I might also change the transit relay to throttle the connection somewhat after some total number of bytes have been transferred (but that takes actual code, and switching providers would be easier). I'm really glad folks are using it, but I do sort of think that >10GB at a time is a bit much. But I don't have a way to notify a given user about any sort of soft limit like that (the transit relay has no idea how much you're going to send ahead of time, and doesn't have a notification channel other than throwing an error).
I've also been meaning to figure out NAT hole punching for years now, and the thought has always been that hole-punching will save a lot of the server bandwidth by making direct connections happen a larger percentage of the time.
So you need to have a secure method of communication to transfer the code? Then why not just use whatever that is to transfer stuff?
How is this end to end encryption without any identity management? How do you know who you are exchanging stuff with? How is this different than just regular encryption?
Because sometimes that secure method of communication is speech. This is a particularly good utility for transferring information to parties that you can talk to verbally. Also, a bit quicker than plugging a USB stick in.
1. you can't start downloading on the other side until the upload is complete - for large transfers this is a significant delay
2. the Telegram operators can read your files
python -m http.server 8000This is a cli application. I am not aware of them also offering a web site, although that would certainly be a great addition.
lotharrr (the author of magic-wormhole) gave kind and valuable feedback when I posted it on HN [1].