4 puan yazan GN⁺ 2024-08-18 | 1 yorum | WhatsApp'ta paylaş
  • Magic Wormhole, bir bilgisayardan diğerine rastgele boyutta dosyaları, dizinleri ve kısa metinleri güvenli şekilde taşımak için bir kütüphane ve wormhole komut satırı aracını sunar
  • Aktarımın iki ucu aynı wormhole code ile tanımlanır; genellikle gönderen cihaz kodu üretip gösterir ve bu kod alıcı cihaza girilir
  • Kod kısa ve insanların telaffuz etmesi kolay sözcük listelerini kullanır; alıcı taraf kod sözcükleri için sekme ile otomatik tamamlama sunduğundan genelde yalnızca birkaç harf girmek yeterlidir
  • wormhole code tek kullanımlıktır; ezberlemek gerekmez ve program ayrı depolardaki mailbox server ile transit relay olmak üzere iki sunucu kullanır
  • Magic Wormhole MIT lisansı ile dağıtılır, Python 3.10 ve üzeriyle uyumludur ve 3.12'ye kadar test edilmiştir

Magic Wormhole'un sunduğu özellikler

  • Magic Wormhole, “bir bilgisayardan diğerine güvenli şekilde aktarma” hedefiyle geliştirilmiş bir projedir
  • Paket iki biçim sunar
    • Kütüphane

      • wormhole adlı bir komut satırı aracı
      • Aktarılabilen içerikler şunları kapsar
      • Rastgele boyutta dosyalar
      • Dizinler
      • Kısa metin parçaları

wormhole code tabanlı aktarım yöntemi

  • İki uç nokta aynı wormhole code kullanılarak tanımlanır
  • Genel akış şu şekildedir
    • Gönderen cihaz kodu üretir ve ekranda gösterir
    • Alıcı cihazda bu kod girilir
  • Kod kısa, insanların telaffuz etmesi kolaydır ve fonetik olarak ayırt edilebilen sözcük listelerini kullanır
  • Alıcı taraf kod sözcükleri için sekme ile otomatik tamamlama sunduğundan genelde yalnızca birkaç harf girmek yeterlidir
  • wormhole code tek kullanımlıktır ve ezberlenmesi gerekmez

Sunucu yapısı

Belgeler ve sunum materyalleri

Lisans, uyumluluk ve kurulum

  • Magic Wormhole MIT lisansı ile dağıtılır; ayrıntılar LICENSE dosyasında yer alır
  • Kütüphane Python 3.10 ve üzeri ile uyumludur ve 3.12'ye kadar test edilmiştir
  • Magic Wormhole paketi çeşitli işletim sistemlerine dahil edilmiştir
  • OS paketi olmadan kurmak için Installation docs izlenebilir

