4 पॉइंट द्वारा GN⁺ 2024-08-18 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Magic Wormhole एक कंप्यूटर से दूसरे कंप्यूटर पर मनचाहे आकार की फ़ाइलें, directories और छोटे text को सुरक्षित रूप से ले जाने के लिए library और wormhole command-line tool प्रदान करता है
  • ट्रांसफर के दोनों सिरों की पहचान एक ही wormhole code से होती है; आम तौर पर sending device code बनाकर दिखाता है और receiving device में उसे दर्ज किया जाता है
  • code छोटा होता है और ऐसे शब्दों की सूची का उपयोग करता है जिन्हें इंसान आसानी से बोल सकें; receiving side code words के लिए tab autocompletion देती है, इसलिए आम तौर पर कुछ अक्षर ही टाइप करने पड़ते हैं
  • wormhole code one-time use होता है, उसे याद रखने की ज़रूरत नहीं होती, और program अलग repositories में मौजूद दो servers—mailbox server और transit relay—का उपयोग करता है
  • Magic Wormhole MIT License के तहत वितरित होता है, Python 3.10 या उससे ऊपर के साथ compatible है और 3.12 तक tested है

Magic Wormhole क्या प्रदान करता है

  • Magic Wormhole एक ऐसा project है जिसका लक्ष्य “एक कंप्यूटर से दूसरे कंप्यूटर पर सुरक्षित रूप से लाना” है
  • package दो रूप प्रदान करता है
    • Library

      • wormhole नाम का command-line tool
      • transfer targets में ये शामिल हैं
      • मनचाहे आकार की files
      • directories
      • छोटे text snippets

wormhole code आधारित transfer तरीका

  • दो endpoints की पहचान एक ही wormhole code का उपयोग करके होती है
  • सामान्य flow इस प्रकार है
    • sending device code बनाता है और screen पर दिखाता है
    • receiving device में वह code दर्ज किया जाता है
  • code छोटा होता है, इंसानों के लिए बोलने में आसान होता है, और ध्वन्यात्मक रूप से अलग पहचाने जाने वाले शब्दों की सूची का उपयोग करता है
  • receiving side code words के लिए tab autocompletion देती है, इसलिए आम तौर पर कुछ अक्षर ही टाइप करने पड़ते हैं
  • wormhole code one-time use होता है और उसे याद रखने की ज़रूरत नहीं होती

Server configuration

  • यह program दो servers का उपयोग करता है, और हर server का source code अलग repository में है

Documentation और presentation material

  • पूरा documentation Magic Wormhole documentation या repository की docs/ subdirectory में देखा जा सकता है
  • PyCon 2016 presentation material उपलब्ध है

License, compatibility और installation

  • Magic Wormhole MIT License के तहत वितरित होता है और विस्तृत जानकारी LICENSE file में है
  • library Python 3.10 या उससे ऊपर के साथ compatible है, और 3.12 तक tested है
  • Magic Wormhole package कई operating systems में शामिल है
  • OS package के बिना install करना हो तो Installation docs का पालन किया जा सकता है

