denislupookov/altersend

GitHub: denislupookov/altersend

AlterSend 是一款开源跨平台的 P2P 文件传输工具,让设备之间无需云服务器即可端到端加密直传任意大小文件。

Stars: 919 | Forks: 64


AlterSend

### 无需云存储的文件传输。 文件直接在你的设备之间传输 —— 端到端加密,无需账号,无需服务器,没有限制。 [![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE) [![Platforms](https://img.shields.io/badge/platforms-macOS%20%7C%20Windows%20%7C%20Linux%20%7C%20iOS%20%7C%20Android-lightgrey)](#download) [官网](https://altersend.com) · [下载](https://altersend.com/download) · [Discord](https://discord.gg/R6tmrk85Vx)
AlterSend desktop   AlterSend mobile
## 目录 - [关于](#about) - [功能](#features) - [下载](#download) - [macOS Homebrew](#macos-homebrew) - [工作原理](#how-it-works) - [底层机制](#under-the-hood) - [开发者指南](#for-developers) - [前置条件](#prerequisites) - [设置](#setup) - [运行](#run) - [构建](#build) - [项目结构](#project-structure) - [国际化](#internationalization) - [技术栈](#tech-stack) - [崩溃报告](#crash-reporting) - [贡献者](#contributors) - [贡献指南](#contributing) - [安全性](#security) - [License](#license) ## 关于 AlterSend 是一款免费、开源的应用,用于在你的设备之间直接发送文件 —— 没有云,没有上传,没有大小限制。文件通过点对点(P2P)方式传输并进行端到端加密;任何东西都不会存储在服务器上。 既然你可以直接、即时且私密地发送文件,且没有上传成本和限制,为什么还要使用 WeTransfer、Dropbox 或 Google Drive 呢? ## 功能 - **无需账号** —— 无需注册,无需登录,不需要电子邮件地址 - **无需服务器** —— 文件在设备之间直接传输,不在云端存储任何内容 - **端到端加密** —— 始终只有你的设备才能读取你的文件 - **无文件大小限制** —— 无论是发送 100 MB 的照片还是 500 GB 的视频归档,体验都一样 - **配对你的设备** —— 配对设备一次,之后无需每次扫描或输入代码即可发送文件 - **跨平台** —— macOS、Windows、Linux、iOS、Android - **处处可用** —— 局域网或跨越大洲,代码路径相同 - **多语言** —— 完全翻译的用户界面,提供 12 种语言版本 - **开源** —— Apache-2.0 协议,你可以自行审计每一行代码 ## 下载 从 [altersend.com/download](https://altersend.com/download) 获取最新版本,或直接从下表中下载。 | 平台 | 下载 | | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Windows** | [Microsoft Store](https://apps.microsoft.com/detail/9NHLK9GLVDLW) (已签名) · [EXE 安装程序](https://github.com/denislupookov/altersend/releases/latest) | | **macOS** | [DMG — Apple Silicon](https://github.com/denislupookov/altersend/releases/latest) · [DMG — Intel](https://github.com/denislupookov/altersend/releases/latest) · [Homebrew](#macos-homebrew) | | **Linux** | [AppImage](https://github.com/denislupookov/altersend/releases/latest) | | **Android** | [Google Play](https://play.google.com/store/apps/details?id=com.altersend.mobile) · [APK](https://github.com/denislupookov/altersend/releases/latest) | | **iOS** | [App Store](https://apps.apple.com/us/app/altersend-file-transfer/id6772496271) | ### macOS Homebrew 你也可以使用 [Homebrew](https://brew.sh) 在 macOS 上安装 AlterSend: ``` brew install --cask altersend ``` ## 工作原理 1. 在两台设备上打开 AlterSend 2. 一台设备显示**加入代码**(或 QR 码) 3. 另一台设备扫描或输入该代码 4. 文件直接传输 —— 点对点 ``` ┌─────────┐ encrypted P2P ┌─────────┐ │ Device │ ◄──────────────────────────────► │ Device │ │ A │ direct, no middleman │ B │ └─────────┘ └─────────┘ ▲ ▲ │ peer discovery via Hyperswarm │ └────────────────────────────────────────────┘ (DHT, no central server) ``` ### 底层机制 AlterSend 构建于 [Hyperswarm](https://github.com/holepunchto/hyperswarm) 之上,其核心是一个 Kademlia DHT。这四个步骤背后的原理如下: 1. **每次传输都会生成一个随机的 32 字节密钥**(`crypto.randomBytes(32)`)。那个 64 字符的十六进制字符串_就是_你分享的加入代码。 2. **节点在该密钥的哈希值上集合,而不是密钥本身。** 双方计算得出相同的发现密钥 —— 一个由加入代码派生的 BLAKE2b 哈希值 —— 并加入该哈希对应的 DHT。原始密钥永远不会离开你的设备,只有其哈希值会被发布。 3. **公共引导节点是唯一的入口点。** 少量节点将设备接入 DHT。此后,不再涉及任何中央服务器 —— 并且没有中继回退机制,因此如果直接打洞失败,连接就会失败。 4. **连接是直接的且经过端到端加密。** 节点通过 Noise 加密的套接字连接,发送方通过该通道分享其 [Hyperdrive](https://github.com/holepunchto/hyperdrive) 密钥。文件被导入到发送方的本地 Hyperdrive 中,复制到接收方的 Hyperdrive 中,然后写入磁盘 —— 因此在 v1 版本中,在传输过程中,每侧大约需要**传输大小的 2 倍**的可用空间。_(我们正在努力改进这一点。)_ **配对一次,跳过代码。** 你可以配对自己的设备,以便未来的传输直接进行 —— 无需扫描或输入代码。配对只存储公共设备密钥,私钥保存在你的 OS 密钥链中,并且配对设备的识别过程不会向其他任何人暴露你的身份。完整设计请参阅 [docs/architecture.md](docs/architecture.md#remembered-devices--pairing)。 ## 开发者指南 ### 前置条件 - Node.js 20+ - npm 10+ - Xcode (iOS) 或 Android Studio (Android) ### 设置 ``` git clone https://github.com/denislupookov/altersend.git cd altersend npm install cp apps/desktop/.env.example apps/desktop/.env cp apps/mobile/.env.example apps/mobile/.env # 在 dev 环境中所有 env vars 都是可选的——应用在没有它们的情况下也能运行。 ``` ### 运行 ``` npm run dev # desktop (Electron) npm run mobile:start # mobile (Expo) ``` ### 构建 ``` npm run desktop:build # packages + desktop app ``` 平台安装程序(`.dmg`、`.exe`、`.AppImage`)由发布 CI workflow 生成 —— 从 Actions 选项卡手动触发。 ### 项目结构 ``` apps/ desktop/ Electron app — main + renderer + Bare worklet mobile/ React Native / Expo app packages/ core/ P2P protocol — Hyperswarm, Hyperdrive, RPC domain/ State management — Zustand store, business logic components/ Cross-platform UI — React Strict DOM + Tailwind locales/ Shared locale metadata, i18next setup, and catalogs docs/ architecture.md Full system overview i18n.md Translation workflow and locale coverage ``` 有关数据流和进程间边界,请参阅 [docs/architecture.md](docs/architecture.md)。 ### 国际化 桌面端和移动端通过 `@altersend/locales` 共享翻译目录,目前涵盖 12 种语言区域。翻译工作流请参阅 [docs/i18n.md](docs/i18n.md)。 ### 技术栈 [Electron](https://electronjs.org) · [React Native](https://reactnative.dev) · [Expo](https://expo.dev) · [Bare](https://bare.pears.com) · [Hyperswarm](https://github.com/holepunchto/hyperswarm) · [Hyperdrive](https://github.com/holepunchto/hyperdrive) · [React Strict DOM](https://github.com/facebook/react-strict-dom) · [Tailwind](https://tailwindcss.com) · [Zustand](https://github.com/pmndrs/zustand) ### 崩溃报告 通过 [Sentry](https://sentry.io) 进行的崩溃报告是可选的,且默认关闭。 ## 安全性 发现漏洞?请遵循 [SECURITY.md](SECURITY.md) 中的披露流程 —— 请勿公开提出 issue。 ## License [Apache-2.0](LICENSE) © AlterSend
标签:MITM代理, P2P, WebRTC, 文件传输, 端到端加密, 自动化攻击