这是一个两台电脑直接连接的加密聊天工具,不依赖中转服务器。
你可以使用命令行版(peer_chat.py)或图形界面版(gui_chat.py)。
- 会话密钥交换:
X25519(临时密钥,前向保密) - 身份认证:
Ed25519(握手签名验签) - 会话密钥派生:
HKDF-SHA256 - 消息加密:
ChaCha20-Poly1305(默认) - 防冒充机制:
TOFU(首次信任)+SAS短码人工核对
说明:
- 首次连接会记录对端身份指纹;后续同标签指纹变化会告警并拒绝。
- 每次连接都应核对双方显示的
SAS code是否一致,不一致请立即断开。
pip install -r requirements.txt启动:
python gui_chat.py-
模式 -
监听:等待对方连接(通常一方选择) -
连接:主动连接到对方 IP(另一方选择) -
主机 -
监听模式:填
0.0.0.0(监听所有网卡) -
连接模式:填对方电脑 IP,例如
192.168.1.23 -
端口 -
双方必须一致,默认
9009 -
昵称 -
你的显示名称,例如
Alice、Bob -
对端标签(可选) -
给对方设备起一个稳定名字,用于 TOFU 绑定,例如
bob-laptop -
建议填写,避免 IP 变化导致识别混乱
-
首次连接自动信任(TOFU) -
开启:首次见到新标签会自动记录对端指纹(推荐)
-
关闭:只允许已记录过的标签连接
电脑 A(被连接方):
- 模式:
监听 - 主机:
0.0.0.0 - 端口:
9009 - 昵称:
Alice - 对端标签:
bob-laptop
电脑 B(主动连接方):
- 模式:
连接 - 主机:
<电脑A的IP>(例如192.168.1.23) - 端口:
9009 - 昵称:
Bob - 对端标签:
alice-pc
连接后:
- 核对双方
SAS code一致再继续聊天。
电脑 A(监听):
python peer_chat.py --listen --host 0.0.0.0 --port 9009 --nick Alice --peer-label bob-laptop电脑 B(连接):
python peer_chat.py --connect <A_IP> --port 9009 --nick Bob --peer-label alice-pc常用参数:
--tofu:首次连接自动信任(默认)--no-tofu:禁止首次自动信任,只允许已绑定指纹
程序会自动创建以下文件:
%USERPROFILE%\.p2p_chat\identity.json:本机长期身份密钥%USERPROFILE%\.p2p_chat\known_peers.json:已信任对端指纹映射
- 监听端需允许入站 TCP 端口(默认
9009) - 两台电脑必须可达(同一局域网,或公网端口映射)
- GUI:点击
断开连接或直接关闭窗口 - CLI:输入
/quit
python -m PyInstaller --noconfirm --clean --onefile --windowed --name P2P_E2E_Chat --icon assets/p2p_chat.ico gui_chat.py产物:
dist\P2P_E2E_Chat.exe
- 安装 Inno Setup 6
- 在项目目录执行:
"C:\Program Files (x86)\Inno Setup 6\ISCC.exe" installer.iss若安装在用户目录,可用:
"%LOCALAPPDATA%\Programs\Inno Setup 6\ISCC.exe" installer.iss产物:
installer_dist\P2P_E2E_Chat_Setup.exe
- Open inbound TCP port (default 9009) on the listener machine.
- Ensure machines can reach each other (LAN or port-forwarded public IP).
Type /quit to end chat.