Lanthing是一款开源的串流/远程控制工具。除了主控端和被控端,它还包含完整的服务端、中继服务器。
当前支持下列系统:
- Windows 10 或以上
- Linux
- macOS with Apple silicon
- Android
- 已知最强的P2P算法,如果有其它任何程序P2P打通但是Lanthing没打通,请作为bug报上来
- 支持Nvidia,AMD,Intel显卡上的H.264、HEVC硬件编解码
- 支持鼠标、键盘、手柄(手柄需先安装开源驱动)
- 支持自建服务器
- 支持端到端加密,数据无论是走P2P还是中继转发,其他人都无法解密
- 局域网下依硬件水平可以低至1帧延迟
各平台已实现特性如下表:
特性 | Windows | Linux | macOS | Android | |
---|---|---|---|---|---|
主控 | ✅ | ✅ | ✅ | ✅ | |
被控 | ✅ | ❌ | ❌ | ❌ | |
硬编 | ✅ | ➖ | ➖ | ➖ | |
硬解 | ✅ | ✅ | ✅ | ✅ | Linux当前仅支持部分平台和硬件 |
软编软解 | ✅ | ❌ | ❌ | ❌ | |
AVC | ✅ | ✅ | ✅ | ✅ | |
HEVC | ✅ | ✅ | ✅ | ✅ | |
YUV444 | ❌ | ❌ | ❌ | ❌ | |
全屏独占 | ✅ | ❌ | ❌ | ❌ | 全屏独占模式在局域网下有时可以表现出0帧延迟 |
复制粘贴 | ✅ | ❌ | ❌ | ❌ | 支持文本和文件的复制粘贴,不支持文件夹 |
物理键鼠 | ✅ | ✅ | ✅ | ✅ | |
物理手柄 | ✅ | ✅ | ✅ | ✅ | |
虚拟键鼠 | ❌ | ❌ | ❌ | ✅ | |
虚拟手柄 | ❌ | ❌ | ❌ | ✅ | |
多指触控 | ❌ | ❌ | ❌ | ✅ | |
绝对位置鼠标 | ✅ | ✅ | ✅ | ✅ | 鼠标默认使用该模式 |
相对位移鼠标 | ✅ | ✅ | ✅ | ✅ | 某些游戏需要切换至该模式才能正常操作,需使用者按Win+Shift+X手动切换 |
自定义鼠标加速 | ✅ | ✅ | ✅ | ❌ | 仅在相对位移模式生效 |
P2P | ✅ | ✅ | ✅ | ✅ | |
中继 | ✅ | ✅ | ✅ | ✅ | |
切换显示器 | ✅ | ❌ | ❌ | ✅ | |
远控旋转屏 | ✅ | ❌ | ❌ | ✅ | Android只做了坐标转换,没有适配手机方向 |
拉伸显示 | ✅ | ✅ | ✅ | ✅ | |
原比例显示 | ✅ | ❌ | ❌ | ✅ | |
禁用鼠标 | ✅ | ✅ | ✅ | ✅ | |
禁用键盘 | ✅ | ✅ | ✅ | ✅ | |
禁用手柄 | ✅ | ✅ | ✅ | ✅ | |
禁传声音 | ✅ | ✅ | ✅ | ✅ | |
TCP | ✅ | ✅ | ✅ | ❌ | |
UDP | ✅ | ✅ | ✅ | ✅ | UDP基于该项目做少量修改,修改部分未开源 |
自定义过滤虚拟组网 | ✅ | ❌ | ❌ | ❌ | |
自定义端口映射 | ✅ | ✅ | ✅ | ❌ | 允许自定义串流使用的UDP端口范围,需自行在路由器做相应设置 |
操作UAC界面 | ✅ | ✅ | ✅ | ✅ | |
操作登录界面 | ✅ | ✅ | ✅ | ✅ |
Lanthing的端到端加密具体是如何实现的:
- 主控端和被控端在程序内部生成
key-pair
->证书
->证书指纹
- 主控和被控通过一条安全通道交换
证书指纹
- 主控和被控通过P2P或中继成功建立底层连接,开始
DTLS
握手,握手过程会互发证书
- 主控和被控收到握手中的
证书
,使用证书指纹
校验证书(其实就是一个哈希值) - 确认不是他人伪造的证书后,使用该证书继续后续
DTLS
流程,握手完成后全程加密
通过上面的流程,可以得出以下事实:
- 不管是P2P还是中继,截取到流量的中间人不可能解密
- 服务器拿到的只是一个哈希值,并且流量不从这里走,没有解密这一说法
上面提到的安全通道,Github Releases页面下载的lanthing,使用的是作者自己搭的lanthing-svr,走的TLS1.2。你也可以选择自建这个服务器。
Windows:
- Windows 10 或以上
- Git
- Visual Studio 2022
- CMake 3.21 或以上
- Qt 6 (msvc)
Linux:
- Ubuntu 20.04 或以上
- Git
- GCC 10 或以上
- CMake 3.21 或以上
- Qt 6
git clone --recursive https://github.com/pjlt/lanthing-pc.git
cd lanthing-pc
cp options-default.cmake options-user.cmake #可选,如果需要修改编译选项则执行此步,并修改相应选项;如果QT不在环境变量里,则必须修改LT_QT_CMAKE_PATH
./build.[ps1|sh] prebuilt fetch
./build.[ps1|sh] build Release
- 下载Github Releases页面下的lanthing.zip并解压
- 管理员运行lanthing.exe
- 输入对方设备码和校验码
注意:连接上对方默认只有手柄权限,鼠标和键盘权限需要被控方手动给予。 如果不想每次都这么麻烦,可以在管理
页面修改某个客户端的默认权限。
遇到bug或者有任何建议请提issue,或在QQ群反馈。QQ群: 89746161