Magic Wormhole: công nghệ truyền tệp an toàn giữa các máy tính
(github.com/magic-wormhole)- Magic Wormhole cung cấp thư viện và công cụ dòng lệnh
wormholeđể chuyển an toàn các tệp có kích thước bất kỳ, thư mục và đoạn văn bản ngắn từ máy tính này sang máy tính khác - Hai đầu của quá trình truyền được định danh bằng cùng một wormhole code; thông thường thiết bị gửi tạo và hiển thị mã, rồi mã đó được nhập trên thiết bị nhận
- Mã dùng danh sách các từ ngắn, dễ phát âm với con người; phía nhận cung cấp tự động hoàn thành bằng phím Tab cho các từ trong mã, nên thường chỉ cần nhập vài ký tự
- wormhole code là dùng một lần, không cần ghi nhớ, và chương trình sử dụng hai máy chủ là mailbox server và transit relay nằm ở các kho lưu trữ riêng
- Magic Wormhole được phân phối theo giấy phép MIT, tương thích với Python 3.10 trở lên và đã được kiểm thử đến 3.12
Magic Wormhole cung cấp những gì
- Magic Wormhole là dự án hướng tới mục tiêu “lấy dữ liệu một cách an toàn từ máy tính này sang máy tính khác”
- Gói này cung cấp hai dạng
-
Thư viện
- Công cụ dòng lệnh có tên
wormhole - Đối tượng có thể truyền bao gồm
- Tệp có kích thước bất kỳ
- Thư mục
- Các mẩu văn bản ngắn
- Công cụ dòng lệnh có tên
-
Cách truyền dựa trên wormhole code
- Hai endpoint được định danh bằng cùng một wormhole code
- Luồng thông thường như sau
- Thiết bị gửi tạo mã và hiển thị trên màn hình
- Nhập mã đó trên thiết bị nhận
- Mã ngắn, dễ phát âm với con người và dùng danh sách các từ có thể phân biệt về mặt âm thanh
- Phía nhận cung cấp tự động hoàn thành bằng phím Tab cho các từ trong mã, nên thường chỉ cần nhập vài ký tự
- wormhole code là dùng một lần và không cần ghi nhớ
Cấu hình máy chủ
- Chương trình này sử dụng hai máy chủ, và mã nguồn của từng máy chủ nằm trong kho lưu trữ riêng
Tài liệu và bài thuyết trình
- Có thể xem tài liệu đầy đủ tại tài liệu Magic Wormhole hoặc trong thư mục con
docs/của kho lưu trữ - Có cung cấp tài liệu thuyết trình PyCon 2016
Giấy phép, khả năng tương thích và cài đặt
- Magic Wormhole được phân phối theo giấy phép MIT; chi tiết có trong tệp
LICENSE - Thư viện tương thích với Python 3.10 trở lên và đã được kiểm thử đến 3.12
- Gói Magic Wormhole có trong nhiều hệ điều hành
- Nếu muốn cài đặt mà không dùng gói của hệ điều hành, hãy làm theo Installation docs
1 bình luận
Các ý kiến trên Hacker News
Tôi đã dùng nó suốt vài năm để chuyển các tệp lớn giữa các hệ thống trong những môi trường mạng kỳ lạ, và hầu như lúc nào cũng hoạt động trơn tru
Một thử nghiệm đặc biệt hơn là tự dựng relay Magic Wormhole, rồi tinh chỉnh để việc sao chép các tệp rất lớn nhanh hơn và ổn định hơn
Tôi vẫn ghét Google Drive vì nó sập quá thường xuyên khi ném vào các tệp vài chục GB
https://www.jeffgeerling.com/blog/2023/my-own-magic-wormhole...
Lần gần nhất tôi cố gửi lượng dữ liệu lớn bằng Wormhole thì bị giới hạn ở 20MB/s vì tích băng thông-độ trễ, cuối cùng tôi dùng HTTP thông thường với aria2c và nhiều luồng để dùng kín đường truyền 1Gbps
Tôi không thấy có lý do gì khiến các công cụ dựa trên PAKE không thể thay thế hoàn toàn những công cụ độc quyền quá phức tạp như Globus trong truyền tải đường dài dung lượng lớn, nhưng thực tế vẫn mắc kẹt trong quá khứ
Chỉ khi có một số hạn chế mạng thì dữ liệu thực tế mới đi qua relay; nếu không thì tôi tò mò họ trang trải chi phí vận hành relay miễn phí như thế nào
python -m http.serverđể tải xuống cục bộThật tiếc là truyện xkcd này vẫn còn đúng y như hồi năm 2011: https://xkcd.com/949/
Đây là một trong những tiện ích đơn năng làm cực tốt một việc, nhưng vì hoạt động quá tốt và không phô trương nên gần như hoàn toàn không được chú ý
Tôi thấy mình nên biết ơn nhiều hơn những sáng tạo tuyệt vời như vậy
Tôi đang dùng croc, một dự án tương tự có các tính năng hay: https://github.com/schollz/croc
https://redrocket.club/posts/croc/
Tôi từng chuyển một tệp 70GB bằng wormhole. Trước đây thì đó là chuyện hoàn toàn không thể
Tôi biết mình đã dùng băng thông của máy chủ relay, nên ngay sau đó đã quyên góp cho Debian. Tôi hiểu là Debian vận hành relay cho phiên bản gói apt
Đó là một CNAME trỏ tới cùng nơi với địa chỉ mà mã git upstream dùng, mục đích là để có thể đổi dễ dàng nếu phát sinh gánh nặng chi phí
Từ trước đến nay chưa thành vấn đề; mỗi tháng nó chuyển khoảng 10–15TB, nhưng dù sao cũng dùng chung pool băng thông với các máy chủ khác mà tôi đang thuê, nên tôi mới chỉ phải trả phí vượt mức một lần
Thành thật mà nói, nếu có ai quyên góp cho tôi thì có lẽ tôi cũng sẽ gửi nguyên khoản đó cho Debian
Thỉnh thoảng khi ai đó đẩy qua nửa terabyte, tôi lại nghĩ mình nên chuyển sang một nhà cung cấp chậm hơn nhưng tính phí cố định, hoặc triển khai mã giới hạn tốc độ tốt hơn, hoặc cuối cùng triển khai phần mở rộng giao thức để client khai báo trước lượng dữ liệu sẽ truyền và máy chủ có thể từ chối
Nhưng đến giờ việc đó vẫn chưa bao giờ đủ cao trong danh sách ưu tiên
Rõ ràng động lực lớn nhất là xuyên NAT-đến-NAT. Nếu hai bên không bị tường chắn thì cứ dùng scp, rsync, sftp là được
Tôi cũng tò mò có thể cấu hình máy chủ relay hay không. Trông có vẻ như nó được hard-code ở một mức nào đó
Tình cờ tôi cũng tìm thấy cái này. “Một bản triển khai bằng Rust của Magic Wormhole với các tính năng và cải tiến mới”: https://github.com/magic-wormhole/magic-wormhole.rs
Tôi là tác giả. Nếu có câu hỏi thì tôi có thể trả lời
Như vậy có phải là hoang tưởng không?
Tôi cũng tò mò kế hoạch ứng phó với điện toán lượng tử là gì, và có kế hoạch chuyển sang mật mã hậu lượng tử để chống các cuộc tấn công lưu trữ rồi giải mã sau hay không
Tôi cũng muốn biết liệu giao thức có thể được mở rộng lên trên một proxy tổng quát hơn như máy chủ TURN hay không
Cũng có một vài công cụ khác
p2pcopy https://github.com/psantosl/p2pcopy
pcp https://github.com/dennis-tra/pcp
wormhole-william https://github.com/psanford/wormhole-william
https://github.com/mat-sz/filedrop
https://github.com/saljam/webwormhole
https://github.com/schollz/croc
https://github.com/dutchcoders/transfer.sh
https://github.com/timvisee/send
https://github.com/schlagmichdoch/pairdrop
https://github.com/SnapDrop/snapdrop
Có thể là câu hỏi ngớ ngẩn, nhưng giữa iPhone và MacBook thì nên làm việc này thế nào?
AirDrop bị tắt theo chính sách, dung lượng iCloud thì do lười dọn nên đã đầy, trên mọi thiết bị khác tôi dùng Syncthing nhưng không tìm được client dùng được trên iPhone công ty
Tôi đặc biệt thích vì không cần cài ứng dụng bên thứ ba trên bất kỳ thiết bị nào
Trên Safari của Mac thì thường có vẻ không tốt bằng Chrome, nhưng tôi đã từng chuyển không cần cài đặt từ Windows sang iOS, từ Windows sang macOS, và từ macOS sang iOS
python -m http.serverlà đượcBài liên quan: Magic Wormhole: Get things from one computer to another, safely - https://news.ycombinator.com/item?id=27262193 - tháng 5 năm 2021, 178 bình luận
Tailscale giờ cũng có Taildrop: https://tailscale.com/kb/1106/taildrop
Ở đây chúng tôi vẫn thường gửi file bằng wormhole, dù nhìn chung đang dùng Tailscale