magic-wormhole.rs

magic-wormholeEUPL-1.2活跃维护

用 Rust 重写的 Magic Wormhole 命令行工具,通过简短口令在两台机器间安全传文件,还支持端口转发等增强功能。

Rust implementation of Magic Wormhole, with new features and enhancements

0.8.1发布于 2026-05-07 00:27 UTC1,060star +2 / 7 天106fork同步于 2026-11-10 17:53 UTC

怎么上手

由 README 提炼,执行前请确认
cargo run -- --help
硬件要求按 README 说明

README 未说明

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

Magic Wormhole 的 Rust 实现,用于在两台电脑间安全传文件,并支持 NAT 穿透直连

用 Rust 重写的 Magic Wormhole 命令行工具,通过简短口令在两台机器间安全传文件,还支持端口转发等增强功能。

核心能力

  • 跨 NAT 和防火墙建立直连传输
  • 传输完成后自动把代码复制到剪贴板
  • 除文件传输外还支持端口转发(实验性)
  • 可同时把文件发给多个人(实验性)
  • 支持模糊补全 wormhole 代码

容易踩的坑

缺少文本消息发送、文件夹发送(只能发 tar 包需对方手动解压)和 Tor 支持;目前没有托管文档,需本地 cargo doc --open 查看;采用 EUPL v1.2 协议,商用闭源需联系作者

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本0.8.1
  1. 0.8.1Version 0.8.1最新正式版2026-05-07 · 2026-05-07 00:27 UTC

    Security

    Changed

    • dev: Replace the macro_rules_attribute test helper to remove the unmaintained paste dependency
  2. 0.8.0Version 0.8.02026-05-06 · 2026-05-06 20:15 UTC
    查看更新说明

    Added

    • cli: Add colors support
    • lib: transit::TransitRole enum with Follower and Leader variants for use with TransitConnector::connect

    Changed

    • lib: Switched from async-std to smol/async-io
    • lib: Remove explicit entropy feature and make it the default
    • lib: Undeprecate direct access to Transit connections and unify the connection functions. TransitConnector::connect is now the only way to set up the connection, and accepts a TransitRole enum rather than an is_leader boolean. leader_connect and follower_connect are removed from the API.
    • lib: transit::init() is now undeprecated.
    • lib: Renamed transit::Abilities::ALL_ABILITIES to magic_wormhole::transit::Abilities::ALL
    • lib: Key now has an as_ref implementation for the inner crypto_secretbox::Key instead of a public field
    • lib: rendezvous::RendezvousError::IO now contains a boxed tungstenite error to reduce error enum sizes

    Removed

    • lib: Wormhole::connect_with(out)_code, WormholeWelcome, use MailboxConnection::create() and then Wormhole::connect() instead
    • lib: Wormhole public struct fields. Use the provided accessor methods instead.
    • lib: GenericKey, implement KeyPurpose on a custom struct instead
    • lib: transit: TransitKey, TransitRxKey and TransitTxKey
    • lib: rendezvous::RendezvousServer with no replacement
    • lib: transit::log_transit_connection, use the Display implementation of TransitInfo instead
    • lib: AppID public field access: Use AppID::new() and AsRef<str>::as_ref() instead
    • lib: MailboxConnection::mailbox(), the Mailbox type was always private and therefore not useful
    • lib: transit::RelayHint: can_merge, merge, merge_mut, merge_into with no replacement
    • lib: transit::TransitConnector::can_noise_crypto with no replacement (noise cryptography is not a stable protocol)
    • lib: transfer::PeerMessage, this enum type had lots of fields with private types and was therefore not very useful
    • lib: transfer::v1::ReceiveRequest: filename and filesize fields: Use the public getter methods
    • lib: From<Nameplate> for String and AsRef<str> for Nameplate: Use the std::fmt::Display implementation
    • lib: From<Code> for String and AsRef<str> for Code: Use the std::fmt::Display implementation
    • lib: Code::split: Use Code::nameplate and Code::password
  3. 0.7.7Version 0.7.72026-03-10 · 2026-03-10 00:08 UTC
    查看更新说明

    Fixed

    • Fixes compilation error with cargo doc
  4. 0.7.6Version 0.7.62025-04-05 · 2025-04-05 12:28 UTC
    查看更新说明
  5. 0.7.5Version 0.7.52025-01-12 · 2025-01-12 12:16 UTC
    查看更新说明

    Fixed

    • cli: Command line arguments completion would generate completions for magic-wormhole-cli, not wormhole-rs

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Rusty Wormhole

    Get things from one computer to another, safely.

    http://magic-wormhole.io/

    This is a Rust port of the Python version at https://github.com/magic-wormhole/magic-wormhole.

    Comparison with the Python implementation

    Features that are missing:

    • Text message sending
    • Folder sending (we can send folders, but it will send a tar ball which the other side will have to manually unpack)
    • Tor support

    New features that exceed the other implementations:

    • Can do direct connections across the internet (NATs) and firewalls
    • Automatically copies your code to the clipboard
    • Port forwarding in addition to file transfer (experimental)
    • Send a file to multiple people (experimental)
    • Fuzzy wormhole code completion

    Getting started

    If you want to toy with the CLI, cargo run -- --help will get you started. The code sits in ./cli/src. For more instructions see cli/README.md.

    If you'd like to use Wormhole in your application, cargo doc --open will tell you how to use it. There aren't any hosted docs at the moment.

    If you don't fear touching code and want to contribute, ./src/lib.rs, ./src/transfer.rs and ./src/transit.rs are rather easy to get into. The protocol specification will probably be useful to you.

    Applications using Wormhole Rust as library

    (feel free to add yours)

    License

    This work is licensed under the EUPL v1.2 or later. Contact the owner(s) for use in proprietary software.


    Matrix Irc Build Status Deps Codecov Is-It-Maintained-Resolution-Time Crates.io Docs.rs