denislupookov/altersend
GitHub: denislupookov/altersend
AlterSend 是一款开源跨平台的 P2P 文件传输工具,让设备之间无需云服务器即可端到端加密直传任意大小文件。
Stars: 919 | Forks: 64
## 目录
- [关于](#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, 文件传输, 端到端加密, 自动化攻击