Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

README.md

P2P 端到端加密聊天(Windows 10/11)

这是一个两台电脑直接连接的加密聊天工具,不依赖中转服务器。 你可以使用命令行版(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

1. 界面字段说明

  • 模式

  • 监听:等待对方连接(通常一方选择)

  • 连接:主动连接到对方 IP(另一方选择)

  • 主机

  • 监听模式:填 0.0.0.0(监听所有网卡)

  • 连接模式:填对方电脑 IP,例如 192.168.1.23

  • 端口

  • 双方必须一致,默认 9009

  • 昵称

  • 你的显示名称,例如 AliceBob

  • 对端标签(可选)

  • 给对方设备起一个稳定名字,用于 TOFU 绑定,例如 bob-laptop

  • 建议填写,避免 IP 变化导致识别混乱

  • 首次连接自动信任(TOFU)

  • 开启:首次见到新标签会自动记录对端指纹(推荐)

  • 关闭:只允许已记录过的标签连接

2. 双机示例

电脑 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

八、打包为 EXE

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)

  1. 安装 Inno Setup 6
  2. 在项目目录执行:
"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

Firewall / Network

  • Open inbound TCP port (default 9009) on the listener machine.
  • Ensure machines can reach each other (LAN or port-forwarded public IP).

Exit

Type /quit to end chat.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors