Transfer.sh – Easy file sharing from the command line
transfer.sh
transfer.sh
https://github.com/magic-wormhole/magic-wormhole
Magic Wormhole uses an end-to-end PAKE to create an encrypted transport between two points in the Internet, using a rendezvous server.
It doesn't store files, which is almost never what you want; it's not a way to send a file and have 10 or 100 people download it. But it's probably the best way to get a file through a bunch of arbitrary network controls, NATs, &c to a desired destination. There's a Go implementation as well:
https://github.com/psanford/wormhole-william
... which is what I use most of the time. If you haven't played with it, I highly recommend it.
ls -lah | croc send
works.Thanks for this link!
https://redrocket.club/posts/croc/
I would hesitate a bit before rushing to use cool kids’ software (until it’s sufficiently proven).
There are a lot of alternatives to Magic Wormhole. Unfortunately, most of them are pretty sketchy. One thing I can say about Magic Wormhole: it's not sketchy.
This is the main feature I'm curious about.
Also why no attempt at NAT traversal; instead relaying traffic through a transit server.
It's almost as if the project's purpose is not so much to create superior file transfer but more just to showcase a use of SPAKE2.
That's my feeling too. See my rant: https://news.ycombinator.com/item?id=24519895
Anyway, the thead is very short, so if there were any corrections there, people can read them and make their own mind.
1. it's easy to get WebDAV running, most of HTTP server support it through modules. or you could run it with rclone, on non-standard port or behind a reverse proxy
2. I don't share upload access with others, it's only for my own use. and this way I don't need to deal with huge uploads or illegal contents.
3. I could also just curl it, the uploaded content will have proper mime types. It's convenient for me to share pictures and videos this way on Telegram because it generate previews for me, and it's easy to just copy-paste a link to send to more than one person.
curl https://user:password@domain.tld:port/path/to/file.png -T file.png
4. I could use WebDAV for various other cases, such like keeweb instance, Orgzly (android) notes syncing, saving keepass database etc.Could write a simple shell script to include random characters in the URL, copy url to clipboard etc, such like this one I wrote [1]
btw for plain text, I prefer to use fiche [2] a simple netcat based pastebin. I have a public fiche instance [3] which allow people to upload with bash/zsh/netcat and show webpage with syntax highlighting. Text usually consume very a few of storage and not that "sensitive" like some photos and videos could be, so it's less troublesome to provide a public service for that. I've also write a Telegram bot for easily upload to my pastebin.
Lifespan of my WebDAV uploads and pastes are 1 month, it's very easy to clean them with crontab
@daily find ~/webdav/tmp -mindepth 1 -maxdepth 1 -type f -ctime +30 -delete
[1] https://ezup.dev/git/dotfiles/file/.local/bin/eztmp.htmlThe only downside as far as I can tell is WebDAV support in Windows Explorer has problems with modern TLS setups.
Nowadays I mainly use linux distro, the main use case of accessing files from LAN server is watching movies or TV series. I just create m3u/m3u8 playlist on server and play it through HTTP (not necessarily use WebDAV in this case). this way could avoid potential troubles I could get from mounting a remote directory.
# LAN server
ls -1 *.mp4 >playlist.m3u
# computer, mpv with "save-position-on-quit"
mpv http://raspberrypi.lan/path/to/playlist.m3u- End-to-end encrypted
- Send up to 10 GB and get a share link in 1 second
- Files are hosted for 24 hours so you don't have to be online at the same time as the receiver
- There's no need to wait for your files to finish uploading before you can copy the link and send it to your recipient. The recipient can start downloading even before the files have finished uploading.
- Browser-based, nothing to install
- Uses RFC 8188, same as Firefox Send. Open source here: https://github.com/SocketDev/wormhole-crypto
Public instance: https://send.vis.ee/
CLI: https://github.com/timvisee/ffsend
Other instances: https://github.com/timvisee/send-instances#instances
I think that's the reason, why this service is not very interesting for illegal content.
Immorality is extremely nuanced and heavily influenced by society. Eg. homosexulity is illegal in some south Asian countries such as Indonesia, but is not seen as immoral in most parts of the world.
Conflating the two - or preferring the term "immoral" over "illegal" inherently lends itself to allowing people to rationalise illegal activities - such as child pornography as only being "disapproved of by society" (morality being a fairly abstract concept) rather than an act which violates the laws of the land and is officially and formally condemned by the government.
Why do you need to rationalize illegal activities if they aren't immoral?
The fact that Mozilla's well-known name was attached didn't help. That made unsuspecting users trust malicious uploads/links.
What advantages for the intended use cases does transfer.sh have over netcat invented 26 years ago? I know some people who have used nc for those entire 26 years to xfer files point-to-point from the command line.
Netcat has it's uses, but one of them is not guiding your friends and/or family through a terminal in order for them to receive some photos you took last summer vacation.
It excels at doing things "right now". If I have a terminal window open on a server in France and one in the US; then I can easily move that file. However, If I have to move my body to the target location before I can copy the file it doesn't work as well. (Need to jump through a few other hoops that make it more challenging.)
Protip: ALWAYS grab the hash of the file before you send it, and compare.
2nd Protip: Encrypt your file(s) before you send them.
Something like this is decent for moving a file at your leisure, or to give a copy to somebody else at their leisure.
Target PC opens a port and starts listening (outputting to file)
Sending machine establishes a connection to the listening port, and starts copying the file.
Example (hide a file transfer as DNS traffic)
Listening computer:
nc -l -u -p 53 > output.file
Sending computer: cat original.file > nc -u [destination ip address] 53
In this case you'd be dumb not to encrypt the file before transit. And as I mentioned already make sure you have a hash of the original.You can also use TCP. These are sneaky/simple ways to move files around. Downside: You need to poke a hole in a firewall, but options exist for that too.
ssh/scp downside: You need an account on target PC to connect to. nc downside: you need an open port on the listening PC.
- Your 'sending' snippet should use | instead of >.
- ports 1-1023 are privileged.
I thought that looked a bit wrong, but ignored my gut. Privileged port: I'm root anyway. =) I can't make it too easy on these kids.
1 tremendous advantage to netcat:
SPEED.
This is the only "real-world" way to test line speed. 0 overhead, no faffing about services.
If you can't get line-rate speed on your LAN with this your hardware needs to be looked at.
iperf is handy, netcat is raw and real.
So yeah, just being able to copy curl commands from a website certainly has value over configuring complicated commands.
> Disclaimer
> The service at https://transfersh.com is of unknown origin and reported as cloud malware.
Thank you! :)
I look forward to seeing a CLI for wormhole.app though
curl usage is available via: "curl nopaste.net".
https://pomfcrawl.pythonanywhere.com/
Though it hasn't ran for a few months now, many of them are still up.
I find that's a very easy approach.
It won't remove the file transfer problem though, but perhaps a shared git-annex repo or a memory stick would do.
lots of previous drama with it being declared shut down in Nov 2018 and then resurrected and then complaints of it being down again etc etc
I guessed but how could I have identified the string as a base64 hash?
Same, and IMO easier to remember (:
if i wanted to upload files, i could just do that on my own webserver.
what i am looking for is: download via browser sharing from commandline or browser shared file is availble as long as the share-process keeps running (ideally also) self-hosted relay servers