mirror of
https://github.com/0x5477/phantomlink.git
synced 2026-11-06 00:14:39 +00:00
main
PhantomLink(幻链)— 局域网加密聊天工具
跨平台局域网端到端加密聊天应用,支持文字、图片、文件传输、群组聊天、阅后即焚。
核心特性
- 端到端加密:AES-256-GCM + X25519 ECDH + TLS 1.3 三重加密
- 局域网 P2P:mDNS 零配置设备发现,纯 P2P 直连,无服务器
- 路由搜索(v1.5.0):跨路由器子网 CIDR 扫描,直接探测上层路由器网络中的设备,解决不同网段终端无法发现的问题
- 真实端到端加密(v1.5.2):连接建立即自动 X25519 密钥交换(Ed25519 身份签名防中间人),消息/语音/文件块逐条 AES-256-GCM 加密;接收方校验 SHA-256 与收件人身份
- 自动备份(v1.5.2):按周期自动加密备份(含附件)到数据目录
backups/,密钥由主密钥派生,滚动保留 N 份,可直接在「备份与恢复」中导入 - 睡眠/失焦锁定(v1.5.2):系统睡眠唤醒或窗口失焦可自动锁定界面
- 截图(v1.5.1):点击直接全屏截图并进入发送预览,快捷键 Alt+A(macOS 首次需在「系统设置 → 隐私与安全性 → 屏幕录制」授权)
- 附件下载(v1.5.1):发送/接收的文件附件均可一键下载到本地并打开
- 多端语音通话(v1.4+):房间制通话,主机中继 + 局域网 P2P 转发,支持 1v1 与群通话、静音、成员列表实时同步、主叫超时自动挂断
- 双向 P2P 修复(v1.4.1+):修复仅入站连接时无法回复/发消息/通话的问题;连接建立即交换设备身份(Presence 握手),任何一方都可稳定主动发起通信(自动拨号重连 + 去重)
- 语音消息(v1.4):WAV 16-bit PCM 录制,专用加密帧传输,跨平台(含 WKWebView)播放
- 桌面宠物(v1.4+):社区开源桌宠精灵图(柯基/橘猫/小兔,8x9 帧动画),可自由拖动位置、点击互动、设置中可开关
- 双主题(v1.4):日间蓝白浅色主题 / 夜间深空主题,一键切换并持久化
- 在线更新(v1.4+):检查更新/立即更新联动 GitHub Releases,后端直连下载对应平台安装包并自动打开安装
- 安全认证:主密码 Argon2id 派生,空闲自动锁屏,剪贴板自动清除
- 防拖走:数据库全字段加密,无主密码不可解密
- 阅后即焚:消息级标记,阅读后自动销毁
- 加密备份:.plvault 加密导出包,支持新设备导入
- 科幻 UI:深空主题 + 霓虹辉光 + 玻璃拟态
技术栈
- 后端:Rust + Tauri 2(AES-256-GCM / Argon2id / X25519 / Ed25519)
- 前端:React 19 + TypeScript + Tailwind CSS 4 + Zustand
- 数据库:SQLite(WAL 模式,应用层加密)
开发
# 安装依赖
npm install
# 开发模式(需 Rust 工具链)
npx tauri dev
# 构建
npx tauri build
构建产物
| 平台 | 产物 |
|---|---|
| macOS | .app + .dmg |
| Windows | .msi / .exe(需 Windows 构建环境) |
数据目录
- macOS:
~/Library/Application Support/.pl_session_cache/ - Windows:
%LOCALAPPDATA%\.pl_session_cache\
加密体系
主密码 → Argon2id(64MiB/3轮/4并行) → 主密钥 MK
├── HKDF → 数据库密钥 DBK
├── HKDF → 文件存储密钥 FSK
└── HKDF → 备份密钥 BKK
网络会话: 连接建立后自动 X25519 临时密钥交换(Ed25519 身份签名防中间人,未知设备 TOFU)
→ HKDF-SHA256 派生会话密钥 SK → AES-256-GCM 逐条加密消息/语音/文件块
群组: GSK 共享密钥,成员变更时轮换
许可
私有项目,未公开发布。
Description
PhantomLink - LAN Encrypted Chat Tool (Tauri 2 + Rust + React)
⚠️ ARCHIVED: Original GitHub repository no longer exists. Preserved as backup on 2026-11-06T04:31:49.595Z
2.4 MiB
Languages
Rust
50.4%
TypeScript
45.1%
CSS
4.2%
JavaScript
0.2%