Magic Wormhole: tecnologia para transferir arquivos com segurança entre computadores
(github.com/magic-wormhole)- Magic Wormhole fornece uma biblioteca e a ferramenta de linha de comando
wormholepara mover com segurança arquivos de qualquer tamanho, diretórios e textos curtos de um computador para outro - As duas pontas da transferência são identificadas pelo mesmo wormhole code, e normalmente o dispositivo de envio gera e exibe o código para ser digitado no dispositivo receptor
- O código usa uma lista de palavras curtas e fáceis de pronunciar, e o lado receptor oferece autocompletar com Tab, então geralmente basta digitar apenas algumas letras
- O wormhole code é de uso único, não precisa ser memorizado, e o programa usa dois servidores de repositórios separados: mailbox server e transit relay
- Magic Wormhole é distribuído sob a licença MIT, é compatível com Python 3.10 ou superior e foi testado até a versão 3.12
Recursos oferecidos pelo Magic Wormhole
- Magic Wormhole é um projeto com o objetivo de “levar com segurança de um computador para outro”
- O pacote oferece duas formas
-
Biblioteca
- a ferramenta de linha de comando
wormhole - os alvos de transferência incluem o seguinte
- arquivos de qualquer tamanho
- diretórios
- pequenos trechos de texto
- a ferramenta de linha de comando
-
Método de transferência baseado em wormhole code
- Os dois endpoints são identificados usando o mesmo wormhole code
- O fluxo típico é o seguinte
- o dispositivo de envio gera o código e o exibe na tela
- no dispositivo receptor, esse código é digitado
- O código é curto, fácil de pronunciar e usa uma lista de palavras foneticamente distintas
- O lado receptor oferece autocompletar com Tab para as palavras do código, então normalmente basta digitar apenas algumas letras
- O wormhole code é de uso único e não precisa ser memorizado
Estrutura dos servidores
- Este programa usa dois servidores, e o código-fonte de cada um está em repositórios separados
Documentação e materiais de apresentação
- A documentação completa pode ser consultada na documentação do Magic Wormhole ou no subdiretório
docs/do repositório - Há materiais da apresentação da PyCon 2016
Licença, compatibilidade e instalação
- Magic Wormhole é distribuído sob a licença MIT, e mais detalhes estão no arquivo
LICENSE - A biblioteca é compatível com Python 3.10 ou superior e foi testada até a versão 3.12
- O pacote Magic Wormhole está incluído em vários sistemas operacionais
- Para instalar sem pacote do sistema operacional, basta seguir a documentação de instalação
1 comentários
Opiniões no Hacker News
Uso há anos para transferir arquivos grandes entre sistemas em ambientes de rede estranhos, e quase sempre funciona sem problemas
Em um teste um pouco mais incomum, subi meu próprio relay do Magic Wormhole e consegui ajustá-lo para tornar a cópia de arquivos muito grandes mais rápida e estável
Ainda não gosto do Google Drive, porque ele quebra com frequência demais quando jogo arquivos de dezenas de GB nele
https://www.jeffgeerling.com/blog/2023/my-own-magic-wormhole...
Na última vez que tentei enviar um grande volume de dados com o Wormhole, fiquei limitado a 20 MB/s por causa do produto largura de banda-latência e acabei saturando um link de 1 Gbps usando HTTP comum com aria2c e múltiplos fluxos
Não vejo motivo para ferramentas baseadas em PAKE não substituírem completamente, em transferências grandes de longa distância, ferramentas proprietárias excessivamente complexas como o Globus, mas a realidade ficou presa no passado
Só quando houvesse algumas restrições de rede é que os dados reais passariam pelo relay; se não for assim, fico curioso para saber como bancam o custo de operar um relay gratuito
python -m http.serverpara downloads locais quando estou com pressaÉ uma pena que esta tirinha do xkcd continue tão válida hoje quanto em 2011: https://xkcd.com/949/
Esta é uma daquelas ferramentas utilitárias de função única que fazem uma coisa extremamente bem, mas funcionam tão bem e de forma tão discreta que passam completamente despercebidas
Sinto que deveríamos ser mais gratos por criações excelentes como essa
Uso o croc, um projeto parecido com bons recursos: https://github.com/schollz/croc
https://redrocket.club/posts/croc/
Já transferi uma vez um arquivo de 70 GB com o wormhole. Antes isso seria algo impossível
Eu sabia que estava usando a largura de banda do servidor relay, então doei para o Debian logo em seguida. Eu entendia que o Debian operava o relay da versão do pacote apt
É um CNAME que aponta para o mesmo lugar usado pelo código git upstream, com o objetivo de facilitar a troca caso isso gerasse custos
Até agora não foi um problema; transferimos cerca de 10 a 15 TB por mês, mas ele compartilha um pool de largura de banda com outros servidores que eu já alugo de qualquer forma, então só paguei excedente uma vez
Mesmo que alguém me fizesse uma doação, sinceramente acho que eu simplesmente a repassaria ao Debian
De vez em quando, quando alguém deixa passar meio terabyte, penso que deveria mover para um provedor mais lento, mas com tarifa fixa, ou implementar um código melhor de limitação de velocidade, ou finalmente implementar uma extensão de protocolo em que o cliente informe antecipadamente quanto pretende transferir e o servidor possa recusar
Mas isso ainda nunca chegou a ter prioridade alta o suficiente
É claro que a travessia de NAT para NAT é a principal motivação. Se não houver barreiras dos dois lados, basta usar scp, rsync ou sftp
Também fico curioso se é possível configurar o servidor relay. Parecia estar meio hardcoded
Encontrei isto por acaso também. “Uma implementação em Rust do Magic Wormhole com novos recursos e melhorias”: https://github.com/magic-wormhole/magic-wormhole.rs
Sou o autor. Posso responder perguntas, se houver
Isso é paranoia minha?
Também quero saber como vocês planejam lidar com computação quântica e se há planos de migrar para criptografia pós-quântica para se proteger contra ataques de armazenar agora e descriptografar depois
Também gostaria de saber se o protocolo pode ser estendido sobre proxies mais gerais, como servidores TURN
Há também algumas outras ferramentas
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
Pode ser uma pergunta boba, mas qual seria a melhor forma de fazer isso entre um iPhone e um MacBook?
O AirDrop foi desativado por política, o armazenamento do iCloud está cheio por preguiça, e uso Syncthing em todos os outros dispositivos, mas não encontrei um cliente que eu possa usar no iPhone da empresa
Gosto especialmente do fato de não precisar instalar apps de terceiros em nenhum dispositivo
No Safari do Mac, normalmente parece não funcionar tão bem quanto no Chrome, mas já transferi de Windows para iOS, de Windows para macOS e de macOS para iOS sem instalar nada
python -m http.serverPost relacionado: Magic Wormhole: Get things from one computer to another, safely - https://news.ycombinator.com/item?id=27262193 - maio de 2021, 178 comentários
O Tailscale agora também tem Taildrop: https://tailscale.com/kb/1106/taildrop
Mesmo usando Tailscale em geral por aqui, ainda envio arquivos com frequência pelo wormhole