4 Punkte von GN⁺ 2024-08-18 | 1 Kommentare | Auf WhatsApp teilen
  • Magic Wormhole bietet eine Bibliothek und das Kommandozeilen-Tool wormhole, um Dateien beliebiger Größe, Verzeichnisse und kurze Texte sicher von einem Computer auf einen anderen zu übertragen
  • Beide Enden der Übertragung werden über denselben wormhole code identifiziert; üblicherweise erzeugt das sendende Gerät den Code, zeigt ihn an, und das empfangende Gerät gibt ihn ein
  • Der Code verwendet kurze, für Menschen leicht aussprechbare Wortlisten; auf der Empfängerseite gibt es Tab-Autovervollständigung für die Codewörter, sodass meist nur wenige Buchstaben eingegeben werden müssen
  • Der wormhole code ist einmalig verwendbar, muss nicht auswendig gelernt werden, und das Programm nutzt zwei Server: einen mailbox server und einen transit relay aus separaten Repositories
  • Magic Wormhole wird unter der MIT-Lizenz veröffentlicht, ist mit Python 3.10 oder neuer kompatibel und bis 3.12 getestet

Funktionen von Magic Wormhole

  • Magic Wormhole ist ein Projekt mit dem Ziel, Dinge „sicher von einem Computer auf einen anderen zu holen“
  • Das Paket bietet zwei Formen
    • Bibliothek

      • ein Kommandozeilen-Tool namens wormhole
      • Zu den übertragbaren Inhalten gehören:
      • Dateien beliebiger Größe
      • Verzeichnisse
      • kurze Textausschnitte

Übertragungsmethode auf Basis von wormhole code

  • Die beiden Endpunkte werden mit demselben wormhole code identifiziert
  • Der typische Ablauf ist wie folgt
    • Das sendende Gerät erzeugt den Code und zeigt ihn auf dem Bildschirm an
    • Auf dem empfangenden Gerät wird dieser Code eingegeben
  • Der Code ist kurz, für Menschen leicht aussprechbar und verwendet eine phonetisch unterscheidbare Wortliste
  • Die Empfängerseite bietet Tab-Autovervollständigung für die Codewörter, sodass normalerweise nur einige wenige Buchstaben eingegeben werden müssen
  • Der wormhole code ist einmalig verwendbar und muss nicht behalten werden

Server-Konfiguration

Dokumentation und Vortragsmaterialien

Lizenz, Kompatibilität und Installation

  • Magic Wormhole wird unter der MIT-Lizenz veröffentlicht; Details stehen in der Datei LICENSE
  • Die Bibliothek ist mit Python 3.10 oder neuer kompatibel und bis Version 3.12 getestet
  • Das Magic-Wormhole-Paket ist in mehreren Betriebssystemen enthalten
  • Für eine Installation ohne OS-Paket kann die Installationsdokumentation verwendet werden

