Вход на сайт

Просмотр новости

Найдите то, что Вас интересует

cmd-chat: Peer-to-Peer Encrypted CLI Chat

Дата публикации: 06-02-2026 01:49:05



Основное содержимое страницы с новостью.

encrypted terminal chat. no servers. no logs. ram only.

License: MIT Python 3.8+


peer-to-peer encrypted chat that runs in your terminal. you host, you control. close the window — everything's gone.

why

every "secure" messenger still stores metadata somewhere. this doesn't. it's just two terminals talking over an encrypted tunnel. nothing written to disk, ever.

how it works
┌──────────────────────────────────────────────────────────────────┐
│                        SRP AUTHENTICATION                        │
├──────────────────────────────────────────────────────────────────┤
│                                                                  │
│  CLIENT                                         SERVER           │
│    │                                              │              │
│    │─────── POST /srp/init {username, A} ───────► │              │
│    │         (A = client public ephemeral)        │              │
│    │                                              │              │
│    │◄──── {user_id, B, salt, room_salt} ───────── │              │
│    │         (B = server public ephemeral)        │              │
│    │         (room_salt = E2E key derivation)     │              │
│    │                                              │              │
│    │  [client derives room_key via HKDF:          │              │
│    │   room_key = HKDF(password, room_salt)]      │              │
│    │                                              │              │
│    │  [both sides compute SRP session key         │              │
│    │   using password + ephemeral values]         │              │
│    │                                              │              │
│    │─────── POST /srp/verify {user_id, M} ──────► │              │
│    │         (M = client proof)                   │              │
│    │                                              │              │
│    │◄────────── {H_AMK, session_key} ──────────── │              │
│    │         (H_AMK = server proof)               │              │
│    │                                              │              │
│    │  [password never transmitted]                │              │
│    │  [MITM can't derive session key]             │              │
│    │                                              │              │
├──────────────────────────────────────────────────────────────────┤
│                      E2E ENCRYPTED CHAT                          │
├──────────────────────────────────────────────────────────────────┤
│    │                                              │              │
│    │═══════ WebSocket /ws/chat?user_id ═════════► │              │
│    │         (authenticated session)              │              │
│    │                                              │              │
│    │                                              │              │
│  ┌─┴─┐                                        ┌──┴──┐            │
│  │ C │──── encrypt(msg, room_key) ───────────►│  S  │            │
│  │ L │                                        │  E  │            │
│  │ I │◄─── ciphertext (broadcast) ────────────│  R  │            │
│  │ E │                                        │  V  │            │
│  │ N │     decrypt(ciphertext, room_key)      │  E  │            │
│  │ T │                                        │  R  │            │
│  └─┬─┘                                        └──┬──┘            │
│    │                                              │              │
│    │  [server stores ONLY ciphertext]             │              │
│    │  [server CANNOT read messages]               │              │
│    │  [all clients with same password             │              │
│    │   derive identical room_key]                 │              │
│    │                                              │              │
│    │  Encryption: Fernet (AES-128-CBC + HMAC)     │              │
│    │  Key derivation: HKDF-SHA256                 │              │
│    │                                              │              │
│    │  [on disconnect: keys wiped from RAM]        │              │
│    │                                              │              │
└──────────────────────────────────────────────────────────────────┘

┌──────────────────────────────────────────────────────────────────┐
│                      KEY HIERARCHY                               │
├──────────────────────────────────────────────────────────────────┤
│                                                                  │
│  password ──┬──► SRP ──► session_key (per-user, auth only)       │
│             │                                                    │
│             └──► HKDF(password, room_salt) ──► room_key (shared) │
│                                                                  │
│  room_salt: generated once at server start                       │
│  room_key:  deterministic, same for all clients with same pwd    │
│                                                                  │
└──────────────────────────────────────────────────────────────────┘

SRP (Secure Remote Password) — password is never sent over the network. both sides prove they know it via zero-knowledge proof, then derive identical session keys.

install
python -m venv venv && source venv/bin/activate && pip install -r requirements.txt

windows:

python -m venv venv ; .\venv\Scripts\activate ; pip install -r requirements.txt

usage

start server:

python cmd_chat.py serve 0.0.0.0 3000 --password mysecret

connect:

python cmd_chat.py connect SERVER_IP 3000 username mysecret

Example

features
  • ram only — nothing touches disk
  • rsa + aes — key exchange + symmetric encryption
  • no central server — direct p2p connection
  • srp auth — password never sent over network

license

MIT

Схожие новости

#Наименование новостиТональностьИнформативностьДата публикации
1presidio: Detect, Redact, & Anonymize Sensitive Data (PII)01025-05-2026
2skill-scanner - Security Scanner for Agent Skills024.2908-03-2026
3Sifty: OSS Windows Maintenance CLI01012-07-2026
4omlx - LLM inference server01006-04-2026
5tdb: A Python Debugger Based on Textual01001-06-2026
6StegoForge: Zero-Dependency Python Steganography03507-05-2026
7dograh - Open Source Voice Agent Platform01025-05-2026
8spoof: A Simple HTTP Server for Test Environments01011-06-2026
9tallyman: CLI to Summarize Code Size by Language01026-02-2026

Классификация: Пресс-релизы. Схожих патентов: 0. Схожих новостей: 9. Тональность: 0. Информативность: 50. Источник: pythondigest.ru.