1 yorum

 
GN⁺ 2024-08-18
Hacker News görüşleri
  • Tuhaf ağ ortamlarında sistemler arasında büyük dosyalar taşımak için yıllardır kullanıyorum; neredeyse her zaman sorunsuz çalışıyor
    Biraz daha sıra dışı bir test olarak kendi Magic Wormhole relay’imi çalıştırıp çok büyük dosya kopyalamalarını daha hızlı ve kararlı hale getirecek şekilde ayarlayabildim
    Google Drive’a onlarca GB’lık dosya atınca çok sık çöküp kaldığı için hâlâ sevmiyorum
    https://www.jeffgeerling.com/blog/2023/my-own-magic-wormhole...

    • Bu tür araçların gelişmemesi epey kritik. Yaklaşık 6 yıl önce PAKE etrafında hareketlilik vardı ama hâlâ yavaş relay sunucuları olmadan kullanmak için güvenilir hole punching’den ve uzun, yüksek bant genişlikli rotalarda toplu veriyi hızlı göndermek için birden çok eşzamanlı TCP stream’den ya da dikkatle tasarlanmış bir UDP protokolünden yoksunuz
      Wormhole ile en son büyük miktarda veri göndermeye çalıştığımda bant genişliği-gecikme çarpanı yüzünden 20MB/s ile sınırlanmıştım; sonunda sıradan HTTP üzerinde aria2c ve çoklu stream kullanarak 1Gbps hattı tamamen doldurdum
      PAKE tabanlı araçların uzun mesafeli büyük aktarımlarda Globus gibi aşırı karmaşık, tescilli araçların yerini tamamen alamaması için bir neden görmüyorum; ama gerçeklik geçmişte kalmış durumda
    • Relay sunucusunun yalnızca NAT’ı aşmak için ilk handshake’te kullanılacağını, sonrasında aktarımın P2P olacağını sanmıştım
      Gerçek verinin relay’den ancak bazı ağ kısıtları olduğunda geçmesi gerekir; aksi halde ücretsiz relay işletme maliyetini nasıl karşıladıklarını merak ediyorum
    • scp, LocalSend, magic wormhole ve sharedrop.io’yu birlikte kullanıyorum; acelem olduğunda yerel indirme için ara sıra python -m http.server da kullanıyorum
      Bu xkcd karikatürünün 2011’de olduğu kadar hâlâ geçerli olması üzücü: https://xkcd.com/949/
  • Bu, tek bir işi inanılmaz iyi yapan tek amaçlı yardımcı araçlardan biri; o kadar iyi çalışıyor ve o kadar göze batmıyor ki tamamen fark edilmeden kalıyor
    Böyle harika üretimlere daha çok minnet duymamız gerektiğini hissediyorum

  • Benzer bir proje olarak iyi özellikleri olan croc’u kullanıyorum: https://github.com/schollz/croc

  • wormhole ile bir kez 70GB dosya aktardım. Eskiden asla yapamayacağım bir şeydi
    Relay sunucusunun bant genişliğini kullandığımı bildiğim için hemen Debian’a bağış yaptım. apt paket sürümündeki relay’i Debian’ın işlettiğini sanıyordum

    • Magic Wormhole’un yazarıyım. Relay sunucusunu ben işletiyorum; ancak Debian bakımcısının paket sürümüne alternatif bir host adı koymasına onay verdim
      Upstream git kodunun kullandığı adresle aynı yere işaret eden bir CNAME; amaç, maliyet yükü oluşursa kolayca değiştirebilmekti
      Şimdiye kadar sorun olmadı; ayda yaklaşık 10-15TB taşıyor ama zaten kiraladığım diğer sunucularla bant genişliği havuzunu paylaştığı için yalnızca bir kez kota aşımı ücreti ödedim
      Biri bana bağış yapsa açıkçası muhtemelen aynen Debian’a gönderirim
      Ara sıra biri yarım terabayt akıttığında, daha yavaş ama sabit ücretli bir sağlayıcıya geçmem, daha iyi hız sınırlama kodu yazmam ya da istemcinin aktaracağı veri miktarını önceden bildirdiği ve sunucunun reddedebildiği protokol genişletmesini nihayet uygulamam gerektiğini düşünüyorum
      Ama henüz önceliği yeterince yükselmedi
    • Ancak bu kadar aşağı inince işin özü biraz görünüyor. Bunun tek bir sunucuya mı yoksa az sayıda bağış tabanlı relay sunucusuna mı dayandığını merak ediyorum
      NAT’tan NAT’a geçişin en büyük motivasyon olduğu açık. İki tarafta da duvar yoksa zaten scp, rsync, sftp kullanırsınız
      Relay sunucusunun ayarlanıp ayarlanamadığını da merak ediyorum. Bir ölçüde hard-code edilmiş gibi görünüyordu
    • wormhole aktarım protokolü, relay üzerinden veri aktarımından kaçınmak için doğrudan bağlantı kurmayı dener
  • Tesadüfen bunu da buldum. “Yeni özellikler ve iyileştirmeler içeren Magic Wormhole’un Rust implementasyonu”: https://github.com/magic-wormhole/magic-wormhole.rs

    • Diğer implementasyonlarda olan bazı özellikler eksik. Örneğin zip gönderip düzgün açılmasını sağlama özelliği yok
  • Yazarıyım. Sorular varsa yanıtlayabilirim

    • wormhole’u çok kullanıyorum ama ssh/scp kadar güvenli olup olmadığını araştırmayı ertelediğim için, aktaracağım dosyayı her zaman önce gpg ile şifreleyip sonra wormhole’a koyuyorum
      Bu paranoyakça mı?
    • Sadece yeni bir makinede VM’i bootstrap etmek için ihtiyacım olmuştu, ama sonunda birçok amaçla kullanmaya devam ettim. Harika bir proje
    • Birkaç sorum var. Bir uygulaması var mı; veri QR koda sığamayacak kadar büyük olduğunda parolayı QR kod ile paylaşmak mümkün mü merak ediyorum
      Kuantum bilişime nasıl karşılık vermeyi planladığınızı, “şimdi sakla, sonra şifresini çöz” saldırılarına karşı kuantuma dayanıklı kriptografiye geçme planınız olup olmadığını da merak ediyorum
      Protokolün TURN sunucusu gibi daha genel bir proxy üzerine genişletilip genişletilemeyeceğini de bilmek isterim
  • Başka birkaç araç da var
    p2pcopy https://github.com/psantosl/p2pcopy
    pcp https://github.com/dennis-tra/pcp
    wormhole-william https://github.com/psanford/wormhole-william

  • Aptalca bir soru olabilir ama iPhone ile MacBook arasında bunu yapmanın en iyi yolu ne?
    AirDrop politika gereği devre dışı, iCloud depolama alanım tembellikten dolup taştı, diğer tüm cihazlarda Syncthing kullanıyorum ama şirket iPhone'unda kullanabileceğim bir istemci bulamadım

    • sharedrop.io kullanıyorum; açık kaynaklı da ve oldukça iyi çalışıyor: https://github.com/szimek/sharedrop
      Özellikle hiçbir cihaza üçüncü taraf uygulama kurmak gerekmemesini seviyorum
      Mac'teki Safari'de genelde Chrome kadar iyi çalışmıyor gibi, ama Windows'tan iOS'a, Windows'tan macOS'e, macOS'ten iOS'a kurulum yapmadan aktarım yapmışlığım var
    • Aynı ağdaysanız, çapraz platform açık kaynaklı bir AirDrop alternatifi olan LocalSend var: https://github.com/localsend/localsend
    • Tailscale'in öldürücü özelliği TailDrop var. Her tür cihaz arasında güvenilir şekilde dosya aktarabiliyor
    • İki cihazı aynı WiFi ağına bağlayıp python -m http.server gibi bir HTTP sunucusu kullanmanız yeterli
    • https://mobiussync.com/
  • İlgili yazı: Magic Wormhole: Get things from one computer to another, safely - https://news.ycombinator.com/item?id=27262193 - Mayıs 2021, 178 yorum

  • Tailscale'de de artık Taildrop var: https://tailscale.com/kb/1106/taildrop

    • Taildrop da fena değil, ama komut satırı araçları sizin için uygunsa Wormhole çok daha esnek ve kullanımı daha kolay
      Burada Tailscale'i genel olarak kullanıyor olsak da, dosyaları hâlâ sık sık wormhole ile gönderiyorum