1 Kommentare

 
GN⁺ 2024-08-18
Meinungen auf Hacker News
  • Ich nutze es seit Jahren, um in seltsamen Netzwerkumgebungen große Dateien zwischen Systemen zu übertragen, und es funktioniert fast immer problemlos.
    Als etwas ungewöhnlicheren Test habe ich auch einen eigenen Magic-Wormhole-Relay betrieben und konnte ihn so abstimmen, dass sehr große Dateikopien schneller und stabiler wurden.
    Google Drive hasse ich immer noch, weil es bei Dateien mit zig GB viel zu oft zusammenbricht.
    https://www.jeffgeerling.com/blog/2023/my-own-magic-wormhole...

    • Dass sich solche Tools nicht weiterentwickeln, ist ziemlich fatal. Vor etwa sechs Jahren gab es rund um PAKE viel Aktivität, aber noch immer fehlen zuverlässiges Hole Punching für die Nutzung ohne langsame Relay-Server sowie mehrere gleichzeitige TCP-Streams oder ein sorgfältig entworfenes UDP-Protokoll, um große Datenmengen über lange, bandbreitenstarke Strecken schnell zu übertragen.
      Als ich zuletzt versucht habe, große Datenmengen mit Wormhole zu senden, war ich wegen des Bandwidth-Delay-Products auf 20 MB/s begrenzt; am Ende habe ich mit gewöhnlichem HTTP, aria2c und mehreren Streams eine 1-Gbps-Leitung ausgelastet.
      Ich sehe keinen Grund, warum PAKE-basierte Tools bei großen Langstreckenübertragungen überkomplexe proprietäre Werkzeuge wie Globus nicht vollständig ersetzen könnten, aber die Realität hängt in der Vergangenheit fest.
    • Ich hatte erwartet, dass der Relay-Server nur für den initialen Handshake genutzt wird, um NAT zu durchqueren, und die anschließende Übertragung dann P2P läuft.
      Nur bei bestimmten Netzwerkeinschränkungen sollten die eigentlichen Daten über den Relay laufen; wenn nicht, frage ich mich, wie die Kosten für den Betrieb eines kostenlosen Relays getragen werden.
    • Ich nutze eine Kombination aus scp, LocalSend, magic wormhole und sharedrop.io, und wenn es eilt, gelegentlich auch python -m http.server für lokale Downloads.
      Schade, dass dieser xkcd-Comic von 2011 noch immer genauso aktuell ist: https://xkcd.com/949/
  • Das ist eines dieser Single-Purpose-Utilities, die eine Sache extrem gut machen, dabei so gut funktionieren und so unauffällig sind, dass sie völlig unter dem Radar bleiben.
    Ich habe das Gefühl, solchen großartigen Schöpfungen stärker dankbar sein zu müssen.

  • Ich nutze croc, ein ähnliches Projekt mit guten Funktionen: https://github.com/schollz/croc

  • Ich habe einmal eine 70-GB-Datei mit wormhole übertragen. Früher wäre das schlicht unmöglich gewesen.
    Mir war klar, dass ich Bandbreite des Relay-Servers genutzt habe, also habe ich direkt an Debian gespendet. Ich war der Meinung, dass Debian den Relay der apt-Paketversion betreibt.

    • Ich bin der Autor von Magic Wormhole. Den Relay-Server betreibe ich, aber der Debian-Maintainer hat zugestimmt, in der Paketversion einen alternativen Hostnamen einzutragen.
      Das ist ein CNAME, der auf dieselbe Adresse zeigt wie der Upstream-Git-Code, damit man ihn leicht ändern kann, falls Kosten entstehen.
      Bisher war das kein Problem; es werden etwa 10–15 TB pro Monat übertragen, aber da der Server ohnehin einen Bandbreiten-Pool mit anderen von mir gemieteten Servern teilt, musste ich erst ein einziges Mal Zusatzgebühren zahlen.
      Wenn mir jemand spenden würde, würde ich das ehrlich gesagt wahrscheinlich einfach an Debian weiterleiten.
      Wenn gelegentlich jemand ein halbes Terabyte durchschiebt, denke ich darüber nach, auf einen langsameren, aber pauschal abgerechneten Anbieter umzuziehen, besseren Rate-Limiting-Code zu implementieren oder endlich eine Protokollerweiterung zu bauen, bei der der Client die zu übertragende Datenmenge vorab angibt und der Server ablehnen kann.
      Aber bisher ist die Priorität nie hoch genug geworden.
    • Erst ungefähr hier unten wird der Kern etwas sichtbar. Ich frage mich, ob das von einem einzelnen Server oder ein paar wenigen spendenfinanzierten Relay-Servern abhängt.
      NAT-zu-NAT-Traversal ist offensichtlich die Hauptmotivation. Wenn es auf beiden Seiten keine Barrieren gibt, kann man einfach scp, rsync oder sftp verwenden.
      Ich frage mich auch, ob man den Relay-Server konfigurieren kann. Es wirkte so, als sei er bis zu einem gewissen Grad hardcodiert.
    • Das wormhole-Übertragungsprotokoll versucht, eine direkte Verbindung aufzubauen, um Datenübertragung über den Relay zu vermeiden.
  • Zufällig habe ich auch das hier gefunden: „Eine Rust-Implementierung von Magic Wormhole mit neuen Funktionen und Verbesserungen“: https://github.com/magic-wormhole/magic-wormhole.rs

    • Es fehlen einige Funktionen aus anderen Implementierungen. Zum Beispiel gibt es keine Funktion, um ein Zip zu senden und es korrekt entpacken zu lassen.
  • Ich bin der Autor. Wenn es Fragen gibt, kann ich sie beantworten.

    • Ich nutze wormhole oft, habe aber immer aufgeschoben zu prüfen, ob es so sicher ist wie ssh/scp; deshalb verschlüssele ich die zu übertragenden Dateien immer erst mit gpg und gebe sie dann an wormhole.
      Ist das paranoid?
    • Ich brauchte es ursprünglich nur, um eine VM auf einer neuen Maschine zu bootstrappen, aber am Ende habe ich es für viele Zwecke weiterverwendet. Ein hervorragendes Projekt.
    • Ich habe ein paar Fragen. Ich frage mich, ob es eine App gibt und ob man das Passwort per QR-Code teilen kann, wenn die Daten zu groß sind, um in den QR-Code zu passen.
      Außerdem interessiert mich, wie der Plan im Hinblick auf Quantencomputing aussieht und ob es Pläne gibt, auf Post-Quantum-Kryptografie umzustellen, um Store-now-decrypt-later-Angriffe abzuwehren.
      Ich würde auch gern wissen, ob sich das Protokoll auf allgemeinere Proxys wie TURN-Server erweitern lässt.
  • Es gibt auch ein paar andere Tools
    p2pcopy https://github.com/psantosl/p2pcopy
    pcp https://github.com/dennis-tra/pcp
    wormhole-william https://github.com/psanford/wormhole-william

  • Vielleicht ist das eine dumme Frage, aber wie macht man das am besten zwischen iPhone und MacBook?
    AirDrop ist per Policy deaktiviert, der iCloud-Speicher ist aus Faulheit vollgelaufen, und auf allen anderen Geräten nutze ich Syncthing, aber ich habe keinen Client gefunden, den ich auf dem Firmen-iPhone verwenden kann

    • Ich nutze sharedrop.io; es ist Open Source und funktioniert ziemlich gut: https://github.com/szimek/sharedrop
      Besonders gefällt mir, dass man auf keinem Gerät eine Drittanbieter-App installieren muss
      In Safari auf dem Mac scheint es meistens nicht ganz so gut zu funktionieren wie in Chrome, aber ich habe schon ohne Installation von Windows zu iOS, von Windows zu macOS und von macOS zu iOS übertragen
    • Wenn sie im selben Netzwerk sind, gibt es LocalSend, eine plattformübergreifende Open-Source-AirDrop-Alternative: https://github.com/localsend/localsend
    • Es gibt TailDrop, das Killer-Feature von Tailscale. Damit lassen sich Dateien zuverlässig zwischen allen möglichen Geräten übertragen
    • Beide Geräte ins gleiche WLAN bringen und einen HTTP-Server wie python -m http.server verwenden, dann geht das
    • https://mobiussync.com/
  • Verwandter Beitrag: Magic Wormhole: Get things from one computer to another, safely - https://news.ycombinator.com/item?id=27262193 - Mai 2021, 178 Kommentare

  • Auch Tailscale hat inzwischen Taildrop: https://tailscale.com/kb/1106/taildrop

    • Taildrop ist auch okay, aber wenn ein Kommandozeilen-Tool in Ordnung ist, ist Wormhole deutlich flexibler und einfacher zu verwenden
      Obwohl wir hier Tailscale allgemein nutzen, verschicke ich Dateien immer noch häufig per wormhole