
magic-wormhole: एक बार के कोड से सुरक्षित फ़ाइल ट्रांसफर
Table of Contents
नमस्ते,
आज मैं एक छोटे CLI टूल के बारे में बताना चाहता हूँ जिसे मैं सपोर्ट और incident के दौरान बार-बार इस्तेमाल करता हूँ: magic-wormhole। यह उस समस्या को हल करता है जो सामान्य कंपनियों में किसी भी “enterprise” कहानी से ज़्यादा आम है: आपको किसी को एक फ़ाइल (या फ़ोल्डर) अभी भेजनी है, लेकिन ईमेल बहुत छोटा पड़ जाता है, क्लाउड लिंक पॉलिसी या कानूनी वजहों से संवेदनशील हो सकता है, और “चलो जल्दी से एक पोर्ट खोल देते हैं” विकल्प नहीं है।
शुक्रवार, 16:47। करीब 60 कर्मचारियों वाली एक कंपनी में तुरंत समस्या है: केंद्रीय फ़ाइल सर्वर धीमा है, यूज़र्स timeouts रिपोर्ट कर रहे हैं, और बाहरी IT प्रोवाइडर logs और एक छोटे config export के साथ support bundle मांग रहा है। bundle लगभग 900 MB का है। ईमेल उसे ब्लॉक कर देता है, SharePoint compliance की वजह से मना है, और ad-hoc FTP खड़ा करना 2026 में ऐसा सिरदर्द है जिसे आप खुद नहीं बनाना चाहते।
यही वह जगह है जहाँ magic-wormhole काम आता है: एक बार का कोड शेयर करो, फ़ाइल को end-to-end एन्क्रिप्शन के साथ ट्रांसफर करो, हो गया।
magic-wormhole क्या है?
magic-wormhole दो कंप्यूटरों के बीच ad-hoc फ़ाइल ट्रांसफर के लिए एक हल्का टूल है। ट्रिक wormhole code है (जैसे 7-coral-lion): दोनों तरफ वही कोड डालते हैं और इससे एक end-to-end एन्क्रिप्टेड कनेक्शन बन जाता है।
महत्वपूर्ण बात यह है कि magic-wormhole को क्या नहीं चाहिए:
- कोई अकाउंट नहीं
- कोई लॉगिन पोर्टल नहीं
- कोई “कहीं अपलोड करो और लिंक शेयर करो” नहीं
- कोई inbound firewall rules नहीं
दोनों पक्षों को बस wormhole इंस्टॉल होना चाहिए और आउटबाउंड इंटरनेट उपलब्ध होना चाहिए। प्रैक्टिकल तौर पर: अगर HTTP(S) आउटबाउंड चलता है, तो magic-wormhole भी अक्सर चल जाता है।
SMB की एक असली कहानी
उस शुक्रवार वाले केस पर वापस आते हैं। प्रैक्टिकल फ्लो आम तौर पर ऐसा होता है:
- support bundle बनाओ (logs, export, कुछ screenshots)।
- वैकल्पिक: एक hash निकालो ताकि बाद में कन्फर्म हो सके कि वही पैकेज आया है।
- bundle को magic-wormhole से भेजो।
- कोड दूसरे चैनल से शेयर करो (फोन कॉल, अलग चैट, या पढ़कर बता दो)।
sender साइड पर:
tar -czf support-bundle.tgz ./logs ./config-export
sha256sum support-bundle.tgz
wormhole send support-bundle.tgz
magic-wormhole कोड दिखाएगा। receiver चलाए:
wormhole receive
कोड डालो, डाउनलोड चलेगा, और फिर hashes मिलाकर देख लो। असल दुनिया में “फास्ट” लेकिन “फिर भी साफ” वाला यह कॉम्बिनेशन बहुत सी SMBs के लिए बेहद काम का है।
मैं इसे प्रैक्टिस में कैसे इस्तेमाल करता हूँ
A से B तक फ़ाइल भेजना
Sender:
wormhole send /path/to/file.zip
Receiver:
wormhole receive
फ़ाइल current directory में सेव हो जाती है। मैं अक्सर एक छोटा सा फ़ोल्डर बना लेता हूँ ताकि Downloads और Desktop के बीच कुछ खो न जाए:
mkdir -p ~/wormhole-recv && cd ~/wormhole-recv
wormhole receive
डायरेक्टरी भेजना
अगर पूरा फ़ोल्डर भेजना हो:
wormhole send --dir ./support-bundle/
बैकग्राउंड में क्या होता है? (संक्षेप में)
अंदर magic-wormhole तीन काम करता है जिन्हें वरना आपको खुद बनाना पड़ता: peers को मिलाता है, keys सुरक्षित तरीके से negotiate करता है, और डेटा को भरोसेमंद तरीके से ट्रांसफर करता है, भले ही NAT और firewalls परेशान करें।
| स्टेप | क्या होता है | फायदा |
|---|---|---|
| 1. कोड | sender एक छोटा one-time code बनाता है। | इस ट्रांसफर के लिए shared secret। |
| 2. Rendezvous | दोनों clients एक rendezvous server से जुड़ते हैं (default: public “mailbox”)। | inbound ports खोले बिना peer मिल जाता है। |
| 3. PAKE | कोड से SPAKE2 (PAKE) के जरिए shared key निकाली जाती है। | क्लासिक key management के बिना E2E key। |
| 4. Data path | पहले direct कनेक्शन की कोशिश, फिर ज़रूरत पड़े तो relay/transit। | NAT के पीछे भी काम करता है। |
| 5. E2E transfer | डेटा end-to-end एन्क्रिप्ट और integrity-protected होता है। | relay को सिर्फ ciphertext दिखता है। |
मुख्य बात: rendezvous/relay infrastructure है, लेकिन यह वह जगह नहीं जहाँ डेटा plaintext में रहता हो।
सुरक्षा: ताकत, सीमाएँ, और कुछ नियम
magic-wormhole की अच्छी बात यह है कि इसका security model काफ़ी ईमानदार है: end-to-end encryption है, लेकिन identity अपने आप नहीं आती।
आपको क्या मिलता है
- End-to-end encryption: content sender और receiver के बीच सुरक्षित रहता है, relay होने पर भी।
- Short-lived access: code एक ट्रांसफर के लिए है, लंबे समय का पासवर्ड नहीं।
- कम attack surface: कोई server harden नहीं करना, user management नहीं, web UI नहीं।
कहाँ सावधानी चाहिए
- कोड ही पासवर्ड है। जिसके पास कोड है वही “peer” है। अगर कोड किसी खुले टिकट में चला गया, तो समस्या है।
- डिफ़ॉल्ट में audit नहीं। कुछ कंपनियों के लिए यह ठीक है, कुछ के लिए deal-breaker। DLP/approvals/traceability चाहिए तो official channel इस्तेमाल करो।
- Endpoints ही सच्चाई हैं। sender compromised है तो कुछ भी भेज सकता है। receiver compromised है तो फ़ाइल रिसीव होते ही जोखिम में है।
प्रैक्टिकल नियम (जो सच में मदद करते हैं)
- कोड को उसी चैनल में मत भेजो जहाँ टिकट लिंक या फ़ाइल का कॉन्टेक्स्ट है। बेहतर: फोन कॉल या अलग private chat।
- मानकर चलो कि logs में tokens, hostnames या personal data हो सकता है। सिर्फ ज़रूरी चीजें भेजो।
- critical artifacts के लिए hash अलग चैनल से भेजो और रिसीव के बाद verify करो।
इंस्टॉलेशन (संक्षेप और व्यवहारिक)
कई सिस्टम्स पर package manager से एक कमांड काफी है:
- Debian/Ubuntu:
sudo apt install magic-wormhole - macOS:
brew install magic-wormhole
अगर distro packages पुराने हैं तो pipx अक्सर सबसे साफ रास्ता है:
pipx install magic-wormhole
pipx ensurepath
और अगर आप Python बिल्कुल नहीं चाहते (minimal server, container, rescue environment): wormhole-william एक compatible Go port है जो single binary के रूप में मिलता है।
ऑटोमेशन और self-hosting
कंट्रोल्ड workflows के लिए magic-wormhole को script किया जा सकता है:
CODE="5-alpaca-orbit"
wormhole send --code "$CODE" /path/to/db.dump
Receiver:
wormhole receive --code "$CODE" --accept-file
यह सुविधाजनक है, लेकिन जैसे ही code hard-code होता है, आप credential management की दुनिया में लौट आते हैं। automate करें तो proper secret handling और short lifetimes के साथ करें।
अगर rendezvous/relay पर पूरा कंट्रोल चाहिए, तो client को अपनी infra की तरफ point किया जा सकता है, जैसे:
--relay-urlअपने rendezvous server के लिए--transit-helperअपने transit relay के लिए
निष्कर्ष
magic-wormhole managed, policy-driven file transfer का विकल्प नहीं है। लेकिन रोज़मर्रा के tool के रूप में यह शानदार है: तेज़, कम friction, और एक साफ security model के साथ।
खासकर SMB दुनिया में, जहाँ हर support request के लिए approvals की लंबी श्रृंखला बनाने का न समय होता है न इच्छा, “काफी सुरक्षित और तुरंत इस्तेमाल योग्य” टूल अक्सर बिल्कुल सही बैठता है।
स्रोत और आगे पढ़ने के लिए
- magic-wormhole documentation (Read the Docs)
- magic-wormhole on GitHub
- wormhole-william (Go, single binary)
- magic-wormhole on PyPI
अगली बार तक जो


