The problem
Laboratories, hostel floors and office wings run on local-area networks, yet the messaging tools students actually use there all route through the public internet — accounts, distant servers and data plans are needed just to send a file to the PC across the room. When the campus link goes down, even that stops working. This project builds the alternative: a desktop chat application in Python where every PC on the subnet runs the same program, peers find each other automatically over UDP broadcast, group rooms carry encrypted text, and files travel as encrypted chunks over direct TCP connections. Nothing leaves the LAN. The encryption is genuine end-to-end design, not transport-only: each peer pair negotiates a session key with X25519 elliptic-curve Diffie-Hellman, and every message frame is sealed with AES-256-GCM, so a packet sniffer on the same network sees only ciphertext. A sniffer-verification test is part of the delivered test plan, so the security claim is something the student can demonstrate, not just assert.
This is a built-to-order software project: the Python application, protocol documentation, security test plan and the complete viva kit (report, PPT, Q&A) are prepared fresh for you.
The problem
A plain socket chat is one of the most common networking mini-projects, and that is exactly its weakness: it teaches TCP but teaches nothing about security, discovery or reliability. Students demo a plaintext chat where anyone on the subnet running Wireshark reads every message, peers are hard-coded by IP address, and file transfer — if it exists at all — is a single blocking send with no integrity check, so a corrupted transfer is discovered only after opening a broken file. Meanwhile the real-world alternative everyone reaches for is a cloud messenger, which needs internet, accounts and a server outside the institution. This project sits in the gap that matters: a LAN-native messenger that behaves like the tools students already know (rooms, DMs, file drops, history) while implementing the three things the toy versions skip — automatic peer discovery, real end-to-end encryption with proper key exchange, and a file-transfer engine with per-chunk checksums and resume. The result is a project with genuine systems depth: sockets, broadcast discovery, applied cryptography, threading and GUI design in one build.
Runs the app on their device, discovers peers and chats in encrypted rooms.
Follow the working sequence
How it works
- On launch, the node binds a TCP listening port and starts broadcasting UDP presence beacons (approximately every 5 s, design target) carrying its display name, listening port and X25519 public key; every node builds its peer table from received beacons — no manual IP entry, no central server.
- When two peers first communicate, they run an X25519 key exchange and derive a session key with HKDF; from that point every payload between them travels as an AES-256-GCM frame (nonce, ciphertext, authentication tag).
- Joining a group room sends a join request to the room host, which returns the room session key wrapped under the joiner's pairwise key; the host then relays each member's encrypted messages to the rest of the room.
- A typed message is encrypted on the sender's device with the room key before it touches the network; each member decrypts locally and appends it to the SQLite history, which supports keyword search.
- Membership changes trigger automatic rekeying: a fresh room key is distributed to remaining members so a departed member cannot read new traffic (design target: rekey also every 1000 messages).
- For files, the sender first transmits a manifest (file name, size, chunk count, whole-file SHA-256); the file is then split into 64 KB chunks (design target), each sealed with AES-GCM and sent with its own SHA-256 checksum.
- The receiver verifies every chunk, re-requests corrupt ones automatically, shows live progress with speed, and supports pause and resume from the last verified chunk; the assembled file is accepted only if the whole-file hash matches the manifest.
- The PyQt6 GUI keeps networking on background threads, so the chat pane, member roster and transfer manager stay responsive while transfers run.
Tech stack:
- Python 3.10+ (application, networking, threading)
- cryptography library (X25519 key exchange, AES-256-GCM, HKDF, SHA-256)
- PyQt6 (desktop GUI: room list, chat pane, transfer manager)
- Python socket module (TCP transport, UDP broadcast discovery)
- SQLite 3 (local message history)
- Custom LAN chat protocol (documented in the protocol spec)
- Wireshark (verification test for the encryption claim)
- Git (source control)
| Parameter | Value |
|---|---|
| Platform | Desktop application: Windows 10+, Linux, macOS (expected) |
| Language | Python 3.10 or newer |
| Message cipher | AES-256-GCM, per-session keys (library primitive) |
| Key exchange | X25519 ECDH + HKDF key derivation (library primitive) |
| Peer discovery | UDP broadcast beacons, approximately every 5 s (design target) |
| Discovery scope | Single broadcast domain, e.g. a /24 subnet (design target) |
| Room capacity | Up to 50 members per room (design target) |
| Rekey policy | On membership change and every 1000 messages (design target) |
| File chunk size | 64 KB sealed chunks with per-chunk SHA-256 (design target) |
| Transfer throughput | Multi-MB/s on a switched LAN (design target, hardware-dependent) |
Requirements
- Two or more PCs on the same LAN subnet (wired Ethernet or Wi-Fi) for live multi-peer testing; single-PC loopback mode works for development and the demo.
- Python 3.10 or newer on each machine, plus pip-installable packages (cryptography, PyQt6) — approximately 250 MB disk space (expected).
- No internet connection, accounts, or servers are required at runtime — the application is LAN-only by design.
- Wireshark is needed only to run the optional sniffer-verification test from the test plan; it is not required to use the application.
Project features
- [End-to-end encrypted messaging] Every message is sealed with AES-256-GCM under a session key negotiated by X25519 ECDH. A sniffer on the LAN captures ciphertext only — verified by the delivered Wireshark test procedure.
- [Group rooms with rekeying] Create and join named rooms over the LAN; the room host distributes session keys and triggers automatic rekeying on membership change, so departed members lose access to new messages.
- [Automatic peer discovery] UDP broadcast beacons advertise each node (name, port, public key); the peer list populates itself in seconds on a /24 subnet with no configuration and no server.
- [Encrypted file transfer engine] Files move as 64 KB AES-GCM sealed chunks (design target), each with a SHA-256 checksum; corrupt chunks are re-requested automatically and transfers survive interruption with resume.
- [Transfer manager UI] Live progress bars with speed, per-transfer pause/cancel, and a completed list showing whole-file hash verification results for every received file.
- [Direct encrypted messages] One-to-one conversations use the pairwise session key directly, with the same AES-GCM framing as rooms and a visible per-contact security indicator.
- [Searchable local history] Chat history persists in SQLite on each PC with keyword search across rooms and contacts; nothing is uploaded anywhere.
- [Optional: passphrase lock on history] An optional add-on, quoted separately: encrypting the local SQLite database with a user passphrase for shared lab PCs. Not part of the base build.
What is included
- Complete Python source code: networking layer, security layer, file-transfer engine, PyQt6 GUI
- Documented custom LAN protocol specification (beacon format, frame format, file manifest schema)
- Security test plan including the Wireshark sniffer-verification procedure
- Setup guide (Python environment, dependency install, multi-PC test procedure)
- Project report PDF (background, protocol design, cryptography choices, test results procedure)
- PPT presentation for final review
- Viva Q&A preparation document (sockets vs WebSockets, UDP broadcast, Diffie-Hellman, AES-GCM vs CBC, threading in GUI apps, checksums vs MACs)
Limitations & prerequisites
- The application works within a single broadcast domain (typically one subnet/VLAN); it cannot reach peers across routed networks or the internet — that is a design boundary, not a bug.
- The demo in the browser simulates the GUI and the protocol flow with scripted data; it does not open real sockets — the delivered built-to-order Python project implements the real networking.
- Encryption protects traffic on the wire; it does not protect a compromised endpoint, and the base build does not encrypt the local SQLite history file (passphrase lock is an optional add-on).
- Group messaging is relayed through the room host's sessions, so the host must stay online for its room; there is no store-and-forward for offline members.
- Throughput and discovery-time figures are design targets, stated honestly — actual speeds depend on the lab network hardware and load.
- All demo names, messages and transfer statistics are fictional samples; the delivered project ships with an empty database.
Delivery timeline
- Standard delivery is 3–4 weeks from order confirmation: week 1 covers the transport layer (TCP + UDP discovery) and peer table; week 2 covers the security layer (X25519, AES-GCM framing, rekeying); week 3 covers the file-transfer engine and the PyQt6 GUI; week 4 covers the protocol spec, security test plan, report, PPT and viva Q&A. Exact dates are confirmed on the quotation.
Support & explanation
- Every order includes a walkthrough session explaining the protocol design, the key-exchange flow and the file-transfer engine, so the viva can be defended confidently. Bug fixes are covered for 30 days after delivery; extensions (voice notes, multi-subnet relay, mobile client) are quoted separately.
Frequently Asked Questions
How is this different from a normal socket chat project?
Three things the toy versions skip: real end-to-end encryption (X25519 key exchange plus AES-256-GCM framing, verified with a sniffer test), automatic peer discovery over UDP broadcast with no hard-coded IPs, and a file-transfer engine with per-chunk checksums and resume. Those three are where the systems and security depth of this project lives.
Does it really work without the internet?
Yes — that is the entire point. Discovery uses UDP broadcast and messaging uses direct TCP between PCs on the same subnet. No accounts, no cloud server, no data plan. It keeps working during a campus internet outage, which is also a strong live-demo story for the review.
How do I prove the encryption claim in the viva?
The test plan includes a Wireshark procedure: run the app, capture the LAN traffic, and show that message payloads appear as ciphertext while the handshake and frame structure remain visible. Examiners respond well to a claim that can be demonstrated live.
Can files be sent to the whole room or just one person?
Both. Room file drops go to all members through the room host's sessions, and direct transfers use the pairwise session key. Every transfer — room or direct — gets the same chunked, checksummed, resumable engine and shows up in the transfer manager.
What are the main limitations?
Single broadcast domain only (no internet-wide messaging), the room host must stay online for its room, and the base build does not passphrase-protect the local history database. Throughput figures are design targets dependent on the lab network, and the browser demo simulates the UI rather than opening real sockets.
Is this project suitable for a final-year project?
Yes — for Computer Science, IT and related computing programs. It demonstrates network programming (TCP/UDP sockets, broadcast discovery), applied cryptography (ECDH key exchange, authenticated encryption), concurrent programming (threaded workers behind a GUI), and protocol design, all in one coherent, demonstrable system. Suitable for B.E./B.Tech final-year projects in Computer Science, Information Technology and related computing programs.
Components & software requirements
- Python 3.10+ (application, networking, threading)
- cryptography library (X25519 key exchange, AES-256-GCM, HKDF, SHA-256)
- PyQt6 (desktop GUI: room list, chat pane, transfer manager)
- Python socket module (TCP transport, UDP broadcast discovery)
- SQLite 3 (local message history)
- Custom LAN chat protocol (documented in the protocol spec)
- Wireshark (verification test for the encryption claim)
- Git (source control)
Delivery information
Built-to-order project. Delivery timeline is shared after order confirmation based on current queue.
Support terms
Complete documentation, setup guide, and viva preparation included. Support for setup and explanation provided.
Download free synopsis (PDF)
Enter your name and email — the synopsis PDF downloads immediately. We may send occasional project updates; no spam, unsubscribe anytime.