1 टिप्पणियां

 
GN⁺ 2024-08-18
Hacker News राय
  • अजीब network environments में systems के बीच बड़ी files ट्रांसफर करने के लिए इसे कई सालों से इस्तेमाल कर रहा हूं, और यह लगभग हमेशा बिना दिक्कत काम करता है
    एक थोड़े अलग test में, मैंने खुद Magic Wormhole relay चलाकर बहुत बड़ी file copies को तेज़ और ज़्यादा reliable बनाने के लिए tune भी कर पाया
    Google Drive से अभी भी चिढ़ है, क्योंकि tens of GB files डालते ही यह बहुत बार टूट जाता है
    https://www.jeffgeerling.com/blog/2023/my-own-magic-wormhole...

    • यह काफी गंभीर बात है कि ऐसे tools आगे नहीं बढ़ रहे। करीब 6 साल पहले PAKE के आसपास काफी activity थी, लेकिन अभी भी slow relay server के बिना इस्तेमाल करने के लिए reliable hole punching की कमी है, और लंबी high-bandwidth paths पर bulk data तेज़ी से भेजने के लिए कई parallel TCP streams या carefully designed UDP protocol की भी कमी है
      पिछली बार जब मैंने Wormhole से bulk data भेजने की कोशिश की, तो bandwidth-delay product की वजह से यह 20MB/s तक सीमित हो गया, और आखिर में साधारण HTTP पर aria2c और multiple streams का इस्तेमाल करके 1Gbps line को पूरा saturate किया
      मुझे नहीं लगता कि PAKE-based tools long-distance large transfers में Globus जैसे over-complicated proprietary tools को पूरी तरह replace न कर सकें, लेकिन हकीकत अभी भी अतीत में अटकी है
    • मुझे उम्मीद थी कि relay server सिर्फ NAT पार करने के लिए initial handshake में इस्तेमाल होगा, और उसके बाद transfer P2P होगा
      असली data relay से तभी गुज़रेगा जब कुछ network restrictions होंगी; वरना सोचता हूं कि free relay चलाने का खर्च कैसे manage होता होगा
    • scp, LocalSend, magic wormhole, sharedrop.io को मिलाकर इस्तेमाल करता हूं, और जल्दी हो तो local download के लिए कभी-कभी python -m http.server भी इस्तेमाल करता हूं
      अफसोस है कि यह xkcd comic 2011 जैसी ही आज भी relevant है: https://xkcd.com/949/
  • यह उन single-purpose utilities में से एक है जो एक काम बेहद अच्छी तरह करती है, लेकिन इतनी अच्छी और चुपचाप काम करती है कि पूरी तरह नज़र से छूट जाती है
    ऐसे शानदार creations के लिए और ज़्यादा आभारी होना चाहिए, ऐसा महसूस होता है

  • इसी तरह के project के रूप में अच्छे features वाले croc का इस्तेमाल कर रहा हूं: https://github.com/schollz/croc

    • पहले https://file.pizza काफी इस्तेमाल करता था, क्योंकि उसका नाम याद रखना आसान था
    • शायद wormhole का इस्तेमाल जारी रखना ही बेहतर हो सकता है
      https://redrocket.club/posts/croc/
  • मैंने wormhole से एक बार 70GB file ट्रांसफर की थी। पहले यह बिल्कुल संभव नहीं लगता था
    मुझे पता था कि relay server bandwidth इस्तेमाल हुई है, इसलिए तुरंत Debian को donate किया। मेरी जानकारी में apt package version वाला relay Debian चलाता था

    • मैं Magic Wormhole का लेखक हूं। relay server मैं चलाता हूं, लेकिन Debian maintainer इस बात पर राज़ी हुए थे कि package version में alternative hostname डाल दें
      यह upstream git code वाले address की ओर इशारा करने वाला CNAME है, ताकि अगर cost burden आए तो उसे आसानी से बदला जा सके
      अब तक यह समस्या नहीं बनी है; हर महीने करीब 10–15TB move होता है, लेकिन वैसे भी मैं जिन दूसरे servers को rent करता हूं उनके साथ bandwidth pool share करता हूं, इसलिए overage fee सिर्फ एक बार देनी पड़ी है
      अगर कोई मुझे donate भी करे, तो सच कहूं तो शायद उसे सीधे Debian को भेज दूंगा
      कभी-कभी जब कोई आधा terabyte बहा देता है, तो सोचता हूं कि इसे किसी धीमे लेकिन flat-rate provider पर shift कर दूं, या बेहतर rate-limiting code implement करूं, या आखिरकार वह protocol extension implement करूं जिसमें client पहले से बताए कि कितना data भेजना है और server उसे reject कर सके
      लेकिन अभी तक यह priority कभी इतनी high नहीं हुई
    • यहां तक नीचे आने पर core बात थोड़ी दिखने लगती है। सोच रहा हूं कि क्या यह एक single server या कुछ donation-based relay servers पर निर्भर है
      NAT-to-NAT traversal सबसे बड़ा motivation है, यह साफ है। अगर दोनों तरफ barriers न हों तो बस scp, rsync, sftp इस्तेमाल कर सकते हैं
      यह भी जानना है कि क्या relay server configure किया जा सकता है। कुछ हद तक hardcoded जैसा दिखा
    • wormhole transfer protocol direct connection की कोशिश करता है ताकि relay के जरिए data transfer से बचा जा सके
  • संयोग से यह भी मिला। “नए features और improvements के साथ Magic Wormhole का Rust implementation”: https://github.com/magic-wormhole/magic-wormhole.rs

    • इसमें दूसरे implementations में मौजूद कुछ features नहीं हैं। उदाहरण के लिए zip भेजकर उसे सही तरह से extract करवाने की capability नहीं है
  • मैं author हूं। सवाल हों तो जवाब दे सकता हूं

    • wormhole काफी इस्तेमाल करता हूं, लेकिन यह ssh/scp जितना सुरक्षित है या नहीं, यह जांचना टालता रहा हूं, इसलिए हमेशा भेजने वाली file को पहले gpg से encrypt करके फिर wormhole में डालता हूं
      क्या यह paranoid behavior है?
    • मुझे इसकी जरूरत बस नई machine पर VM bootstrap करने के लिए थी, लेकिन आखिर में इसे कई कामों के लिए इस्तेमाल करता रहा। शानदार project है
    • कुछ सवाल हैं। क्या कोई app है, और जब data QR code में रखने के लिए बहुत बड़ा हो तो क्या password को QR code से share किया जा सकता है
      quantum computing से निपटने की आपकी क्या योजना है, और store-now-decrypt-later attacks से बचने के लिए post-quantum cryptography पर switch करने की योजना है या नहीं
      यह भी जानना चाहता हूं कि protocol को TURN server जैसे ज़्यादा general proxy के ऊपर extend किया जा सकता है या नहीं
  • कुछ और tools भी हैं
    p2pcopy https://github.com/psantosl/p2pcopy
    pcp https://github.com/dennis-tra/pcp
    wormhole-william https://github.com/psanford/wormhole-william

  • शायद बेवकूफी भरा सवाल हो, लेकिन iPhone और MacBook के बीच यह करने का सबसे अच्छा तरीका क्या होगा?
    AirDrop policy के चलते disabled है, iCloud storage आलस की वजह से भर चुकी है, और बाकी सभी devices पर Syncthing इस्तेमाल करता/करती हूं, लेकिन company iPhone पर इस्तेमाल करने लायक client नहीं मिला

    • मैं sharedrop.io इस्तेमाल कर रहा/रही हूं, यह open source भी है और काफी अच्छा काम करता है: https://github.com/szimek/sharedrop
      खास तौर पर यह पसंद है कि किसी भी device पर third-party app install करने की जरूरत नहीं पड़ती
      Mac के Safari में आम तौर पर Chrome जितना अच्छा नहीं लगता, लेकिन मैंने Windows से iOS, Windows से macOS, और macOS से iOS पर बिना install किए transfer किया है
    • अगर same network पर हैं, तो cross-platform open source AirDrop alternative LocalSend है: https://github.com/localsend/localsend
    • Tailscale का killer feature TailDrop है। तरह-तरह के devices के बीच भरोसेमंद तरीके से files transfer कर सकता है
    • दोनों devices को same WiFi network से connect करें और python -m http.server जैसे HTTP server का इस्तेमाल कर लें
    • https://mobiussync.com/
  • संबंधित पोस्ट: Magic Wormhole: Get things from one computer to another, safely - https://news.ycombinator.com/item?id=27262193 - मई 2021, 178 comments

  • Tailscale में भी अब Taildrop है: https://tailscale.com/kb/1106/taildrop

    • Taildrop भी ठीक है, लेकिन अगर command-line tool से आपको दिक्कत नहीं है तो Wormhole कहीं ज्यादा flexible और use करने में आसान है
      यहां हम Tailscale को काफी व्यापक रूप से use करते हैं, फिर भी files अक्सर wormhole से ही भेजते हैं